NonWorkTimeRequest
Der genehmigte Antrag als druckbares Dokument
GET/api/time/non_work_time_request/{id}/pdf
Die Papierregel, die der digitale Antrag ersetzt hat, gilt weiterhin auf Papier: Der genehmigte Antrag geht an den Teamleiter zurück, und die Mitarbeitenden erhalten auf Wunsch einen Ausdruck. Zurückgezogene Tage werden als zurückgezogen benannt und nicht nur als fehlend – die Regeln verlangen genau das.
Pfad-Parameter
idPflichtstring |
Antworten
200PDF des Abwesenheitsantrags
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42/pdf \
--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/non_work_time_request/42/pdf', 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/non_work_time_request/42/pdf"
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/non_work_time_request/42/pdf', [
'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/non_work_time_request/42/pdf"),
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/non_work_time_request/42/pdf")
.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/non_work_time_request/42/pdf"
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/time_tracking_non_work_time_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await TimeTrackingNonWorkTimeRequestController.getDownloadLinkPdf('42');
print(result);Alle NonWorkTimeRequest abrufen
GET/api/time/non_work_time_request
Query-Parameter
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
200Alle NonWorkTimeRequest abrufenarray<NonWorkTimeRequest>
Felder anzeigen (35)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
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 des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
Felder anzeigen (15)
effective_colorstringDie anzuzeigende Farbe: die konfigurierte, sonst die Standardfarbe des Typs.
namestringName der Abwesenheitsart, zum Beispiel Urlaub oder Krankheit.
valueintegerNumerischer Wert der Abwesenheitsart.
priorityintegerPriorität des Abwesenheitstyps, wenn sich mehrere Typen überschneiden.
processed_content_typestringInhaltstyp, der bei der Bearbeitung der Abwesenheit verwendet wird.
secondary_content_type_optionsstringOptionen für den sekundären Inhaltstyp, durch Komma getrennt
iconstringSymbol des Abwesenheitstyps.
is_vacationbooleanDie Abwesenheitsart zählt als Urlaub.
is_sickbooleanDie Abwesenheitsart zählt als Krankheit.
status_change_requires_hr_approvalbooleanDie Änderung des Status dieses Abwesenheitstyps erfordert eine HR-Genehmigung.
selectable_for_requestbooleanOb mit diesem Typ eine neue Abwesenheitsanfrage angelegt werden darf. Typen, die nur einen Tag in einer Übersicht beschreiben – Feiertag, Schulferien, Arbeitstag –, werden in den Editoren nicht angeboten.
requires_management_approvalbooleanAnträge dieses Typs benötigen eine abschließende schriftliche Entscheidung der Geschäftsführung (der Organisationsleitung), die nach der regulären Genehmigungskette (U10) angehängt wird.
max_days_per_requestintegerObergrenze der Kalendertage, die eine Anfrage dieses Typs umfassen darf; null = unbegrenzt.
colorstringR5: Farbe dieses Abwesenheitstyps im Schichtplan und im Teamkalender ("#RRGGBB"); null = der Standardwert des Typs (getEffectiveColor). Wird mit absence_type_colors_enabled verwendet.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
parent_requestNonWorkTimeRequestDer Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest4L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
Felder anzeigen (9)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
personCRMPerson10Person, zu der der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
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/non_work_time_request \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/non_work_time_request"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/time/non_work_time_request', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/non_work_time_request"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_request")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/non_work_time_request"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/time_tracking_non_work_time_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await TimeTrackingNonWorkTimeRequestController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}
]Einzelnen NonWorkTimeRequest anlegen
POST/api/time/non_work_time_request
Request-Body application/json
dataNonWorkTimeRequest2Felder anzeigen (17)
change_modestringArt der Änderung an der Anfrage.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
personCRMPerson37Person, zu der der Antrag gehört.
contractEmploymentContract8Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
attachmentsarray<Attachment12>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment3>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest2Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest5L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
Antworten
200Einzelnen NonWorkTimeRequest anlegenNonWorkTimeRequest3
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
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.
contractEmploymentContract9Arbeitsvertrag, zu dem der Antrag gehört.
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.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
Felder anzeigen (15)
effective_colorstringDie anzuzeigende Farbe: die konfigurierte, sonst die Standardfarbe des Typs.
namestringName der Abwesenheitsart, zum Beispiel Urlaub oder Krankheit.
valueintegerNumerischer Wert der Abwesenheitsart.
priorityintegerPriorität des Abwesenheitstyps, wenn sich mehrere Typen überschneiden.
processed_content_typestringInhaltstyp, der bei der Bearbeitung der Abwesenheit verwendet wird.
secondary_content_type_optionsstringOptionen für den sekundären Inhaltstyp, durch Komma getrennt
iconstringSymbol des Abwesenheitstyps.
is_vacationbooleanDie Abwesenheitsart zählt als Urlaub.
is_sickbooleanDie Abwesenheitsart zählt als Krankheit.
status_change_requires_hr_approvalbooleanDie Änderung des Status dieses Abwesenheitstyps erfordert eine HR-Genehmigung.
selectable_for_requestbooleanOb mit diesem Typ eine neue Abwesenheitsanfrage angelegt werden darf. Typen, die nur einen Tag in einer Übersicht beschreiben – Feiertag, Schulferien, Arbeitstag –, werden in den Editoren nicht angeboten.
requires_management_approvalbooleanAnträge dieses Typs benötigen eine abschließende schriftliche Entscheidung der Geschäftsführung (der Organisationsleitung), die nach der regulären Genehmigungskette (U10) angehängt wird.
max_days_per_requestintegerObergrenze der Kalendertage, die eine Anfrage dieses Typs umfassen darf; null = unbegrenzt.
colorstringR5: Farbe dieses Abwesenheitstyps im Schichtplan und im Teamkalender ("#RRGGBB"); null = der Standardwert des Typs (getEffectiveColor). Wird mit absence_type_colors_enabled verwendet.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
attachmentsarray<Attachment10>Anhänge der Anfrage.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
commentsarray<NonWorkTimeRequestComment4>Kommentare zum Antrag.
Felder anzeigen (5)
idintegerPrimärschlüssel des Kommentars zur Abwesenheitsanfrage. Interne ID.
userUser14Benutzer, der den Kommentar verfasst hat.
descriptionstringText des Kommentars.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
Felder anzeigen (1)
idintegerPrimärschlüssel des Abwesenheitsplan-Eintrags. Interne ID.
parent_requestNonWorkTimeRequest3Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest6L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
Felder anzeigen (9)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
personCRMPerson10Person, zu der der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/non_work_time_request \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
change_mode: 'string',
daily_absence_start_time: 'string',
daily_absence_end_time: 'string',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/non_work_time_request"
payload = { "data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
} }
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/non_work_time_request', [
'body' => '{"data":{"description":"Text","change_mode":"string","daily_absence_start_time":"string","daily_absence_end_time":"string","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00"}}',
'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/non_work_time_request"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
{
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\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_request")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/non_work_time_request"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
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/time_tracking_non_work_time_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/time_tracking_non_work_time_request.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await TimeTrackingNonWorkTimeRequestController.post(TimeTrackingNonWorkTimeRequest.fromJson({
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}Einzelnen NonWorkTimeRequest abrufen
GET/api/time/non_work_time_request/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Einzelnen NonWorkTimeRequest abrufenNonWorkTimeRequest3
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
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.
contractEmploymentContract9Arbeitsvertrag, zu dem der Antrag gehört.
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.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
Felder anzeigen (15)
effective_colorstringDie anzuzeigende Farbe: die konfigurierte, sonst die Standardfarbe des Typs.
namestringName der Abwesenheitsart, zum Beispiel Urlaub oder Krankheit.
valueintegerNumerischer Wert der Abwesenheitsart.
priorityintegerPriorität des Abwesenheitstyps, wenn sich mehrere Typen überschneiden.
processed_content_typestringInhaltstyp, der bei der Bearbeitung der Abwesenheit verwendet wird.
secondary_content_type_optionsstringOptionen für den sekundären Inhaltstyp, durch Komma getrennt
iconstringSymbol des Abwesenheitstyps.
is_vacationbooleanDie Abwesenheitsart zählt als Urlaub.
is_sickbooleanDie Abwesenheitsart zählt als Krankheit.
status_change_requires_hr_approvalbooleanDie Änderung des Status dieses Abwesenheitstyps erfordert eine HR-Genehmigung.
selectable_for_requestbooleanOb mit diesem Typ eine neue Abwesenheitsanfrage angelegt werden darf. Typen, die nur einen Tag in einer Übersicht beschreiben – Feiertag, Schulferien, Arbeitstag –, werden in den Editoren nicht angeboten.
requires_management_approvalbooleanAnträge dieses Typs benötigen eine abschließende schriftliche Entscheidung der Geschäftsführung (der Organisationsleitung), die nach der regulären Genehmigungskette (U10) angehängt wird.
max_days_per_requestintegerObergrenze der Kalendertage, die eine Anfrage dieses Typs umfassen darf; null = unbegrenzt.
colorstringR5: Farbe dieses Abwesenheitstyps im Schichtplan und im Teamkalender ("#RRGGBB"); null = der Standardwert des Typs (getEffectiveColor). Wird mit absence_type_colors_enabled verwendet.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
attachmentsarray<Attachment10>Anhänge der Anfrage.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
commentsarray<NonWorkTimeRequestComment4>Kommentare zum Antrag.
Felder anzeigen (5)
idintegerPrimärschlüssel des Kommentars zur Abwesenheitsanfrage. Interne ID.
userUser14Benutzer, der den Kommentar verfasst hat.
descriptionstringText des Kommentars.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
Felder anzeigen (1)
idintegerPrimärschlüssel des Abwesenheitsplan-Eintrags. Interne ID.
parent_requestNonWorkTimeRequest3Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest6L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
Felder anzeigen (9)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
personCRMPerson10Person, zu der der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
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/non_work_time_request/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/time_tracking_non_work_time_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await TimeTrackingNonWorkTimeRequestController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}NonWorkTimeRequest einzeln aktualisieren
PUT/api/time/non_work_time_request/{id}
Pfad-Parameter
idPflichtstring |
Query-Parameter
actionstring | CANCEL_OWN zieht einen eigenen offenen Antrag ohne verbindliche Body-Felder zurückErlaubt: CANCEL_OWN |
approval_versioninteger | Angezeigte Antragsversion; erforderlich für CANCEL_OWN und gestufte Entscheidungen |
approval_commentstring | Schriftliche Entscheidung des aktuellen Genehmigungsschritts; Pflicht für den Schritt der Geschäftsleitung |
balance_override_reasonstring | L11: Begründung für die Genehmigung, obwohl der prognostizierte Urlaubssaldo zum Jahresende negativ ist; erforderlich, wenn non_work_time_negative_balance_override_required aktiv ist |
coverage_override_reasonstring | L54: Begründung für die Genehmigung, obwohl ein Tag unter die Mindestbesetzung fällt; erforderlich, wenn staffing_coverage_override_reason_required aktiv ist |
Request-Body application/json
dataNonWorkTimeRequest2Felder anzeigen (17)
change_modestringArt der Änderung an der Anfrage.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
personCRMPerson37Person, zu der der Antrag gehört.
contractEmploymentContract8Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
attachmentsarray<Attachment12>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment3>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest2Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest5L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
Antworten
200NonWorkTimeRequest einzeln aktualisierenNonWorkTimeRequest3
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
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.
contractEmploymentContract9Arbeitsvertrag, zu dem der Antrag gehört.
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.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
Felder anzeigen (15)
effective_colorstringDie anzuzeigende Farbe: die konfigurierte, sonst die Standardfarbe des Typs.
namestringName der Abwesenheitsart, zum Beispiel Urlaub oder Krankheit.
valueintegerNumerischer Wert der Abwesenheitsart.
priorityintegerPriorität des Abwesenheitstyps, wenn sich mehrere Typen überschneiden.
processed_content_typestringInhaltstyp, der bei der Bearbeitung der Abwesenheit verwendet wird.
secondary_content_type_optionsstringOptionen für den sekundären Inhaltstyp, durch Komma getrennt
iconstringSymbol des Abwesenheitstyps.
is_vacationbooleanDie Abwesenheitsart zählt als Urlaub.
is_sickbooleanDie Abwesenheitsart zählt als Krankheit.
status_change_requires_hr_approvalbooleanDie Änderung des Status dieses Abwesenheitstyps erfordert eine HR-Genehmigung.
selectable_for_requestbooleanOb mit diesem Typ eine neue Abwesenheitsanfrage angelegt werden darf. Typen, die nur einen Tag in einer Übersicht beschreiben – Feiertag, Schulferien, Arbeitstag –, werden in den Editoren nicht angeboten.
requires_management_approvalbooleanAnträge dieses Typs benötigen eine abschließende schriftliche Entscheidung der Geschäftsführung (der Organisationsleitung), die nach der regulären Genehmigungskette (U10) angehängt wird.
max_days_per_requestintegerObergrenze der Kalendertage, die eine Anfrage dieses Typs umfassen darf; null = unbegrenzt.
colorstringR5: Farbe dieses Abwesenheitstyps im Schichtplan und im Teamkalender ("#RRGGBB"); null = der Standardwert des Typs (getEffectiveColor). Wird mit absence_type_colors_enabled verwendet.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
attachmentsarray<Attachment10>Anhänge der Anfrage.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
commentsarray<NonWorkTimeRequestComment4>Kommentare zum Antrag.
Felder anzeigen (5)
idintegerPrimärschlüssel des Kommentars zur Abwesenheitsanfrage. Interne ID.
userUser14Benutzer, der den Kommentar verfasst hat.
descriptionstringText des Kommentars.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
Felder anzeigen (1)
idintegerPrimärschlüssel des Abwesenheitsplan-Eintrags. Interne ID.
parent_requestNonWorkTimeRequest3Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest6L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
Felder anzeigen (9)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
personCRMPerson10Person, zu der der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
change_mode: 'string',
daily_absence_start_time: 'string',
daily_absence_end_time: 'string',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"
payload = { "data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
} }
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/non_work_time_request/42', [
'body' => '{"data":{"description":"Text","change_mode":"string","daily_absence_start_time":"string","daily_absence_end_time":"string","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00"}}',
'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/non_work_time_request/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
{
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\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
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/time_tracking_non_work_time_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/time_tracking_non_work_time_request.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await TimeTrackingNonWorkTimeRequestController.put(TimeTrackingNonWorkTimeRequest.fromJson({
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}NonWorkTimeRequest einzeln aktualisieren
PATCH/api/time/non_work_time_request/{id}
Pfad-Parameter
idPflichtstring |
Query-Parameter
actionstring | CANCEL_OWN zieht einen eigenen offenen Antrag ohne verbindliche Body-Felder zurückErlaubt: CANCEL_OWN |
approval_versioninteger | Angezeigte Antragsversion; erforderlich für CANCEL_OWN und gestufte Entscheidungen |
approval_commentstring | Schriftliche Entscheidung des aktuellen Genehmigungsschritts; Pflicht für den Schritt der Geschäftsleitung |
balance_override_reasonstring | L11: Begründung für die Genehmigung, obwohl der prognostizierte Urlaubssaldo zum Jahresende negativ ist; erforderlich, wenn non_work_time_negative_balance_override_required aktiv ist |
coverage_override_reasonstring | L54: Begründung für die Genehmigung, obwohl ein Tag unter die Mindestbesetzung fällt; erforderlich, wenn staffing_coverage_override_reason_required aktiv ist |
Request-Body application/json
dataNonWorkTimeRequest2Felder anzeigen (17)
change_modestringArt der Änderung an der Anfrage.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
personCRMPerson37Person, zu der der Antrag gehört.
contractEmploymentContract8Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
attachmentsarray<Attachment12>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment3>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest2Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest5L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
Antworten
200NonWorkTimeRequest einzeln aktualisierenNonWorkTimeRequest3
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
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.
contractEmploymentContract9Arbeitsvertrag, zu dem der Antrag gehört.
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.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
Felder anzeigen (15)
effective_colorstringDie anzuzeigende Farbe: die konfigurierte, sonst die Standardfarbe des Typs.
namestringName der Abwesenheitsart, zum Beispiel Urlaub oder Krankheit.
valueintegerNumerischer Wert der Abwesenheitsart.
priorityintegerPriorität des Abwesenheitstyps, wenn sich mehrere Typen überschneiden.
processed_content_typestringInhaltstyp, der bei der Bearbeitung der Abwesenheit verwendet wird.
secondary_content_type_optionsstringOptionen für den sekundären Inhaltstyp, durch Komma getrennt
iconstringSymbol des Abwesenheitstyps.
is_vacationbooleanDie Abwesenheitsart zählt als Urlaub.
is_sickbooleanDie Abwesenheitsart zählt als Krankheit.
status_change_requires_hr_approvalbooleanDie Änderung des Status dieses Abwesenheitstyps erfordert eine HR-Genehmigung.
selectable_for_requestbooleanOb mit diesem Typ eine neue Abwesenheitsanfrage angelegt werden darf. Typen, die nur einen Tag in einer Übersicht beschreiben – Feiertag, Schulferien, Arbeitstag –, werden in den Editoren nicht angeboten.
requires_management_approvalbooleanAnträge dieses Typs benötigen eine abschließende schriftliche Entscheidung der Geschäftsführung (der Organisationsleitung), die nach der regulären Genehmigungskette (U10) angehängt wird.
max_days_per_requestintegerObergrenze der Kalendertage, die eine Anfrage dieses Typs umfassen darf; null = unbegrenzt.
colorstringR5: Farbe dieses Abwesenheitstyps im Schichtplan und im Teamkalender ("#RRGGBB"); null = der Standardwert des Typs (getEffectiveColor). Wird mit absence_type_colors_enabled verwendet.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
attachmentsarray<Attachment10>Anhänge der Anfrage.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
commentsarray<NonWorkTimeRequestComment4>Kommentare zum Antrag.
Felder anzeigen (5)
idintegerPrimärschlüssel des Kommentars zur Abwesenheitsanfrage. Interne ID.
userUser14Benutzer, der den Kommentar verfasst hat.
descriptionstringText des Kommentars.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
Felder anzeigen (1)
idintegerPrimärschlüssel des Abwesenheitsplan-Eintrags. Interne ID.
parent_requestNonWorkTimeRequest3Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest6L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
Felder anzeigen (9)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
personCRMPerson10Person, zu der der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
change_mode: 'string',
daily_absence_start_time: 'string',
daily_absence_end_time: 'string',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"
payload = { "data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
} }
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/non_work_time_request/42', [
'body' => '{"data":{"description":"Text","change_mode":"string","daily_absence_start_time":"string","daily_absence_end_time":"string","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00"}}',
'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/non_work_time_request/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
{
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\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/non_work_time_request/42"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
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/non_work_time_request/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}
}),
);
print(response.body);{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}Eine einzelne NonWorkTimeRequest testen
POST/api/time/non_work_time_request_test
Request-Body application/json
dataNonWorkTimeRequest2Felder anzeigen (17)
change_modestringArt der Änderung an der Anfrage.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
personCRMPerson37Person, zu der der Antrag gehört.
contractEmploymentContract8Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
attachmentsarray<Attachment12>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment3>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest2Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest5L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
Antworten
200Eine einzelne NonWorkTimeRequest testenNonWorkTimeRequest3
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
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.
contractEmploymentContract9Arbeitsvertrag, zu dem der Antrag gehört.
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.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
Felder anzeigen (15)
effective_colorstringDie anzuzeigende Farbe: die konfigurierte, sonst die Standardfarbe des Typs.
namestringName der Abwesenheitsart, zum Beispiel Urlaub oder Krankheit.
valueintegerNumerischer Wert der Abwesenheitsart.
priorityintegerPriorität des Abwesenheitstyps, wenn sich mehrere Typen überschneiden.
processed_content_typestringInhaltstyp, der bei der Bearbeitung der Abwesenheit verwendet wird.
secondary_content_type_optionsstringOptionen für den sekundären Inhaltstyp, durch Komma getrennt
iconstringSymbol des Abwesenheitstyps.
is_vacationbooleanDie Abwesenheitsart zählt als Urlaub.
is_sickbooleanDie Abwesenheitsart zählt als Krankheit.
status_change_requires_hr_approvalbooleanDie Änderung des Status dieses Abwesenheitstyps erfordert eine HR-Genehmigung.
selectable_for_requestbooleanOb mit diesem Typ eine neue Abwesenheitsanfrage angelegt werden darf. Typen, die nur einen Tag in einer Übersicht beschreiben – Feiertag, Schulferien, Arbeitstag –, werden in den Editoren nicht angeboten.
requires_management_approvalbooleanAnträge dieses Typs benötigen eine abschließende schriftliche Entscheidung der Geschäftsführung (der Organisationsleitung), die nach der regulären Genehmigungskette (U10) angehängt wird.
max_days_per_requestintegerObergrenze der Kalendertage, die eine Anfrage dieses Typs umfassen darf; null = unbegrenzt.
colorstringR5: Farbe dieses Abwesenheitstyps im Schichtplan und im Teamkalender ("#RRGGBB"); null = der Standardwert des Typs (getEffectiveColor). Wird mit absence_type_colors_enabled verwendet.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
attachmentsarray<Attachment10>Anhänge der Anfrage.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
commentsarray<NonWorkTimeRequestComment4>Kommentare zum Antrag.
Felder anzeigen (5)
idintegerPrimärschlüssel des Kommentars zur Abwesenheitsanfrage. Interne ID.
userUser14Benutzer, der den Kommentar verfasst hat.
descriptionstringText des Kommentars.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
Felder anzeigen (1)
idintegerPrimärschlüssel des Abwesenheitsplan-Eintrags. Interne ID.
parent_requestNonWorkTimeRequest3Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest6L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
Felder anzeigen (9)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
personCRMPerson10Person, zu der der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/non_work_time_request_test \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
change_mode: 'string',
daily_absence_start_time: 'string',
daily_absence_end_time: 'string',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_request_test', 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/non_work_time_request_test"
payload = { "data": {
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
} }
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/non_work_time_request_test', [
'body' => '{"data":{"description":"Text","change_mode":"string","daily_absence_start_time":"string","daily_absence_end_time":"string","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00"}}',
'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/non_work_time_request_test"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
{
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\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_request_test")
.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/non_work_time_request_test"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"change_mode\":\"string\",\"daily_absence_start_time\":\"string\",\"daily_absence_end_time\":\"string\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\"}}")
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/time_tracking_non_work_time_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/time_tracking_non_work_time_request.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await TimeTrackingNonWorkTimeRequestController.postTest(TimeTrackingNonWorkTimeRequest.fromJson({
"description": "Text",
"change_mode": "string",
"daily_absence_start_time": "string",
"daily_absence_end_time": "string",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}Jahresantrag ("Jahresurlaubsantrag") mit mehreren getrennten Zeiträumen anlegen (L47/L48)
POST/api/time/non_work_time_annual_request
Jede Periode wird zu einem gewöhnlichen Antrag des Pakets und läuft über dieselben Regeln wie ein einzelner Antrag; scheitert eine Periode, wird das gesamte Paket abgelehnt.
Request-Body application/json
dataNonWorkTimeAnnualRequest2Felder anzeigen (5)
personCRMPerson38Person, zu der der Jahresantrag gehört.
contractEmploymentContract10Arbeitsvertrag, zu dem der Jahresantrag gehört.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
Antworten
200Jahresantrag mit mehreren Zeiträumen anlegenNonWorkTimeAnnualRequest3
Felder anzeigen (12)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
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, zu der der Jahresantrag gehört.
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
contractEmploymentContract11Arbeitsvertrag, zu dem der Jahresantrag gehört.
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.
created_by_userUser14Benutzer, der den Jahresantrag angelegt 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.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
requestsarray<NonWorkTimeRequest6>Aus dem Jahresantrag erzeugte Anträge auf arbeitsfreie Zeit.
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
contractEmploymentContract11Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
attachmentsarray<Attachment10>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment5>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest6Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest3L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"year": 1,
"content_type": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {description: 'Text', year: 1, content_type: 1}})
};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request"
payload = { "data": {
"description": "Text",
"year": 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/non_work_time_annual_request', [
'body' => '{"data":{"description":"Text","year":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/non_work_time_annual_request"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"year\":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\":{\"description\":\"Text\",\"year\":1,\"content_type\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"year\":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/non_work_time_annual_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/non_work_time_annual_request.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await NonWorkTimeAnnualRequestController.post(NonWorkTimeAnnualRequest.fromJson({
"description": "Text",
"year": 1,
"content_type": 1
}));
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",
"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
},
"created_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"year": 1,
"content_type": 1,
"status": "string",
"requests": [
{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}
]
}Jahresantrag als Ganzes entscheiden (L48): Jeder offene Zeitraum, den die aktuelle Sitzung entscheiden darf, erhält dieselbe Entscheidung; `declined_requests` listet Zeitraum-IDs, die abzulehnen sind, während der Rest genehmigt wird.
PUT/api/time/non_work_time_annual_request/{id}/decide
Pfad-Parameter
idPflichtstring |
Query-Parameter
decisionPflichtstring | APPROVED oder DECLINEDErlaubt: APPROVEDDECLINED |
approval_commentstring | Schriftliche Entscheidung, Pflicht für den Schritt der Geschäftsleitung |
declined_requestsstring | Kommagetrennte IDs der Zeiträume, die abgelehnt werden, während der Rest genehmigt wird |
balance_override_reasonstring | L11-Begründung für die Übersteuerung |
Antworten
200Alle offenen Zeiträume eines Jahresantrags entscheidenNonWorkTimeAnnualRequest3
Felder anzeigen (12)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
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, zu der der Jahresantrag gehört.
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
contractEmploymentContract11Arbeitsvertrag, zu dem der Jahresantrag gehört.
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.
created_by_userUser14Benutzer, der den Jahresantrag angelegt 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.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
requestsarray<NonWorkTimeRequest6>Aus dem Jahresantrag erzeugte Anträge auf arbeitsfreie Zeit.
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
contractEmploymentContract11Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
attachmentsarray<Attachment10>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment5>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest6Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest3L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PUT \
--url 'https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request/42/decide?decision=APPROVED' \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'PUT', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request/42/decide?decision=APPROVED', 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/non_work_time_annual_request/42/decide?decision=APPROVED"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.put(url, 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/non_work_time_annual_request/42/decide?decision=APPROVED', [
'headers' => [
'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/non_work_time_annual_request/42/decide?decision=APPROVED"),
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/non_work_time_annual_request/42/decide?decision=APPROVED")
.put(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/non_work_time_annual_request/42/decide?decision=APPROVED"
req, _ := http.NewRequest("PUT", 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/non_work_time_annual_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await NonWorkTimeAnnualRequestController.decide(42, decision: 'APPROVED');
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",
"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
},
"created_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"year": 1,
"content_type": 1,
"status": "string",
"requests": [
{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}
]
}Jahresantrag als Ganzes entscheiden (L48): Jeder offene Zeitraum, den die aktuelle Sitzung entscheiden darf, erhält dieselbe Entscheidung; `declined_requests` listet Zeitraum-IDs, die abzulehnen sind, während der Rest genehmigt wird.
PATCH/api/time/non_work_time_annual_request/{id}/decide
Pfad-Parameter
idPflichtstring |
Query-Parameter
decisionPflichtstring | APPROVED oder DECLINEDErlaubt: APPROVEDDECLINED |
approval_commentstring | Schriftliche Entscheidung, Pflicht für den Schritt der Geschäftsleitung |
declined_requestsstring | Kommagetrennte IDs der Zeiträume, die abgelehnt werden, während der Rest genehmigt wird |
balance_override_reasonstring | L11-Begründung für die Übersteuerung |
Antworten
200Alle offenen Zeiträume eines Jahresantrags entscheidenNonWorkTimeAnnualRequest3
Felder anzeigen (12)
idintegerPrimärschlüssel der Jahresanfrage. Interne ID.
userUser14Benutzer, zu dem der Jahresantrag gehört.
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, zu der der Jahresantrag gehört.
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
contractEmploymentContract11Arbeitsvertrag, zu dem der Jahresantrag gehört.
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.
created_by_userUser14Benutzer, der den Jahresantrag angelegt 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.
yearintegerDas Urlaubsjahr, zu dem die Zeiträume gehören.
content_typeintegerAbwesenheitstyp jedes Zeitraums (Wert von NonWorkTimePlanSelectionType).
descriptionstringBeschreibung des Jahresantrags.
statusstringAbgeleitet aus den Zeiträumen, siehe Klassenkommentar.
requestsarray<NonWorkTimeRequest6>Aus dem Jahresantrag erzeugte Anträge auf arbeitsfreie Zeit.
Felder anzeigen (39)
overduebooleanU04: noch offen nach Ablauf der Bearbeitungsfrist.
approval_versionintegerVersion des Genehmigungsprozesses.
change_modestringArt der Änderung an der Anfrage.
balance_override_reasonstringL11: warum ein Planer diesen Antrag genehmigt hat, obwohl der prognostizierte Urlaubssaldo negativ war.
coverage_override_reasonstringL54: warum der Genehmiger einen Tag unter der Mindestbesetzung akzeptiert hat.
coverage_hintbooleanL53: eingereicht, obwohl er den Personalpuffer angreift - die Genehmiger sehen den Hinweis.
sick_during_vacationbooleanU13: eine Krankmeldung innerhalb genehmigten Urlaubs - vom Server gesetzt, angezeigt als "während Urlaub".
consultation_notestringWer vor der Anfrage von Tagen, die ein blockierender Zeitraum als nur mit Abstimmung markiert (U14), konsultiert wurde.
daily_absence_start_timestringLokales tägliches Abwesenheitsfenster für halbtägige Typen; null behält die bisherige Planung bei.
daily_absence_end_timestringEndzeit der ganztägigen Abwesenheit.
idintegerPrimärschlüssel der Anfrage. Interne ID.
userUser14Benutzer, zu dem die Anfrage gehört.
contractEmploymentContract11Arbeitsvertrag, zu dem der Antrag gehört.
descriptionstringBeschreibung des Antrags.
startstring (date-time)Beginn des angefragten Zeitraums.
start_datestringStartdatum des angefragten Zeitraums.
start_monthintegerStartmonat des angefragten Zeitraums.
start_yearintegerStartjahr des angefragten Zeitraums.
endstring (date-time)Ende des angeforderten Zeitraums.
end_datestringEnddatum des angeforderten Zeitraums.
end_monthintegerEndmonat des angeforderten Zeitraums.
end_yearintegerEndjahr des angeforderten Zeitraums.
durationnumber (float)Dauer in Tagen, verknüpft mit NonWorkTimePlan – ein Halbtagstyp zählt 0,5 (Z6)
statusstringStatus der Anfrage.
content_typestringArt des Antrags, z. B. Urlaub oder Abwesenheit.
secondary_content_typestringSekundärer Typ der Anfrage.
linked_content_typeNonWorkTimePlanSelectionType3Mit der Anfrage verknüpfter Planauswahltyp.
attachmentsarray<Attachment10>Anhänge der Anfrage.
commentsarray<NonWorkTimeRequestComment5>Kommentare zum Antrag.
plan_entriesarray<NonWorkTimePlan2>Für die Anfrage erzeugte Planeinträge.
parent_requestNonWorkTimeRequest6Der Antrag, den dieser ändert („Änderungsantrag zum Jahresurlaub“). Ein Änderungsantrag ist in jeder anderen Hinsicht ein gewöhnlicher Antrag; die Referenz macht aus einem zweiten, unabhängig wirkenden Antrag eine sichtbare Korrektur des ersten – und sorgt dafür, dass die damit zurückgezogenen Tage als zurückgezogen statt nur als abgelehnt markiert werden.
annual_requestNonWorkTimeAnnualRequest3L47/L48: der Jahresplan ("Jahresurlaubsantrag"), zu dem dieser Zeitraum gehört. Das Bündel wird als Ganzes entschieden; der Zeitraum bleibt in jeder anderen Hinsicht ein gewöhnlicher Antrag.
request_kindstringU02/U18: ANNUAL = Zeitraum des Jahresplans, SUPPLEMENT = Ergänzungsantrag für die zurückgehaltenen flexiblen Tage. null = regulärer Antrag.
processing_due_datestring (date-time)U04/U20: der Tag, bis zu dem über den Antrag entschieden werden muss, gerechnet ab Eingang.
escalated_atstring (date-time)U04: Zeitpunkt, zu dem die Eskalation wegen Überfälligkeit gesendet wurde; null = noch nicht eskaliert.
written_approval_reasonstringU21: warum dieser Antrag um den Schritt der Geschäftsführung mit schriftlichem Kommentar ergänzt wurde (z. B. SUMMER_CANCELLATION); null = keine zusätzliche schriftliche Genehmigung nötig.
search_stringstringText, unter dem die Entität gesucht werden kann.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PATCH \
--url 'https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request/42/decide?decision=APPROVED' \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'PATCH', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request/42/decide?decision=APPROVED', 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/non_work_time_annual_request/42/decide?decision=APPROVED"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.patch(url, 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/non_work_time_annual_request/42/decide?decision=APPROVED', [
'headers' => [
'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/non_work_time_annual_request/42/decide?decision=APPROVED"),
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/non_work_time_annual_request/42/decide?decision=APPROVED")
.patch(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/non_work_time_annual_request/42/decide?decision=APPROVED"
req, _ := http.NewRequest("PATCH", 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.patch(
Uri.parse('https://eure-instanz.iw-erp.de/api/time/non_work_time_annual_request/42/decide').replace(queryParameters: {'decision': 'APPROVED'}),
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"
},
"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
},
"created_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"year": 1,
"content_type": 1,
"status": "string",
"requests": [
{
"id": 42,
"description": "Text",
"overdue": true,
"approval_version": 1,
"change_mode": "string",
"balance_override_reason": "string",
"coverage_override_reason": "string",
"coverage_hint": true,
"sick_during_vacation": true,
"consultation_note": "string"
}
]
}