Work Schedule Entry Schema
Felder
Work Schedule Entry Schema
Unified schema for work schedule rows. The `kind` discriminator selects between PERIOD (contractual template valid for a date range, with a weekly schedule) and DAY (a single planned/recorded day, optionally overriding an active period).
kind
PERIOD = contractual template, DAY = single date entry
PERIODDAYuserId
User ID of the employee. Optional (ADR 0123): Mitarbeitende ohne verknüpften Login-Account haben keine userId — Disposition läuft dann rein über `employeeId`. Denormalisierter Self-Service-Lookup-Key wenn verknüpft.
employeeId
Employee profile ID — canonical Disposition-Schlüssel.
workingTimeModelId
Reference to the working time model (envelope/validator)
validFrom
PERIOD only: start date of the contractual period (YYYY-MM-DD)
validTo
PERIOD only: end date or null for open-ended
weeklyHours
PERIOD only: target weekly hours
weeklySchedule
PERIOD only: per-weekday recurring work pattern
day
startTime
endTime
breakMinutes
breakStartTime
PERIOD only: prescribed/declared break start (HH:mm); blocked in calendar
breakEndTime
PERIOD only: prescribed/declared break end (HH:mm)
location
Default work location for this weekday
nullOFFICEREMOTECUSTOMER_SITETRAVELnote
PERIOD only: optional freetext note (e.g. "Teilzeit nach Elternzeit")
date
DAY only: the date (YYYY-MM-DD)
plannedStartTime
DAY only: planned start time, null = day off
plannedEndTime
DAY only: planned end time
plannedBreakMinutes
DAY only: planned break duration in minutes
plannedBreakStartTime
DAY only: planned break start (HH:mm); blocked in calendar
plannedBreakEndTime
DAY only: planned break end (HH:mm)
plannedWorkMinutes
DAY only: calculated planned work minutes (end - start - break)
location
DAY only: work location type
nullOFFICEREMOTECUSTOMER_SITETRAVELlocationId
DAY only: reference to location entity
locationNote
DAY only: additional location notes
shiftAssignmentId
DAY only: reference to shift assignment (for SHIFT model type)
status
DAY only: approval status
nullDRAFTSUBMITTEDAPPROVEDREJECTEDsubmittedAt
DAY only: when this entry was submitted for approval
approvedById
DAY only: user ID of the approver
approvedAt
DAY only: when this entry was approved
rejectedById
DAY only: user ID of the rejecter
rejectedAt
DAY only: when this entry was rejected
rejectionReason
DAY only: reason for rejection (if status is REJECTED)
flags
DAY only: ArbZG/TV validation flags computed on save (Phase 6.2 engine). Legacy string codes (DEADLINE_MISSED, REST_TIME_VIOLATION, STAFFING_VIOLATION, OVERRIDES_PERIOD) remain available via informationalFlags.
code
CORE_HOUR_VIOLATIONOUTSIDE_FLEX_WINDOWSHIFT_MISMATCHBANDWIDTH_EXCEEDEDKAPOVAZ_MINIMUMBREAK_RULE_VIOLATIONBREAK_SEGMENT_TOO_SHORTMAX_CONSECUTIVE_WORK_EXCEEDEDREST_PERIOD_VIOLATIONMAX_DAILY_EXCEEDEDMAX_WEEKLY_AVG_EXCEEDEDNIGHT_WORK_EXCEEDEDHOLIDAY_WORK_UNAPPROVEDseverity
WARNINGBLOCKINGlegalBasis
message
details
acknowledgements
DAY only: Warn-and-Confirm acknowledgements (Phase 6.3). Required for every flag stored in `flags[]` before the entry can be submitted.
flag
CORE_HOUR_VIOLATIONOUTSIDE_FLEX_WINDOWSHIFT_MISMATCHBANDWIDTH_EXCEEDEDKAPOVAZ_MINIMUMBREAK_RULE_VIOLATIONBREAK_SEGMENT_TOO_SHORTMAX_CONSECUTIVE_WORK_EXCEEDEDREST_PERIOD_VIOLATIONMAX_DAILY_EXCEEDEDMAX_WEEKLY_AVG_EXCEEDEDNIGHT_WORK_EXCEEDEDHOLIDAY_WORK_UNAPPROVEDacknowledgedBy
reason
approvedBy
approvedAt
legalBasis
informationalFlags
DAY only: non-ArbZG informational flags that do not require acknowledgement (deadline missed, staffing issues, period override).
reason
DAY only: optional reason when this DAY overrides a PERIOD (e.g. "Arzttermin", "Halbtagsurlaub")
overridesPeriodId
DAY only: optional reference back to the PERIOD this DAY deviates from. Set automatically when HR records a contractual exception.
Keine Felder passen zum Filter.
Standard-Endpoints
Diese Resource folgt dem generischen CRUD-Vertrag der Plattform. Lesen Sie die Konventionen für Pagination, Idempotenz, Optimistic Locking und Audit. Die wichtigsten Endpoints:
GET /api/v1/work_schedule_entries— Liste, paginiert + filterbarGET /api/v1/work_schedule_entries/<id>— Einzelne EntityPOST /api/v1/work_schedule_entries— AnlegenPATCH /api/v1/work_schedule_entries/<id>— Teil-UpdateDELETE /api/v1/work_schedule_entries/<id>— Soft-DeleteGET /api/v1/work_schedule_entries/<id>/timeline— Audit + Aktivitäten