OpenPaaS Documentation logo OpenPaaS Documentation

Table of contents

Overview

OpenPaaS users can book physical resources from the Calendar module: Meeting room, car, projector or any other resource people might schedule a time to use. This chapter describes the steps used to implement resource support in the calendar module.

Note: Resource is a general concept provided and managed in the linagora.esn.resource module.

Requirements

Creating a calendar resource

Until a page is provided to create resources, they can be created from the resource REST API:

Request

POST /linagora.esn.resource/api/resources

{
  name: 'Meeting Room 1'
  description: 'The big meeting room at the first floor',
  type: 'calendar'
}

Response

HTTP 201 - Created

{
    "__v": 0,
    "_id": "59cba12b35cb3e03c3148dac",
    "name": "Meeting Room 1",
    "description": "The big meeting room at the first floor",
    "type": "calendar",
    "creator": "599da2a9b7cd7d161eaad48d",
    "domain": "599da2a5b7cd7d161eaad487",
    "timestamps": {
        "creation": "2017-09-27T13:01:31.732Z"
    }
}

Where:

The calendar module will then create the related resource calendar like this:

  1. Once a resource is created, it is published on the resource:created local topic.
  2. The calendar module listens to the resource:created topic. If the resource received has a valid type value (calendar), it creates a new calendar for the resource by calling the CalDAV server
  3. Calendar is available in the CalDAV server under the /resources/${_id}/calendars/events.json path.

Booking a resource from an event

For now, in oder to book a resource, it has to be added as attendee to an event as other users. From the UI point of view, this is exactly the same as adding any other user to the event: Searching for the resource in the attendee search field and add it by clicking on the suggestion.

On the ICS point of view, a resource is translated as an attendee with specific values:

ATTENDEE;CN="Meeting Room 1";CUTYPE=RESOURCE;PARTSTAT=ACCEPTED;MAILTO:id@openpaas-domain.org

Where

When the CalDAV backend will receive the event ICS, it will extract attendees, and for the ones with CUTYPE=RESOURCE, it will retrieve the resource calendar from the mailtolocal-part, then create the event.