Absences

Absences in smenso represent periods during which a user is not available for work, such as vacation, sick leave, public holidays, or other types of time off. Absences are always assigned to a specific user and follow clearly defined validation and approval rules to ensure accurate capacity and availability planning across the workspace.

Absences are visible in workload views, timesheets, and people's details. They directly influence scheduling and capacity calculations and therefore play an important role in project and portfolio planning.


Available Endpoints

Integration JSON API

ActionMethodEndpoint
Get all absencesGET/api/integration/absence/json
Create absencesPOST/api/integration/absence/json
Update absencesPUT/api/integration/absence/json
Delete absenceDELETE/api/integration/absence/json/{id}

Integration XML API

ActionMethodEndpoint
Create/update absencesPOST/api/integration/absence
Delete absenceDELETE/api/integration/absence/{id}

Reporting API

ActionMethodEndpoint
Get all absences (CSV)GETReporting endpoint
Get all absences (CSV, advanced filters)POSTReporting endpoint
Get absences (Excel)GETReporting endpoint
Get absences (Excel, advanced filters)POSTReporting endpoint

Related Endpoints (Settings)

ActionMethodEndpoint
Get absence typesGETSettings → Absence types
Create absence typesPOSTSettings → Absence types
Update absence typesPUTSettings → Absence types
Delete absence typeDELETESettings → Absence types

Key Fields

FieldTypeRequiredDescription
userIdstringUser ID or email of the user this absence belongs to
absenceTypeIdstringAbsence type ID or name (e.g. "Vacation")
startDatedate-timeThe date the absence begins
endDatedate-timeThe date the absence ends (must be ≥ startDate)
statusstringsubmitted, approved, rejected – only relevant for types that require approval
commentstringOptional comment
startDateMinutesnumberMinutes on the start day. Defaults to the user's configured daily capacity.
endDateMinutesnumberMinutes on the end day. Defaults to the user's configured daily capacity.
lockedbooleanWhether the absence is locked for editing
tempIdstringTemporary ID to correlate batch results
externalIdstringExternal system reference
📘

If startDateMinutes or endDateMinutes exceed the user's daily capacity, smenso automatically caps them.


Example: Create an Absence

POST /api/integration/absence/json
Content-Type: application/json
Authorization: Bearer {token}
{
  "timezoneId": "W. Europe Standard Time",
  "absence": [
    {
      "userId": "[email protected]",
      "absenceTypeId": "Vacation",
      "startDate": "2025-07-14",
      "endDate": "2025-07-18",
      "comment": "Summer vacation"
    }
  ]
}

Response:

{
  "ticketId": "a1b2c3d4-..."
}

Poll the ticket to confirm the absence was created:

GET /api/integration/status/json/{ticketId}

Partial-day absence

To create a half-day absence (e.g. afternoon off), specify the minutes:

{
  "timezoneId": "W. Europe Standard Time",
  "absence": [
    {
      "userId": "[email protected]",
      "absenceTypeId": "Vacation",
      "startDate": "2025-08-01",
      "endDate": "2025-08-01",
      "startDateMinutes": 240,
      "endDateMinutes": 240,
      "comment": "Afternoon off"
    }
  ]
}

Absence Types

Every absence is assigned to an absence type. Absence types are configured at the workspace level and define how categories of absences are interpreted and validated.

PropertyDescription
Limited vs. UnlimitedLimited types include a contingent (e.g. 30 vacation days/year). Unlimited types have no predefined limit.
Approval requiredSome types require approval. One or more approvers can be assigned.
Display propertiesLabels, icons, and colors can be configured by workspace administrators.

You can retrieve absence types programmatically via Get absence types, or find the absenceTypeId in the UI under Settings > Absence types.

Absence type ID in UI

Holiday Calendars

smenso supports multiple holiday calendars to reflect different regional or national holiday structures:

  • Calendars can be generated automatically or maintained manually.
  • Holidays and events may span one or several days.
  • Holiday calendars can be assigned to specific users.

Assigned calendars automatically influence absence calculations and user capacity. Public holidays are considered based on the user's configured calendar – no manual handling is needed in API requests.


Member Settings Impact

Each member has individual settings that directly affect absence handling:

SettingEffect
Working hoursDaily capacity in minutes/hours per day. If an absence doesn't provide explicit startDateMinutes/endDateMinutes, smenso uses these values.
Assigned holiday calendarDetermines which holidays apply and how workload is calculated.
Personal absence contingentsFor limited absence types: individual allowance (e.g. annual vacation days). Used for validation and reporting.

These settings ensure that absence calculations reflect real organizational rules and local working conditions.


Validation Rules

Absences must comply with strict consistency rules. Violations will cause the operation to fail.

No overlapping absences

Absences for the same user must not overlap in time. When multiple absences are submitted in a single batch request, validation happens after all operations are applied.

Holiday handling

Public holidays are considered automatically based on the user's configured holiday calendar. No manual timezone or offset adjustments are required.

Approval logic

Types that require approval:

  • The absence enters the submitted state by default (unless another valid status is provided).
  • When an approved absence is updated, it returns to submitted unless another valid status is explicitly set.

Types without approval:

  • The status field is ignored. Any value supplied will be disregarded.

Date & working time rules

  • Start date must be earlier than or equal to the end date.
  • If startDateMinutes/endDateMinutes are omitted, the user's daily capacity is applied.
  • If explicitly provided minutes exceed capacity, smenso automatically caps them.

User scope

Absences always belong to a user, not a project.


Time Zones

Absences follow smenso's unified timezone behavior:

  • Provide the timezoneId in the request (e.g. "W. Europe Standard Time").
  • Do not include manual offsets like +01:00 or +02:00.
  • If no offset is supplied, smenso determines the correct one automatically.
  • Daylight saving time is handled internally.

This behavior is consistent across UI, JSON API, XML API, and Reporting API. See Dates & Time zones for details.


Permissions

Absence permissions follow smenso's global rules:

  • Users may edit their own absences if their role allows it.
  • Managers or administrators may edit absences of other users depending on workspace configuration.
  • API operations inherit the permissions of the user who owns the API token.

If a user cannot perform an action in the UI, the API will not allow it either.


Further Reading