Skip to main content

Calendar & Working Time

The Calendar API provides endpoints for managing calendars, working time definitions, days off, and individual contact non-working time entries. These entities work together to support effort-based scheduling and resource planning within InLoox.

note

WorkingTimeDayOff represents calendar-level holidays and company-wide days off that apply to an entire calendar (e.g., public holidays, office closures). ContactNonWorkingTime represents individual absences tied to a specific contact (e.g., vacation, sick leave, parental leave). Use both in combination for accurate availability calculations.


Calendar

A calendar defines the working schedule used for project planning and resource management. Each calendar can have its own time zone and visibility settings.

Data Model

PropertyTypeDescription
CalendarIdguidUnique identifier for the calendar.
NamestringCalendar display name.
ImportedboolWhether the calendar was imported.
VisibleInPlanningboolShow in project planning views.
VisibleInContactboolShow in contact views.
SystemTimeZoneIdstringSystem time zone identifier (e.g., "Europe/Berlin").

Endpoints

CRUD Operations

GET/odata/Calendar

List all calendars.

Supports OData query options such as $filter, $select, $orderby, and $top.


GET/odata/Calendar/$count

Return the total number of calendars.


GET/odata/Calendar({key})

Get a single calendar by its ID.

ParameterTypeRequiredDescription
keyguidThe unique calendar ID.

POST/odata/Calendar

Create a new calendar.

{
"Name": "Company Calendar",
"VisibleInPlanning": true,
"VisibleInContact": true,
"SystemTimeZoneId": "W. Europe Standard Time"
}

PATCH/odata/Calendar({key})

Update an existing calendar.

ParameterTypeRequiredDescription
keyguidThe unique calendar ID.

Send only the properties you want to change.

{
"Name": "Updated Calendar Name"
}

DELETE/odata/Calendar({key})

Delete a calendar.

ParameterTypeRequiredDescription
keyguidThe unique calendar ID.
warning

Deleting a calendar also removes all associated working times and days off. This action is permanent.


Actions & Functions

POST/Calendar/CalculateWorkBetween

Calculate the total working time between two dates.

tip

The CalculateWorkBetween endpoint is useful for computing effort-based scheduling. It accounts for working hours and days off.

{
"CalendarId": "00000000-0000-0000-0000-000000000000",
"StartDate": "2024-01-01T08:00:00Z",
"EndDate": "2024-01-31T17:00:00Z"
}

GET/odata/Calendar/GetCalendarTimeZoneOrDefault()

Get the calendar time zone or fall back to the server default.

Returns the time zone configured for the calendar. If no time zone is set, the server default time zone is returned.


WorkingTime

Working time entries define the daily working periods within a calendar. Each entry specifies a time range and whether it counts as a working day.

Data Model

PropertyTypeDescription
WorkingTimeIdguidUnique identifier for the working time entry.
CalendarIdguidParent calendar this entry belongs to.
StartTimeDateTimeOffsetStart of the working period.
EndTimeDateTimeOffsetEnd of the working period.
IsAllDayboolWhether this entry covers the full day.
IsWorkDayboolTrue for working days, false for non-working days.
OrdinalPositionint32Position used for ordering entries.

Endpoints

GET/odata/WorkingTime

List all working time entries.


GET/odata/WorkingTime/$count

Return the total number of working time entries.


GET/odata/WorkingTime({key})

Get a single working time entry.

ParameterTypeRequiredDescription
keyguidThe unique working time ID.

POST/odata/WorkingTime

Create a new working time entry.

{
"CalendarId": "00000000-0000-0000-0000-000000000000",
"StartTime": "2024-01-01T08:00:00Z",
"EndTime": "2024-01-01T17:00:00Z",
"IsAllDay": false,
"IsWorkDay": true,
"OrdinalPosition": 1
}

PATCH/odata/WorkingTime({key})

Update an existing working time entry.

ParameterTypeRequiredDescription
keyguidThe unique working time ID.

Send only the properties you want to change.


DELETE/odata/WorkingTime({key})

Delete a working time entry.

ParameterTypeRequiredDescription
keyguidThe unique working time ID.

WorkingTimeDayOff

Days off represent calendar-level holidays and non-working days that apply to all users associated with a given calendar.

Data Model

PropertyTypeDescription
WorkingTimeDayOffIdguidUnique identifier for the day off entry.
CalendarIdguidParent calendar this day off belongs to.
NamestringHoliday or day off name (e.g., "Christmas Day").
StartTimeDateTimeOffsetStart of the day off period.
EndTimeDateTimeOffsetEnd of the day off period.
IsGlobalboolWhether this day off applies to all users.

Endpoints

GET/odata/WorkingTimeDayOff

List all days off.


GET/odata/WorkingTimeDayOff/$count

Return the total number of day off entries.


GET/odata/WorkingTimeDayOff({key})

Get a single day off entry.

ParameterTypeRequiredDescription
keyguidThe unique day off ID.

POST/odata/WorkingTimeDayOff

Create a new day off entry.

{
"CalendarId": "00000000-0000-0000-0000-000000000000",
"Name": "New Year's Day",
"StartTime": "2024-01-01T00:00:00Z",
"EndTime": "2024-01-01T23:59:59Z",
"IsGlobal": true
}

PATCH/odata/WorkingTimeDayOff({key})

Update an existing day off entry.

ParameterTypeRequiredDescription
keyguidThe unique day off ID.

Send only the properties you want to change.


DELETE/odata/WorkingTimeDayOff({key})

Delete a day off entry.

ParameterTypeRequiredDescription
keyguidThe unique day off ID.

ContactNonWorkingTime

Contact non-working time entries track individual absences such as vacation, sick leave, or other personal time off. These are tied to a specific contact rather than a calendar.

Data Model

PropertyTypeDescription
ContactNonWorkingTimeIdguidUnique identifier for the non-working time entry.
ContactIdguidThe contact this absence belongs to.
NamestringReason or label for the absence (e.g., "Vacation", "Sick Leave").
StartTimeDateTimeOffsetStart of the non-working period.
EndTimeDateTimeOffsetEnd of the non-working period.

Endpoints

CRUD Operations

GET/odata/ContactNonWorkingTime

List all contact non-working time entries.


GET/odata/ContactNonWorkingTime/$count

Return the total number of contact non-working time entries.


GET/odata/ContactNonWorkingTime({key})

Get a single non-working time entry.

ParameterTypeRequiredDescription
keyguidThe unique non-working time ID.

POST/odata/ContactNonWorkingTime

Create a new non-working time entry.

{
"ContactId": "00000000-0000-0000-0000-000000000000",
"Name": "Vacation",
"StartTime": "2024-07-15T00:00:00Z",
"EndTime": "2024-07-26T23:59:59Z"
}

PATCH/odata/ContactNonWorkingTime({key})

Update an existing non-working time entry.

ParameterTypeRequiredDescription
keyguidThe unique non-working time ID.

Send only the properties you want to change.


DELETE/odata/ContactNonWorkingTime({key})

Delete a non-working time entry.

ParameterTypeRequiredDescription
keyguidThe unique non-working time ID.

Actions

POST/odata/ContactNonWorkingTime/DeleteAll

Delete all non-working time entries for a specific contact.

{
"ContactId": "00000000-0000-0000-0000-000000000000"
}
warning

This action permanently removes all non-working time entries for the specified contact. Use with caution.