Zeit & Anwesenheit
Arbeitszeit, Urlaub, Zeitpläne und Feiertage — protokollieren und lesen Sie Anwesenheitsdaten programmatisch.
Arbeitszeit
Endpoints
| GET | /employee-working-hours | Ruft die Sammlung der WorkTime-Ressourcen ab. |
| POST | /employee-working-hours | Erstellt eine WorkTime-Ressource. |
| GET | /employee-working-hours/{id} | Ruft eine WorkTime-Ressource ab. |
| PATCH | /employee-working-hours/{id} | Aktualisiert die WorkTime-Ressource. |
| DELETE | /employee-working-hours/{id} | Entfernt die WorkTime-Ressource. |
| GET | /work-times | Ruft die Sammlung der WorkTime-Ressourcen ab. |
| POST | /work-times | Erstellt eine WorkTime-Ressource. |
| GET | /work-times/{id} | Ruft eine WorkTime-Ressource ab. |
| PATCH | /work-times/{id} | Aktualisiert die WorkTime-Ressource. |
| DELETE | /work-times/{id} | Entfernt die WorkTime-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | integer | |
| employee* | string (iri-reference) | |
| project* | string (iri-reference) | |
| date* | string (date-time) | |
| seconds* | integer | |
| description | stringnull | |
| projectTask | string,null (iri-reference) | Optional link to a {@see ProjectTask}. Nullable; existing rows have no link. Set by the Surface 1 picker chip and by Surface 2's close-and-log panel. The validator {@see \App\Validator\WorkTime\WorkTimeProjectTaskConsistencyConstraint} enforces that projectTask.project === workTime.project when this FK is set. On ProjectTask deletion the column is SET NULL — the time logged is preserved, the link is forgotten. |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) | |
| deletedAt | string,null (date-time) | |
| deleted | boolean | Check if the entity has been soft deleted. |
Urlaub
Endpoints
| GET | /holidays | Ruft die Sammlung der Holiday-Ressourcen ab. |
| POST | /holidays | Erstellt eine Holiday-Ressource. |
| GET | /holidays/{id} | Ruft eine Holiday-Ressource ab. |
| PATCH | /holidays/{id} | Aktualisiert die Holiday-Ressource. |
| DELETE | /holidays/{id} | Entfernt die Holiday-Ressource. |
| GET | /holidays/active | Ruft die Sammlung der Holiday-Ressourcen ab. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | integer | |
| type* | string | #4548. `Holiday` is writable directly (`holiday:create`), so it carries the same unbounded-free-text defect the request did. `max` tracks `length`. |
| employee* | string (iri-reference) | |
| manager | string (iri-reference) | |
| description | stringnull | #4548, and it is reachable two ways: written directly through `holiday:create`, and copied from the accepted request by `HolidayRequestDecider:47`. Both columns are VARCHAR(255), so bounding the request at 255 keeps that copy safe — this bounds the direct path. |
| dateFrom* | string (date-time) | |
| dateTo* | string (date-time) | |
| seconds | integernull | |
| requestedSeconds | integernull | |
| notify | boolean | Should this absence tell the employee it was created? (#4705) |
| payrollEligible | boolean | May payroll act on this absence? (#4017) |
| holidayRequests | array | |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) | |
| deletedAt | string,null (date-time) | |
| employeeFullname | string | |
| employeeReversedFullname | string | |
| relatedEmployee | string,null (iri-reference) | |
| deleted | boolean | Check if the entity has been soft deleted. |
Zeitplan
Endpoints
| GET | /schedules | Ruft die Sammlung der Schedule-Ressourcen ab. |
| POST | /schedules | Erstellt eine Schedule-Ressource. |
| GET | /schedules/{id} | Ruft eine Schedule-Ressource ab. |
| PATCH | /schedules/{id} | Aktualisiert die Schedule-Ressource. |
| GET | /schedules/plan/{date} | Ruft die Sammlung der Schedule-Ressourcen ab. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| name | string | |
| description | stringnull | |
| numberOfDays | integer | |
| regular | boolean | |
| overwriteBankHolidays | boolean | |
| scheduleRanges | array | |
| scheduleEmployees | array |
Feiertag
Endpoints
| GET | /bank-holidays | Ruft die Sammlung der BankHoliday-Ressourcen ab. |
| POST | /bank-holidays | Erstellt eine BankHoliday-Ressource. |
| GET | /bank-holidays/{id} | Ruft eine BankHoliday-Ressource ab. |
| PATCH | /bank-holidays/{id} | Aktualisiert die BankHoliday-Ressource. |
| DELETE | /bank-holidays/{id} | Entfernt die BankHoliday-Ressource. |
| GET | /holiday-days-frees | Ruft die Sammlung der BankHoliday-Ressourcen ab. |
| POST | /holiday-days-frees | Erstellt eine BankHoliday-Ressource. |
| GET | /holiday-days-frees/{id} | Ruft eine BankHoliday-Ressource ab. |
| PATCH | /holiday-days-frees/{id} | Aktualisiert die BankHoliday-Ressource. |
| DELETE | /holiday-days-frees/{id} | Entfernt die BankHoliday-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| date* | string | |
| publicNotes | stringnull | |
| yearFrom | integernull | |
| yearTo | integernull |
Urlaubsantrag
Endpoints
| GET | /holiday-requests | Ruft die Sammlung der HolidayRequest-Ressourcen ab. |
| POST | /holiday-requests | Erstellt eine HolidayRequest-Ressource. |
| GET | /holiday-requests/{id} | Ruft eine HolidayRequest-Ressource ab. |
| PATCH | /holiday-requests/{id} | Aktualisiert die HolidayRequest-Ressource. |
| DELETE | /holiday-requests/{id} | Entfernt die HolidayRequest-Ressource. |
| POST | /holiday-requests/{id}/approve | Erstellt eine HolidayRequest-Ressource. |
| POST | /holiday-requests/{id}/reject | Erstellt eine HolidayRequest-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | integer | |
| status | string | |
| employee | string (iri-reference) | |
| holiday | string,null (iri-reference) | |
| type* | string | Same defect, same processor, same flush (#4548). `type` is writable in the `holiday_request:create` group and nothing bounded it, so a 65-character value produced the identical SQLSTATE[22001]. Sentry only caught `description` because that is the one a user types freely. |
| description | stringnull | THE LENGTH IS THE COLUMN WIDTH, NOT A TASTE (#4548). Without it an over-long note travelled to MySQL and came back as `SQLSTATE[22001] … Data too long for column 'description'` — a fatal 500 from `HolidayRequestCreateProcessor:118`'s flush(), losing the request and telling the user nothing (Sentry PHP-SYMFONY-T7, prod). |
| dateFrom* | string (date-time) | |
| dateTo* | string (date-time) | |
| seconds | integernull | |
| requestedSeconds | integernull | |
| holidayRequestLogs | array | |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) | |
| requestedAt | datetime |
Urlaubsart
Endpoints
| GET | /holiday-types | Ruft die Sammlung der HolidayType-Ressourcen ab. |
| POST | /holiday-types | Erstellt eine HolidayType-Ressource. |
| GET | /holiday-types/{id} | Ruft eine HolidayType-Ressource ab. |
| PATCH | /holiday-types/{id} | Aktualisiert die HolidayType-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| status | string | |
| name* | string | |
| color | string | THE API HAS TO ACCEPT ITS OWN OUTPUT (#4407). |
| descriptionRequired | boolean | |
| icon | stringnull | |
| reducesWorkingTime | boolean | Does an absence of this type reduce the month's expected working hours? |
| requiresApproval | boolean | Does an absence of this type have to be approved by somebody? (#5068) |
Urlaubstage-Limit
Endpoints
| GET | /holiday-days-limits | Ruft die Sammlung der HolidayDaysLimit-Ressourcen ab. |
| POST | /holiday-days-limits | Erstellt eine HolidayDaysLimit-Ressource. |
| GET | /holiday-days-limits/{id} | Ruft eine HolidayDaysLimit-Ressource ab. |
| PATCH | /holiday-days-limits/{id} | Aktualisiert die HolidayDaysLimit-Ressource. |
| DELETE | /holiday-days-limits/{id} | Entfernt die HolidayDaysLimit-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | integer | |
| employee* | string (iri-reference) | |
| seconds* | integer | Leave allowance in SECONDS, not whole days (#3763). |
| holidayType | string,null (iri-reference) | |
| variant* | string | |
| allowRequestWhenUsed | boolean | NOT SERIALISED, AND THAT IS THE FIX (#4361). Do not re-add `#[Groups]`. |
| dateFrom | string (date-time) | |
| notes | stringnull | |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) | |
| notApplicableReason | stringnull | Why this entitlement will not take effect yet, or NULL if it will (#4443). |
| vacationLimit | boolean | Is this row the ANNUAL LEAVE entitlement, as opposed to a granted balance of some other type (#4165)? |
| relatedEmployee | string,null (iri-reference) |
Standard-Urlaubstage-Limit
Endpoints
| GET | /holiday-days-limit-defaults | Ruft die Sammlung der HolidayDaysLimitDefault-Ressourcen ab. |
| POST | /holiday-days-limit-defaults | Erstellt eine HolidayDaysLimitDefault-Ressource. |
| GET | /holiday-days-limit-defaults/{id} | Ruft eine HolidayDaysLimitDefault-Ressource ab. |
| PATCH | /holiday-days-limit-defaults/{id} | Aktualisiert die HolidayDaysLimitDefault-Ressource. |
| DELETE | /holiday-days-limit-defaults/{id} | Entfernt die HolidayDaysLimitDefault-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | string | |
| holidayType | string (iri-reference) | |
| seconds* | integer | Default leave allowance in SECONDS, not whole days (#3763). This entity moves with `HolidayDaysLimit` rather than after it: both are returned through the same line in `HolidaysHelper::getHolidayDaysLimit()`, so leaving one in days would put two units on one code path. |
| variant* | string | |
| allowRequestWhenUsed | boolean | NOT SERIALISED (#4361) — see the full reasoning on {@see HolidayDaysLimit::$allowRequestWhenUsed}. Do not re-add `#[Groups]`. |
| dateFrom | string (date-time) | |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) |
Dienstplan-Mitarbeiter
Endpoints
| GET | /schedule-employees | Ruft die Sammlung der ScheduleEmployee-Ressourcen ab. |
| POST | /schedule-employees | Erstellt eine ScheduleEmployee-Ressource. |
| GET | /schedule-employees/{id} | Ruft eine ScheduleEmployee-Ressource ab. |
| PATCH | /schedule-employees/{id} | Aktualisiert die ScheduleEmployee-Ressource. |
| DELETE | /schedule-employees/{id} | Entfernt die ScheduleEmployee-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| employee | string (iri-reference) | |
| schedule | string (iri-reference) | |
| dateFrom | string (date-time) | |
| dateTo | string,null (date-time) | |
| type | string | |
| notifiedAt | string,null (date-time) |
Dienstplanzeitraum
Endpoints
| GET | /schedule-ranges | Ruft die Sammlung der ScheduleRange-Ressourcen ab. |
| POST | /schedule-ranges | Erstellt eine ScheduleRange-Ressource. |
| GET | /schedule-ranges/{id} | Ruft eine ScheduleRange-Ressource ab. |
| PATCH | /schedule-ranges/{id} | Aktualisiert die ScheduleRange-Ressource. |
| DELETE | /schedule-ranges/{id} | Entfernt die ScheduleRange-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | string | |
| schedule | object | |
| day | integer | |
| timeFrom | integer | |
| timeTo | integer | |
| name | stringnull |
Dienstreise
Endpoints
| GET | /delegations | Ruft die Sammlung der Delegation-Ressourcen ab. |
| POST | /delegations | Erstellt eine Delegation-Ressource. |
| GET | /delegations/{id} | Ruft eine Delegation-Ressource ab. |
| PATCH | /delegations/{id} | Aktualisiert die Delegation-Ressource. |
| DELETE | /delegations/{id} | Entfernt die Delegation-Ressource. |
Schemafelder
| Feld | Typ | Beschreibung |
|---|---|---|
| id | integer | |
| employee* | string (iri-reference) | |
| project | string,null (iri-reference) | Nullable: a historical trip may name no project, and it must still be recorded. |
| projectTask | string,null (iri-reference) | |
| dateFrom* | string (date-time) | |
| dateTo* | string (date-time) | |
| seconds | integernull | Optional: the source history carries days, not hours. |
| description | stringnull | |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) | |
| deletedAt | string,null (date-time) | |
| days | integer | Calendar days covered, INCLUSIVE — a trip that starts and ends on the same day is one day, not zero. This is the unit the travel analytics report, because the source history counts days rather than hours. |
| deleted | boolean | Check if the entity has been soft deleted. |