Zum Inhalt springen
Developer

ShiftExchangeRequest

Personal7 EndpunkteTimeTracking / ShiftExchangeRequest

Liefert die verfügbaren Einträge.

GET/api/time/shift_exchange_request/available

Query-Parameter

monthstring
after_idinteger
other_groupsbooleanAuch Schichten und Angebote anderer Gruppen (eigene Gruppe zuerst), wenn die Installation dies erlaubt

Antworten

200Infrage kommende offene, veröffentlichte Schichten; next_after_id auch dann folgen, wenn die gefilterte Seite leer istobject

Felder anzeigen (2)
  • availablearray<object>
    Felder anzeigen (4)
    • shiftShiftPlanEntry
    • contractsarray<object>
    • own_groupboolean
    • hintsarray<string>
  • next_after_idinteger
Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/time/shift_exchange_request/available \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "available": [
    {
      "own_group": true
    }
  ],
  "next_after_id": 42
}

Liefert eine Liste der Einträge für Schichttausch-Anfragen.

GET/api/time/shift_exchange_request

Query-Parameter

monthstring
before_idinteger
other_groupsbooleanAuch Schichten und Angebote anderer Gruppen (eigene Gruppe zuerst), wenn die Installation dies erlaubt

Antworten

200Sichtbare Tauschvorgänge und eigene Historie; next_before_id auch dann verfolgen, wenn die gefilterte Seite leer istobject

Felder anzeigen (2)
  • requestsarray<ShiftExchangeRequest>
    Felder anzeigen (2)
    • source_shiftShiftPlanEntry2

      Dienst, der getauscht werden soll.

    • modestring

      Art des Tauschs, zum Beispiel swap oder give away.

  • next_before_idinteger
Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/time/shift_exchange_request \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "requests": [
    {
      "mode": "string"
    }
  ],
  "next_before_id": 42
}

Legt einen neuen Eintrag für eine Schichttausch-Anfrage an.

POST/api/time/shift_exchange_request

Query-Parameter

source_versioninteger
other_groupsbooleanAuch Schichten und Angebote anderer Gruppen (eigene Gruppe zuerst), wenn die Installation dies erlaubt
contract_idinteger

Request-Body application/json

  • dataShiftExchangeRequest
    Felder anzeigen (2)
    • source_shiftShiftPlanEntry2

      Dienst, der getauscht werden soll.

    • modestring

      Art des Tauschs, zum Beispiel swap oder give away.

Antworten

200Schicht anbieten oder übernehmenShiftExchangeRequest2

Felder anzeigen (7)
  • idinteger

    Primärschlüssel der Schichttausch-Anfrage. Interne ID.

  • lock_versioninteger

    Version, die parallele Änderungen an der Anfrage verhindert.

  • source_shiftShiftPlanEntry

    Dienst, der getauscht werden soll.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • target_shiftShiftPlanEntry

    Dienst, der im Tausch angeboten wird.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • ownerCRMPerson10

    Person, der die ursprüngliche Schicht zugeordnet ist.

    Felder anzeigen (81)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • address_house_numberstring

      Hausnummer der Adresse.

    • address_street_levelstring

      Straße und Hausnummer der Adresse.

    • address_costring

      Care-of-Zeile der Adresse.

    • address_citystring

      Ort der Adresse.

    • address_zipstring

      Postleitzahl der Adresse.

    • address_admin_level1string

      Erste Verwaltungsebene der Adresse, z. B. das Bundesland.

    • address_countrystring

      Ländercode der Adresse.

    • address_full_countrystring

      Vollständiger Name des Landes der Adresse.

    • address_geo_latstring

      Breitengrad der Adresse.

    • address_geo_lngstring

      Längengrad der Adresse.

    • address_external_provider_idstring

      Feld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • … 2 weitere Felder
  • candidateCRMPerson10

    Person, die gebeten wird, die Schicht zu übernehmen.

    Felder anzeigen (69)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • … 14 weitere Felder
  • … 10 weitere Felder
Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/time/shift_exchange_request \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "source_shift": {
      "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"
    },
    "mode": "string"
  }
}
'
Antwort 200 application/json
{
  "id": 42,
  "lock_version": 1,
  "source_shift": {
    "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
  },
  "target_shift": {
    "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
  },
  "owner": {
    "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"
  },
  "candidate": {
    "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"
  },
  "decided_by": {
    "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"
  },
  "mode": "string",
  "state": "string",
  "source_version": 1
}

Liefert einen einzelnen Eintrag zur Schichttausch-Anfrage.

GET/api/time/shift_exchange_request/{id}

Pfad-Parameter

idPflichtstring

Antworten

200Einen sichtbaren Austausch lesenShiftExchangeRequest2

Felder anzeigen (7)
  • idinteger

    Primärschlüssel der Schichttausch-Anfrage. Interne ID.

  • lock_versioninteger

    Version, die parallele Änderungen an der Anfrage verhindert.

  • source_shiftShiftPlanEntry

    Dienst, der getauscht werden soll.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • target_shiftShiftPlanEntry

    Dienst, der im Tausch angeboten wird.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • ownerCRMPerson10

    Person, der die ursprüngliche Schicht zugeordnet ist.

    Felder anzeigen (81)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • address_house_numberstring

      Hausnummer der Adresse.

    • address_street_levelstring

      Straße und Hausnummer der Adresse.

    • address_costring

      Care-of-Zeile der Adresse.

    • address_citystring

      Ort der Adresse.

    • address_zipstring

      Postleitzahl der Adresse.

    • address_admin_level1string

      Erste Verwaltungsebene der Adresse, z. B. das Bundesland.

    • address_countrystring

      Ländercode der Adresse.

    • address_full_countrystring

      Vollständiger Name des Landes der Adresse.

    • address_geo_latstring

      Breitengrad der Adresse.

    • address_geo_lngstring

      Längengrad der Adresse.

    • address_external_provider_idstring

      Feld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • … 2 weitere Felder
  • candidateCRMPerson10

    Person, die gebeten wird, die Schicht zu übernehmen.

    Felder anzeigen (69)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • … 14 weitere Felder
  • … 10 weitere Felder
Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/time/shift_exchange_request/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "id": 42,
  "lock_version": 1,
  "source_shift": {
    "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
  },
  "target_shift": {
    "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
  },
  "owner": {
    "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"
  },
  "candidate": {
    "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"
  },
  "decided_by": {
    "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"
  },
  "mode": "string",
  "state": "string",
  "source_version": 1
}

Aktualisiert einen vorhandenen Eintrag der Schichttausch-Anfrage.

PUT/api/time/shift_exchange_request/{id}

Pfad-Parameter

idPflichtstring

Query-Parameter

actionPflichtstringErlaubt: PROPOSECONFIRMAPPROVEDECLINECANCEL
lock_versionPflichtinteger
target_shiftinteger
target_versioninteger
contract_idinteger
owner_contract_idinteger
other_groupsbooleanAuch Schichten und Angebote anderer Gruppen (eigene Gruppe zuerst), wenn die Installation dies erlaubt

Request-Body application/json

  • dataShiftExchangeRequest
    Felder anzeigen (2)
    • source_shiftShiftPlanEntry2

      Dienst, der getauscht werden soll.

    • modestring

      Art des Tauschs, zum Beispiel swap oder give away.

Antworten

200Einen Tausch bestätigen oder entscheidenShiftExchangeRequest2

Felder anzeigen (7)
  • idinteger

    Primärschlüssel der Schichttausch-Anfrage. Interne ID.

  • lock_versioninteger

    Version, die parallele Änderungen an der Anfrage verhindert.

  • source_shiftShiftPlanEntry

    Dienst, der getauscht werden soll.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • target_shiftShiftPlanEntry

    Dienst, der im Tausch angeboten wird.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • ownerCRMPerson10

    Person, der die ursprüngliche Schicht zugeordnet ist.

    Felder anzeigen (81)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • address_house_numberstring

      Hausnummer der Adresse.

    • address_street_levelstring

      Straße und Hausnummer der Adresse.

    • address_costring

      Care-of-Zeile der Adresse.

    • address_citystring

      Ort der Adresse.

    • address_zipstring

      Postleitzahl der Adresse.

    • address_admin_level1string

      Erste Verwaltungsebene der Adresse, z. B. das Bundesland.

    • address_countrystring

      Ländercode der Adresse.

    • address_full_countrystring

      Vollständiger Name des Landes der Adresse.

    • address_geo_latstring

      Breitengrad der Adresse.

    • address_geo_lngstring

      Längengrad der Adresse.

    • address_external_provider_idstring

      Feld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • … 2 weitere Felder
  • candidateCRMPerson10

    Person, die gebeten wird, die Schicht zu übernehmen.

    Felder anzeigen (69)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • … 14 weitere Felder
  • … 10 weitere Felder
Anfrage
curl --request PUT \
  --url 'https://eure-instanz.iw-erp.de/api/time/shift_exchange_request/42?action=PROPOSE&lock_version=1' \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "source_shift": {
      "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"
    },
    "mode": "string"
  }
}
'
Antwort 200 application/json
{
  "id": 42,
  "lock_version": 1,
  "source_shift": {
    "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
  },
  "target_shift": {
    "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
  },
  "owner": {
    "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"
  },
  "candidate": {
    "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"
  },
  "decided_by": {
    "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"
  },
  "mode": "string",
  "state": "string",
  "source_version": 1
}

Aktualisiert einen vorhandenen Eintrag der Schichttausch-Anfrage.

PATCH/api/time/shift_exchange_request/{id}

Pfad-Parameter

idPflichtstring

Query-Parameter

actionPflichtstringErlaubt: PROPOSECONFIRMAPPROVEDECLINECANCEL
lock_versionPflichtinteger
target_shiftinteger
target_versioninteger
contract_idinteger
owner_contract_idinteger
other_groupsbooleanAuch Schichten und Angebote anderer Gruppen (eigene Gruppe zuerst), wenn die Installation dies erlaubt

Request-Body application/json

  • dataShiftExchangeRequest
    Felder anzeigen (2)
    • source_shiftShiftPlanEntry2

      Dienst, der getauscht werden soll.

    • modestring

      Art des Tauschs, zum Beispiel swap oder give away.

Antworten

200Einen Tausch bestätigen oder entscheidenShiftExchangeRequest2

Felder anzeigen (7)
  • idinteger

    Primärschlüssel der Schichttausch-Anfrage. Interne ID.

  • lock_versioninteger

    Version, die parallele Änderungen an der Anfrage verhindert.

  • source_shiftShiftPlanEntry

    Dienst, der getauscht werden soll.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • target_shiftShiftPlanEntry

    Dienst, der im Tausch angeboten wird.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • ownerCRMPerson10

    Person, der die ursprüngliche Schicht zugeordnet ist.

    Felder anzeigen (81)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • address_house_numberstring

      Hausnummer der Adresse.

    • address_street_levelstring

      Straße und Hausnummer der Adresse.

    • address_costring

      Care-of-Zeile der Adresse.

    • address_citystring

      Ort der Adresse.

    • address_zipstring

      Postleitzahl der Adresse.

    • address_admin_level1string

      Erste Verwaltungsebene der Adresse, z. B. das Bundesland.

    • address_countrystring

      Ländercode der Adresse.

    • address_full_countrystring

      Vollständiger Name des Landes der Adresse.

    • address_geo_latstring

      Breitengrad der Adresse.

    • address_geo_lngstring

      Längengrad der Adresse.

    • address_external_provider_idstring

      Feld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • … 2 weitere Felder
  • candidateCRMPerson10

    Person, die gebeten wird, die Schicht zu übernehmen.

    Felder anzeigen (69)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • … 14 weitere Felder
  • … 10 weitere Felder
Anfrage
curl --request PATCH \
  --url 'https://eure-instanz.iw-erp.de/api/time/shift_exchange_request/42?action=PROPOSE&lock_version=1' \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "source_shift": {
      "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"
    },
    "mode": "string"
  }
}
'
Antwort 200 application/json
{
  "id": 42,
  "lock_version": 1,
  "source_shift": {
    "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
  },
  "target_shift": {
    "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
  },
  "owner": {
    "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"
  },
  "candidate": {
    "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"
  },
  "decided_by": {
    "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"
  },
  "mode": "string",
  "state": "string",
  "source_version": 1
}

Löscht einen Eintrag einer Schichttausch-Anfrage.

DELETE/api/time/shift_exchange_request/{id}

Pfad-Parameter

idPflichtstring

Query-Parameter

lock_versionPflichtinteger

Antworten

200Einen eigenen aktiven Tausch stornieren; der Verlauf bleibt erhaltenShiftExchangeRequest2

Felder anzeigen (7)
  • idinteger

    Primärschlüssel der Schichttausch-Anfrage. Interne ID.

  • lock_versioninteger

    Version, die parallele Änderungen an der Anfrage verhindert.

  • source_shiftShiftPlanEntry

    Dienst, der getauscht werden soll.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • target_shiftShiftPlanEntry

    Dienst, der im Tausch angeboten wird.

    Felder anzeigen (23)
    • idinteger

      Primärschlüssel des Schichtplan-Eintrags. Interne ID.

    • userUser14

      Der Schicht zugewiesener Benutzer.

    • personCRMPerson10

      Person, die der Schicht zugewiesen ist.

    • employment_contract_groupEmploymentContractGroup

      Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.

    • shift_typeShiftType4

      Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.

    • startstring (date-time)

      Beginn des Dienstes.

    • endstring (date-time)

      Ende der Schicht.

    • start_datestring

      Startdatum des Dienstes als Text.

    • start_monthinteger

      Monat der Schicht.

    • start_yearinteger

      Jahr der Schicht.

    • break_duration_secondsinteger

      Pausendauer der Schicht in Sekunden.

    • durationinteger

      Zielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.

    • required_qualificationEmploymentQualification3

      Für die Schicht erforderliche Qualifikation.

    • qualification_match_modestring

      L18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.

    • statusstring

      Status des Dienstes, zum Beispiel geplant oder veröffentlicht.

    • published_atstring (date-time)

      Zeitpunkt, zu dem die Schicht veröffentlicht wurde.

    • descriptionstring

      Beschreibung der Schicht.

    • has_warningboolean

      Gespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.

    • availability_bookingBaseBooking13

      L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).

    • bookingBaseBooking13

      L35: der aus dieser Schicht erstellte Termin, falls vorhanden.

    • lock_versioninteger

      Optimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • ownerCRMPerson10

    Person, der die ursprüngliche Schicht zugeordnet ist.

    Felder anzeigen (81)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • address_house_numberstring

      Hausnummer der Adresse.

    • address_street_levelstring

      Straße und Hausnummer der Adresse.

    • address_costring

      Care-of-Zeile der Adresse.

    • address_citystring

      Ort der Adresse.

    • address_zipstring

      Postleitzahl der Adresse.

    • address_admin_level1string

      Erste Verwaltungsebene der Adresse, z. B. das Bundesland.

    • address_countrystring

      Ländercode der Adresse.

    • address_full_countrystring

      Vollständiger Name des Landes der Adresse.

    • address_geo_latstring

      Breitengrad der Adresse.

    • address_geo_lngstring

      Längengrad der Adresse.

    • address_external_provider_idstring

      Feld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • … 2 weitere Felder
  • candidateCRMPerson10

    Person, die gebeten wird, die Schicht zu übernehmen.

    Felder anzeigen (69)
    • idinteger

      Primärschlüssel der Person. Interne ID.

    • first_namestring

      Vorname der Person.

    • last_namestring

      Nachname der Person.

    • numberinteger

      Mitglieds- oder Kundennummer der Person.

    • manual_numberinteger

      Manuell gesetzte Nummer statt der automatischen Nummer.

    • number_stringstring

      Mitglieds- oder Kundennummer als Text, einschließlich Präfix.

    • genderstring

      Geschlecht der Person.

    • titlestring

      Akademischer oder sonstiger Titel der Person.

    • positionstring

      Position oder Rolle der Person.

    • languagestring

      Bevorzugte Sprache der Person.

    • special_salutationstring

      Besonderer Anredetext für Briefe.

    • form_of_salutationstring

      Form der Anrede, zum Beispiel förmlich oder informell.

    • birthdaystring (date-time)

      Geburtstag der Person.

    • known_allergiesstring

      Bekannte Allergien der Person.

    • confirmed_no_allergiesboolean

      Erziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.

    • allow_photosboolean

      Fotos der Person dürfen aufgenommen und veröffentlicht werden.

    • allow_leaving_aloneboolean

      Die Person darf die Veranstaltung allein verlassen.

    • authorized_pickupstring

      Personen, die die Person abholen dürfen.

    • needs_supportboolean

      Die Person benötigt Unterstützung, zum Beispiel zur Inklusion.

    • support_descriptionstring

      Beschreibung der Unterstützung, die die Person benötigt.

    • financial_supportboolean

      Die Person erhält finanzielle Unterstützung.

    • financial_support_numberstring

      Nummer der finanziellen Förderung.

    • municipal_supportboolean

      Die Person erhält kommunale Unterstützung.

    • municipal_support_numberstring

      Nummer der kommunalen Förderung.

    • grade_levelinteger

      Schuljahrgang der Person.

    • school_classstring

      Schulklasse der Person.

    • start_timestring (date-time)

      Beginn der Mitgliedschaft oder Aktivität.

    • start_time_reasonstring

      Grund für den Beginn.

    • end_timestring (date-time)

      Ende der Mitgliedschaft oder Aktivität.

    • end_time_reasonstring

      Grund für das Ende.

    • confirmed_gtc_timestring (date-time)

      Zeitpunkt, zu dem die AGB bestätigt wurden.

    • chatbot_opt_inboolean

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

    • chatbot_opt_in_atstring (date-time)

      Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.

    • chatbot_opt_in_text_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 gezählten Aufrufe selbst haben keinen Bezug zur Person.

    • crm_person_contact_dataarray<CRMPersonContactData>

      Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.

    • archivedboolean

      Ob die Person archiviert ist.

    • subscribed_newsletterboolean

      Ob die Person den Newsletter abonniert hat.

    • subscribed_magazineboolean

      Ob die Person das Magazin abonniert hat.

    • printed_member_cardboolean

      Ob für die Person ein Mitgliedsausweis gedruckt wurde.

    • has_login_userboolean

      Ob die Person einen Anmelde-Benutzer hat.

    • profile_picture_urlstring

      URL des Profilbilds der Person.

    • log_book_staffboolean

      Logbuch-Kennzeichen: Personal.

    • log_book_staff1boolean

      Logbuch-Kennzeichen: Personal, Stufe 1.

    • log_book_staff2boolean

      Logbuch-Kennzeichen: Personal, Stufe 2.

    • log_book_memberboolean

      Logbuch-Kennzeichen: Mitglied.

    • log_book_trainerboolean

      Logbuch-Kennzeichen: Trainer.

    • log_book_trainer1boolean

      Logbuch-Kennzeichen: Trainer, Stufe 1.

    • log_book_trainer2boolean

      Logbuch-Kennzeichen: Trainer, Stufe 2.

    • log_book_head_of_departmentboolean

      Logbuch-Kennzeichen: Abteilungsleitung.

    • log_book_supervisory_boardboolean

      Logbuch-Kennzeichen: Aufsichtsrat.

    • log_book_board_of_directorsboolean

      Logbuch-Kennzeichen: Vorstand.

    • log_book_honorary_memberboolean

      Logbuch-Kennzeichen: Ehrenmitglied.

    • log_book_club_card_oneboolean

      Logbuch-Kennzeichen: Vereinskarte.

    • log_book_health_recoveredboolean

      Logbuch-Kennzeichen: von Krankheit genesen.

    • log_book_health_vaccinatedboolean

      Logbuch-Kennzeichen: geimpft.

    • log_book_health_vaccinated_additionstring

      Details der Impfung.

    • log_book_good_conductboolean

      Logbuch-Kennzeichen: Führungszeugnis.

    • log_book_first_aidboolean

      Logbuch-Kennzeichen: Erste-Hilfe-Schulung.

    • log_book_measles_vaccinationboolean

      Logbuch-Kennzeichen: Masernimpfung.

    • sync_lanistaboolean

      Ob die Person mit Lanista synchronisiert ist.

    • categoryCRMPersonCategory

      Personenkategorie.

    • nicknamestring

      Spitzname der Person.

    • preferred_color_hexstring

      Bevorzugte Farbe der Person als Hexwert.

    • avatar_tokenstring

      Token des Avatarbildes.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

    • addressstring

      Adresse als Text.

    • address_streetstring

      Straße der Adresse.

    • … 14 weitere Felder
  • … 10 weitere Felder
Anfrage
curl --request DELETE \
  --url 'https://eure-instanz.iw-erp.de/api/time/shift_exchange_request/42?lock_version=1' \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "id": 42,
  "lock_version": 1,
  "source_shift": {
    "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
  },
  "target_shift": {
    "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
  },
  "owner": {
    "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"
  },
  "candidate": {
    "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"
  },
  "decided_by": {
    "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"
  },
  "mode": "string",
  "state": "string",
  "source_version": 1
}