Skip to content
Developer

NonWorkTimeRequest

Staff10 EndpointsTimeTracking / NonWorkTimeRequest

The approved request as a printable document

GET/api/time/non_work_time_request/{id}/pdf

The paper rule the digital request replaced still ends on paper: the approved request goes back to the team lead, and the employee gets a printout on request. Withdrawn days are named as withdrawn rather than merely missing - the rules ask for exactly that.

Path parameters

idrequiredstring

Responses

200PDF of the absence request

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/time/non_work_time_request/42/pdf \
  --header 'x-iw-jwt-token: <TOKEN>'

Get all NonWorkTimeRequest

GET/api/time/non_work_time_request

Query parameters

searchStringstringtext to search for in the list
orderFieldNamestringname of the order field
orderFieldSortstringsorting modeAllowed: DESCASC
pageintegerpage of the list
pageSizeintegernumber of entries for each page
withMaxPageNumberstringreturns the number of pages available as a header if this is set

Responses

200Get all NonWorkTimeRequestarray<NonWorkTimeRequest>

Show fields (35)
  • overdueboolean

    U04: still waiting after the processing deadline.

  • approval_versioninteger

    Version of the approval process.

  • change_modestring

    Mode of a change to the request.

  • balance_override_reasonstring

    L11: why a planner approved this request although the projected vacation balance was negative.

  • coverage_override_reasonstring

    L54: why the approver accepted a day below the minimum staffing.

  • coverage_hintboolean

    L53: handed in although it eats into the staffing buffer - the approvers see the hint.

  • sick_during_vacationboolean

    U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

  • consultation_notestring

    Who was consulted before requesting days a blocking period marks as consultation-only (U14).

  • daily_absence_start_timestring

    Local daily absence window for half-day types; null preserves legacy planning.

  • daily_absence_end_timestring

    End time of daily absence.

  • idinteger

    Primary key of the request. Internal ID.

  • userUser14

    User the request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the request.

  • startstring (date-time)

    Start of the requested period.

  • start_datestring

    Start date of the requested period.

  • start_monthinteger

    Start month of the requested period.

  • start_yearinteger

    Start year of the requested period.

  • endstring (date-time)

    End of the requested period.

  • end_datestring

    End date of the requested period.

  • end_monthinteger

    End month of the requested period.

  • end_yearinteger

    End year of the requested period.

  • durationnumber (float)

    duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

  • statusstring

    Status of the request.

  • content_typestring

    Type of the request, e.g. vacation or absence.

  • secondary_content_typestring

    Secondary type of the request.

  • linked_content_typeNonWorkTimePlanSelectionType3

    Plan selection type linked to the request.

    Show fields (15)
    • effective_colorstring

      The colour to show: the configured one, else the default of the type.

    • namestring

      Name of the absence type, for example vacation or sick leave.

    • valueinteger

      Numeric value of the absence type.

    • priorityinteger

      Priority of the absence type when several types overlap.

    • processed_content_typestring

      Content type used when the absence is processed.

    • secondary_content_type_optionsstring

      Options for the secondary content type, separated by a comma

    • iconstring

      Icon of the absence type.

    • is_vacationboolean

      The absence type counts as vacation.

    • is_sickboolean

      The absence type counts as sick leave.

    • status_change_requires_hr_approvalboolean

      Changing the status of this absence type requires HR approval.

    • selectable_for_requestboolean

      Whether a new absence request may be created with this type. Types that only describe a day in an overview - holiday, school holiday, work day - are not offered in the editors.

    • requires_management_approvalboolean

      Requests of this type need a final written decision by the management (the organization leadership), appended after the regular approval chain (U10).

    • max_days_per_requestinteger

      Upper limit of calendar days one request of this type may cover; null = unlimited.

    • colorstring

      R5: colour of this absence type in the shift plan and the team calendar ("#RRGGBB"); null = the default of the type (getEffectiveColor). Used with absence_type_colors_enabled.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

  • parent_requestNonWorkTimeRequest

    The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

  • annual_requestNonWorkTimeAnnualRequest4

    L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    Show fields (9)
    • idinteger

      Primary key of the annual request. Internal ID.

    • userUser14

      User the annual request belongs to.

    • personCRMPerson10

      Person the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

    • statusstring

      Derived from the periods, see class comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • request_kindstring

    U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

  • processing_due_datestring (date-time)

    U04/U20: the day by which the request has to be decided, counted from its receipt.

  • escalated_atstring (date-time)

    U04: when the overdue escalation was sent; null = not (yet) escalated.

  • written_approval_reasonstring

    U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

  • search_stringstring

    Text that the entity can be searched by.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/time/non_work_time_request \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
[
  {
    "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"
  }
]

Create a single NonWorkTimeRequest

POST/api/time/non_work_time_request

Request body application/json

  • dataNonWorkTimeRequest2
    Show fields (17)
    • change_modestring

      Mode of a change to the request.

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • personCRMPerson37

      Person the request belongs to.

    • contractEmploymentContract8

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • endstring (date-time)

      End of the requested period.

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • attachmentsarray<Attachment12>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment3>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest2

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest5

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

Responses

200Create a single NonWorkTimeRequestNonWorkTimeRequest3

Show fields (39)
  • overdueboolean

    U04: still waiting after the processing deadline.

  • approval_versioninteger

    Version of the approval process.

  • change_modestring

    Mode of a change to the request.

  • balance_override_reasonstring

    L11: why a planner approved this request although the projected vacation balance was negative.

  • coverage_override_reasonstring

    L54: why the approver accepted a day below the minimum staffing.

  • coverage_hintboolean

    L53: handed in although it eats into the staffing buffer - the approvers see the hint.

  • sick_during_vacationboolean

    U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

  • consultation_notestring

    Who was consulted before requesting days a blocking period marks as consultation-only (U14).

  • daily_absence_start_timestring

    Local daily absence window for half-day types; null preserves legacy planning.

  • daily_absence_end_timestring

    End time of daily absence.

  • idinteger

    Primary key of the request. Internal ID.

  • userUser14

    User the request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • contractEmploymentContract9

    Employment contract the request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the request.

  • startstring (date-time)

    Start of the requested period.

  • start_datestring

    Start date of the requested period.

  • start_monthinteger

    Start month of the requested period.

  • start_yearinteger

    Start year of the requested period.

  • endstring (date-time)

    End of the requested period.

  • end_datestring

    End date of the requested period.

  • end_monthinteger

    End month of the requested period.

  • end_yearinteger

    End year of the requested period.

  • durationnumber (float)

    duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

  • statusstring

    Status of the request.

  • content_typestring

    Type of the request, e.g. vacation or absence.

  • secondary_content_typestring

    Secondary type of the request.

  • linked_content_typeNonWorkTimePlanSelectionType3

    Plan selection type linked to the request.

    Show fields (15)
    • effective_colorstring

      The colour to show: the configured one, else the default of the type.

    • namestring

      Name of the absence type, for example vacation or sick leave.

    • valueinteger

      Numeric value of the absence type.

    • priorityinteger

      Priority of the absence type when several types overlap.

    • processed_content_typestring

      Content type used when the absence is processed.

    • secondary_content_type_optionsstring

      Options for the secondary content type, separated by a comma

    • iconstring

      Icon of the absence type.

    • is_vacationboolean

      The absence type counts as vacation.

    • is_sickboolean

      The absence type counts as sick leave.

    • status_change_requires_hr_approvalboolean

      Changing the status of this absence type requires HR approval.

    • selectable_for_requestboolean

      Whether a new absence request may be created with this type. Types that only describe a day in an overview - holiday, school holiday, work day - are not offered in the editors.

    • requires_management_approvalboolean

      Requests of this type need a final written decision by the management (the organization leadership), appended after the regular approval chain (U10).

    • max_days_per_requestinteger

      Upper limit of calendar days one request of this type may cover; null = unlimited.

    • colorstring

      R5: colour of this absence type in the shift plan and the team calendar ("#RRGGBB"); null = the default of the type (getEffectiveColor). Used with absence_type_colors_enabled.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

  • attachmentsarray<Attachment10>

    Attachments of the request.

    Show fields (25)
    • idinteger

      Primary key of the attachment. Internal ID.

    • filenamestring

      Original file name.

    • filesizestring

      Size of the file in bytes.

    • mimetypestring

      MIME type of the file.

    • createdbyusernamestring

      Name of the user who uploaded the file, as text.

    • createdstring (date-time)

      Point in time the attachment was created.

    • googleidstring

      ID of the file in Google Drive.

    • scopestring

      Scope that controls who can see the attachment.

    • ocr_document_typestring

      Document type recognized by OCR.

    • ocr_from_namestring

      Sender name recognized by OCR.

    • ocr_from_companystring

      Sender company recognized by OCR.

    • ocr_from_addressstring

      Sender address recognized by OCR.

    • ocr_from_emailstring

      Sender e-mail address recognized by OCR.

    • ocr_from_phonestring

      Sender phone number recognized by OCR.

    • ocr_to_namestring

      Recipient name recognized by OCR.

    • ocr_to_companystring

      Recipient company recognized by OCR.

    • ocr_to_addressstring

      Recipient address recognized by OCR.

    • ocr_to_emailstring

      Recipient e-mail address recognized by OCR.

    • ocr_to_phonestring

      Recipient phone number recognized by OCR.

    • ocr_summarystring

      Summary of the document created by OCR.

    • ocr_statusstring

      OCR processing status: null=not processed, pending, processing, done, error

    • ocr_errorstring

      Reason of the last failed or incomplete OCR run, null when it went through

    • ocr_processed_atstring (date-time)

      Point in time OCR processing finished.

    • virus_checkedboolean

      1 once the virus scan has passed for this file. The scan runs in the background (AttachmentVirusScanCommand), so a freshly uploaded file starts at 0 and stays there until it was really checked. An infected file never reaches 1 - it is deleted instead. UIs use this to decide whether a file may be handed to a user, so it must stay false until proven otherwise.

    • virus_checked_atstring (date-time)

      When the virus scan passed. Null while the file is still waiting.

  • commentsarray<NonWorkTimeRequestComment4>

    Comments on the request.

    Show fields (5)
    • idinteger

      Primary key of the absence request comment. Internal ID.

    • userUser14

      Login user who wrote the comment.

    • descriptionstring

      Text of the comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • plan_entriesarray<NonWorkTimePlan2>

    Plan entries generated for the request.

    Show fields (1)
    • idinteger

      Primary key of the absence plan entry. Internal ID.

  • parent_requestNonWorkTimeRequest3

    The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

  • annual_requestNonWorkTimeAnnualRequest6

    L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    Show fields (9)
    • idinteger

      Primary key of the annual request. Internal ID.

    • userUser14

      User the annual request belongs to.

    • personCRMPerson10

      Person the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

    • statusstring

      Derived from the periods, see class comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • request_kindstring

    U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

  • processing_due_datestring (date-time)

    U04/U20: the day by which the request has to be decided, counted from its receipt.

  • escalated_atstring (date-time)

    U04: when the overdue escalation was sent; null = not (yet) escalated.

  • written_approval_reasonstring

    U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

  • search_stringstring

    Text that the entity can be searched by.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request POST \
  --url https://your-instance.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"
  }
}
'
Response 200 application/json
{
  "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"
}

Get a single NonWorkTimeRequest

GET/api/time/non_work_time_request/{id}

Path parameters

idrequiredstring

Responses

200Get a single NonWorkTimeRequestNonWorkTimeRequest3

Show fields (39)
  • overdueboolean

    U04: still waiting after the processing deadline.

  • approval_versioninteger

    Version of the approval process.

  • change_modestring

    Mode of a change to the request.

  • balance_override_reasonstring

    L11: why a planner approved this request although the projected vacation balance was negative.

  • coverage_override_reasonstring

    L54: why the approver accepted a day below the minimum staffing.

  • coverage_hintboolean

    L53: handed in although it eats into the staffing buffer - the approvers see the hint.

  • sick_during_vacationboolean

    U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

  • consultation_notestring

    Who was consulted before requesting days a blocking period marks as consultation-only (U14).

  • daily_absence_start_timestring

    Local daily absence window for half-day types; null preserves legacy planning.

  • daily_absence_end_timestring

    End time of daily absence.

  • idinteger

    Primary key of the request. Internal ID.

  • userUser14

    User the request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • contractEmploymentContract9

    Employment contract the request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the request.

  • startstring (date-time)

    Start of the requested period.

  • start_datestring

    Start date of the requested period.

  • start_monthinteger

    Start month of the requested period.

  • start_yearinteger

    Start year of the requested period.

  • endstring (date-time)

    End of the requested period.

  • end_datestring

    End date of the requested period.

  • end_monthinteger

    End month of the requested period.

  • end_yearinteger

    End year of the requested period.

  • durationnumber (float)

    duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

  • statusstring

    Status of the request.

  • content_typestring

    Type of the request, e.g. vacation or absence.

  • secondary_content_typestring

    Secondary type of the request.

  • linked_content_typeNonWorkTimePlanSelectionType3

    Plan selection type linked to the request.

    Show fields (15)
    • effective_colorstring

      The colour to show: the configured one, else the default of the type.

    • namestring

      Name of the absence type, for example vacation or sick leave.

    • valueinteger

      Numeric value of the absence type.

    • priorityinteger

      Priority of the absence type when several types overlap.

    • processed_content_typestring

      Content type used when the absence is processed.

    • secondary_content_type_optionsstring

      Options for the secondary content type, separated by a comma

    • iconstring

      Icon of the absence type.

    • is_vacationboolean

      The absence type counts as vacation.

    • is_sickboolean

      The absence type counts as sick leave.

    • status_change_requires_hr_approvalboolean

      Changing the status of this absence type requires HR approval.

    • selectable_for_requestboolean

      Whether a new absence request may be created with this type. Types that only describe a day in an overview - holiday, school holiday, work day - are not offered in the editors.

    • requires_management_approvalboolean

      Requests of this type need a final written decision by the management (the organization leadership), appended after the regular approval chain (U10).

    • max_days_per_requestinteger

      Upper limit of calendar days one request of this type may cover; null = unlimited.

    • colorstring

      R5: colour of this absence type in the shift plan and the team calendar ("#RRGGBB"); null = the default of the type (getEffectiveColor). Used with absence_type_colors_enabled.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

  • attachmentsarray<Attachment10>

    Attachments of the request.

    Show fields (25)
    • idinteger

      Primary key of the attachment. Internal ID.

    • filenamestring

      Original file name.

    • filesizestring

      Size of the file in bytes.

    • mimetypestring

      MIME type of the file.

    • createdbyusernamestring

      Name of the user who uploaded the file, as text.

    • createdstring (date-time)

      Point in time the attachment was created.

    • googleidstring

      ID of the file in Google Drive.

    • scopestring

      Scope that controls who can see the attachment.

    • ocr_document_typestring

      Document type recognized by OCR.

    • ocr_from_namestring

      Sender name recognized by OCR.

    • ocr_from_companystring

      Sender company recognized by OCR.

    • ocr_from_addressstring

      Sender address recognized by OCR.

    • ocr_from_emailstring

      Sender e-mail address recognized by OCR.

    • ocr_from_phonestring

      Sender phone number recognized by OCR.

    • ocr_to_namestring

      Recipient name recognized by OCR.

    • ocr_to_companystring

      Recipient company recognized by OCR.

    • ocr_to_addressstring

      Recipient address recognized by OCR.

    • ocr_to_emailstring

      Recipient e-mail address recognized by OCR.

    • ocr_to_phonestring

      Recipient phone number recognized by OCR.

    • ocr_summarystring

      Summary of the document created by OCR.

    • ocr_statusstring

      OCR processing status: null=not processed, pending, processing, done, error

    • ocr_errorstring

      Reason of the last failed or incomplete OCR run, null when it went through

    • ocr_processed_atstring (date-time)

      Point in time OCR processing finished.

    • virus_checkedboolean

      1 once the virus scan has passed for this file. The scan runs in the background (AttachmentVirusScanCommand), so a freshly uploaded file starts at 0 and stays there until it was really checked. An infected file never reaches 1 - it is deleted instead. UIs use this to decide whether a file may be handed to a user, so it must stay false until proven otherwise.

    • virus_checked_atstring (date-time)

      When the virus scan passed. Null while the file is still waiting.

  • commentsarray<NonWorkTimeRequestComment4>

    Comments on the request.

    Show fields (5)
    • idinteger

      Primary key of the absence request comment. Internal ID.

    • userUser14

      Login user who wrote the comment.

    • descriptionstring

      Text of the comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • plan_entriesarray<NonWorkTimePlan2>

    Plan entries generated for the request.

    Show fields (1)
    • idinteger

      Primary key of the absence plan entry. Internal ID.

  • parent_requestNonWorkTimeRequest3

    The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

  • annual_requestNonWorkTimeAnnualRequest6

    L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    Show fields (9)
    • idinteger

      Primary key of the annual request. Internal ID.

    • userUser14

      User the annual request belongs to.

    • personCRMPerson10

      Person the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

    • statusstring

      Derived from the periods, see class comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • request_kindstring

    U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

  • processing_due_datestring (date-time)

    U04/U20: the day by which the request has to be decided, counted from its receipt.

  • escalated_atstring (date-time)

    U04: when the overdue escalation was sent; null = not (yet) escalated.

  • written_approval_reasonstring

    U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

  • search_stringstring

    Text that the entity can be searched by.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/time/non_work_time_request/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "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"
}

Update a single NonWorkTimeRequest

PUT/api/time/non_work_time_request/{id}

Path parameters

idrequiredstring

Query parameters

actionstringCANCEL_OWN withdraws an own pending request without binding body fieldsAllowed: CANCEL_OWN
approval_versionintegerDisplayed request version; required for CANCEL_OWN and staged decisions
approval_commentstringWritten decision of the current approval step; mandatory for the management (Geschäftsleitung) step
balance_override_reasonstringL11: reason for approving although the projected year-end vacation balance is negative; required when non_work_time_negative_balance_override_required is on
coverage_override_reasonstringL54: reason for approving although a day drops below the minimum staffing; required when staffing_coverage_override_reason_required is on

Request body application/json

  • dataNonWorkTimeRequest2
    Show fields (17)
    • change_modestring

      Mode of a change to the request.

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • personCRMPerson37

      Person the request belongs to.

    • contractEmploymentContract8

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • endstring (date-time)

      End of the requested period.

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • attachmentsarray<Attachment12>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment3>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest2

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest5

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

Responses

200Update a single NonWorkTimeRequestNonWorkTimeRequest3

Show fields (39)
  • overdueboolean

    U04: still waiting after the processing deadline.

  • approval_versioninteger

    Version of the approval process.

  • change_modestring

    Mode of a change to the request.

  • balance_override_reasonstring

    L11: why a planner approved this request although the projected vacation balance was negative.

  • coverage_override_reasonstring

    L54: why the approver accepted a day below the minimum staffing.

  • coverage_hintboolean

    L53: handed in although it eats into the staffing buffer - the approvers see the hint.

  • sick_during_vacationboolean

    U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

  • consultation_notestring

    Who was consulted before requesting days a blocking period marks as consultation-only (U14).

  • daily_absence_start_timestring

    Local daily absence window for half-day types; null preserves legacy planning.

  • daily_absence_end_timestring

    End time of daily absence.

  • idinteger

    Primary key of the request. Internal ID.

  • userUser14

    User the request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • contractEmploymentContract9

    Employment contract the request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the request.

  • startstring (date-time)

    Start of the requested period.

  • start_datestring

    Start date of the requested period.

  • start_monthinteger

    Start month of the requested period.

  • start_yearinteger

    Start year of the requested period.

  • endstring (date-time)

    End of the requested period.

  • end_datestring

    End date of the requested period.

  • end_monthinteger

    End month of the requested period.

  • end_yearinteger

    End year of the requested period.

  • durationnumber (float)

    duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

  • statusstring

    Status of the request.

  • content_typestring

    Type of the request, e.g. vacation or absence.

  • secondary_content_typestring

    Secondary type of the request.

  • linked_content_typeNonWorkTimePlanSelectionType3

    Plan selection type linked to the request.

    Show fields (15)
    • effective_colorstring

      The colour to show: the configured one, else the default of the type.

    • namestring

      Name of the absence type, for example vacation or sick leave.

    • valueinteger

      Numeric value of the absence type.

    • priorityinteger

      Priority of the absence type when several types overlap.

    • processed_content_typestring

      Content type used when the absence is processed.

    • secondary_content_type_optionsstring

      Options for the secondary content type, separated by a comma

    • iconstring

      Icon of the absence type.

    • is_vacationboolean

      The absence type counts as vacation.

    • is_sickboolean

      The absence type counts as sick leave.

    • status_change_requires_hr_approvalboolean

      Changing the status of this absence type requires HR approval.

    • selectable_for_requestboolean

      Whether a new absence request may be created with this type. Types that only describe a day in an overview - holiday, school holiday, work day - are not offered in the editors.

    • requires_management_approvalboolean

      Requests of this type need a final written decision by the management (the organization leadership), appended after the regular approval chain (U10).

    • max_days_per_requestinteger

      Upper limit of calendar days one request of this type may cover; null = unlimited.

    • colorstring

      R5: colour of this absence type in the shift plan and the team calendar ("#RRGGBB"); null = the default of the type (getEffectiveColor). Used with absence_type_colors_enabled.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

  • attachmentsarray<Attachment10>

    Attachments of the request.

    Show fields (25)
    • idinteger

      Primary key of the attachment. Internal ID.

    • filenamestring

      Original file name.

    • filesizestring

      Size of the file in bytes.

    • mimetypestring

      MIME type of the file.

    • createdbyusernamestring

      Name of the user who uploaded the file, as text.

    • createdstring (date-time)

      Point in time the attachment was created.

    • googleidstring

      ID of the file in Google Drive.

    • scopestring

      Scope that controls who can see the attachment.

    • ocr_document_typestring

      Document type recognized by OCR.

    • ocr_from_namestring

      Sender name recognized by OCR.

    • ocr_from_companystring

      Sender company recognized by OCR.

    • ocr_from_addressstring

      Sender address recognized by OCR.

    • ocr_from_emailstring

      Sender e-mail address recognized by OCR.

    • ocr_from_phonestring

      Sender phone number recognized by OCR.

    • ocr_to_namestring

      Recipient name recognized by OCR.

    • ocr_to_companystring

      Recipient company recognized by OCR.

    • ocr_to_addressstring

      Recipient address recognized by OCR.

    • ocr_to_emailstring

      Recipient e-mail address recognized by OCR.

    • ocr_to_phonestring

      Recipient phone number recognized by OCR.

    • ocr_summarystring

      Summary of the document created by OCR.

    • ocr_statusstring

      OCR processing status: null=not processed, pending, processing, done, error

    • ocr_errorstring

      Reason of the last failed or incomplete OCR run, null when it went through

    • ocr_processed_atstring (date-time)

      Point in time OCR processing finished.

    • virus_checkedboolean

      1 once the virus scan has passed for this file. The scan runs in the background (AttachmentVirusScanCommand), so a freshly uploaded file starts at 0 and stays there until it was really checked. An infected file never reaches 1 - it is deleted instead. UIs use this to decide whether a file may be handed to a user, so it must stay false until proven otherwise.

    • virus_checked_atstring (date-time)

      When the virus scan passed. Null while the file is still waiting.

  • commentsarray<NonWorkTimeRequestComment4>

    Comments on the request.

    Show fields (5)
    • idinteger

      Primary key of the absence request comment. Internal ID.

    • userUser14

      Login user who wrote the comment.

    • descriptionstring

      Text of the comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • plan_entriesarray<NonWorkTimePlan2>

    Plan entries generated for the request.

    Show fields (1)
    • idinteger

      Primary key of the absence plan entry. Internal ID.

  • parent_requestNonWorkTimeRequest3

    The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

  • annual_requestNonWorkTimeAnnualRequest6

    L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    Show fields (9)
    • idinteger

      Primary key of the annual request. Internal ID.

    • userUser14

      User the annual request belongs to.

    • personCRMPerson10

      Person the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

    • statusstring

      Derived from the periods, see class comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • request_kindstring

    U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

  • processing_due_datestring (date-time)

    U04/U20: the day by which the request has to be decided, counted from its receipt.

  • escalated_atstring (date-time)

    U04: when the overdue escalation was sent; null = not (yet) escalated.

  • written_approval_reasonstring

    U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

  • search_stringstring

    Text that the entity can be searched by.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request PUT \
  --url https://your-instance.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"
  }
}
'
Response 200 application/json
{
  "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"
}

Update a single NonWorkTimeRequest

PATCH/api/time/non_work_time_request/{id}

Path parameters

idrequiredstring

Query parameters

actionstringCANCEL_OWN withdraws an own pending request without binding body fieldsAllowed: CANCEL_OWN
approval_versionintegerDisplayed request version; required for CANCEL_OWN and staged decisions
approval_commentstringWritten decision of the current approval step; mandatory for the management (Geschäftsleitung) step
balance_override_reasonstringL11: reason for approving although the projected year-end vacation balance is negative; required when non_work_time_negative_balance_override_required is on
coverage_override_reasonstringL54: reason for approving although a day drops below the minimum staffing; required when staffing_coverage_override_reason_required is on

Request body application/json

  • dataNonWorkTimeRequest2
    Show fields (17)
    • change_modestring

      Mode of a change to the request.

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • personCRMPerson37

      Person the request belongs to.

    • contractEmploymentContract8

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • endstring (date-time)

      End of the requested period.

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • attachmentsarray<Attachment12>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment3>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest2

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest5

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

Responses

200Update a single NonWorkTimeRequestNonWorkTimeRequest3

Show fields (39)
  • overdueboolean

    U04: still waiting after the processing deadline.

  • approval_versioninteger

    Version of the approval process.

  • change_modestring

    Mode of a change to the request.

  • balance_override_reasonstring

    L11: why a planner approved this request although the projected vacation balance was negative.

  • coverage_override_reasonstring

    L54: why the approver accepted a day below the minimum staffing.

  • coverage_hintboolean

    L53: handed in although it eats into the staffing buffer - the approvers see the hint.

  • sick_during_vacationboolean

    U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

  • consultation_notestring

    Who was consulted before requesting days a blocking period marks as consultation-only (U14).

  • daily_absence_start_timestring

    Local daily absence window for half-day types; null preserves legacy planning.

  • daily_absence_end_timestring

    End time of daily absence.

  • idinteger

    Primary key of the request. Internal ID.

  • userUser14

    User the request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • contractEmploymentContract9

    Employment contract the request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the request.

  • startstring (date-time)

    Start of the requested period.

  • start_datestring

    Start date of the requested period.

  • start_monthinteger

    Start month of the requested period.

  • start_yearinteger

    Start year of the requested period.

  • endstring (date-time)

    End of the requested period.

  • end_datestring

    End date of the requested period.

  • end_monthinteger

    End month of the requested period.

  • end_yearinteger

    End year of the requested period.

  • durationnumber (float)

    duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

  • statusstring

    Status of the request.

  • content_typestring

    Type of the request, e.g. vacation or absence.

  • secondary_content_typestring

    Secondary type of the request.

  • linked_content_typeNonWorkTimePlanSelectionType3

    Plan selection type linked to the request.

    Show fields (15)
    • effective_colorstring

      The colour to show: the configured one, else the default of the type.

    • namestring

      Name of the absence type, for example vacation or sick leave.

    • valueinteger

      Numeric value of the absence type.

    • priorityinteger

      Priority of the absence type when several types overlap.

    • processed_content_typestring

      Content type used when the absence is processed.

    • secondary_content_type_optionsstring

      Options for the secondary content type, separated by a comma

    • iconstring

      Icon of the absence type.

    • is_vacationboolean

      The absence type counts as vacation.

    • is_sickboolean

      The absence type counts as sick leave.

    • status_change_requires_hr_approvalboolean

      Changing the status of this absence type requires HR approval.

    • selectable_for_requestboolean

      Whether a new absence request may be created with this type. Types that only describe a day in an overview - holiday, school holiday, work day - are not offered in the editors.

    • requires_management_approvalboolean

      Requests of this type need a final written decision by the management (the organization leadership), appended after the regular approval chain (U10).

    • max_days_per_requestinteger

      Upper limit of calendar days one request of this type may cover; null = unlimited.

    • colorstring

      R5: colour of this absence type in the shift plan and the team calendar ("#RRGGBB"); null = the default of the type (getEffectiveColor). Used with absence_type_colors_enabled.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

  • attachmentsarray<Attachment10>

    Attachments of the request.

    Show fields (25)
    • idinteger

      Primary key of the attachment. Internal ID.

    • filenamestring

      Original file name.

    • filesizestring

      Size of the file in bytes.

    • mimetypestring

      MIME type of the file.

    • createdbyusernamestring

      Name of the user who uploaded the file, as text.

    • createdstring (date-time)

      Point in time the attachment was created.

    • googleidstring

      ID of the file in Google Drive.

    • scopestring

      Scope that controls who can see the attachment.

    • ocr_document_typestring

      Document type recognized by OCR.

    • ocr_from_namestring

      Sender name recognized by OCR.

    • ocr_from_companystring

      Sender company recognized by OCR.

    • ocr_from_addressstring

      Sender address recognized by OCR.

    • ocr_from_emailstring

      Sender e-mail address recognized by OCR.

    • ocr_from_phonestring

      Sender phone number recognized by OCR.

    • ocr_to_namestring

      Recipient name recognized by OCR.

    • ocr_to_companystring

      Recipient company recognized by OCR.

    • ocr_to_addressstring

      Recipient address recognized by OCR.

    • ocr_to_emailstring

      Recipient e-mail address recognized by OCR.

    • ocr_to_phonestring

      Recipient phone number recognized by OCR.

    • ocr_summarystring

      Summary of the document created by OCR.

    • ocr_statusstring

      OCR processing status: null=not processed, pending, processing, done, error

    • ocr_errorstring

      Reason of the last failed or incomplete OCR run, null when it went through

    • ocr_processed_atstring (date-time)

      Point in time OCR processing finished.

    • virus_checkedboolean

      1 once the virus scan has passed for this file. The scan runs in the background (AttachmentVirusScanCommand), so a freshly uploaded file starts at 0 and stays there until it was really checked. An infected file never reaches 1 - it is deleted instead. UIs use this to decide whether a file may be handed to a user, so it must stay false until proven otherwise.

    • virus_checked_atstring (date-time)

      When the virus scan passed. Null while the file is still waiting.

  • commentsarray<NonWorkTimeRequestComment4>

    Comments on the request.

    Show fields (5)
    • idinteger

      Primary key of the absence request comment. Internal ID.

    • userUser14

      Login user who wrote the comment.

    • descriptionstring

      Text of the comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • plan_entriesarray<NonWorkTimePlan2>

    Plan entries generated for the request.

    Show fields (1)
    • idinteger

      Primary key of the absence plan entry. Internal ID.

  • parent_requestNonWorkTimeRequest3

    The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

  • annual_requestNonWorkTimeAnnualRequest6

    L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    Show fields (9)
    • idinteger

      Primary key of the annual request. Internal ID.

    • userUser14

      User the annual request belongs to.

    • personCRMPerson10

      Person the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

    • statusstring

      Derived from the periods, see class comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • request_kindstring

    U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

  • processing_due_datestring (date-time)

    U04/U20: the day by which the request has to be decided, counted from its receipt.

  • escalated_atstring (date-time)

    U04: when the overdue escalation was sent; null = not (yet) escalated.

  • written_approval_reasonstring

    U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

  • search_stringstring

    Text that the entity can be searched by.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request PATCH \
  --url https://your-instance.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"
  }
}
'
Response 200 application/json
{
  "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"
}

Test a single NonWorkTimeRequest

POST/api/time/non_work_time_request_test

Request body application/json

  • dataNonWorkTimeRequest2
    Show fields (17)
    • change_modestring

      Mode of a change to the request.

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • personCRMPerson37

      Person the request belongs to.

    • contractEmploymentContract8

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • endstring (date-time)

      End of the requested period.

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • attachmentsarray<Attachment12>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment3>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest2

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest5

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

Responses

200Test a single NonWorkTimeRequestNonWorkTimeRequest3

Show fields (39)
  • overdueboolean

    U04: still waiting after the processing deadline.

  • approval_versioninteger

    Version of the approval process.

  • change_modestring

    Mode of a change to the request.

  • balance_override_reasonstring

    L11: why a planner approved this request although the projected vacation balance was negative.

  • coverage_override_reasonstring

    L54: why the approver accepted a day below the minimum staffing.

  • coverage_hintboolean

    L53: handed in although it eats into the staffing buffer - the approvers see the hint.

  • sick_during_vacationboolean

    U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

  • consultation_notestring

    Who was consulted before requesting days a blocking period marks as consultation-only (U14).

  • daily_absence_start_timestring

    Local daily absence window for half-day types; null preserves legacy planning.

  • daily_absence_end_timestring

    End time of daily absence.

  • idinteger

    Primary key of the request. Internal ID.

  • userUser14

    User the request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • contractEmploymentContract9

    Employment contract the request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the request.

  • startstring (date-time)

    Start of the requested period.

  • start_datestring

    Start date of the requested period.

  • start_monthinteger

    Start month of the requested period.

  • start_yearinteger

    Start year of the requested period.

  • endstring (date-time)

    End of the requested period.

  • end_datestring

    End date of the requested period.

  • end_monthinteger

    End month of the requested period.

  • end_yearinteger

    End year of the requested period.

  • durationnumber (float)

    duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

  • statusstring

    Status of the request.

  • content_typestring

    Type of the request, e.g. vacation or absence.

  • secondary_content_typestring

    Secondary type of the request.

  • linked_content_typeNonWorkTimePlanSelectionType3

    Plan selection type linked to the request.

    Show fields (15)
    • effective_colorstring

      The colour to show: the configured one, else the default of the type.

    • namestring

      Name of the absence type, for example vacation or sick leave.

    • valueinteger

      Numeric value of the absence type.

    • priorityinteger

      Priority of the absence type when several types overlap.

    • processed_content_typestring

      Content type used when the absence is processed.

    • secondary_content_type_optionsstring

      Options for the secondary content type, separated by a comma

    • iconstring

      Icon of the absence type.

    • is_vacationboolean

      The absence type counts as vacation.

    • is_sickboolean

      The absence type counts as sick leave.

    • status_change_requires_hr_approvalboolean

      Changing the status of this absence type requires HR approval.

    • selectable_for_requestboolean

      Whether a new absence request may be created with this type. Types that only describe a day in an overview - holiday, school holiday, work day - are not offered in the editors.

    • requires_management_approvalboolean

      Requests of this type need a final written decision by the management (the organization leadership), appended after the regular approval chain (U10).

    • max_days_per_requestinteger

      Upper limit of calendar days one request of this type may cover; null = unlimited.

    • colorstring

      R5: colour of this absence type in the shift plan and the team calendar ("#RRGGBB"); null = the default of the type (getEffectiveColor). Used with absence_type_colors_enabled.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

  • attachmentsarray<Attachment10>

    Attachments of the request.

    Show fields (25)
    • idinteger

      Primary key of the attachment. Internal ID.

    • filenamestring

      Original file name.

    • filesizestring

      Size of the file in bytes.

    • mimetypestring

      MIME type of the file.

    • createdbyusernamestring

      Name of the user who uploaded the file, as text.

    • createdstring (date-time)

      Point in time the attachment was created.

    • googleidstring

      ID of the file in Google Drive.

    • scopestring

      Scope that controls who can see the attachment.

    • ocr_document_typestring

      Document type recognized by OCR.

    • ocr_from_namestring

      Sender name recognized by OCR.

    • ocr_from_companystring

      Sender company recognized by OCR.

    • ocr_from_addressstring

      Sender address recognized by OCR.

    • ocr_from_emailstring

      Sender e-mail address recognized by OCR.

    • ocr_from_phonestring

      Sender phone number recognized by OCR.

    • ocr_to_namestring

      Recipient name recognized by OCR.

    • ocr_to_companystring

      Recipient company recognized by OCR.

    • ocr_to_addressstring

      Recipient address recognized by OCR.

    • ocr_to_emailstring

      Recipient e-mail address recognized by OCR.

    • ocr_to_phonestring

      Recipient phone number recognized by OCR.

    • ocr_summarystring

      Summary of the document created by OCR.

    • ocr_statusstring

      OCR processing status: null=not processed, pending, processing, done, error

    • ocr_errorstring

      Reason of the last failed or incomplete OCR run, null when it went through

    • ocr_processed_atstring (date-time)

      Point in time OCR processing finished.

    • virus_checkedboolean

      1 once the virus scan has passed for this file. The scan runs in the background (AttachmentVirusScanCommand), so a freshly uploaded file starts at 0 and stays there until it was really checked. An infected file never reaches 1 - it is deleted instead. UIs use this to decide whether a file may be handed to a user, so it must stay false until proven otherwise.

    • virus_checked_atstring (date-time)

      When the virus scan passed. Null while the file is still waiting.

  • commentsarray<NonWorkTimeRequestComment4>

    Comments on the request.

    Show fields (5)
    • idinteger

      Primary key of the absence request comment. Internal ID.

    • userUser14

      Login user who wrote the comment.

    • descriptionstring

      Text of the comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • plan_entriesarray<NonWorkTimePlan2>

    Plan entries generated for the request.

    Show fields (1)
    • idinteger

      Primary key of the absence plan entry. Internal ID.

  • parent_requestNonWorkTimeRequest3

    The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

  • annual_requestNonWorkTimeAnnualRequest6

    L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    Show fields (9)
    • idinteger

      Primary key of the annual request. Internal ID.

    • userUser14

      User the annual request belongs to.

    • personCRMPerson10

      Person the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

    • statusstring

      Derived from the periods, see class comment.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • request_kindstring

    U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

  • processing_due_datestring (date-time)

    U04/U20: the day by which the request has to be decided, counted from its receipt.

  • escalated_atstring (date-time)

    U04: when the overdue escalation was sent; null = not (yet) escalated.

  • written_approval_reasonstring

    U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

  • search_stringstring

    Text that the entity can be searched by.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request POST \
  --url https://your-instance.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"
  }
}
'
Response 200 application/json
{
  "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"
}

Create an annual request ("Jahresurlaubsantrag") with several separate periods (L47/L48)

POST/api/time/non_work_time_annual_request

Every period becomes an ordinary request of the bundle and runs through the same rules as a single request; one failing period refuses the whole bundle.

Request body application/json

  • dataNonWorkTimeAnnualRequest2
    Show fields (5)
    • personCRMPerson38

      Person the annual request belongs to.

    • contractEmploymentContract10

      Employment contract the annual request belongs to.

    • yearinteger

      The vacation year the periods belong to.

    • content_typeinteger

      Absence type of every period (NonWorkTimePlanSelectionType value).

    • descriptionstring

      Description of the annual request.

Responses

200Create an annual request with several periodsNonWorkTimeAnnualRequest3

Show fields (12)
  • idinteger

    Primary key of the annual request. Internal ID.

  • userUser14

    User the annual request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • personCRMPerson10

    Person the annual request belongs to.

    Show fields (81)
    • idinteger

      Primary key of the person. Internal ID.

    • first_namestring

      First name of the person.

    • last_namestring

      Last name of the person.

    • numberinteger

      Member or customer number of the person.

    • manual_numberinteger

      Number set manually instead of the automatic number.

    • number_stringstring

      Member or customer number as text, including prefix.

    • genderstring

      Gender of the person.

    • titlestring

      Academic or other title of the person.

    • positionstring

      Position or role of the person.

    • languagestring

      Preferred language of the person.

    • special_salutationstring

      Special salutation text for letters.

    • form_of_salutationstring

      Form of salutation, for example formal or informal.

    • birthdaystring (date-time)

      Birthday of the person.

    • known_allergiesstring

      Known allergies of the person.

    • confirmed_no_allergiesboolean

      Guardian confirmed that there are no known allergies.

    • allow_photosboolean

      Photos of the person may be taken and published.

    • allow_leaving_aloneboolean

      The person may leave the event alone.

    • authorized_pickupstring

      Persons who are allowed to pick up the person.

    • needs_supportboolean

      The person needs support, for example for inclusion.

    • support_descriptionstring

      Description of the support the person needs.

    • financial_supportboolean

      The person receives financial support.

    • financial_support_numberstring

      Number of the financial support.

    • municipal_supportboolean

      The person receives municipal support.

    • municipal_support_numberstring

      Number of the municipal support.

    • grade_levelinteger

      School grade level of the person.

    • school_classstring

      School class of the person.

    • start_timestring (date-time)

      Start of the membership or activity.

    • start_time_reasonstring

      Reason for the start.

    • end_timestring (date-time)

      End of the membership or activity.

    • end_time_reasonstring

      Reason for the end.

    • confirmed_gtc_timestring (date-time)

      Time the general terms and conditions were confirmed.

    • chatbot_opt_inboolean

      Einwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das pruefbare Protokoll steht in ChatbotConsent.

    • chatbot_opt_in_atstring (date-time)

      Time the person opted in to the chatbot.

    • chatbot_opt_in_text_versionstring

      Version des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.

    • app_usage_statistics_opt_outboolean

      Widerspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezaehlten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Contact data of the person, for example phone and e-mail.

    • archivedboolean

      Whether the person is archived.

    • subscribed_newsletterboolean

      Whether the person subscribed to the newsletter.

    • subscribed_magazineboolean

      Whether the person subscribed to the magazine.

    • printed_member_cardboolean

      Whether a member card has been printed for the person.

    • has_login_userboolean

      Whether the person has a login user.

    • profile_picture_urlstring

      URL of the profile picture of the person.

    • log_book_staffboolean

      Log book flag: staff.

    • log_book_staff1boolean

      Log book flag: staff, level 1.

    • log_book_staff2boolean

      Log book flag: staff, level 2.

    • log_book_memberboolean

      Log book flag: member.

    • log_book_trainerboolean

      Log book flag: trainer.

    • log_book_trainer1boolean

      Log book flag: trainer, level 1.

    • log_book_trainer2boolean

      Log book flag: trainer, level 2.

    • log_book_head_of_departmentboolean

      Log book flag: head of department.

    • log_book_supervisory_boardboolean

      Log book flag: supervisory board.

    • log_book_board_of_directorsboolean

      Log book flag: board of directors.

    • log_book_honorary_memberboolean

      Log book flag: honorary member.

    • log_book_club_card_oneboolean

      Log book flag: club card.

    • log_book_health_recoveredboolean

      Log book flag: recovered from illness.

    • log_book_health_vaccinatedboolean

      Log book flag: vaccinated.

    • log_book_health_vaccinated_additionstring

      Details of the vaccination.

    • log_book_good_conductboolean

      Log book flag: certificate of good conduct.

    • log_book_first_aidboolean

      Log book flag: first aid training.

    • log_book_measles_vaccinationboolean

      Log book flag: measles vaccination.

    • sync_lanistaboolean

      Whether the person is synchronized with Lanista.

    • categoryCRMPersonCategory

      Person category.

    • nicknamestring

      Nickname of the person.

    • preferred_color_hexstring

      Preferred color of the person as hex value.

    • avatar_tokenstring

      Token of the avatar image.

    • search_stringstring

      Text that the entity can be searched by.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Point in time the entity was created.

    • … 2 more fields
  • contractEmploymentContract11

    Employment contract the annual request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • created_by_userUser14

    User who created the annual request.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • yearinteger

    The vacation year the periods belong to.

  • content_typeinteger

    Absence type of every period (NonWorkTimePlanSelectionType value).

  • descriptionstring

    Description of the annual request.

  • statusstring

    Derived from the periods, see class comment.

  • requestsarray<NonWorkTimeRequest6>

    Non-work time requests created from the annual request.

    Show fields (39)
    • overdueboolean

      U04: still waiting after the processing deadline.

    • approval_versioninteger

      Version of the approval process.

    • change_modestring

      Mode of a change to the request.

    • balance_override_reasonstring

      L11: why a planner approved this request although the projected vacation balance was negative.

    • coverage_override_reasonstring

      L54: why the approver accepted a day below the minimum staffing.

    • coverage_hintboolean

      L53: handed in although it eats into the staffing buffer - the approvers see the hint.

    • sick_during_vacationboolean

      U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

    • consultation_notestring

      Who was consulted before requesting days a blocking period marks as consultation-only (U14).

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • idinteger

      Primary key of the request. Internal ID.

    • userUser14

      User the request belongs to.

    • contractEmploymentContract11

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • start_datestring

      Start date of the requested period.

    • start_monthinteger

      Start month of the requested period.

    • start_yearinteger

      Start year of the requested period.

    • endstring (date-time)

      End of the requested period.

    • end_datestring

      End date of the requested period.

    • end_monthinteger

      End month of the requested period.

    • end_yearinteger

      End year of the requested period.

    • durationnumber (float)

      duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • linked_content_typeNonWorkTimePlanSelectionType3

      Plan selection type linked to the request.

    • attachmentsarray<Attachment10>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment5>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan2>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest6

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest3

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

    • processing_due_datestring (date-time)

      U04/U20: the day by which the request has to be decided, counted from its receipt.

    • escalated_atstring (date-time)

      U04: when the overdue escalation was sent; null = not (yet) escalated.

    • written_approval_reasonstring

      U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

    • search_stringstring

      Text that the entity can be searched by.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request POST \
  --url https://your-instance.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
  }
}
'
Response 200 application/json
{
  "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"
    }
  ]
}

Decide an annual request as a whole (L48): every open period the current session may decide gets the same decision; `declined_requests` lists period ids to refuse while the rest is approved.

PUT/api/time/non_work_time_annual_request/{id}/decide

Path parameters

idrequiredstring

Query parameters

decisionrequiredstringAPPROVED or DECLINEDAllowed: APPROVEDDECLINED
approval_commentstringWritten decision, mandatory for the management step
declined_requestsstringComma separated ids of periods to refuse while approving the rest
balance_override_reasonstringL11 override reason

Responses

200Decide all open periods of an annual requestNonWorkTimeAnnualRequest3

Show fields (12)
  • idinteger

    Primary key of the annual request. Internal ID.

  • userUser14

    User the annual request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • personCRMPerson10

    Person the annual request belongs to.

    Show fields (81)
    • idinteger

      Primary key of the person. Internal ID.

    • first_namestring

      First name of the person.

    • last_namestring

      Last name of the person.

    • numberinteger

      Member or customer number of the person.

    • manual_numberinteger

      Number set manually instead of the automatic number.

    • number_stringstring

      Member or customer number as text, including prefix.

    • genderstring

      Gender of the person.

    • titlestring

      Academic or other title of the person.

    • positionstring

      Position or role of the person.

    • languagestring

      Preferred language of the person.

    • special_salutationstring

      Special salutation text for letters.

    • form_of_salutationstring

      Form of salutation, for example formal or informal.

    • birthdaystring (date-time)

      Birthday of the person.

    • known_allergiesstring

      Known allergies of the person.

    • confirmed_no_allergiesboolean

      Guardian confirmed that there are no known allergies.

    • allow_photosboolean

      Photos of the person may be taken and published.

    • allow_leaving_aloneboolean

      The person may leave the event alone.

    • authorized_pickupstring

      Persons who are allowed to pick up the person.

    • needs_supportboolean

      The person needs support, for example for inclusion.

    • support_descriptionstring

      Description of the support the person needs.

    • financial_supportboolean

      The person receives financial support.

    • financial_support_numberstring

      Number of the financial support.

    • municipal_supportboolean

      The person receives municipal support.

    • municipal_support_numberstring

      Number of the municipal support.

    • grade_levelinteger

      School grade level of the person.

    • school_classstring

      School class of the person.

    • start_timestring (date-time)

      Start of the membership or activity.

    • start_time_reasonstring

      Reason for the start.

    • end_timestring (date-time)

      End of the membership or activity.

    • end_time_reasonstring

      Reason for the end.

    • confirmed_gtc_timestring (date-time)

      Time the general terms and conditions were confirmed.

    • chatbot_opt_inboolean

      Einwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das pruefbare Protokoll steht in ChatbotConsent.

    • chatbot_opt_in_atstring (date-time)

      Time the person opted in to the chatbot.

    • chatbot_opt_in_text_versionstring

      Version des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.

    • app_usage_statistics_opt_outboolean

      Widerspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezaehlten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Contact data of the person, for example phone and e-mail.

    • archivedboolean

      Whether the person is archived.

    • subscribed_newsletterboolean

      Whether the person subscribed to the newsletter.

    • subscribed_magazineboolean

      Whether the person subscribed to the magazine.

    • printed_member_cardboolean

      Whether a member card has been printed for the person.

    • has_login_userboolean

      Whether the person has a login user.

    • profile_picture_urlstring

      URL of the profile picture of the person.

    • log_book_staffboolean

      Log book flag: staff.

    • log_book_staff1boolean

      Log book flag: staff, level 1.

    • log_book_staff2boolean

      Log book flag: staff, level 2.

    • log_book_memberboolean

      Log book flag: member.

    • log_book_trainerboolean

      Log book flag: trainer.

    • log_book_trainer1boolean

      Log book flag: trainer, level 1.

    • log_book_trainer2boolean

      Log book flag: trainer, level 2.

    • log_book_head_of_departmentboolean

      Log book flag: head of department.

    • log_book_supervisory_boardboolean

      Log book flag: supervisory board.

    • log_book_board_of_directorsboolean

      Log book flag: board of directors.

    • log_book_honorary_memberboolean

      Log book flag: honorary member.

    • log_book_club_card_oneboolean

      Log book flag: club card.

    • log_book_health_recoveredboolean

      Log book flag: recovered from illness.

    • log_book_health_vaccinatedboolean

      Log book flag: vaccinated.

    • log_book_health_vaccinated_additionstring

      Details of the vaccination.

    • log_book_good_conductboolean

      Log book flag: certificate of good conduct.

    • log_book_first_aidboolean

      Log book flag: first aid training.

    • log_book_measles_vaccinationboolean

      Log book flag: measles vaccination.

    • sync_lanistaboolean

      Whether the person is synchronized with Lanista.

    • categoryCRMPersonCategory

      Person category.

    • nicknamestring

      Nickname of the person.

    • preferred_color_hexstring

      Preferred color of the person as hex value.

    • avatar_tokenstring

      Token of the avatar image.

    • search_stringstring

      Text that the entity can be searched by.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Point in time the entity was created.

    • … 2 more fields
  • contractEmploymentContract11

    Employment contract the annual request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • created_by_userUser14

    User who created the annual request.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • yearinteger

    The vacation year the periods belong to.

  • content_typeinteger

    Absence type of every period (NonWorkTimePlanSelectionType value).

  • descriptionstring

    Description of the annual request.

  • statusstring

    Derived from the periods, see class comment.

  • requestsarray<NonWorkTimeRequest6>

    Non-work time requests created from the annual request.

    Show fields (39)
    • overdueboolean

      U04: still waiting after the processing deadline.

    • approval_versioninteger

      Version of the approval process.

    • change_modestring

      Mode of a change to the request.

    • balance_override_reasonstring

      L11: why a planner approved this request although the projected vacation balance was negative.

    • coverage_override_reasonstring

      L54: why the approver accepted a day below the minimum staffing.

    • coverage_hintboolean

      L53: handed in although it eats into the staffing buffer - the approvers see the hint.

    • sick_during_vacationboolean

      U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

    • consultation_notestring

      Who was consulted before requesting days a blocking period marks as consultation-only (U14).

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • idinteger

      Primary key of the request. Internal ID.

    • userUser14

      User the request belongs to.

    • contractEmploymentContract11

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • start_datestring

      Start date of the requested period.

    • start_monthinteger

      Start month of the requested period.

    • start_yearinteger

      Start year of the requested period.

    • endstring (date-time)

      End of the requested period.

    • end_datestring

      End date of the requested period.

    • end_monthinteger

      End month of the requested period.

    • end_yearinteger

      End year of the requested period.

    • durationnumber (float)

      duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • linked_content_typeNonWorkTimePlanSelectionType3

      Plan selection type linked to the request.

    • attachmentsarray<Attachment10>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment5>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan2>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest6

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest3

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

    • processing_due_datestring (date-time)

      U04/U20: the day by which the request has to be decided, counted from its receipt.

    • escalated_atstring (date-time)

      U04: when the overdue escalation was sent; null = not (yet) escalated.

    • written_approval_reasonstring

      U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

    • search_stringstring

      Text that the entity can be searched by.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request PUT \
  --url 'https://your-instance.iw-erp.de/api/time/non_work_time_annual_request/42/decide?decision=APPROVED' \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "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"
    }
  ]
}

Decide an annual request as a whole (L48): every open period the current session may decide gets the same decision; `declined_requests` lists period ids to refuse while the rest is approved.

PATCH/api/time/non_work_time_annual_request/{id}/decide

Path parameters

idrequiredstring

Query parameters

decisionrequiredstringAPPROVED or DECLINEDAllowed: APPROVEDDECLINED
approval_commentstringWritten decision, mandatory for the management step
declined_requestsstringComma separated ids of periods to refuse while approving the rest
balance_override_reasonstringL11 override reason

Responses

200Decide all open periods of an annual requestNonWorkTimeAnnualRequest3

Show fields (12)
  • idinteger

    Primary key of the annual request. Internal ID.

  • userUser14

    User the annual request belongs to.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • personCRMPerson10

    Person the annual request belongs to.

    Show fields (81)
    • idinteger

      Primary key of the person. Internal ID.

    • first_namestring

      First name of the person.

    • last_namestring

      Last name of the person.

    • numberinteger

      Member or customer number of the person.

    • manual_numberinteger

      Number set manually instead of the automatic number.

    • number_stringstring

      Member or customer number as text, including prefix.

    • genderstring

      Gender of the person.

    • titlestring

      Academic or other title of the person.

    • positionstring

      Position or role of the person.

    • languagestring

      Preferred language of the person.

    • special_salutationstring

      Special salutation text for letters.

    • form_of_salutationstring

      Form of salutation, for example formal or informal.

    • birthdaystring (date-time)

      Birthday of the person.

    • known_allergiesstring

      Known allergies of the person.

    • confirmed_no_allergiesboolean

      Guardian confirmed that there are no known allergies.

    • allow_photosboolean

      Photos of the person may be taken and published.

    • allow_leaving_aloneboolean

      The person may leave the event alone.

    • authorized_pickupstring

      Persons who are allowed to pick up the person.

    • needs_supportboolean

      The person needs support, for example for inclusion.

    • support_descriptionstring

      Description of the support the person needs.

    • financial_supportboolean

      The person receives financial support.

    • financial_support_numberstring

      Number of the financial support.

    • municipal_supportboolean

      The person receives municipal support.

    • municipal_support_numberstring

      Number of the municipal support.

    • grade_levelinteger

      School grade level of the person.

    • school_classstring

      School class of the person.

    • start_timestring (date-time)

      Start of the membership or activity.

    • start_time_reasonstring

      Reason for the start.

    • end_timestring (date-time)

      End of the membership or activity.

    • end_time_reasonstring

      Reason for the end.

    • confirmed_gtc_timestring (date-time)

      Time the general terms and conditions were confirmed.

    • chatbot_opt_inboolean

      Einwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das pruefbare Protokoll steht in ChatbotConsent.

    • chatbot_opt_in_atstring (date-time)

      Time the person opted in to the chatbot.

    • chatbot_opt_in_text_versionstring

      Version des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.

    • app_usage_statistics_opt_outboolean

      Widerspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezaehlten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Contact data of the person, for example phone and e-mail.

    • archivedboolean

      Whether the person is archived.

    • subscribed_newsletterboolean

      Whether the person subscribed to the newsletter.

    • subscribed_magazineboolean

      Whether the person subscribed to the magazine.

    • printed_member_cardboolean

      Whether a member card has been printed for the person.

    • has_login_userboolean

      Whether the person has a login user.

    • profile_picture_urlstring

      URL of the profile picture of the person.

    • log_book_staffboolean

      Log book flag: staff.

    • log_book_staff1boolean

      Log book flag: staff, level 1.

    • log_book_staff2boolean

      Log book flag: staff, level 2.

    • log_book_memberboolean

      Log book flag: member.

    • log_book_trainerboolean

      Log book flag: trainer.

    • log_book_trainer1boolean

      Log book flag: trainer, level 1.

    • log_book_trainer2boolean

      Log book flag: trainer, level 2.

    • log_book_head_of_departmentboolean

      Log book flag: head of department.

    • log_book_supervisory_boardboolean

      Log book flag: supervisory board.

    • log_book_board_of_directorsboolean

      Log book flag: board of directors.

    • log_book_honorary_memberboolean

      Log book flag: honorary member.

    • log_book_club_card_oneboolean

      Log book flag: club card.

    • log_book_health_recoveredboolean

      Log book flag: recovered from illness.

    • log_book_health_vaccinatedboolean

      Log book flag: vaccinated.

    • log_book_health_vaccinated_additionstring

      Details of the vaccination.

    • log_book_good_conductboolean

      Log book flag: certificate of good conduct.

    • log_book_first_aidboolean

      Log book flag: first aid training.

    • log_book_measles_vaccinationboolean

      Log book flag: measles vaccination.

    • sync_lanistaboolean

      Whether the person is synchronized with Lanista.

    • categoryCRMPersonCategory

      Person category.

    • nicknamestring

      Nickname of the person.

    • preferred_color_hexstring

      Preferred color of the person as hex value.

    • avatar_tokenstring

      Token of the avatar image.

    • search_stringstring

      Text that the entity can be searched by.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Point in time the entity was created.

    • … 2 more fields
  • contractEmploymentContract11

    Employment contract the annual request belongs to.

    Show fields (43)
    • staged_absence_approvalboolean

      null inherits group then organization policy; existing installations stay off.

    • idinteger

      Primary key of the employment contract. Internal ID.

    • tokenstring

      Public token of the contract. Used instead of the ID.

    • userUser14

      Login user of the employee.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Total working days per week.

    • reserved_hours_preparationnumber (float)

      L03: weekly hours reserved for Vorbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_follow_upnumber (float)

      L03: weekly hours reserved for Nachbereitung - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_travelnumber (float)

      L03: weekly hours reserved for Fahrt - part of the contract hours but not plannable in the shift plan. null = none.

    • reserved_hours_flexiblenumber (float)

      L03: weekly hours reserved for freie Einteilung - part of the contract hours but not plannable in the shift plan. null = none.

    • week_full_time_total_daysnumber (float)

      Total working days per week for a full-time contract.

    • year_vacation_daysnumber (float)

      Vacation days per year.

    • month_vacation_daysnumber (float)

      Vacation days per month.

    • year_vacation_weeksnumber (float)

      Vacation weeks per year.

    • monday_hoursnumber (float)

      Working hours on Monday.

    • tuesday_hoursnumber (float)

      Working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Working hours on Wednesday.

    • thursday_hoursnumber (float)

      Working hours on Thursday.

    • friday_hoursnumber (float)

      Working hours on Friday.

    • saturday_hoursnumber (float)

      Working hours on Saturday.

    • sunday_hoursnumber (float)

      Working hours on Sunday.

    • netto_hour_costnumber (float)

      Net cost per hour.

    • brutto_hour_costnumber (float)

      Gross cost per hour.

    • startstring (date-time)

      Start date of the contract.

    • endstring (date-time)

      End date of the contract.

    • fixed_term_statusstring

      Befristung: PERMANENT (unbefristet, default), FIXED_TERM or 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; filled from the template's probationMonths when a contract is created without it.

    • numberstring

      Contract number.

    • descriptionstring

      Description of the contract.

    • archivedboolean

      The contract is archived.

    • allow_app_time_trackingboolean

      The employee may track time in the app.

    • allow_scanner_time_trackingboolean

      The employee may track time with the scanner.

    • allow_app_non_work_time_managementboolean

      The employee may manage absences in the app.

    • force_no_auto_breakboolean

      Automatic breaks are not added for this contract.

    • work_time_modestring

      How the target working time is defined - null behaves as WEEKDAY_HOURS so existing contracts keep their previous behaviour unchanged.

    • holiday_credit_modestring

      Holiday credit for WEEK_TOTAL contracts - null behaves as WEEKDAY_TARGET (previous behaviour, only meaningful for WEEKDAY_HOURS contracts).

    • holiday_credit_fixed_secondsinteger

      Fixed holiday credit in seconds.

    • planning_weekdays_bitmaskinteger

      ISO weekday bitmask (Mo=1 ... So=64) of the days this WEEK_TOTAL contract can be planned / takes vacation on - null behaves as Mo-Fr.

    • request_lead_time_daysinteger

      Days an absence request has to be handed in ahead of its first day ("Bearbeitungs- frist"). null falls back to the contract group and from there to the installation wide setting, so an existing contract keeps behaving exactly as before.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the group (which inherits the organisation).

    • search_stringstring

      Text that the entity can be searched by.

  • created_by_userUser14

    User who created the annual request.

    Show fields (10)
    • idinteger

      Primary key of the user. Internal ID of the login user.

    • namestring

      Display name of the user. Shown in the UI and in audit entries.

    • usernamestring

      Login name of the user. Must be unique across all users.

    • emailstring

      E-mail address of the user. Used for login notifications, password resets and as a login alias.

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

      CRM person linked to this login user. Connects the login account with the person record.

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

      Marks the user as archived. Archived users are kept for history and are not active.

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • yearinteger

    The vacation year the periods belong to.

  • content_typeinteger

    Absence type of every period (NonWorkTimePlanSelectionType value).

  • descriptionstring

    Description of the annual request.

  • statusstring

    Derived from the periods, see class comment.

  • requestsarray<NonWorkTimeRequest6>

    Non-work time requests created from the annual request.

    Show fields (39)
    • overdueboolean

      U04: still waiting after the processing deadline.

    • approval_versioninteger

      Version of the approval process.

    • change_modestring

      Mode of a change to the request.

    • balance_override_reasonstring

      L11: why a planner approved this request although the projected vacation balance was negative.

    • coverage_override_reasonstring

      L54: why the approver accepted a day below the minimum staffing.

    • coverage_hintboolean

      L53: handed in although it eats into the staffing buffer - the approvers see the hint.

    • sick_during_vacationboolean

      U13: a sick report inside approved vacation - set by the server, shown as "während Urlaub".

    • consultation_notestring

      Who was consulted before requesting days a blocking period marks as consultation-only (U14).

    • daily_absence_start_timestring

      Local daily absence window for half-day types; null preserves legacy planning.

    • daily_absence_end_timestring

      End time of daily absence.

    • idinteger

      Primary key of the request. Internal ID.

    • userUser14

      User the request belongs to.

    • contractEmploymentContract11

      Employment contract the request belongs to.

    • descriptionstring

      Description of the request.

    • startstring (date-time)

      Start of the requested period.

    • start_datestring

      Start date of the requested period.

    • start_monthinteger

      Start month of the requested period.

    • start_yearinteger

      Start year of the requested period.

    • endstring (date-time)

      End of the requested period.

    • end_datestring

      End date of the requested period.

    • end_monthinteger

      End month of the requested period.

    • end_yearinteger

      End year of the requested period.

    • durationnumber (float)

      duration in days linked to NonWorkTimePlan - a half day type counts 0.5 (Z6)

    • statusstring

      Status of the request.

    • content_typestring

      Type of the request, e.g. vacation or absence.

    • secondary_content_typestring

      Secondary type of the request.

    • linked_content_typeNonWorkTimePlanSelectionType3

      Plan selection type linked to the request.

    • attachmentsarray<Attachment10>

      Attachments of the request.

    • commentsarray<NonWorkTimeRequestComment5>

      Comments on the request.

    • plan_entriesarray<NonWorkTimePlan2>

      Plan entries generated for the request.

    • parent_requestNonWorkTimeRequest6

      The request this one changes ("Änderungsantrag zum Jahresurlaub"). A change request is an ordinary request in every other respect; the reference is what turns a second, unrelated looking request into a visible correction of the first - and what lets the days it withdraws be marked as withdrawn instead of merely refused.

    • annual_requestNonWorkTimeAnnualRequest3

      L47/L48: the annual plan ("Jahresurlaubsantrag") this period belongs to. The bundle is decided as a whole; the period stays an ordinary request in every other respect.

    • request_kindstring

      U02/U18: ANNUAL = period of the annual plan, SUPPLEMENT = Ergänzungsantrag for the held back flexible days. null = ordinary request.

    • processing_due_datestring (date-time)

      U04/U20: the day by which the request has to be decided, counted from its receipt.

    • escalated_atstring (date-time)

      U04: when the overdue escalation was sent; null = not (yet) escalated.

    • written_approval_reasonstring

      U21: why the management step with a written comment was added to this request (e.g. SUMMER_CANCELLATION); null = no extra written approval needed.

    • search_stringstring

      Text that the entity can be searched by.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request PATCH \
  --url 'https://your-instance.iw-erp.de/api/time/non_work_time_annual_request/42/decide?decision=APPROVED' \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "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"
    }
  ]
}