Skip to main content

Calendar & Working Times

The calendar endpoints allow you to manage working time calendars, regular working times, days off (e.g. holidays, company shutdowns), and contact-specific non-working times (vacations, parental leave, etc.). This data is used for resource planning and capacity calculation in InLoox.

info

Each contact and each planning element can be assigned to its own calendar. The default calendar is used for all contacts and planning elements without an individual assignment.


Calendar

The Calendar entity represents a working time calendar. Calendars define the regular working times and can be assigned to different contacts.

Data Model

PropertyTypeDescription
CalendarIdguidUnique ID of the calendar.
NamestringName of the calendar.
Importedbool?Whether the calendar was imported.
VisibleInPlanningboolWhether the calendar is visible in planning.
VisibleInContactboolWhether the calendar is visible in the contact view.
SystemTimeZoneIdstringSystem time zone ID. An IANA time zone ID (e.g. "Europe/Berlin", "America/New_York").

Endpoints

CRUD Operations

List all calendars

GET/odata/Calendar

Supports OData query options.


Get a calendar by ID

GET/odata/Calendar({key})
ParameterTypeRequiredDescription
keyguidThe CalendarId.

Create a new calendar

POST/odata/Calendar
ParameterTypeRequiredDescription
BodyDelta<ApiCalendar>JSON object with the calendar properties.

Update a calendar

PATCH/odata/Calendar({key})
ParameterTypeRequiredDescription
keyguidThe CalendarId.
BodyDelta<ApiCalendar>JSON object with the fields to update.

Delete a calendar

DELETE/odata/Calendar({key})
ParameterTypeRequiredDescription
keyguidThe CalendarId.
warning

Deleting a calendar also removes all associated working times and days off. Make sure that no contact or planning element is still assigned to this calendar, as otherwise recalculations will be performed.

Returns 204 No Content on success.


Calendar Functions

Calculate working time between two points in time

POST/Calendar/CalculateWorkBetween

Calculates the effective working time between two points in time, taking the specified calendar into account.

tip

Use this function to determine the actual working time for resource planning and effort calculation. Weekends and holidays are automatically excluded.


Get the calendar time zone or default time zone

GET/odata/Calendar({key})/GetCalendarTimeZoneOrDefault()
ParameterTypeRequiredDescription
keyguidThe CalendarId.

Returns the configured time zone of the calendar. If no specific time zone is set, the default time zone is returned.


WorkingTime

The WorkingTime entity defines the regular working times of a calendar. Each entry represents a working time block (e.g. Monday 08:00–17:00).

Data Model

PropertyTypeDescription
WorkingTimeIdguidUnique ID of the working time.
CalendarIdguidID of the associated calendar.
StartTimeDateTimeOffsetStart of the working time.
EndTimeDateTimeOffsetEnd of the working time.
IsAllDayboolWhether this is an all-day entry.
IsWorkDayboolWhether this is a work day.
OrdinalPositionint?Deprecated.

Endpoints

List all working times of all calendars

GET/odata/WorkingTime

Supports OData query options.


Get a working time by ID

GET/odata/WorkingTime({key})
ParameterTypeRequiredDescription
keyguidThe WorkingTimeId.

Create a new working time

POST/odata/WorkingTime
ParameterTypeRequiredDescription
BodyDelta<ApiWorkingTime>JSON object with the working time properties.

Update a working time

PATCH/odata/WorkingTime({key})
ParameterTypeRequiredDescription
keyguidThe WorkingTimeId.
BodyDelta<ApiWorkingTime>JSON object with the fields to update.

Delete a working time

DELETE/odata/WorkingTime({key})
ParameterTypeRequiredDescription
keyguidThe WorkingTimeId.
warning

Deleting a working time is permanent and cannot be undone.

Returns 204 No Content on success.


WorkingTimeDayOff

The WorkingTimeDayOff entity defines holidays and days off in a calendar. These days are taken into account for capacity calculation and planning.

Data Model

PropertyTypeDescription
WorkingTimeDayOffIdguidUnique ID of the day off.
CalendarIdguidID of the associated calendar.
NamestringLabel (e.g. Christmas, Independence Day).
StartTimeDateTimeOffsetStart of the day off period.
EndTimeDateTimeOffsetEnd of the day off period.
IsGlobalboolWhether the day off applies to all calendars.

Endpoints

List all days off of all calendars

GET/odata/WorkingTimeDayOff

Supports OData query options.


Get a day off by ID

GET/odata/WorkingTimeDayOff({key})
ParameterTypeRequiredDescription
keyguidThe WorkingTimeDayOffId.

Create a new day off

POST/odata/WorkingTimeDayOff
ParameterTypeRequiredDescription
BodyDelta<ApiWorkingTimeDayOff>JSON object with the day off properties.

Update a day off

PATCH/odata/WorkingTimeDayOff({key})
ParameterTypeRequiredDescription
keyguidThe WorkingTimeDayOffId.
BodyDelta<ApiWorkingTimeDayOff>JSON object with the fields to update.

Delete a day off

DELETE/odata/WorkingTimeDayOff({key})
ParameterTypeRequiredDescription
keyguidThe WorkingTimeDayOffId.
warning

Deleting a day off is permanent and cannot be undone.

Returns 204 No Content on success.


ContactNonWorkingTime

The ContactNonWorkingTime entity manages the individual non-working time of a contact (e.g. vacation, sick leave). These times are taken into account for resource planning.

Data Model

PropertyTypeDescription
ContactNonWorkingTimeIdguidUnique ID of the non-working time entry.
ContactIdguidID of the affected contact.
NamestringLabel of the non-working time (e.g. Vacation, Sick Leave).
StartTimeDateTimeOffsetStart of the non-working time.
EndTimeDateTimeOffsetEnd of the non-working time.

Endpoints

List all non-working times of all contacts

GET/odata/ContactNonWorkingTime

Supports OData query options.


Get a non-working time by ID

GET/odata/ContactNonWorkingTime({key})
ParameterTypeRequiredDescription
keyguidThe ContactNonWorkingTimeId.

Create a new non-working time

POST/odata/ContactNonWorkingTime
ParameterTypeRequiredDescription
BodyDelta<ApiContactNonWorkingTime>JSON object with the non-working time properties.

Update a non-working time

PATCH/odata/ContactNonWorkingTime({key})
ParameterTypeRequiredDescription
keyguidThe ContactNonWorkingTimeId.
BodyDelta<ApiContactNonWorkingTime>JSON object with the fields to update.

Delete a non-working time

DELETE/odata/ContactNonWorkingTime({key})
ParameterTypeRequiredDescription
keyguidThe ContactNonWorkingTimeId.
warning

Deleting a non-working time is permanent and cannot be undone.

Returns 204 No Content on success.


Delete all non-working times

POST/odata/ContactNonWorkingTime/DeleteAll

Removes all non-working time entries.

warning

This action deletes all non-working time entries in the system and cannot be undone. Use this endpoint with extreme caution.


OData Query Examples

List calendars

GET /odata/Calendar?$orderby=Name

Create a calendar

POST /odata/Calendar
Content-Type: application/json
{
"Name": "Standard Calendar NRW",
"VisibleInPlanning": true,
"VisibleInContact": true,
"SystemTimeZoneId": "W. Europe Standard Time"
}

Rename a calendar

PATCH /odata/Calendar({key})
Content-Type: application/json
{
"Name": "Calendar Region 3"
}

Calculate working time between two points in time

POST /Calendar/CalculateWorkBetween
Content-Type: application/json
{
"CalendarId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Start": "2025-01-06T08:00:00Z",
"End": "2025-01-10T17:00:00Z"
}

Get working times of a calendar

GET /odata/WorkingTime?$filter=CalendarId eq {calendarId}&$orderby=OrdinalPosition

Create a working time

POST /odata/WorkingTime
Content-Type: application/json
{
"CalendarId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"StartTime": "2025-01-06T08:00:00Z",
"EndTime": "2025-01-06T17:00:00Z",
"IsAllDay": false,
"IsWorkDay": true,
"OrdinalPosition": 1
}

Update a working time

PATCH /odata/WorkingTime({key})
Content-Type: application/json
{
"EndTime": "2025-01-06T16:00:00Z"
}

Get days off of a calendar

GET /odata/WorkingTimeDayOff?$filter=CalendarId eq {calendarId}&$orderby=StartTime

Create a day off

POST /odata/WorkingTimeDayOff
Content-Type: application/json
{
"CalendarId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Name": "Independence Day",
"StartTime": "2025-10-03T00:00:00Z",
"EndTime": "2025-10-03T23:59:59Z",
"IsGlobal": false
}

Rename a day off

PATCH /odata/WorkingTimeDayOff({key})
Content-Type: application/json
{
"Name": "National Holiday"
}

Get non-working times of a contact

GET /odata/ContactNonWorkingTime?$filter=ContactId eq {contactId}&$orderby=StartTime

Create a non-working time

POST /odata/ContactNonWorkingTime
Content-Type: application/json
{
"ContactId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Name": "Vacation",
"StartTime": "2025-08-04T00:00:00Z",
"EndTime": "2025-08-15T23:59:59Z"
}

Extend a non-working time

PATCH /odata/ContactNonWorkingTime({key})
Content-Type: application/json
{
"EndTime": "2025-08-22T23:59:59Z"
}
tip

Use $filter with CalendarId or ContactId to retrieve entries for a specific calendar or contact.