Ga naar inhoud

Mensen: verlof, contracten, portaal

Medewerkers in plaats van klantcontacten: verlofsaldi en aanvragen, dienstverbanden en werkroosters, en de inlog waarmee een klant meekijkt.

59 endpoints, verdeeld over 3 groepen. Een recht geschreven als module.resource.action:own heeft een bereik: :own dekt rijen die van jou zijn, :any die van iedereen, en :any voldoet aan een controle op :own.

EndpointRecht
GET /leave/availabilityleave.availability.read
POST /leave/availabilityleave.availability.write
PATCH /leave/availability/{entry_id}leave.availability.write
DELETE /leave/availability/{entry_id}leave.availability.write
GET /leave/availability/daysleave.availability.read
POST /leave/availability/moveleave.availability.write
GET /leave/balanceleave.request.read
GET /leave/balance/groupsleave.request.read
GET /leave/contractsleave.request.read
POST /leave/contractsleave.profile.manage
PATCH /leave/contracts/{contract_id}leave.profile.manage
DELETE /leave/contracts/{contract_id}leave.profile.manage
GET /leave/entitlementsleave.entitlement.read
PUT /leave/entitlementsleave.entitlement.write
DELETE /leave/entitlementsleave.entitlement.write
POST /leave/entitlements/generateleave.entitlement.write
GET /leave/free-timeleave.request.read
POST /leave/free-time/withdrawleave.request.write
GET /leave/holidaysleave.request.read
POST /leave/holidaysleave.holiday.write
PATCH /leave/holidays/{holiday_id}leave.holiday.write
DELETE /leave/holidays/{holiday_id}leave.holiday.write
POST /leave/holidays/importleave.holiday.write
GET /leave/profileleave.request.read
GET /leave/profilesleave.profile.manage
PUT /leave/profiles/{user_id}leave.profile.manage
GET /leave/rateleave.rate.read
GET /leave/rate/{user_id}leave.rate.read
PUT /leave/rate/{user_id}leave.rate.write
GET /leave/ratesleave.rate.read
GET /leave/recurringleave.request.read
POST /leave/recurringleave.request.write
PATCH /leave/recurring/{recurring_id}leave.request.write
DELETE /leave/recurring/{recurring_id}leave.request.write
GET /leave/requestsleave.request.read
POST /leave/requestsleave.request.write
GET /leave/requests/{request_id}leave.request.read
PATCH /leave/requests/{request_id}leave.request.write
POST /leave/requests/{request_id}/cancelleave.request.write
POST /leave/requests/{request_id}/decideleave.request.approve
POST /leave/requests/previewleave.request.read
GET /leave/settingsleave.profile.manage
PUT /leave/settingsleave.profile.manage
GET /leave/summaryleave.request.read
GET /leave/teamleave.request.read
GET /leave/typesleave.request.read
POST /leave/typesleave.type.write
PATCH /leave/types/{type_id}leave.type.write
DELETE /leave/types/{type_id}leave.type.write
Parameters en schema’s per endpoint

List Availability — The exception rows with an occurrence in the window — own, or anyone’s with :any.

Recht: leave.availability.read

Queryparameters:

NaamTypeBetekenis
date_fromstring · verplicht
date_tostring · verplicht
user_idstring
all_usersboolean(default false)

Antwoord: 200 · AvailabilityRead[]

Create Availability

Recht: leave.availability.write

Request body: AvailabilityCreate

Antwoord: 201 · AvailabilityRead

PATCH /api/v1/leave/availability/{entry_id}

Section titled “PATCH /api/v1/leave/availability/{entry_id}”

Update Availability

Recht: leave.availability.write

Padparameters: entry_id

Request body: AvailabilityUpdate

Antwoord: 200 · AvailabilityRead

DELETE /api/v1/leave/availability/{entry_id}

Section titled “DELETE /api/v1/leave/availability/{entry_id}”

Delete Availability — Deletes the other half too when the row is a move — see the service.

Recht: leave.availability.write

Padparameters: entry_id

Antwoord: 204

Availability Days — The resolved week: the base schedule with every exception applied, day by day.

Recht: leave.availability.read

Queryparameters:

NaamTypeBetekenis
date_fromstring · verplicht
date_tostring · verplicht
user_idstring
all_usersboolean(default false)

Antwoord: 200 · AvailabilityDay[]

Move Availability — Swap one day for another — two rows sharing a pair_id, written in one act.

Recht: leave.availability.write

Request body: AvailabilityMove

Antwoord: 201 · AvailabilityRead[]

Balances

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
yearinteger · verplicht
user_idstring

Antwoord: 200 · LeaveBalance[]

Group Balances — The employee-facing combined balances (#265): one figure per balance group (statutory + extra-statutory vacation roll up into one “Vakantieverlof”), with the per-pot breakdown — accrual year, remaining, expiry — alongside for anyone who needs to see where hours went.

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
yearinteger · verplicht
user_idstring
all_usersboolean(default false)

Antwoord: 200 · LeaveGroupBalance[]

List Contracts — A user’s employment history. Own for a member; anyone’s — or everyone’s, with all_users — for a manager (the Settings → Users roster).

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
user_idstring
all_usersboolean(default false)

Antwoord: 200 · EmploymentContractRead[]

Create Contract

Recht: leave.profile.manage

Request body: EmploymentContractCreate

Antwoord: 201 · EmploymentContractRead

PATCH /api/v1/leave/contracts/{contract_id}

Section titled “PATCH /api/v1/leave/contracts/{contract_id}”

Update Contract

Recht: leave.profile.manage

Padparameters: contract_id

Request body: EmploymentContractUpdate

Antwoord: 200 · EmploymentContractRead

DELETE /api/v1/leave/contracts/{contract_id}

Section titled “DELETE /api/v1/leave/contracts/{contract_id}”

Delete Contract

Recht: leave.profile.manage

Padparameters: contract_id

Antwoord: 204

List Entitlements — Own entitlements; managers see everyone’s when no user_id is given.

Recht: leave.entitlement.read

Queryparameters:

NaamTypeBetekenis
yearinteger · verplicht
user_idstring

Antwoord: 200 · LeaveEntitlementRead[]

Upsert Entitlement

Recht: leave.entitlement.write

Request body: LeaveEntitlementUpsert

Antwoord: 200 · LeaveEntitlementRead

Delete Entitlement — Drop a pot and let generation re-derive it — the revert behind “clear it to let it be derived again”. A current/next-year pot reappears with the derived figure in the same request; a past year’s simply goes (history is never backfilled).

Recht: leave.entitlement.write

Queryparameters:

NaamTypeBetekenis
yearinteger · verplicht
user_idstring · verplicht
leave_type_idstring · verplicht

Antwoord: 204

Generate Entitlements

Recht: leave.entitlement.write

Request body: EntitlementGenerate

Antwoord: 200 · GenerateResult

Free Time Overview — Everything the free-time card and the employment wizard need, in one call.

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
yearinteger · verplicht
user_idstring

Antwoord: 200 · FreeTimeOverview

Withdraw Free Time — Take back free days the pot no longer covers, after a contract change reprorated it (#264).

Recht: leave.request.write

Request body: FreeTimeWithdraw

Antwoord: 200 · FreeTimeWithdrawResult

List Holidays — The org’s calendar. Any staff member: it drives the agenda and the timesheet.

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
yearinteger
date_fromstring
date_tostring
include_inactiveboolean(default false)

Antwoord: 200 · LeaveHolidayRead[]

Create Holiday

Recht: leave.holiday.write

Request body: LeaveHolidayCreate

Antwoord: 201 · LeaveHolidayRead

Update Holiday

Recht: leave.holiday.write

Padparameters: holiday_id

Request body: LeaveHolidayUpdate

Antwoord: 200 · LeaveHolidayRead

DELETE /api/v1/leave/holidays/{holiday_id}

Section titled “DELETE /api/v1/leave/holidays/{holiday_id}”

Delete Holiday

Recht: leave.holiday.write

Padparameters: holiday_id

Antwoord: 204

Import Holidays — Re-run the generator for a year. Manual and deactivated rows survive untouched.

Recht: leave.holiday.write

Request body: HolidayImport

Antwoord: 200 · HolidayImportResult

My Profile — The caller’s effective schedule — merged server-side, on purpose (#46).

Recht: leave.request.read

Antwoord: 200 · LeaveProfileRead

List Profiles — Contract hours + own schedule per user (managers). A null schedule follows the org’s.

Recht: leave.profile.manage

Antwoord: 200 · LeaveProfileSummary[]

Set Profile

Recht: leave.profile.manage

Padparameters: user_id

Request body: LeaveProfileUpdate

Antwoord: 200 · LeaveProfileSummary

My Rate — The caller’s own hourly rate (salary-adjacent — a member sees only their own).

Recht: leave.rate.read

Antwoord: 200 · LeaveRateRead

User Rate — One employee’s rate. Own on :own; anyone’s on :any.

Recht: leave.rate.read

Padparameters: user_id

Antwoord: 200 · LeaveRateRead

Set Rate — Set or clear an employee’s rate (admin). Attributed nowhere — the rate is current state.

Recht: leave.rate.write

Padparameters: user_id

Request body: LeaveRateUpdate

Antwoord: 200 · LeaveRateRead

List Rates — Every employee’s rate for the managers’ roster. Requires leave.rate.read:any.

Recht: leave.rate.read

Antwoord: 200 · LeaveRateRead[]

List Recurring — Rostered-free-day patterns: a member’s own; anyone’s/all on leave.profile.manage.

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
user_idstring

Antwoord: 200 · LeaveRecurringDayRead[]

Create Recurring — A manager plans any type for anyone; a member plans their own self-service types (requires_approval = false) — the service enforces the split.

Recht: leave.request.write

Request body: LeaveRecurringDayCreate

Antwoord: 201 · LeaveRecurringDaySaved

PATCH /api/v1/leave/recurring/{recurring_id}

Section titled “PATCH /api/v1/leave/recurring/{recurring_id}”

Update Recurring

Recht: leave.request.write

Padparameters: recurring_id

Request body: LeaveRecurringDayUpdate

Antwoord: 200 · LeaveRecurringDaySaved

DELETE /api/v1/leave/recurring/{recurring_id}

Section titled “DELETE /api/v1/leave/recurring/{recurring_id}”

Delete Recurring — Delete the pattern. By default the days it placed stay — they are real leave somebody planned around, and a rule being removed is no reason to wipe a calendar.

Recht: leave.request.write

Padparameters: recurring_id

Queryparameters:

NaamTypeBetekenis
withdraw_daysboolean(default false)

Antwoord: 200 · LeaveRecurringDeleteResult

List Requests

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
user_idstring
all_usersboolean(default false)
yearinteger
statusLeaveRequestStatus
sortstringemployee | start_date | end_date | hours | status, ’-’ desc

Antwoord: 200 · Page_LeaveRequestRead_

Create Request

Recht: leave.request.write

Request body: LeaveRequestCreate

Antwoord: 201 · LeaveRequestRead

Get Request

Recht: leave.request.read

Padparameters: request_id

Antwoord: 200 · LeaveRequestRead

Update Request

Recht: leave.request.write

Padparameters: request_id

Request body: LeaveRequestUpdate

Antwoord: 200 · LeaveRequestRead

POST /api/v1/leave/requests/{request_id}/cancel

Section titled “POST /api/v1/leave/requests/{request_id}/cancel”

Cancel Request

Recht: leave.request.write

Padparameters: request_id

Antwoord: 200 · LeaveRequestRead

POST /api/v1/leave/requests/{request_id}/decide

Section titled “POST /api/v1/leave/requests/{request_id}/decide”

Decide Request — Approve or reject a pending request (managers).

Recht: leave.request.approve

Padparameters: request_id

Request body: LeaveRequestDecision

Antwoord: 200 · LeaveRequestRead

Preview Request — What a span costs, before it is submitted — so the number shown is the number stored.

Recht: leave.request.read

Request body: LeaveRequestPreview

Antwoord: 200 · LeavePreviewResult

Get Settings — The org’s leave settings. An org that never saved a row gets the defaults.

Recht: leave.profile.manage

Antwoord: 200 · LeaveSettingsRead

Update Settings

Recht: leave.profile.manage

Request body: LeaveSettingsUpdate

Antwoord: 200 · LeaveSettingsRead

Summary

Recht: leave.request.read

Antwoord: 200 · LeaveSummary

Team

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
date_fromstring · verplicht
date_tostring · verplicht
user_idstring

Antwoord: 200 · TeamLeaveItem[]

List Types

Recht: leave.request.read

Queryparameters:

NaamTypeBetekenis
include_inactiveboolean(default false)

Antwoord: 200 · LeaveTypeRead[]

Create Type

Recht: leave.type.write

Request body: LeaveTypeCreate

Antwoord: 201 · LeaveTypeRead

Update Type

Recht: leave.type.write

Padparameters: type_id

Request body: LeaveTypeUpdate

Antwoord: 200 · LeaveTypeRead

Delete Type

Recht: leave.type.write

Padparameters: type_id

Antwoord: 204

EndpointRecht
POST /hr/documentshr.document.manage
DELETE /hr/documents/{document_id}hr.document.manage
GET /hr/documents/{document_id}/filehr.dossier.read
GET /hr/dossierhr.dossier.read
Parameters en schema’s per endpoint

Upload Document

Recht: hr.document.manage

Queryparameters:

NaamTypeBetekenis
user_idstring · verplicht
categorystring · verplicht
titlestring(default “)
notestring(default “)

Request body: Body_upload_document_api_v1_hr_documents_post

Antwoord: 201 · HrDocumentRead

Delete Document

Recht: hr.document.manage

Padparameters: document_id

Antwoord: 204

GET /api/v1/hr/documents/{document_id}/file

Section titled “GET /api/v1/hr/documents/{document_id}/file”

Serve Document

Recht: hr.dossier.read

Padparameters: document_id

Antwoord: 200

Dossier

Recht: hr.dossier.read

Queryparameters:

NaamTypeBetekenis
user_idstring

Antwoord: 200 · DossierRead

EndpointRecht
POST /portal/impersonation/stopBewust open
GET /portal/logins/{entity_type}/{subject_id}members.member.write
POST /portal/logins/{entity_type}/{subject_id}members.member.write
DELETE /portal/logins/{entity_type}/{subject_id}members.member.write
POST /portal/logins/{entity_type}/{subject_id}/impersonateportal.login.impersonate
POST /portal/logins/{entity_type}/{subject_id}/resendmembers.member.write
Parameters en schema’s per endpoint

Stop Portal Impersonation

Recht: Bewust open

Antwoord: 204

GET /api/v1/portal/logins/{entity_type}/{subject_id}

Section titled “GET /api/v1/portal/logins/{entity_type}/{subject_id}”

Portal Login State

Recht: members.member.write

Padparameters: entity_type, subject_id

Antwoord: 200 · PortalLoginState

POST /api/v1/portal/logins/{entity_type}/{subject_id}

Section titled “POST /api/v1/portal/logins/{entity_type}/{subject_id}”

Enable Portal Login — Invite this subject to the portal, or re-enable a login that was switched off.

Recht: members.member.write

Padparameters: entity_type, subject_id

Antwoord: 200 · PortalLoginState

DELETE /api/v1/portal/logins/{entity_type}/{subject_id}

Section titled “DELETE /api/v1/portal/logins/{entity_type}/{subject_id}”

Disable Portal Login

Recht: members.member.write

Padparameters: entity_type, subject_id

Antwoord: 200 · PortalLoginState

POST /api/v1/portal/logins/{entity_type}/{subject_id}/impersonate

Section titled “POST /api/v1/portal/logins/{entity_type}/{subject_id}/impersonate”

Impersonate Portal Login — Sign in as this subject’s portal login, time-boxed and on their own trail (#296).

Recht: portal.login.impersonate

Padparameters: entity_type, subject_id

Request body: PortalImpersonateRequest

Antwoord: 200 · PortalImpersonateResponse

POST /api/v1/portal/logins/{entity_type}/{subject_id}/resend

Section titled “POST /api/v1/portal/logins/{entity_type}/{subject_id}/resend”

Resend Portal Invite

Recht: members.member.write

Padparameters: entity_type, subject_id

Antwoord: 200 · PortalLoginState