Zum Inhalt springen

Absences

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

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

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.

Note: Overlapping absences for the same absence_type and user are not allowed.

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.

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.

PUT /api/v1/absences/:absence_id

Parameter Description
absence_id ID of the absence to be updated

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.

GET /api/v1/absences/:absence_id

Parameter Description
absence_id ID of the absence to return

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.

GET /api/v1/absences

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.

DELETE /api/v1/absences/:absence_id

Parameter Description
absence_id ID of the absence to delete

List Absences Alongside the Associated Users

Section titled “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.

GET /api/v1/user_absences

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