Skip to content
Developer

EmploymentContractChangeRequest

Staff5 EndpointsTimeTracking / EmploymentContractChangeRequest

This method will get all EmploymentContractChangeRequest Objects. Without HR read access a lead gets the requests of the contracts they lead; with the contract parameter the caller has to lead (or own) that contract.

GET/api/time/employment_contract_change_request

Query parameters

idinteger
contractstring
statusstring
startstringFirst day the new distribution applies; always a month start beyond the change deadline.
requestedByUserstring
requestedByPersonstring
decidedByUserstring
autoAppliedbooleanTrue when the confirmation happened without an HR decision (unchanged weekly total, installation setting).
createdstring
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

200Returns a list of EmploymentContractChangeRequest objectsarray<EmploymentContractChangeRequest>

Show fields (25)
  • requested_by_namestring
  • idinteger

    Primary key of the contract change request. Internal ID.

  • contractEmploymentContract3

    Contract the change applies 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.

  • requested_by_userUser14

    Login user who requested the change.

    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.

  • requested_by_personCRMPerson10

    Person who requested the change.

    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
  • startstring (date-time)

    First day the new distribution applies; always a month start beyond the change deadline.

  • monday_hoursnumber (float)

    Requested working hours on Monday.

  • tuesday_hoursnumber (float)

    Requested working hours on Tuesday.

  • wednesday_hoursnumber (float)

    Requested working hours on Wednesday.

  • thursday_hoursnumber (float)

    Requested working hours on Thursday.

  • friday_hoursnumber (float)

    Requested working hours on Friday.

  • saturday_hoursnumber (float)

    Requested working hours on Saturday.

  • sunday_hoursnumber (float)

    Requested working hours on Sunday.

  • week_total_hoursnumber (float)

    Sum of the requested weekday hours, kept for lists and for the auto-apply rule.

  • previous_week_total_hoursnumber (float)

    Weekly total the contract had for the requested month when the request was made.

  • statusstring

    Status of the request, for example open, approved or rejected.

  • reasonstring

    Why the lead asks for the change; shown to HR.

  • decided_by_userUser14

    Login user who decided on the 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.

  • decided_atstring (date-time)

    Time the request was decided.

  • decision_commentstring

    Comment on the decision.

  • vacation_days_modestring

    HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

  • year_vacation_daysnumber (float)

    The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

  • auto_appliedboolean

    True when the confirmation happened without an HR decision (unchanged weekly total, installation setting).

  • 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/employment_contract_change_request \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
[
  {
    "requested_by_name": "Beispiel",
    "id": 42,
    "decision_comment": "Text",
    "contract": {
      "id": 42,
      "description": "Text",
      "staged_absence_approval": true,
      "token": "string",
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "reserved_hours_preparation": 1.5,
      "reserved_hours_follow_up": 1.5,
      "reserved_hours_travel": 1.5,
      "reserved_hours_flexible": 1.5
    },
    "requested_by_user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "requested_by_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "start": "2026-10-15T09:30:00+02:00",
    "monday_hours": 1.5,
    "tuesday_hours": 1.5,
    "wednesday_hours": 1.5
  }
]

Hand in a change request for the weekly working days of a contract

POST/api/time/employment_contract_change_request

Request body application/json

  • dataEmploymentContractChangeRequest2
    Show fields (14)
    • contractEmploymentContract4

      Contract the change applies to.

    • startstring (date-time)

      First day the new distribution applies; always a month start beyond the change deadline.

    • monday_hoursnumber (float)

      Requested working hours on Monday.

    • tuesday_hoursnumber (float)

      Requested working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Requested working hours on Wednesday.

    • thursday_hoursnumber (float)

      Requested working hours on Thursday.

    • friday_hoursnumber (float)

      Requested working hours on Friday.

    • saturday_hoursnumber (float)

      Requested working hours on Saturday.

    • sunday_hoursnumber (float)

      Requested working hours on Sunday.

    • statusstring

      Status of the request, for example open, approved or rejected.

    • reasonstring

      Why the lead asks for the change; shown to HR.

    • decision_commentstring

      Comment on the decision.

    • vacation_days_modestring

      HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

    • year_vacation_daysnumber (float)

      The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

Responses

200Add a new EmploymentContractChangeRequestEmploymentContractChangeRequest3

Show fields (25)
  • requested_by_namestring
  • idinteger

    Primary key of the contract change request. Internal ID.

  • contractEmploymentContract5

    Contract the change applies 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.

  • requested_by_userUser14

    Login user who requested the change.

    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.

  • requested_by_personCRMPerson10

    Person who requested the change.

    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
  • startstring (date-time)

    First day the new distribution applies; always a month start beyond the change deadline.

  • monday_hoursnumber (float)

    Requested working hours on Monday.

  • tuesday_hoursnumber (float)

    Requested working hours on Tuesday.

  • wednesday_hoursnumber (float)

    Requested working hours on Wednesday.

  • thursday_hoursnumber (float)

    Requested working hours on Thursday.

  • friday_hoursnumber (float)

    Requested working hours on Friday.

  • saturday_hoursnumber (float)

    Requested working hours on Saturday.

  • sunday_hoursnumber (float)

    Requested working hours on Sunday.

  • week_total_hoursnumber (float)

    Sum of the requested weekday hours, kept for lists and for the auto-apply rule.

  • previous_week_total_hoursnumber (float)

    Weekly total the contract had for the requested month when the request was made.

  • statusstring

    Status of the request, for example open, approved or rejected.

  • reasonstring

    Why the lead asks for the change; shown to HR.

  • decided_by_userUser14

    Login user who decided on the 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.

  • decided_atstring (date-time)

    Time the request was decided.

  • decision_commentstring

    Comment on the decision.

  • vacation_days_modestring

    HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

  • year_vacation_daysnumber (float)

    The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

  • auto_appliedboolean

    True when the confirmation happened without an HR decision (unchanged weekly total, installation setting).

  • 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/employment_contract_change_request \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "decision_comment": "Text",
    "start": "2026-10-15T09:30:00+02:00",
    "monday_hours": 1.5,
    "tuesday_hours": 1.5,
    "wednesday_hours": 1.5,
    "thursday_hours": 1.5
  }
}
'
Response 200 application/json
{
  "requested_by_name": "Beispiel",
  "id": 42,
  "decision_comment": "Text",
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "requested_by_user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "requested_by_person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "start": "2026-10-15T09:30:00+02:00",
  "monday_hours": 1.5,
  "tuesday_hours": 1.5,
  "wednesday_hours": 1.5
}

This method will get a single EmploymentContractChangeRequest with the given id

GET/api/time/employment_contract_change_request/{id}

Path parameters

idrequiredstring

Responses

200Returns a single EmploymentContractChangeRequestEmploymentContractChangeRequest3

Show fields (25)
  • requested_by_namestring
  • idinteger

    Primary key of the contract change request. Internal ID.

  • contractEmploymentContract5

    Contract the change applies 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.

  • requested_by_userUser14

    Login user who requested the change.

    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.

  • requested_by_personCRMPerson10

    Person who requested the change.

    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
  • startstring (date-time)

    First day the new distribution applies; always a month start beyond the change deadline.

  • monday_hoursnumber (float)

    Requested working hours on Monday.

  • tuesday_hoursnumber (float)

    Requested working hours on Tuesday.

  • wednesday_hoursnumber (float)

    Requested working hours on Wednesday.

  • thursday_hoursnumber (float)

    Requested working hours on Thursday.

  • friday_hoursnumber (float)

    Requested working hours on Friday.

  • saturday_hoursnumber (float)

    Requested working hours on Saturday.

  • sunday_hoursnumber (float)

    Requested working hours on Sunday.

  • week_total_hoursnumber (float)

    Sum of the requested weekday hours, kept for lists and for the auto-apply rule.

  • previous_week_total_hoursnumber (float)

    Weekly total the contract had for the requested month when the request was made.

  • statusstring

    Status of the request, for example open, approved or rejected.

  • reasonstring

    Why the lead asks for the change; shown to HR.

  • decided_by_userUser14

    Login user who decided on the 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.

  • decided_atstring (date-time)

    Time the request was decided.

  • decision_commentstring

    Comment on the decision.

  • vacation_days_modestring

    HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

  • year_vacation_daysnumber (float)

    The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

  • auto_appliedboolean

    True when the confirmation happened without an HR decision (unchanged weekly total, installation setting).

  • 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/employment_contract_change_request/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "requested_by_name": "Beispiel",
  "id": 42,
  "decision_comment": "Text",
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "requested_by_user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "requested_by_person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "start": "2026-10-15T09:30:00+02:00",
  "monday_hours": 1.5,
  "tuesday_hours": 1.5,
  "wednesday_hours": 1.5
}

Decide a change request (HR): status APPROVED applies it as a dated contract change, DECLINED closes it

PUT/api/time/employment_contract_change_request/{id}

Path parameters

idrequiredstring

Request body application/json

  • dataEmploymentContractChangeRequest2
    Show fields (14)
    • contractEmploymentContract4

      Contract the change applies to.

    • startstring (date-time)

      First day the new distribution applies; always a month start beyond the change deadline.

    • monday_hoursnumber (float)

      Requested working hours on Monday.

    • tuesday_hoursnumber (float)

      Requested working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Requested working hours on Wednesday.

    • thursday_hoursnumber (float)

      Requested working hours on Thursday.

    • friday_hoursnumber (float)

      Requested working hours on Friday.

    • saturday_hoursnumber (float)

      Requested working hours on Saturday.

    • sunday_hoursnumber (float)

      Requested working hours on Sunday.

    • statusstring

      Status of the request, for example open, approved or rejected.

    • reasonstring

      Why the lead asks for the change; shown to HR.

    • decision_commentstring

      Comment on the decision.

    • vacation_days_modestring

      HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

    • year_vacation_daysnumber (float)

      The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

Responses

200Decide an EmploymentContractChangeRequestEmploymentContractChangeRequest3

Show fields (25)
  • requested_by_namestring
  • idinteger

    Primary key of the contract change request. Internal ID.

  • contractEmploymentContract5

    Contract the change applies 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.

  • requested_by_userUser14

    Login user who requested the change.

    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.

  • requested_by_personCRMPerson10

    Person who requested the change.

    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
  • startstring (date-time)

    First day the new distribution applies; always a month start beyond the change deadline.

  • monday_hoursnumber (float)

    Requested working hours on Monday.

  • tuesday_hoursnumber (float)

    Requested working hours on Tuesday.

  • wednesday_hoursnumber (float)

    Requested working hours on Wednesday.

  • thursday_hoursnumber (float)

    Requested working hours on Thursday.

  • friday_hoursnumber (float)

    Requested working hours on Friday.

  • saturday_hoursnumber (float)

    Requested working hours on Saturday.

  • sunday_hoursnumber (float)

    Requested working hours on Sunday.

  • week_total_hoursnumber (float)

    Sum of the requested weekday hours, kept for lists and for the auto-apply rule.

  • previous_week_total_hoursnumber (float)

    Weekly total the contract had for the requested month when the request was made.

  • statusstring

    Status of the request, for example open, approved or rejected.

  • reasonstring

    Why the lead asks for the change; shown to HR.

  • decided_by_userUser14

    Login user who decided on the 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.

  • decided_atstring (date-time)

    Time the request was decided.

  • decision_commentstring

    Comment on the decision.

  • vacation_days_modestring

    HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

  • year_vacation_daysnumber (float)

    The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

  • auto_appliedboolean

    True when the confirmation happened without an HR decision (unchanged weekly total, installation setting).

  • 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/employment_contract_change_request/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "decision_comment": "Text",
    "start": "2026-10-15T09:30:00+02:00",
    "monday_hours": 1.5,
    "tuesday_hours": 1.5,
    "wednesday_hours": 1.5,
    "thursday_hours": 1.5
  }
}
'
Response 200 application/json
{
  "requested_by_name": "Beispiel",
  "id": 42,
  "decision_comment": "Text",
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "requested_by_user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "requested_by_person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "start": "2026-10-15T09:30:00+02:00",
  "monday_hours": 1.5,
  "tuesday_hours": 1.5,
  "wednesday_hours": 1.5
}

Decide a change request (HR): status APPROVED applies it as a dated contract change, DECLINED closes it

PATCH/api/time/employment_contract_change_request/{id}

Path parameters

idrequiredstring

Request body application/json

  • dataEmploymentContractChangeRequest2
    Show fields (14)
    • contractEmploymentContract4

      Contract the change applies to.

    • startstring (date-time)

      First day the new distribution applies; always a month start beyond the change deadline.

    • monday_hoursnumber (float)

      Requested working hours on Monday.

    • tuesday_hoursnumber (float)

      Requested working hours on Tuesday.

    • wednesday_hoursnumber (float)

      Requested working hours on Wednesday.

    • thursday_hoursnumber (float)

      Requested working hours on Thursday.

    • friday_hoursnumber (float)

      Requested working hours on Friday.

    • saturday_hoursnumber (float)

      Requested working hours on Saturday.

    • sunday_hoursnumber (float)

      Requested working hours on Sunday.

    • statusstring

      Status of the request, for example open, approved or rejected.

    • reasonstring

      Why the lead asks for the change; shown to HR.

    • decision_commentstring

      Comment on the decision.

    • vacation_days_modestring

      HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

    • year_vacation_daysnumber (float)

      The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

Responses

200Decide an EmploymentContractChangeRequestEmploymentContractChangeRequest3

Show fields (25)
  • requested_by_namestring
  • idinteger

    Primary key of the contract change request. Internal ID.

  • contractEmploymentContract5

    Contract the change applies 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.

  • requested_by_userUser14

    Login user who requested the change.

    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.

  • requested_by_personCRMPerson10

    Person who requested the change.

    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
  • startstring (date-time)

    First day the new distribution applies; always a month start beyond the change deadline.

  • monday_hoursnumber (float)

    Requested working hours on Monday.

  • tuesday_hoursnumber (float)

    Requested working hours on Tuesday.

  • wednesday_hoursnumber (float)

    Requested working hours on Wednesday.

  • thursday_hoursnumber (float)

    Requested working hours on Thursday.

  • friday_hoursnumber (float)

    Requested working hours on Friday.

  • saturday_hoursnumber (float)

    Requested working hours on Saturday.

  • sunday_hoursnumber (float)

    Requested working hours on Sunday.

  • week_total_hoursnumber (float)

    Sum of the requested weekday hours, kept for lists and for the auto-apply rule.

  • previous_week_total_hoursnumber (float)

    Weekly total the contract had for the requested month when the request was made.

  • statusstring

    Status of the request, for example open, approved or rejected.

  • reasonstring

    Why the lead asks for the change; shown to HR.

  • decided_by_userUser14

    Login user who decided on the 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.

  • decided_atstring (date-time)

    Time the request was decided.

  • decision_commentstring

    Comment on the decision.

  • vacation_days_modestring

    HR's decision on the annual vacation entitlement when approving: null keeps the entitlement as it is, PROPORTIONAL recalculates it from the new working days, MANUAL sets yearVacationDays. Uses the EmploymentContractModifier::VACATION_DAYS_MODE_* values.

  • year_vacation_daysnumber (float)

    The new annual vacation entitlement HR sets with vacationDaysMode MANUAL.

  • auto_appliedboolean

    True when the confirmation happened without an HR decision (unchanged weekly total, installation setting).

  • 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/employment_contract_change_request/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "decision_comment": "Text",
    "start": "2026-10-15T09:30:00+02:00",
    "monday_hours": 1.5,
    "tuesday_hours": 1.5,
    "wednesday_hours": 1.5,
    "thursday_hours": 1.5
  }
}
'
Response 200 application/json
{
  "requested_by_name": "Beispiel",
  "id": 42,
  "decision_comment": "Text",
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "requested_by_user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "requested_by_person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "start": "2026-10-15T09:30:00+02:00",
  "monday_hours": 1.5,
  "tuesday_hours": 1.5,
  "wednesday_hours": 1.5
}