API · v1 · stabil
CODEMETA OSDeveloper Center
Konsole öffnen
Entity · work_schedule_entries

Work Schedule Entry Schema

Schema-ID
work_schedule_entry
Collection
work_schedule_entries
Permissions
  • Lesenwork_schedule_view
  • Anlegenwork_schedule_create
  • Ändernwork_schedule_edit
  • Löschenwork_schedule_delete

Felder

Work Schedule Entry Schema

work_schedule_entries4 Permissions

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

kindstringerforderlich

PERIOD = contractual template, DAY = single date entry

PERIODDAY
userIduuidoptional

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.

nullable
employeeIduuiderforderlich

Employee profile ID — canonical Disposition-Schlüssel.

workingTimeModelIduuidoptional

Reference to the working time model (envelope/validator)

nullable
validFromdateoptional

PERIOD only: start date of the contractual period (YYYY-MM-DD)

nullable
validTodateoptional

PERIOD only: end date or null for open-ended

nullable
weeklyHoursnumberoptional

PERIOD only: target weekly hours

0 – 168nullable
weeklyScheduleobject[]optional

PERIOD only: per-weekday recurring work pattern

nullable
daynumbererforderlich
1 – 7
startTimestringerforderlich
Pattern
endTimestringerforderlich
Pattern
breakMinutesnumberoptional
0 – 480Default: 0
breakStartTimestringoptional

PERIOD only: prescribed/declared break start (HH:mm); blocked in calendar

Patternnullable
breakEndTimestringoptional

PERIOD only: prescribed/declared break end (HH:mm)

Patternnullable
locationstringoptional

Default work location for this weekday

nullOFFICEREMOTECUSTOMER_SITETRAVEL
nullable
locationAddressIduuidoptional

PERIOD only: address in the self-company party (parties.addresses[]._id) for this weekday; set whenever location is OFFICE and a site was chosen

nullable
locationIduuidoptional

PERIOD only: building (location entity, parentId=null) within locationAddressId; null when the address itself was chosen

nullable
dayTypestringoptional

PERIOD only: kind of weekday. WORK = regular working day; VOCATIONAL_SCHOOL = recurring Berufsschultag (§ 15 BBiG) — counts towards the target hours as paid release, but the person is not available for dispatch. Missing = WORK.

WORKVOCATIONAL_SCHOOL
Default: "WORK"
notestringoptional

PERIOD only: optional freetext note (e.g. "Teilzeit nach Elternzeit")

max 1000 Zeichennullable
datedateoptional

DAY only: the date (YYYY-MM-DD)

nullable
plannedStartTimestringoptional

DAY only: planned start time, null = day off

Patternnullable
plannedEndTimestringoptional

DAY only: planned end time

Patternnullable
plannedBreakMinutesnumberoptional

DAY only: planned break duration in minutes

≥ 0Default: 30
plannedBreakStartTimestringoptional

DAY only: planned break start (HH:mm); blocked in calendar

Patternnullable
plannedBreakEndTimestringoptional

DAY only: planned break end (HH:mm)

Patternnullable
plannedWorkMinutesnumberoptional

DAY only: calculated planned work minutes (end - start - break)

≥ 0Default: 0
locationstringoptional

DAY only: work location type

nullOFFICEREMOTECUSTOMER_SITETRAVEL
nullable
dayTypestringoptional

DAY only: kind of day. WORK = regular working day; VOCATIONAL_SCHOOL = Berufsschultag (§ 15 BBiG), paid release that still counts towards the target hours. Missing = WORK.

WORKVOCATIONAL_SCHOOL
Default: "WORK"
locationAddressIduuidoptional

DAY only: address in the self-company party (parties.addresses[]._id); set whenever location is OFFICE and a site was chosen

nullable
locationIduuidoptional

DAY only: building (location entity, parentId=null) within locationAddressId; null when the address itself was chosen

nullable
locationNotestringoptional

DAY only: additional location notes

max 500 Zeichennullable
shiftAssignmentIduuidoptional

DAY only: reference to shift assignment (for SHIFT model type)

nullable
statusstringoptional

DAY only: submission status (DRAFT = editable, SUBMITTED = locked). APPROVED/REJECTED are legacy — read-only remnants of the removed approval flow.

nullDRAFTSUBMITTEDAPPROVEDREJECTED
nullable
submittedAtdatetimeoptional

DAY only: when this entry was submitted. Also anchors the 15-minute self-withdraw grace window (SELF_WITHDRAW_WINDOW_MS).

nullable
approvedByIduuidoptional

DAY only: LEGACY — user ID of the approver (removed approval flow)

nullable
approvedAtdatetimeoptional

DAY only: LEGACY — when this entry was approved (removed approval flow)

nullable
rejectedByIduuidoptional

DAY only: LEGACY — user ID of the rejecter (removed approval flow)

nullable
rejectedAtdatetimeoptional

DAY only: LEGACY — when this entry was rejected (removed approval flow)

nullable
rejectionReasonstringoptional

DAY only: LEGACY — rejection reason (removed approval flow)

max 1000 Zeichennullable
flagsobject[]optional

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.

Default: []read-only
codestringerforderlich
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_UNAPPROVED
severitystringerforderlich
WARNINGBLOCKING
legalBasisstringerforderlich
max 100 Zeichen
messagestringerforderlich
max 1000 Zeichen
detailsobjectoptional
nullable
acknowledgementsobject[]optional

DAY only: Warn-and-Confirm acknowledgements (Phase 6.3). Required for every flag stored in `flags[]` before the entry can be submitted.

Default: []
flagstringerforderlich
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_UNAPPROVED
acknowledgedBystringerforderlich
max 64 Zeichen
acknowledgedAtdatetimeerforderlich
reasonstringerforderlich
10–4000 Zeichen
approvedBystringoptional
max 64 Zeichennullable
approvedAtdatetimeoptional
nullable
legalBasisstringerforderlich
max 100 Zeichen
informationalFlagsstring[]optional

DAY only: non-ArbZG informational flags that do not require acknowledgement (deadline missed, staffing issues, period override).

Default: []
reasonstringoptional

DAY only: optional reason when this DAY overrides a PERIOD (e.g. "Arzttermin", "Halbtagsurlaub")

max 500 Zeichennullable
overridesPeriodIduuidoptional

DAY only: optional reference back to the PERIOD this DAY deviates from. Set automatically when HR records a contractual exception.

nullable

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 + filterbar
  • GET /api/v1/work_schedule_entries/<id> — Einzelne Entity
  • POST /api/v1/work_schedule_entries — Anlegen
  • PATCH /api/v1/work_schedule_entries/<id> — Teil-Update
  • DELETE /api/v1/work_schedule_entries/<id> — Soft-Delete
  • GET /api/v1/work_schedule_entries/<id>/timeline — Audit + Aktivitäten

Suche