Skip to content
Developer

ShiftPlanEntry

Staff14 EndpointsTimeTracking / ShiftPlanEntry

Printable week plan as PDF - the three scopes of the requirement are covered by the optional person / group filter, everything else stays the same document

GET/api/time/shift_plan_entry/pdf

Query parameters

fromrequiredstringFirst date (Y-m-d)
untilrequiredstringLast date (Y-m-d), at most 62 days after from
employment_contract_groupintegerGroup scope
employment_organizationintegerOrganization scope (without a group): the shifts of every group of the organization
personintegerPerson scope
include_bookingsbooleanDefault 1 - print the appointments of the printed persons as well (L23)

Responses

200PDF of the published plan

Request
curl --request GET \
  --url 'https://your-instance.iw-erp.de/api/time/shift_plan_entry/pdf?from=string&until=string' \
  --header 'x-iw-jwt-token: <TOKEN>'

R06: the combined plan of a group, an organization or one person - shifts, the appointments the persons are responsible for, absences and the conflicts between them, per person and window (L25/L28/L29/L32/L33).

GET/api/time/shift_plan_entry/timeline

Query parameters

fromrequiredstringFirst date (Y-m-d)
untilrequiredstringLast date (Y-m-d), at most 62 days after from
employment_contract_groupintegerGroup scope
employment_organizationintegerOrganization scope
personintegerSingle person scope (own plan, or a person one leads)
personsstringComma separated person ids to restrict the rows (L29)
include_bookingsbooleanDefault 1
include_availabilitybooleanDefault 1 - availability bookings shaded (L32)
include_other_contextsbooleanDefault 0 - also the persons' shifts of other groups (L29)

Responses

default

Request
curl --request GET \
  --url 'https://your-instance.iw-erp.de/api/time/shift_plan_entry/timeline?from=string&until=string' \
  --header 'x-iw-jwt-token: <TOKEN>'
Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/plannable_groups \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
[
  {
    "id": 42,
    "name": "Beispiel"
  }
]

Staffing coverage of a date range - the data source of the planning grid and of the meeting vacation planner

GET/api/time/shift_plan_entry/coverage

Query parameters

fromrequiredstringFirst date (Y-m-d)
untilrequiredstringLast date (Y-m-d), at most 62 days after from
employment_contract_groupintegerLimits the check to one planning group - required for a team lead without global time rights
employment_organizationintegerWithout a group: the rules of the organisation, of its groups and the installation wide ones (a team lead sees the rules of the own groups)

Responses

200Coverage per requirement and date

Request
curl --request GET \
  --url 'https://your-instance.iw-erp.de/api/time/shift_plan_entry/coverage?from=string&until=string' \
  --header 'x-iw-jwt-token: <TOKEN>'

This method will get the published shifts of the current user

GET/api/time/shift_plan_entry/own

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 own 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 GET \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/own \
  --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
  }
]

L35: create an appointment from a shift - time and person from the shift, room, location and type from the body. Only where the shift booking sync is enabled for the contract, group or organisation.

POST/api/time/shift_plan_entry/{id}/booking

Path parameters

idrequiredstring

Request body application/json

  • dataobject
    Show fields (4)
    • namestring
    • base_bookableinteger
    • base_locationinteger
    • content_typeinteger

Responses

200The created appointmentBaseBooking

Show fields (16)
  • 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.

  • auto_invoiceboolean

    Invoices for this booking are created automatically.

  • waitingboolean

    The booking is on the waiting list.

  • confirmedboolean

    The booking is confirmed.

  • externalboolean

    The booking was made by an external party.

  • deletion_reasonstring

    Reason the booking was cancelled.

  • deletion_datestring (date-time)

    When the booking was cancelled, set by setDeleted() - null while active and for bookings cancelled before this field existed

  • billedboolean

    The booking was billed.

  • invoiceInvoice22

    Invoice the booking was billed on.

    Show fields (38)
    • idinteger

      Primary key of the invoice document. Internal ID.

    • tokenstring

      Token that identifies the document for public access.

    • numberinteger

      Running document number.

    • manual_number_prefixstring

      Prefix of a manually entered document number.

    • manual_numberinteger

      Manually entered document number.

    • number_stringstring

      Document number as displayed to users.

    • generation_datestring (date-time)

      Date the document was generated.

    • number_datestring (date-time)

      Date used for the document number.

    • messagestring

      Message printed on the document.

    • currencystring

      Currency of the document.

    • namestring

      Name of the document.

    • due_datestring (date-time)

      Due date of the document.

    • netto_valuenumber (float)

      Net total of the document.

    • brutto_valuenumber (float)

      Gross total of the document.

    • tax_valuenumber (float)

      Total tax amount of the document.

    • taxTaxrequired

      Tax rate applied to the document.

    • linked_number_titlestring

      Title of the linked document number.

    • linked_numberstring

      Number of the linked document.

    • statusstring

      Status of the document.

    • previous_statusstring

      Status before the last change.

    • status_updatedstring (date-time)

      Point in time the status was last changed.

    • archivedboolean

      Whether the document is archived.

    • last_pdf_exportstring (date-time)

      Point in time the PDF was last exported.

    • last_status_exportstring

      Status at the last export.

    • search_stringstring

      Text that the entity can be searched by.

    • accounting_typeAccountingTyperequired

      Accounting type of the invoice.

    • payment_typePaymentType

      Payment type of the invoice.

    • payment_goalPaymentGoal

      Payment term of the invoice.

    • expense_categoryExpenseCategory10

      EÜR-Kategorie für diese Rechnung (Einnahmen-Zuordnung) Wenn nicht gesetzt, wird die Default-Kategorie des AccountingTypes verwendet

    • buyerInvoiceBuyer21

      Buyer of the invoice.

    • payment_datestring (date-time)

      Date the invoice was paid.

    • vat_categorystring

      Der umsatzsteuerliche Sachverhalt. Der Steuersatz sagt nicht, in welche Zeile der Voranmeldung ein Umsatz gehört. Null Prozent stehen an einer innergemeinschaftlichen Lieferung (Kennzahl 41), an einer Ausfuhr (43), an einer Leistung nach § 13b UStG (60) und an einem steuerfreien Umsatz nach § 4 UStG (48) - vier verschiedene Zeilen, derselbe Steuersatz. Hier ist die einzige Stelle, an der jemand das weiss: beim Schreiben der Rechnung ist bekannt, ob der Kunde eine USt-IdNr. hat und wohin die Ware geht. Später ist es nicht mehr rekonstruierbar. Ohne Angabe der Regelfall - alles andere war bisher nicht erfassbar.

    • is_payment_date_from_ext_serviceboolean

      The payment date comes from an external service.

    • direct_debit_exportedboolean

      The invoice was exported for direct debit.

    • cancel_datestring (date-time)

      Date the invoice was canceled.

    • cancel_textstring

      Text of the cancellation.

    • start_datestring (date-time)

      Start of the billed period.

    • end_datestring (date-time)

      End of the billed period.

  • performing_personCRMPerson10

    CRM person who leads the booking.

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

    Second CRM person who leads the booking.

    Show fields (68)
    • 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.

    • … 15 more fields
  • … 36 more fields
Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42/booking \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "name": "Beispiel",
    "base_bookable": 1,
    "base_location": 1,
    "content_type": 1
  }
}
'
Response 200 application/json
{
  "id": 42,
  "participant_company_name": "Beispiel",
  "participant_name": "Beispiel",
  "participant_first_name": "Beispiel",
  "participant_last_name": "Beispiel",
  "participant_address_zip": "30163",
  "participant_address_city": "Hannover",
  "participant_address_country": "DE",
  "participant_email": "lena.hartmann@example.org",
  "name": "Beispiel"
}

L38: start the work time at this shift with the real clock time

POST/api/time/shift_plan_entry/{id}/clock_in

Path parameters

idrequiredstring

Responses

200Start a work time entry for the own shiftWorkTimeEntry

Show fields (27)
  • idinteger

    Primary key of the work time entry. Internal ID.

  • userUser14

    Login user who worked.

    Show fields (10)
    • idinteger

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

    • namestring

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

    • usernamestring

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

    • emailstring

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

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

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

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

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

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the work.

  • startstring (date-time)

    Start of the work time.

  • start_datestring

    Start date of the work time as text.

  • start_monthinteger

    Month of the start.

  • start_yearinteger

    Year of the start.

  • endstring (date-time)

    End of the work time.

  • break_startstring (date-time)

    Start of the break.

  • break_endstring (date-time)

    End of the break.

  • break_durationinteger

    duration of break in seconds

  • manual_break_durationinteger

    Z17.2: Pausendauer in Sekunden ohne Lage, z. B. aus einer genehmigten Korrektur, die nur die Dauer der Pause ändert. Zählt wie eine erfasste Pause, solange keine Pause mit Beginn und Ende erfasst ist; null = keine.

  • auto_breakboolean

    A break was added automatically.

  • force_no_breakboolean

    No break is added for this entry.

  • durationinteger

    duration in seconds

  • auto_closedboolean

    The entry was closed automatically.

  • has_warningboolean

    The entry has a warning, for example a missing end.

  • has_scanner_startboolean

    The start was recorded with the scanner.

  • has_scanner_endboolean

    The end was recorded with the scanner.

  • closed_editingboolean

    Editing of the entry is closed.

  • closed_editing_hrboolean

    Editing of the entry is closed for HR.

  • confirmedboolean

    The entry is confirmed.

  • shift_plan_entryShiftPlanEntry3

    L38: the shift this entry was clocked for. The entry keeps the real clock times; the link only says which planned shift they belong to.

    Show fields (29)
    • opened_absence_typestring

      The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

    • idinteger

      Primary key of the shift plan entry. Internal ID.

    • userUser14

      Login user assigned to the shift.

    • personCRMPerson10

      Person assigned to the shift.

    • contractEmploymentContract5

      Contract the shift is planned on.

    • employment_contract_groupEmploymentContractGroup

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

    • shift_typeShiftType5

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

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

      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.

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

    • bookingBaseBooking13

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

    • opened_reasonstring

      Reason the shift was opened for other staff.

    • opened_atstring (date-time)

      Time the shift was opened.

    • opened_from_personCRMPerson10

      Who worked the shift before it became open - the assignment itself is gone, and the planning has to know whom to ask.

    • opened_absence_requestNonWorkTimeRequest5

      The absence that freed it, for OPENED_REASON_ABSENCE. Carries the type and the days, so the planning sees "sick" instead of only "somebody is away".

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

  • shift_start_deviation_minutesinteger

    L38: minutes the real start lies before (negative) or after (positive) the planned shift start; null without a shift.

  • shift_end_deviation_minutesinteger

    L38: minutes the real end lies before (negative) or after (positive) the planned shift end.

  • content_typestring

    Type of the work, for example work or training.

  • search_stringstring

    Text that the entity can be searched by.

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42/clock_in \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "start": "2026-10-15T09:30:00+02:00",
  "start_date": "2026-10-15T09:30:00+02:00",
  "start_month": 1,
  "start_year": 1,
  "end": "2026-10-15T09:30:00+02:00",
  "break_start": "2026-10-15T09:30:00+02:00",
  "break_end": "2026-10-15T09:30:00+02:00"
}

L38: end the running work time at this shift with the real clock time

POST/api/time/shift_plan_entry/{id}/clock_out

Path parameters

idrequiredstring

Responses

200End the running work time entry of the own shiftWorkTimeEntry

Show fields (27)
  • idinteger

    Primary key of the work time entry. Internal ID.

  • userUser14

    Login user who worked.

    Show fields (10)
    • idinteger

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

    • namestring

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

    • usernamestring

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

    • emailstring

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

    • positioningeneralstring

      Free text describing the position or role of the user.

    • crm_personCRMPerson10

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

    • profile_picture_urlstring

      URL of the profile picture of the user.

    • archivedboolean

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

    • require2faboolean

      Two-factor authentication is required for this user.

    • search_stringstring

      Text that the entity can be searched by.

  • descriptionstring

    Description of the work.

  • startstring (date-time)

    Start of the work time.

  • start_datestring

    Start date of the work time as text.

  • start_monthinteger

    Month of the start.

  • start_yearinteger

    Year of the start.

  • endstring (date-time)

    End of the work time.

  • break_startstring (date-time)

    Start of the break.

  • break_endstring (date-time)

    End of the break.

  • break_durationinteger

    duration of break in seconds

  • manual_break_durationinteger

    Z17.2: Pausendauer in Sekunden ohne Lage, z. B. aus einer genehmigten Korrektur, die nur die Dauer der Pause ändert. Zählt wie eine erfasste Pause, solange keine Pause mit Beginn und Ende erfasst ist; null = keine.

  • auto_breakboolean

    A break was added automatically.

  • force_no_breakboolean

    No break is added for this entry.

  • durationinteger

    duration in seconds

  • auto_closedboolean

    The entry was closed automatically.

  • has_warningboolean

    The entry has a warning, for example a missing end.

  • has_scanner_startboolean

    The start was recorded with the scanner.

  • has_scanner_endboolean

    The end was recorded with the scanner.

  • closed_editingboolean

    Editing of the entry is closed.

  • closed_editing_hrboolean

    Editing of the entry is closed for HR.

  • confirmedboolean

    The entry is confirmed.

  • shift_plan_entryShiftPlanEntry3

    L38: the shift this entry was clocked for. The entry keeps the real clock times; the link only says which planned shift they belong to.

    Show fields (29)
    • opened_absence_typestring

      The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

    • idinteger

      Primary key of the shift plan entry. Internal ID.

    • userUser14

      Login user assigned to the shift.

    • personCRMPerson10

      Person assigned to the shift.

    • contractEmploymentContract5

      Contract the shift is planned on.

    • employment_contract_groupEmploymentContractGroup

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

    • shift_typeShiftType5

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

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

      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.

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

    • bookingBaseBooking13

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

    • opened_reasonstring

      Reason the shift was opened for other staff.

    • opened_atstring (date-time)

      Time the shift was opened.

    • opened_from_personCRMPerson10

      Who worked the shift before it became open - the assignment itself is gone, and the planning has to know whom to ask.

    • opened_absence_requestNonWorkTimeRequest5

      The absence that freed it, for OPENED_REASON_ABSENCE. Carries the type and the days, so the planning sees "sick" instead of only "somebody is away".

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

  • shift_start_deviation_minutesinteger

    L38: minutes the real start lies before (negative) or after (positive) the planned shift start; null without a shift.

  • shift_end_deviation_minutesinteger

    L38: minutes the real end lies before (negative) or after (positive) the planned shift end.

  • content_typestring

    Type of the work, for example work or training.

  • search_stringstring

    Text that the entity can be searched by.

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42/clock_out \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "start": "2026-10-15T09:30:00+02:00",
  "start_date": "2026-10-15T09:30:00+02:00",
  "start_month": 1,
  "start_year": 1,
  "end": "2026-10-15T09:30:00+02:00",
  "break_start": "2026-10-15T09:30:00+02:00",
  "break_end": "2026-10-15T09:30:00+02:00"
}

This method will get all ShiftPlanEntry Objects the current user may plan

GET/api/time/shift_plan_entry

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 a list of 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 GET \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry \
  --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
  }
]

Add a new ShiftPlanEntry

POST/api/time/shift_plan_entry

Request body application/json

  • dataShiftPlanEntry2
    Show fields (5)
    • startstring (date-time)

      Start of the shift.

    • endstring (date-time)

      End of the shift.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • qualification_match_modestring

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

    • descriptionstring

      Description of the shift.

Responses

200Add a new ShiftPlanEntryShiftPlanEntry3

Show fields (19)
  • opened_absence_typestring

    The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

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

    Contract the shift is planned on.

    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.

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

    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_organizationEmploymentOrganization8

      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_qualificationEmploymentQualification5

      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_qualificationEmploymentQualification5

    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<EmploymentQualification5>

      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.

  • … 11 more fields
Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "description": "Text",
    "start": "2026-10-15T09:30:00+02:00",
    "end": "2026-10-15T09:30:00+02:00",
    "break_duration_seconds": 1,
    "qualification_match_mode": "string"
  }
}
'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "opened_absence_type": "string",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "shift_type": {
    "id": 42,
    "short_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "employment_organization": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "allow_app_time_tracking": true,
      "shift_booking_sync": true,
      "allow_scanner_time_tracking": true,
      "allow_app_non_work_time_management": true,
      "include_in_auto_export": true,
      "search_string": "string",
      "deleted": true
    },
    "start_time": "string",
    "end_time": "string",
    "break_duration_seconds": 1,
    "required_qualification": {
      "id": 42,
      "name": "Beispiel",
      "ranking": 1,
      "search_string": "string",
      "deleted": true
    }
  },
  "start": "2026-10-15T09:30:00+02:00",
  "end": "2026-10-15T09:30:00+02:00"
}

This method will get a single ShiftPlanEntry with the given id

GET/api/time/shift_plan_entry/{id}

Path parameters

idrequiredstring

Responses

200Returns a single ShiftPlanEntryShiftPlanEntry3

Show fields (19)
  • opened_absence_typestring

    The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

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

    Contract the shift is planned on.

    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.

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

    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_organizationEmploymentOrganization8

      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_qualificationEmploymentQualification5

      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_qualificationEmploymentQualification5

    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<EmploymentQualification5>

      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.

  • … 11 more fields
Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "opened_absence_type": "string",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "shift_type": {
    "id": 42,
    "short_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "employment_organization": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "allow_app_time_tracking": true,
      "shift_booking_sync": true,
      "allow_scanner_time_tracking": true,
      "allow_app_non_work_time_management": true,
      "include_in_auto_export": true,
      "search_string": "string",
      "deleted": true
    },
    "start_time": "string",
    "end_time": "string",
    "break_duration_seconds": 1,
    "required_qualification": {
      "id": 42,
      "name": "Beispiel",
      "ranking": 1,
      "search_string": "string",
      "deleted": true
    }
  },
  "start": "2026-10-15T09:30:00+02:00",
  "end": "2026-10-15T09:30:00+02:00"
}

Update a ShiftPlanEntry

PUT/api/time/shift_plan_entry/{id}

Path parameters

idrequiredstring

Query parameters

statusstringNew lifecycle status (DRAFT, PUBLISHED, CANCELLED)
lock_versionintegerVersion the client last saw - a mismatch answers 409 instead of overwriting

Request body application/json

  • dataShiftPlanEntry2
    Show fields (5)
    • startstring (date-time)

      Start of the shift.

    • endstring (date-time)

      End of the shift.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • qualification_match_modestring

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

    • descriptionstring

      Description of the shift.

Responses

200Update a ShiftPlanEntryShiftPlanEntry3

Show fields (19)
  • opened_absence_typestring

    The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

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

    Contract the shift is planned on.

    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.

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

    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_organizationEmploymentOrganization8

      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_qualificationEmploymentQualification5

      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_qualificationEmploymentQualification5

    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<EmploymentQualification5>

      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.

  • … 11 more fields
Request
curl --request PUT \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "description": "Text",
    "start": "2026-10-15T09:30:00+02:00",
    "end": "2026-10-15T09:30:00+02:00",
    "break_duration_seconds": 1,
    "qualification_match_mode": "string"
  }
}
'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "opened_absence_type": "string",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "shift_type": {
    "id": 42,
    "short_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "employment_organization": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "allow_app_time_tracking": true,
      "shift_booking_sync": true,
      "allow_scanner_time_tracking": true,
      "allow_app_non_work_time_management": true,
      "include_in_auto_export": true,
      "search_string": "string",
      "deleted": true
    },
    "start_time": "string",
    "end_time": "string",
    "break_duration_seconds": 1,
    "required_qualification": {
      "id": 42,
      "name": "Beispiel",
      "ranking": 1,
      "search_string": "string",
      "deleted": true
    }
  },
  "start": "2026-10-15T09:30:00+02:00",
  "end": "2026-10-15T09:30:00+02:00"
}

Update a ShiftPlanEntry

PATCH/api/time/shift_plan_entry/{id}

Path parameters

idrequiredstring

Query parameters

statusstringNew lifecycle status (DRAFT, PUBLISHED, CANCELLED)
lock_versionintegerVersion the client last saw - a mismatch answers 409 instead of overwriting

Request body application/json

  • dataShiftPlanEntry2
    Show fields (5)
    • startstring (date-time)

      Start of the shift.

    • endstring (date-time)

      End of the shift.

    • break_duration_secondsinteger

      Break duration of the shift in seconds.

    • qualification_match_modestring

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

    • descriptionstring

      Description of the shift.

Responses

200Update a ShiftPlanEntryShiftPlanEntry3

Show fields (19)
  • opened_absence_typestring

    The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

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

    Contract the shift is planned on.

    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.

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

    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_organizationEmploymentOrganization8

      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_qualificationEmploymentQualification5

      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_qualificationEmploymentQualification5

    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<EmploymentQualification5>

      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.

  • … 11 more fields
Request
curl --request PATCH \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "description": "Text",
    "start": "2026-10-15T09:30:00+02:00",
    "end": "2026-10-15T09:30:00+02:00",
    "break_duration_seconds": 1,
    "qualification_match_mode": "string"
  }
}
'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "opened_absence_type": "string",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "shift_type": {
    "id": 42,
    "short_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "employment_organization": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "allow_app_time_tracking": true,
      "shift_booking_sync": true,
      "allow_scanner_time_tracking": true,
      "allow_app_non_work_time_management": true,
      "include_in_auto_export": true,
      "search_string": "string",
      "deleted": true
    },
    "start_time": "string",
    "end_time": "string",
    "break_duration_seconds": 1,
    "required_qualification": {
      "id": 42,
      "name": "Beispiel",
      "ranking": 1,
      "search_string": "string",
      "deleted": true
    }
  },
  "start": "2026-10-15T09:30:00+02:00",
  "end": "2026-10-15T09:30:00+02:00"
}

Delete a ShiftPlanEntry - a draft disappears, a published shift is called off (CANCELLED, the team is told) so the plan keeps its history

DELETE/api/time/shift_plan_entry/{id}

Path parameters

idrequiredstring

Responses

200Delete a draft or cancel a published ShiftPlanEntryShiftPlanEntry3

Show fields (19)
  • opened_absence_typestring

    The absence type as a plain label, so the planning can show "Krank" without pulling the whole request into every shift.

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

    Contract the shift is planned on.

    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.

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

    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_organizationEmploymentOrganization8

      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_qualificationEmploymentQualification5

      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_qualificationEmploymentQualification5

    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<EmploymentQualification5>

      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.

  • … 11 more fields
Request
curl --request DELETE \
  --url https://your-instance.iw-erp.de/api/time/shift_plan_entry/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "description": "Text",
  "opened_absence_type": "string",
  "user": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "person": {
    "id": 42,
    "first_name": "Lena",
    "last_name": "Hartmann",
    "title": "Beispiel",
    "language": "de",
    "support_description": "Text",
    "profile_picture_url": "https://vynst.de",
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163"
  },
  "contract": {
    "id": 42,
    "description": "Text",
    "staged_absence_approval": true,
    "token": "string",
    "user": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "reserved_hours_preparation": 1.5,
    "reserved_hours_follow_up": 1.5,
    "reserved_hours_travel": 1.5
  },
  "employment_contract_group": {
    "id": 42,
    "name": "Beispiel",
    "staged_absence_approval": true,
    "shift_booking_sync": true,
    "week_total_hours": 1.5,
    "week_total_days": 1.5,
    "year_vacation_days": 1.5,
    "month_vacation_days": 1.5,
    "year_vacation_weeks": 1.5,
    "monday_hours": 1.5
  },
  "shift_type": {
    "id": 42,
    "short_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "employment_contract_group": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "shift_booking_sync": true,
      "week_total_hours": 1.5,
      "week_total_days": 1.5,
      "year_vacation_days": 1.5,
      "month_vacation_days": 1.5,
      "year_vacation_weeks": 1.5,
      "monday_hours": 1.5
    },
    "employment_organization": {
      "id": 42,
      "name": "Beispiel",
      "staged_absence_approval": true,
      "allow_app_time_tracking": true,
      "shift_booking_sync": true,
      "allow_scanner_time_tracking": true,
      "allow_app_non_work_time_management": true,
      "include_in_auto_export": true,
      "search_string": "string",
      "deleted": true
    },
    "start_time": "string",
    "end_time": "string",
    "break_duration_seconds": 1,
    "required_qualification": {
      "id": 42,
      "name": "Beispiel",
      "ranking": 1,
      "search_string": "string",
      "deleted": true
    }
  },
  "start": "2026-10-15T09:30:00+02:00",
  "end": "2026-10-15T09:30:00+02:00"
}