APIs deprecated

Calendar features are exposed to clients via different APIs, most prominently our HTTP API.

HTTP API

The new calendar implementation comes with a whole new module in the HTTP API: chronos. However, the previous API (module calendar) is still available for legacy clients like OX6 or USM. Internally, calls to the "old" module are converted appropriately, then routed to the new services, and the results are converted back to the previous format. In particular, the following parts of the HTTP API are affected by the new calendar implementation:

Legacy module calendar

All actions in the calendar module will continue to work in v7.10.0, however, the functionality is limited to the previous data model. For example, only one reminder can be accessed using the legacy API, and no calendars from external calendar sources are available. Therefore, the whole calendar module in the HTTP API should be considered as deprecated with the new release.

New module chronos

To interact with the new calendar using the new data model, a new JSON module named chronos has been introduced. See the API documentation for details.

Attachments & Reminder

The functionality to work with attachments and reminders has been integrated into the module chronos (see the new API documentation for details).

For legacy clients, the previous requests in the modules attachments and reminder are still in place, however, possibly with a reduced functionality, especially towards the handling of alarms. So, all appointment-related functionality within the attachments and reminder module is deprecated with v7.10.0.

Folders

For the folders module, a new content type has been introduced in order to provide backwards-compatibility on the one hand, and support for the newly introduced provider/account architecture on the other hand. Doing so, any existing requests to the API will return the same responses as before (i.e. list the same folders with the same identifiers). All "new" folders will be returned when requesting folders of the content type event, which includes both the previously used calendar groupware folders, as well as calendar folders representing external accounts. Differentiation is performed based on composite identifiers, which carry the information about the underlying calendar account.

The calendar folders are now driven by a dedicated folder storage, and there's no folder hierarchy anymore, i.e. there are no subfolders.

Import/Export

Calendar-related actions in the import/export module of the HTTP API will continue to work transparently. For the import action, the returned folder identifiers in the responses will be the ones suitable for the targeted folder (i.e. composite identifiers when importing into a folder with content type event, and relative numerical identifiers when importing to the previously used folders).

iTIP

The functionality to process incoming iTIP-messages in the new data model is exposed via the newly introduced module chronos/itip. See the new API documentation for details.

The previous endpoint for legacy clients is still available (module calendar/itip), with appropriate conversion routines for the new stack.

Find

The calendar-related functionality provided within the find module has been re-implemented using the new calendar stack. The format of the resulting documents has been adjusted to be compatible with the new data model, so that "event" results are returned now in favor of the previous "appointment" modules.

Internal SPIs

Within the middleware, new services have been established for the calendaring and scheduling domain, while old ones have been removed.

ICalService

For common conversion routines to and from the iCalendar format, the singleton service com.openexchange.chronos.ical.ICalService is available, providing support for VEVENT, VFREEBUSY, VTIMEZONE and VAVAILABILITY components. The previously used com.openexchange.data.conversion.ical.ICalEmitter and com.openexchange.data.conversion.ical.ICalParser are still available for VTODO <-> Task conversions.

CalendarService

The central com.openexchange.chronos.service.CalendarService provides access to all calendar-related functionality for the internal calendar account. The service is always accessed with an initialized calendar session for the acting user. The previously used AppointmentSQLInterface is no longer available.

IDBasedCalendarAccess

The com.openexchange.chronos.provider.composition.IDBasedCalendarAccess interface serves as single entry point for all read-, write- and delete-operations from the client's point of view, offering the same interface independently of the underlying calendar implementation. It acts as broker and routes requests to the targeted calendar provider. Calendar access can be initialized using the com.openexchange.chronos.provider.composition.IDBasedCalendarAccessFactory service.

CalendarProvider and CalendarAccess

Concrete calendar services need to supply and register an implementation of the com.openexchange.chronos.provider.CalendarProvider service, providing the infrastructure to create, update and delete calendar accounts. Access to an account's calendar data is provided through the com.openexchange.chronos.provider.CalendarAccess interface, which is initialized via the corresponding provider.