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
keyguid✅The 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
keyguid✅The CalendarId.
BodyDelta<ApiCalendar>✅JSON object with the fields to update.

Delete a calendar

DELETE/odata/Calendar({key})
ParameterTypeRequiredDescription
keyguid✅The 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
keyguid✅The 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
keyguid✅The 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
keyguid✅The WorkingTimeId.
BodyDelta<ApiWorkingTime>✅JSON object with the fields to update.

Delete a working time

DELETE/odata/WorkingTime({key})
ParameterTypeRequiredDescription
keyguid✅The 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
keyguid✅The 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
keyguid✅The WorkingTimeDayOffId.
BodyDelta<ApiWorkingTimeDayOff>✅JSON object with the fields to update.

Delete a day off

DELETE/odata/WorkingTimeDayOff({key})
ParameterTypeRequiredDescription
keyguid✅The 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
keyguid✅The 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
keyguid✅The ContactNonWorkingTimeId.
BodyDelta<ApiContactNonWorkingTime>✅JSON object with the fields to update.

Delete a non-working time

DELETE/odata/ContactNonWorkingTime({key})
ParameterTypeRequiredDescription
keyguid✅The 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.