Skip to content

Absences

Valid Attributes

AttributeDescriptionDetails
user_idThe ID of the user to whom the absence belongs.Must be set
absence_type_idThe ID of the absence type of this absence.Must be set
confirmations_countThe number of confirmations that this absence has receivedCannot be set
starts_atThe start date of the absence.Must be set (format: YYYY-MM-DD)
ends_atThe end date of the absence.Must be set; must be >= starts_at
statusThe status of the absence entry.Cannot be set; defaults to created (options: created, confirmed, rejected)

The following relationships can be included in requests:

RelationshipType
absence_typebelongs_to
userbelongs_to

Meta data: Permissions

GroupDescription
actionsIndicates 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_reserve transaction is created for the previous reservation.
  • A new reserve transaction is created reflecting the updated duration.

When changing to an absence type with another quota type:

  • A cancel_reserve transaction is created for the previous quota.
  • A new reserve transaction is created for the new quota.

When changing to an absence type without a quota type:

  • A cancel_reserve transaction is created for the previous quota.

HTTP Request

PUT /api/v1/absences/:absence_id

URL Parameters

ParameterDescription
absence_idID 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

ParameterDescription
absence_idID 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

ParameterDescription
absence_idID 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",
"email": "[email protected]",
"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:

ParameterDescription
absence_range_startStart date of the date range for which to include absences.
absence_range_endEnd 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