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.
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
| Property | Type | Description |
|---|---|---|
CalendarId | guid | Unique identifier for the calendar. |
Name | string | Calendar display name. |
Imported | bool | Whether the calendar was imported. |
VisibleInPlanning | bool | Show in project planning views. |
VisibleInContact | bool | Show in contact views. |
SystemTimeZoneId | string | System time zone identifier (e.g., "Europe/Berlin"). |
Endpoints
CRUD Operations
/odata/CalendarList all calendars.
Supports OData query options such as $filter, $select, $orderby, and $top.
/odata/Calendar/$countReturn the total number of calendars.
/odata/Calendar({key})Get a single calendar by its ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique calendar ID. |
/odata/CalendarCreate a new calendar.
{
"Name": "Company Calendar",
"VisibleInPlanning": true,
"VisibleInContact": true,
"SystemTimeZoneId": "W. Europe Standard Time"
}
/odata/Calendar({key})Update an existing calendar.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique calendar ID. |
Send only the properties you want to change.
{
"Name": "Updated Calendar Name"
}
/odata/Calendar({key})Delete a calendar.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique calendar ID. |
Deleting a calendar also removes all associated working times and days off. This action is permanent.
Actions & Functions
/Calendar/CalculateWorkBetweenCalculate the total working time between two dates.
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"
}
/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
| Property | Type | Description |
|---|---|---|
WorkingTimeId | guid | Unique identifier for the working time entry. |
CalendarId | guid | Parent calendar this entry belongs to. |
StartTime | DateTimeOffset | Start of the working period. |
EndTime | DateTimeOffset | End of the working period. |
IsAllDay | bool | Whether this entry covers the full day. |
IsWorkDay | bool | True for working days, false for non-working days. |
OrdinalPosition | int32 | Position used for ordering entries. |
Endpoints
/odata/WorkingTimeList all working time entries.
/odata/WorkingTime/$countReturn the total number of working time entries.
/odata/WorkingTime({key})Get a single working time entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique working time ID. |
/odata/WorkingTimeCreate 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
}
/odata/WorkingTime({key})Update an existing working time entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique working time ID. |
Send only the properties you want to change.
/odata/WorkingTime({key})Delete a working time entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The 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
| Property | Type | Description |
|---|---|---|
WorkingTimeDayOffId | guid | Unique identifier for the day off entry. |
CalendarId | guid | Parent calendar this day off belongs to. |
Name | string | Holiday or day off name (e.g., "Christmas Day"). |
StartTime | DateTimeOffset | Start of the day off period. |
EndTime | DateTimeOffset | End of the day off period. |
IsGlobal | bool | Whether this day off applies to all users. |
Endpoints
/odata/WorkingTimeDayOffList all days off.
/odata/WorkingTimeDayOff/$countReturn the total number of day off entries.
/odata/WorkingTimeDayOff({key})Get a single day off entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique day off ID. |
/odata/WorkingTimeDayOffCreate 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
}
/odata/WorkingTimeDayOff({key})Update an existing day off entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique day off ID. |
Send only the properties you want to change.
/odata/WorkingTimeDayOff({key})Delete a day off entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The 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
| Property | Type | Description |
|---|---|---|
ContactNonWorkingTimeId | guid | Unique identifier for the non-working time entry. |
ContactId | guid | The contact this absence belongs to. |
Name | string | Reason or label for the absence (e.g., "Vacation", "Sick Leave"). |
StartTime | DateTimeOffset | Start of the non-working period. |
EndTime | DateTimeOffset | End of the non-working period. |
Endpoints
CRUD Operations
/odata/ContactNonWorkingTimeList all contact non-working time entries.
/odata/ContactNonWorkingTime/$countReturn the total number of contact non-working time entries.
/odata/ContactNonWorkingTime({key})Get a single non-working time entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique non-working time ID. |
/odata/ContactNonWorkingTimeCreate 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"
}
/odata/ContactNonWorkingTime({key})Update an existing non-working time entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique non-working time ID. |
Send only the properties you want to change.
/odata/ContactNonWorkingTime({key})Delete a non-working time entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | guid | ✅ | The unique non-working time ID. |
Actions
/odata/ContactNonWorkingTime/DeleteAllDelete all non-working time entries for a specific contact.
{
"ContactId": "00000000-0000-0000-0000-000000000000"
}
This action permanently removes all non-working time entries for the specified contact. Use with caution.