Absences
Valid Attributes
| Attribute | Description | Details |
|---|---|---|
| user_id | The ID of the user to whom the absence belongs. | Must be set |
| absence_type_id | The ID of the absence type of this absence. | Must be set |
| confirmations_count | The number of confirmations that this absence has received | Cannot be set |
| starts_at | The start date of the absence. | Must be set (format: YYYY-MM-DD) |
| ends_at | The end date of the absence. | Must be set; must be >= starts_at |
| status | The status of the absence entry. | Cannot be set; defaults to created (options: created, confirmed, rejected) |
The following relationships can be included in requests:
| Relationship | Type |
|---|---|
| absence_type | belongs_to |
| user | belongs_to |
Meta data: Permissions
| Group | Description |
|---|---|
| actions | Indicates whether the user can edit or delete the absence itself, and whether they can create (confirm.create — confirm or reject) or discard (confirm.delete — reset) an absence confirmation |
Create
HTTP Request
POST /api/v1/absences
Example request:
{ "data": { "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "starts_at": "2025-10-02", "ends_at": "2025-10-06" } }}Example response:
{ "data": { "id": "a6e9e2f8-5b4e-4a4b-8c7e-6a5b85a3c2b1", "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "confirmations_count": 0, "starts_at": "2025-10-02", "ends_at": "2025-10-06", "status": "created" } }}This endpoint creates a new absence entry. Additionally, if the absence type is
linked to a quota type, an absence_quota_transaction of type reserve is
created.
Update
Example request:
{ "data": { "type": "absence", "attributes": { "ends_at": "2025-10-10" } }}Example response:
{ "data": { "id": "a6e9e2f8-5b4e-4a4b-8c7e-6a5b85a3c2b1", "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "confirmations_count": 0, "starts_at": "2025-10-02", "ends_at": "2025-10-10", "status": "created" } }}This endpoint updates an absence entry. If the absence type is linked to a quota
type, absence_quota_transactions are created accordingly.
Quota Transaction Behavior on Update
If the absence was previously reserved, the existing reserve transaction is
handled based on the update:
When updating duration (same quota type):
- A
cancel_reservetransaction is created for the previous reservation. - A new
reservetransaction is created reflecting the updated duration.
When changing to an absence type with another quota type:
- A
cancel_reservetransaction is created for the previous quota. - A new
reservetransaction is created for the new quota.
When changing to an absence type without a quota type:
- A
cancel_reservetransaction is created for the previous quota.
HTTP Request
PUT /api/v1/absences/:absence_id
URL Parameters
| Parameter | Description |
|---|---|
| absence_id | ID of the absence to be updated |
Show
Example response:
{ "data": { "id": "a6e9e2f8-5b4e-4a4b-8c7e-6a5b85a3c2b1", "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "confirmations_count": 0, "starts_at": "2025-10-02", "ends_at": "2025-10-06", "status": "created" } }}This endpoint returns an absence entry.
HTTP Request
GET /api/v1/absences/:absence_id
URL Parameters
| Parameter | Description |
|---|---|
| absence_id | ID of the absence to return |
List
Example response:
{ "data": [ { "id": "a6e9e2f8-5b4e-4a4b-8c7e-6a5b85a3c2b1", "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "confirmations_count": 0, "starts_at": "2025-10-02", "ends_at": "2025-10-06", "status": "created" } }, { ... } ]}This endpoint returns absence entries.
HTTP Request
GET /api/v1/absences
Delete
Example response:
{ "data": { "id": "a6e9e2f8-5b4e-4a4b-8c7e-6a5b85a3c2b1", "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "confirmations_count": 0, "starts_at": "2025-10-02", "ends_at": "2025-10-06", "status": "confirmed", "discarded_at": "2025-10-13T11:30:00Z" } }}This endpoint deletes an absence.
HTTP Request
DELETE /api/v1/absences/:absence_id
URL Parameters
| Parameter | Description |
|---|---|
| absence_id | ID of the absence to delete |
List Absences Alongside the Associated Users
Example response:
{ "data": [ { "id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "type": "user", "attributes": { "avatar": "avatar/a376ad73-665f-455c-87ef-db2d69bc8aac.png", "name": "Tatjana Schubert", "status": "active" } }, ... ] "included": [ { "id": "a6e9e2f8-5b4e-4a4b-8c7e-6a5b85a3c2b1", "type": "absence", "attributes": { "user_id": "9f8d7c6b-5a4e-3d2c-1b0a-9e8f7d6c5b4a", "absence_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "confirmations_count": 0, "starts_at": "2025-12-24", "ends_at": "2026-01-05", "status": "created" } }, { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "absence_type", "attributes": { "account_id": "63c0885f-777a-4a6c-bf95-4aa388f877e7", "active": true, "discarded_at": null, "name": "Vacation", "quota_type_id": null, "required_confirmation_count": 2, } }, ... ]}This endpoint returns users including all their absences that lie (at least partially) in a certain date range, sorted by the users’ names.
Absences (and their linked absence types) are included by default, so there is
no need to specify ?include=absences or ?include=absences.absence_types.
To use the endpoint, the requesting user needs permission to read absence types. Additionally, only users are being returned for whom the requesting user has the rights to both read the user and to read the absences of that user.
This endpoint uses keyset-based pagination - refer to our pagination documentation for more details.
HTTP Request
GET /api/v1/user_absences
Query Parameters
The following query parameters are mandatory:
| Parameter | Description |
|---|---|
| absence_range_start | Start date of the date range for which to include absences. |
| absence_range_end | End date (inclusive) of the date range for which to include absences. |
Example:
GET /api/v1/user_absences?absence_range_start=2026-01-01&absence_range_end=2026-01-07