Skip to content
Developer

ShiftPlanTemplate

Staff8 EndpointsTimeTracking / ShiftPlanTemplate

Publishes a whole week in one transaction - all or nothing

POST/api/time/shift_plan_template/publish_week

Query parameters

idinteger
startDatestring
startMonthstring
startYearstring
employmentContractGroupstringPlanning container - mandatory even when a person of another group helps out.
personstring
userstring
shiftTypestringOrigin type - times were copied, the reference is informational.
statusstring
contractstring
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 the published ShiftPlanEntry objectsarray<ShiftPlanEntry>

Show fields (23)
  • idinteger

    Primary key of the shift plan entry. Internal ID.

  • userUser14

    Login user assigned to the shift.

    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 assigned to the shift.

    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
  • employment_contract_groupEmploymentContractGroup

    Planning container - mandatory even when a person of another group helps out.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • shift_typeShiftType4

    Origin type - times were copied, the reference is informational.

    Show fields (17)
    • idinteger

      Primary key of the shift type. Internal ID.

    • employment_contract_groupEmploymentContractGroup

      Group this type belongs to (null = available for the whole organization / installation).

    • employment_organizationEmploymentOrganization5

      Organization the shift type belongs to.

    • short_namestring

      Short code for grids and print ("F", "S", "N").

    • start_timestring

      Default start time as HH:MM.

    • end_timestring

      Default end time as HH:MM - an end time before the start time means the shift ends on the following day (night shift).

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • colorstring

      Color of the shift type in the shift plan, as hex code.

    • required_qualificationEmploymentQualification3

      Default qualification requirement for shifts of this type.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

    • default_staff_countinteger

      Default number of staff needed for the shift.

    • sort_orderinteger

      Sort order of the shift type in lists.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • startstring (date-time)

    Start of the shift.

  • endstring (date-time)

    End of the shift.

  • start_datestring

    Start date of the shift as text.

  • start_monthinteger

    Month of the shift.

  • start_yearinteger

    Year of the shift.

  • break_duration_secondsinteger

    Break duration of the shift in seconds.

  • durationinteger

    Target seconds: (end - start) - break, maintained by recalculate().

  • required_qualificationEmploymentQualification3

    Qualification required for the shift.

    Show fields (7)
    • idinteger

      Primary key of the employment qualification. Internal ID.

    • rankinginteger

      Ranking within an equivalence network - a linked qualification with a higher or equal ranking also satisfies requirements for this qualification.

    • equivalent_qualificationsarray<EmploymentQualification3>

      Linked ("equivalent") qualifications. Kept symmetric by the controller: every link A->B is mirrored as B->A, the ranking decides which direction actually covers which.

    • qualification_groupEmploymentQualificationGroup

      L17/A06: the "drawer" this qualification belongs to. Members of one group cover each other's requirements within their ranking, like a direct link would.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • qualification_match_modestring

    L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • statusstring

    Status of the shift, for example planned or published.

  • published_atstring (date-time)

    Time the shift was published.

  • descriptionstring

    Description of the shift.

  • has_warningboolean

    Persisted conflict flag for list badges - the concrete warnings are computed on demand (ShiftPlanHelper) and returned transiently.

  • availability_bookingBaseBooking13

    L35: the availability the published shift stands for in the booking area (kept in step by ShiftBookingSyncHelper while the sync is switched on for the contract).

    Show fields (17)
    • idinteger

      Primary key of the booking. Internal ID.

    • start_timestring (date-time)

      Start of the booking.

    • end_timestring (date-time)

      End of the booking.

    • booking_typestring

      Type of the booking, for example normal or substitution.

    • booking_statusstring

      Status of the booking, for example planned, done or cancelled.

    • externalboolean

      The booking was made by an external party.

    • modified_timeboolean

      The time of the booking was changed after it was created.

    • modified_locationboolean

      The location of the booking was changed after it was created.

    • modified_bookableboolean

      The bookable of the booking was changed after it was created.

    • modified_performing_personboolean

      The leader of the booking was changed after it was created.

    • searching_for_performing_personboolean

      A leader for the booking is still being searched for.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • namestring

      Name of the entity.

    • deletedboolean

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

    • colorstring

      Background color as hex value.

    • fg_colorstring

      Foreground color as hex value.

  • bookingBaseBooking13

    L35: the appointment created from this shift, if any.

    Show fields (17)
    • idinteger

      Primary key of the booking. Internal ID.

    • start_timestring (date-time)

      Start of the booking.

    • end_timestring (date-time)

      End of the booking.

    • booking_typestring

      Type of the booking, for example normal or substitution.

    • booking_statusstring

      Status of the booking, for example planned, done or cancelled.

    • externalboolean

      The booking was made by an external party.

    • modified_timeboolean

      The time of the booking was changed after it was created.

    • modified_locationboolean

      The location of the booking was changed after it was created.

    • modified_bookableboolean

      The bookable of the booking was changed after it was created.

    • modified_performing_personboolean

      The leader of the booking was changed after it was created.

    • searching_for_performing_personboolean

      A leader for the booking is still being searched for.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • namestring

      Name of the entity.

    • deletedboolean

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

    • colorstring

      Background color as hex value.

    • fg_colorstring

      Foreground color as hex value.

  • lock_versioninteger

    Optimistic lock. Two planners editing the same shift, or publishing a week while someone else moves a shift inside it, would otherwise silently overwrite each other - the loser now gets a 409 instead. Read only: Doctrine owns the value, the client echoes the one it last saw back as the lock_version query parameter.

  • 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/shift_plan_template/publish_week \
  --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",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "shift_type": {
      "id": 42,
      "short_name": "Beispiel",
      "color": "#3f5efb",
      "name": "Beispiel",
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "qualification_match_mode": "string",
      "default_staff_count": 1,
      "sort_order": 1
    },
    "start": "2026-10-15T09:30:00+02:00",
    "end": "2026-10-15T09:30:00+02:00",
    "start_date": "2026-10-15T09:30:00+02:00",
    "start_month": 1
  }
]

Copies all shifts of one week into another week as DRAFT shifts

POST/api/time/shift_plan_template/copy_week

Query parameters

idinteger
startDatestring
startMonthstring
startYearstring
employmentContractGroupstringPlanning container - mandatory even when a person of another group helps out.
personstring
userstring
shiftTypestringOrigin type - times were copied, the reference is informational.
statusstring
contractstring
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 the created ShiftPlanEntry objectsarray<ShiftPlanEntry>

Show fields (23)
  • idinteger

    Primary key of the shift plan entry. Internal ID.

  • userUser14

    Login user assigned to the shift.

    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 assigned to the shift.

    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
  • employment_contract_groupEmploymentContractGroup

    Planning container - mandatory even when a person of another group helps out.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • shift_typeShiftType4

    Origin type - times were copied, the reference is informational.

    Show fields (17)
    • idinteger

      Primary key of the shift type. Internal ID.

    • employment_contract_groupEmploymentContractGroup

      Group this type belongs to (null = available for the whole organization / installation).

    • employment_organizationEmploymentOrganization5

      Organization the shift type belongs to.

    • short_namestring

      Short code for grids and print ("F", "S", "N").

    • start_timestring

      Default start time as HH:MM.

    • end_timestring

      Default end time as HH:MM - an end time before the start time means the shift ends on the following day (night shift).

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • colorstring

      Color of the shift type in the shift plan, as hex code.

    • required_qualificationEmploymentQualification3

      Default qualification requirement for shifts of this type.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

    • default_staff_countinteger

      Default number of staff needed for the shift.

    • sort_orderinteger

      Sort order of the shift type in lists.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • startstring (date-time)

    Start of the shift.

  • endstring (date-time)

    End of the shift.

  • start_datestring

    Start date of the shift as text.

  • start_monthinteger

    Month of the shift.

  • start_yearinteger

    Year of the shift.

  • break_duration_secondsinteger

    Break duration of the shift in seconds.

  • durationinteger

    Target seconds: (end - start) - break, maintained by recalculate().

  • required_qualificationEmploymentQualification3

    Qualification required for the shift.

    Show fields (7)
    • idinteger

      Primary key of the employment qualification. Internal ID.

    • rankinginteger

      Ranking within an equivalence network - a linked qualification with a higher or equal ranking also satisfies requirements for this qualification.

    • equivalent_qualificationsarray<EmploymentQualification3>

      Linked ("equivalent") qualifications. Kept symmetric by the controller: every link A->B is mirrored as B->A, the ranking decides which direction actually covers which.

    • qualification_groupEmploymentQualificationGroup

      L17/A06: the "drawer" this qualification belongs to. Members of one group cover each other's requirements within their ranking, like a direct link would.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • qualification_match_modestring

    L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • statusstring

    Status of the shift, for example planned or published.

  • published_atstring (date-time)

    Time the shift was published.

  • descriptionstring

    Description of the shift.

  • has_warningboolean

    Persisted conflict flag for list badges - the concrete warnings are computed on demand (ShiftPlanHelper) and returned transiently.

  • availability_bookingBaseBooking13

    L35: the availability the published shift stands for in the booking area (kept in step by ShiftBookingSyncHelper while the sync is switched on for the contract).

    Show fields (17)
    • idinteger

      Primary key of the booking. Internal ID.

    • start_timestring (date-time)

      Start of the booking.

    • end_timestring (date-time)

      End of the booking.

    • booking_typestring

      Type of the booking, for example normal or substitution.

    • booking_statusstring

      Status of the booking, for example planned, done or cancelled.

    • externalboolean

      The booking was made by an external party.

    • modified_timeboolean

      The time of the booking was changed after it was created.

    • modified_locationboolean

      The location of the booking was changed after it was created.

    • modified_bookableboolean

      The bookable of the booking was changed after it was created.

    • modified_performing_personboolean

      The leader of the booking was changed after it was created.

    • searching_for_performing_personboolean

      A leader for the booking is still being searched for.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • namestring

      Name of the entity.

    • deletedboolean

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

    • colorstring

      Background color as hex value.

    • fg_colorstring

      Foreground color as hex value.

  • bookingBaseBooking13

    L35: the appointment created from this shift, if any.

    Show fields (17)
    • idinteger

      Primary key of the booking. Internal ID.

    • start_timestring (date-time)

      Start of the booking.

    • end_timestring (date-time)

      End of the booking.

    • booking_typestring

      Type of the booking, for example normal or substitution.

    • booking_statusstring

      Status of the booking, for example planned, done or cancelled.

    • externalboolean

      The booking was made by an external party.

    • modified_timeboolean

      The time of the booking was changed after it was created.

    • modified_locationboolean

      The location of the booking was changed after it was created.

    • modified_bookableboolean

      The bookable of the booking was changed after it was created.

    • modified_performing_personboolean

      The leader of the booking was changed after it was created.

    • searching_for_performing_personboolean

      A leader for the booking is still being searched for.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • namestring

      Name of the entity.

    • deletedboolean

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

    • colorstring

      Background color as hex value.

    • fg_colorstring

      Foreground color as hex value.

  • lock_versioninteger

    Optimistic lock. Two planners editing the same shift, or publishing a week while someone else moves a shift inside it, would otherwise silently overwrite each other - the loser now gets a 409 instead. Read only: Doctrine owns the value, the client echoes the one it last saw back as the lock_version query parameter.

  • 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/shift_plan_template/copy_week \
  --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",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "shift_type": {
      "id": 42,
      "short_name": "Beispiel",
      "color": "#3f5efb",
      "name": "Beispiel",
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "qualification_match_mode": "string",
      "default_staff_count": 1,
      "sort_order": 1
    },
    "start": "2026-10-15T09:30:00+02:00",
    "end": "2026-10-15T09:30:00+02:00",
    "start_date": "2026-10-15T09:30:00+02:00",
    "start_month": 1
  }
]

Applies a week template to a week - creates open DRAFT shifts, never touches existing ones

POST/api/time/shift_plan_template/{id}/apply

Path parameters

idrequiredstring

Query parameters

idinteger
startDatestring
startMonthstring
startYearstring
employmentContractGroupstringPlanning container - mandatory even when a person of another group helps out.
personstring
userstring
shiftTypestringOrigin type - times were copied, the reference is informational.
statusstring
contractstring
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 the created ShiftPlanEntry objectsarray<ShiftPlanEntry>

Show fields (23)
  • idinteger

    Primary key of the shift plan entry. Internal ID.

  • userUser14

    Login user assigned to the shift.

    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 assigned to the shift.

    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
  • employment_contract_groupEmploymentContractGroup

    Planning container - mandatory even when a person of another group helps out.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • shift_typeShiftType4

    Origin type - times were copied, the reference is informational.

    Show fields (17)
    • idinteger

      Primary key of the shift type. Internal ID.

    • employment_contract_groupEmploymentContractGroup

      Group this type belongs to (null = available for the whole organization / installation).

    • employment_organizationEmploymentOrganization5

      Organization the shift type belongs to.

    • short_namestring

      Short code for grids and print ("F", "S", "N").

    • start_timestring

      Default start time as HH:MM.

    • end_timestring

      Default end time as HH:MM - an end time before the start time means the shift ends on the following day (night shift).

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • colorstring

      Color of the shift type in the shift plan, as hex code.

    • required_qualificationEmploymentQualification3

      Default qualification requirement for shifts of this type.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

    • default_staff_countinteger

      Default number of staff needed for the shift.

    • sort_orderinteger

      Sort order of the shift type in lists.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • startstring (date-time)

    Start of the shift.

  • endstring (date-time)

    End of the shift.

  • start_datestring

    Start date of the shift as text.

  • start_monthinteger

    Month of the shift.

  • start_yearinteger

    Year of the shift.

  • break_duration_secondsinteger

    Break duration of the shift in seconds.

  • durationinteger

    Target seconds: (end - start) - break, maintained by recalculate().

  • required_qualificationEmploymentQualification3

    Qualification required for the shift.

    Show fields (7)
    • idinteger

      Primary key of the employment qualification. Internal ID.

    • rankinginteger

      Ranking within an equivalence network - a linked qualification with a higher or equal ranking also satisfies requirements for this qualification.

    • equivalent_qualificationsarray<EmploymentQualification3>

      Linked ("equivalent") qualifications. Kept symmetric by the controller: every link A->B is mirrored as B->A, the ranking decides which direction actually covers which.

    • qualification_groupEmploymentQualificationGroup

      L17/A06: the "drawer" this qualification belongs to. Members of one group cover each other's requirements within their ranking, like a direct link would.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • qualification_match_modestring

    L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • statusstring

    Status of the shift, for example planned or published.

  • published_atstring (date-time)

    Time the shift was published.

  • descriptionstring

    Description of the shift.

  • has_warningboolean

    Persisted conflict flag for list badges - the concrete warnings are computed on demand (ShiftPlanHelper) and returned transiently.

  • availability_bookingBaseBooking13

    L35: the availability the published shift stands for in the booking area (kept in step by ShiftBookingSyncHelper while the sync is switched on for the contract).

    Show fields (17)
    • idinteger

      Primary key of the booking. Internal ID.

    • start_timestring (date-time)

      Start of the booking.

    • end_timestring (date-time)

      End of the booking.

    • booking_typestring

      Type of the booking, for example normal or substitution.

    • booking_statusstring

      Status of the booking, for example planned, done or cancelled.

    • externalboolean

      The booking was made by an external party.

    • modified_timeboolean

      The time of the booking was changed after it was created.

    • modified_locationboolean

      The location of the booking was changed after it was created.

    • modified_bookableboolean

      The bookable of the booking was changed after it was created.

    • modified_performing_personboolean

      The leader of the booking was changed after it was created.

    • searching_for_performing_personboolean

      A leader for the booking is still being searched for.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • namestring

      Name of the entity.

    • deletedboolean

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

    • colorstring

      Background color as hex value.

    • fg_colorstring

      Foreground color as hex value.

  • bookingBaseBooking13

    L35: the appointment created from this shift, if any.

    Show fields (17)
    • idinteger

      Primary key of the booking. Internal ID.

    • start_timestring (date-time)

      Start of the booking.

    • end_timestring (date-time)

      End of the booking.

    • booking_typestring

      Type of the booking, for example normal or substitution.

    • booking_statusstring

      Status of the booking, for example planned, done or cancelled.

    • externalboolean

      The booking was made by an external party.

    • modified_timeboolean

      The time of the booking was changed after it was created.

    • modified_locationboolean

      The location of the booking was changed after it was created.

    • modified_bookableboolean

      The bookable of the booking was changed after it was created.

    • modified_performing_personboolean

      The leader of the booking was changed after it was created.

    • searching_for_performing_personboolean

      A leader for the booking is still being searched for.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • namestring

      Name of the entity.

    • deletedboolean

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

    • colorstring

      Background color as hex value.

    • fg_colorstring

      Foreground color as hex value.

  • lock_versioninteger

    Optimistic lock. Two planners editing the same shift, or publishing a week while someone else moves a shift inside it, would otherwise silently overwrite each other - the loser now gets a 409 instead. Read only: Doctrine owns the value, the client echoes the one it last saw back as the lock_version query parameter.

  • 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/shift_plan_template/42/apply \
  --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",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "shift_type": {
      "id": 42,
      "short_name": "Beispiel",
      "color": "#3f5efb",
      "name": "Beispiel",
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "qualification_match_mode": "string",
      "default_staff_count": 1,
      "sort_order": 1
    },
    "start": "2026-10-15T09:30:00+02:00",
    "end": "2026-10-15T09:30:00+02:00",
    "start_date": "2026-10-15T09:30:00+02:00",
    "start_month": 1
  }
]

This method will get all ShiftPlanTemplate Objects

GET/api/time/shift_plan_template

Query parameters

idinteger
deletedbooleanThis property is used to mark an entity as deleted / archived | Default value: false
namestring
employmentContractGroupstring
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 ShiftPlanTemplate objectsarray<ShiftPlanTemplate>

Show fields (7)
  • idinteger

    Primary key of the shift plan template. Internal ID.

  • employment_contract_groupEmploymentContractGroup

    Contract group the template is for.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • search_stringstring

    Text that the entity can be searched by.

  • deletedboolean

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

  • namestring

    Name of the entity.

  • 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/shift_plan_template \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
[
  {
    "id": 42,
    "name": "Beispiel",
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "search_string": "string",
    "deleted": true,
    "created": "2026-10-15T09:30:00+02:00",
    "updated": "2026-10-15T09:30:00+02:00"
  }
]

Add a new ShiftPlanTemplate

POST/api/time/shift_plan_template

Request body application/json

  • dataShiftPlanTemplate2
    Show fields (2)
    • deletedboolean

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

    • namestring

      Name of the entity.

Responses

200Add a new ShiftPlanTemplateShiftPlanTemplate3

Show fields (8)
  • idinteger

    Primary key of the shift plan template. Internal ID.

  • employment_contract_groupEmploymentContractGroup

    Contract group the template is for.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • entriesarray<ShiftPlanTemplateEntry>

    Entries of the template.

    Show fields (9)
    • idinteger

      Primary key of the shift plan template entry. Internal ID.

    • iso_weekdayinteger

      ISO weekday, 1 = Monday ... 7 = Sunday.

    • shift_typeShiftType3

      Shift type of the entry.

    • start_timestring

      Start time of the shift in HH:MM.

    • end_timestring

      End time of the shift in HH:MM.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • staff_countinteger

      Number of staff needed for the shift.

    • required_qualificationEmploymentQualification

      Qualification required for the shift.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • search_stringstring

    Text that the entity can be searched by.

  • deletedboolean

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

  • namestring

    Name of the entity.

  • 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/shift_plan_template \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "name": "Beispiel",
    "deleted": true
  }
}
'
Response 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "entries": [
    {
      "id": 42,
      "iso_weekday": 1,
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "staff_count": 1,
      "qualification_match_mode": "string"
    }
  ],
  "search_string": "string",
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

This method will get a single ShiftPlanTemplate with the given id

GET/api/time/shift_plan_template/{id}

Path parameters

idrequiredstring

Responses

200Returns a single ShiftPlanTemplateShiftPlanTemplate3

Show fields (8)
  • idinteger

    Primary key of the shift plan template. Internal ID.

  • employment_contract_groupEmploymentContractGroup

    Contract group the template is for.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • entriesarray<ShiftPlanTemplateEntry>

    Entries of the template.

    Show fields (9)
    • idinteger

      Primary key of the shift plan template entry. Internal ID.

    • iso_weekdayinteger

      ISO weekday, 1 = Monday ... 7 = Sunday.

    • shift_typeShiftType3

      Shift type of the entry.

    • start_timestring

      Start time of the shift in HH:MM.

    • end_timestring

      End time of the shift in HH:MM.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • staff_countinteger

      Number of staff needed for the shift.

    • required_qualificationEmploymentQualification

      Qualification required for the shift.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • search_stringstring

    Text that the entity can be searched by.

  • deletedboolean

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

  • namestring

    Name of the entity.

  • 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/shift_plan_template/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "entries": [
    {
      "id": 42,
      "iso_weekday": 1,
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "staff_count": 1,
      "qualification_match_mode": "string"
    }
  ],
  "search_string": "string",
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

Update a ShiftPlanTemplate

PUT/api/time/shift_plan_template/{id}

Path parameters

idrequiredstring

Request body application/json

  • dataShiftPlanTemplate2
    Show fields (2)
    • deletedboolean

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

    • namestring

      Name of the entity.

Responses

200Update a ShiftPlanTemplateShiftPlanTemplate3

Show fields (8)
  • idinteger

    Primary key of the shift plan template. Internal ID.

  • employment_contract_groupEmploymentContractGroup

    Contract group the template is for.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • entriesarray<ShiftPlanTemplateEntry>

    Entries of the template.

    Show fields (9)
    • idinteger

      Primary key of the shift plan template entry. Internal ID.

    • iso_weekdayinteger

      ISO weekday, 1 = Monday ... 7 = Sunday.

    • shift_typeShiftType3

      Shift type of the entry.

    • start_timestring

      Start time of the shift in HH:MM.

    • end_timestring

      End time of the shift in HH:MM.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • staff_countinteger

      Number of staff needed for the shift.

    • required_qualificationEmploymentQualification

      Qualification required for the shift.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • search_stringstring

    Text that the entity can be searched by.

  • deletedboolean

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

  • namestring

    Name of the entity.

  • 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/shift_plan_template/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "name": "Beispiel",
    "deleted": true
  }
}
'
Response 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "entries": [
    {
      "id": 42,
      "iso_weekday": 1,
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "staff_count": 1,
      "qualification_match_mode": "string"
    }
  ],
  "search_string": "string",
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

Update a ShiftPlanTemplate

PATCH/api/time/shift_plan_template/{id}

Path parameters

idrequiredstring

Request body application/json

  • dataShiftPlanTemplate2
    Show fields (2)
    • deletedboolean

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

    • namestring

      Name of the entity.

Responses

200Update a ShiftPlanTemplateShiftPlanTemplate3

Show fields (8)
  • idinteger

    Primary key of the shift plan template. Internal ID.

  • employment_contract_groupEmploymentContractGroup

    Contract group the template is for.

    Show fields (25)
    • staged_absence_approvalboolean

      null inherits the organization; false explicitly disables staged approval.

    • shift_booking_syncboolean

      L35: shifts as availabilities / appointments in the booking area; null inherits the organisation, false switches it off for this group.

    • idinteger

      Primary key of the contract group. Internal ID.

    • week_total_hoursnumber (float)

      Total working hours per week.

    • week_total_daysnumber (float)

      Working days per week.

    • 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.

    • allow_app_time_trackingboolean

      Whether time tracking in the app is allowed.

    • allow_scanner_time_trackingboolean

      Whether time tracking with a scanner is allowed.

    • allow_app_non_work_time_managementboolean

      Whether non-work time can be managed in the app.

    • request_lead_time_daysinteger

      Days an absence request of this group has to be handed in ahead of its first day. null falls back to the installation wide setting - an existing group therefore behaves exactly as before.

    • school_holiday_regionSchoolHolidayRegion

      U09: the school calendar of this group when it differs from the organisation's (apprentices attending school in another Bundesland). null = the organisation's.

    • search_stringstring

      Text that the entity can be searched by.

    • deletedboolean

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

    • namestring

      Name of the entity.

  • entriesarray<ShiftPlanTemplateEntry>

    Entries of the template.

    Show fields (9)
    • idinteger

      Primary key of the shift plan template entry. Internal ID.

    • iso_weekdayinteger

      ISO weekday, 1 = Monday ... 7 = Sunday.

    • shift_typeShiftType3

      Shift type of the entry.

    • start_timestring

      Start time of the shift in HH:MM.

    • end_timestring

      End time of the shift in HH:MM.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • staff_countinteger

      Number of staff needed for the shift.

    • required_qualificationEmploymentQualification

      Qualification required for the shift.

    • qualification_match_modestring

      L18: EXACT demands the required qualification itself; EQUIVALENT (default, previous behaviour) also accepts linked or same-group qualifications with sufficient ranking.

  • search_stringstring

    Text that the entity can be searched by.

  • deletedboolean

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

  • namestring

    Name of the entity.

  • 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/shift_plan_template/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "name": "Beispiel",
    "deleted": true
  }
}
'
Response 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "entries": [
    {
      "id": 42,
      "iso_weekday": 1,
      "start_time": "string",
      "end_time": "string",
      "break_duration_seconds": 1,
      "staff_count": 1,
      "qualification_match_mode": "string"
    }
  ],
  "search_string": "string",
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}