Published

CalConnect Specification

CC/S 0507:2005
CalDav Use Cases
TC CALDAV
Bernard DesruisseauxEditor
Oracle
CalConnect Specification




Foreword

This document is one in a series of use case documents that the Calendaring and Scheduling Consortium is developing to help better define the needs of different calendaring and scheduling user groups. As such, this document provides a list of use cases for a calendar access protocol only. Other use case documents will cover different areas of calendaring and scheduling, and will be made available by the Consortium in the usual manner.

While this list of use cases was developed to assist in the development of the CalDAV protocol, none of the use cases are specific to CalDAV, that is, this list of use cases should apply to any calendar access protocol. It is expected that this document will be used as a basis to further develop technical requirements for a calendar access protocol such as CalDAV.


Introduction

This document provides a list of use cases that the members of the Calendaring and Scheduling Consortium believe should be covered by a calendar access protocol. While this list of use cases was developed to assist in the development of the CalDAV protocol, none of the use cases are specific to CalDAV, that is, this list of use cases should apply to any calendar access protocol. It is expected that this document will be used as a basis to further develop technical requirements for a calendar access protocol such as CalDAV.

All the use cases involves any of the following actors:

  • Attendee: a user who is invited to a given calendar object;

  • Organizer: a user that act as the organizer of a given calendar object.

  • User: a user accessing or managing a calendar store;

Unless stated otherwise, the actor in any use case could also be a user authorized to work on behalf of the actor specified in each use case.

NOTE  The use cases only covers functionality related to events and tasks, that is, there are no use cases related to journal entries.

CalDav Use Cases

1.  Terms and definitions

For the purposes of this document, the following terms and definitions apply.

1.1. Access Control List

Set of all privileges granted or denied to any “security principal” on a given “calendar” or “calendar object”;

1.2. Calendar

Container of “calendar objects”;

1.3. Calendar object

Resource defining calendar components such as events and tasks;

1.4. Security principal

An actor or a group of actors that initiates calendar operations. Security principals may either be: (a) authenticated users, (b) unauthenticated users, © specific users, or (d) specific groups of security principals.

2.  Calendar Access

2.1.  Create calendar object

2.1.1.

A user wants to create a new event/task in a given calendar.

2.1.2.

A user wants to mark a period of time as busy in a given calendar.

2.2.  Modify calendar object

2.2.1.

A user wants to create/delete one or multiple instances of an existing calendar object.

2.2.2.

A user wants to add/modify/delete information (e.g., summary, location, start time, status, access classification, list of attendees, participation status, attachment, etc.) for one or multiple instances of an existing calendar object.

2.2.3.

A user wants to create/delete an alarm for one or multiple instances of an existing calendar object.

2.2.4.

A user wants to modify the information (e.g., reminder lead time, etc.) of the alarms of one or multiple instances of an existing calendar object.

2.2.5.

A user wants to create/modify/delete an alarm on a calendar object, on which he has at least read access, in a way that the alarm will only apply to him, will only be visible to him and can only be modified or deleted by him (or deleted by the system if the associated calendar object has been deleted).

2.2.6.

A user wants to mark a calendar object, on which he has at least read access, to specify that it should impact his free busy time info.

2.3.  Delete calendar object

2.3.1.

A user wants to mark for deletion one or multiple instances of an existing event/task in a way that the information for the marked instances will be preserved.

2.3.2.

A user wants to unmark one or multiple instances of an existing event/task that are marked for deletion.

2.3.3.

A user wants to delete a calendar object.

2.3.4.

A user wants to delete one or multiple calendar objects based on search criteria (e.g., all events that occurred more than six months ago).

2.3.5.

A user wants to delete (permanently remove) all the calendar objects marked for deletion in his calendar.

2.4.  Query calendar object

2.4.1.

A user wants to find all the events or tasks in a given calendar.

2.4.2.

A user wants to find all the events in a given calendar that have an instance scheduled to overlap a given time period (e.g., a day, a week, a month, etc.).

2.4.3.

A user wants to find all the tasks in a given calendar that have an instance with a start date or due date included in a given time period (e.g., a day, a week, a month, etc.).

2.4.4.

A user wants to find all the tasks in a given calendar that have a pasted due date and that are not completed.

2.4.5.

A user wants to find all the events/tasks in a given calendar that have an instance with an alarm scheduled to trigger during a given time period (e.g., later today).

2.4.6.

A user wants to find all the events in a given calendar for which a particular user is the organizer.

2.4.7.

A user wants to find all the events in a given calendar for which he needs to respond to confirm his participation status.

2.4.8.

A user wants to find all the events in a given calendar for which a specific user was an attendee.

2.4.9.

A user wants to find all the events in a given calendar for which there are attendees that have not yet confirmed their participation status.

2.4.10.

A user wants to find all the events in a given calendar for which the summary or description or location contains a given sub-string (e.g., “Project ABC”).

2.4.11.

A user wants to find all the events/tasks in a given calendar that have a specific category.

2.5.  Synchronization

2.5.1.

A user wants to synchronize in an efficient matter the calendar objects in the cache of his calendar client application with the calendar objects currently stored in his calendar on the calendar server.

2.5.2.

A user wants to synchronize in an efficient matter the calendar objects, scheduled to overlap a given time period, in the cache of his calendar client application with the calendar objects currently stored in his calendar on the calendar server.

2.6.  Import/Export

2.6.1.

A user wants to import an entire calendar, or series of calendars, from another system.

2.6.2.

A user wants to export an entire calendar, or series of calendars, to another system.

2.6.3.

A user wants to export calendar objects that meet a certain set of restrictions (e.g., calendar objects with the category “Business”) from a calendar to another system.

3.  Calendar Management

3.1.  Create calendar

3.1.1.

A user wants to create a calendar.

3.2.  Modify calendar

3.2.1.

A user wants to rename a calendar.

3.2.2.

A user wants to modify the description of a calendar.

3.3.  Delete calendar

3.3.1.

A user wants to delete a calendar.

3.4.  Find calendar

3.4.1.

A user would like to find the calendars of other users that may be visible to him.

3.4.2.

A user would like to find the calendars, of a given user, that may be visible to him.

3.5.  Copy and Move calendar

3.5.1.

A user would like to copy / move an entire calendar in a different location in a hierarchy.

3.6.  Copy and Move calendar objects between calendar

3.6.1.

A user wants to copy / move one or more calendar objects from one calendar to another calendar.

4.  Scheduling

4.1.  Event and Task

4.1.1.

A user wants to submit an event / task announcement to one or more users.

4.1.2.

An organizer wants to invite one or multiple users to an event.

4.1.3.

An organizer wants to assign a task to one or more users.

4.1.4.

An attendee wants to respond to an event invitation / task assignment.

4.1.5.

An organizer wants to reschedule an existing event / task.

4.1.6.

An attendee of an existing event / task wants to request an updated description of the event / task from the organizer.

4.1.7.

An organizer wants to respond to the request of an attendee to get an updated description of an event / task.

4.1.8.

An organizer wants to change the organizer for an existing event / task.

4.1.9.

An organizer wants to update the status of attendees of an existing event / task, without rescheduling it.

4.1.10.

An organizer wants to update the details of an existing event / task, without rescheduling it.

4.1.11.

An organizer wants to reconfirm an existing event / task, without rescheduling it.

4.1.12.

An organizer wants to request an updated status from one or more attendees of an event / task.

4.1.13.

A user wants to delegate / re-assign an existing event / task to another user.

4.1.14.

A user wants to respond to an event / task delegation request.

4.1.15.

A user wants to forward an event / task to another uninvited user.

4.1.16.

An organizer wants to add one or more instances to an existing event / task.

4.1.17.

An organizer wants to send a cancellation notice for one or more instances of an existing event / task.

4.1.18.

An attendee of an existing event / task wants to send a counter proposal to the event / task description (e.g., different start time) to the organizer.

4.1.19.

An organizer of an existing event / task wants to reject a counter proposal submitted by an attendee.

4.2.  Free/Busy

4.2.1.

A user wants to send busy time data to one or more users.

4.2.2.

A user wants to ask one or more users their busy time information (for a specific date and time interval or not).

4.2.3.

A user wants to respond to a busy time request of another user.

5.  Access Control

5.1.  Access control for calendars

5.1.1.

A user wants to grant/deny to security principals the right to create/read/modify/delete calendars on his behalf.

EDITORIAL NOTE

read and modify operations on calendars are limited to attributes of the calendars themselves such as their name, description, creation date, etc.

5.1.2.

A user wants to know which security principals are granted/denied the right to create/read/modify/delete calendars on his behalf.

5.1.3.

A user wants to know whether he is granted/denied the right to create/read/modify/delete a given calendar.

5.1.4.

A user wants to know whether a given user is granted/denied the right to create/read/modify/delete one of his calendar.

5.1.5.

A user wants to grant/deny to security principals the right to read/modify the access control lists of his calendars.

5.1.6.

A user wants to know which security principals are granted/denied the right to read/modify the access control lists of his calendars.

5.1.7.

A user wants to know whether he is granted/denied the right to read/modify the access control list of a given calendar.

5.1.8.

A user wants to know the set of privileges that applies to him on a given calendar.

5.2.  Access control for calendar objects

5.2.1.

A user wants to grant/deny to security principals the right to create new events / tasks that meets a certain set of restrictions (e.g., events / tasks that are classified as confidential) in his calendar.

5.2.2.

A user wants to know which security principals are granted/denied the right to create new events / tasks that meet a certain set of restrictions (e.g., events / tasks that are classified as confidential) in his calendar.

5.2.3.

A user wants to know whether he is granted/denied the right to create new events / tasks that meet a certain set of restrictions (e.g., events / tasks that are classified as confidential) in a given calendar.

5.2.4.

A user wants to know whether a given user is granted/denied the right to create new events / tasks that meet a certain set of restrictions (e.g., events / tasks that are classified as confidential) in a given calendar.

5.2.5.

A user wants to grant/deny to the right to read/modify/delete a subset (or all) of his events / tasks (e.g., events / tasks classified as private) in his calendar.

5.2.6.

A user wants to know which security principals are granted/denied the right to read/modify/delete a subset (or all) of his events / tasks (e.g., events / tasks classified as private) in his calendar.

5.2.7.

A user wants to know whether he is granted/denied the right to read/modify/delete a subset (or all) of his events / tasks (e.g., events / tasks classified as private) in a given calendar.

5.2.8.

A user wants to know whether a given user is granted/denied the right to read/modify/delete a subset (or all) of his events / tasks (e.g., events / tasks classified as private) in a given calendar.

5.2.9.

A user wants to grant/deny to security principals the right to obtain free/busy information derived from a specific subset (or all) of the events (e.g., events classified as public) in a given calendar.

5.2.10.

A user wants to know which security principals are granted/denied the right to obtain free/busy information derived from a specific subset (or all) of the events (e.g., events classified as public) in a given calendar.

5.2.11.

A user wants to know whether he is granted/denied the right to obtain free/busy information derived from a specific subset (or all) of the events (e.g., events classified as public) in a given calendar.

5.2.12.

A user wants to know whether a given user is granted/denied the right to obtain free/busy information derived from a specific subset (or all) of the events (e.g., events classified as public) in a given calendar.

5.2.13.

A user wants to know the set of privileges that applies to him on a given event or tasks in a given calendar.

5.2.14.

A user wants to grant/deny to security principals the right to read/modify the access control lists of a subset (or all) of his events / tasks (e.g., events / tasks classified as private) in a given calendar.

5.2.15.

A user wants to know which security principals are granted/denied the right to read/modify the access control lists of a subset (or all) of his events / tasks (e.g., events / tasks classified as private) in a given calendar.

5.2.16.

A user wants to know whether he is granted/denied the right to read/modify the access control lists of a subset (or all) of events / tasks (e.g., events / tasks classified as private) in a given calendar.

5.2.17.

A user wants to know whether a given user is granted/denied the right to read/modify the access control lists of a subset (or all) of events / tasks (e.g., events / tasks classified as private) in a given calendar.

5.3.  Scheduling Access Control

5.3.1.

A user wants to grant/deny to security principals the right to invite him to events.

5.3.2.

A user wants to know which security principals are granted/denied the right to invite him to events.

5.3.3.

A user wants to know whether he is granted/denied the right to invite a given user to events.

5.3.4.

A user wants to grant/deny to security principals the right to assign him tasks.

5.3.5.

A user wants to know which security principals are granted/denied the right to assign him tasks.

5.3.6.

A user wants to know whether he is granted/denied the right to assign tasks to a given user.

5.3.7.

A user wants to grant/deny to security principals the right to reply to events / tasks that meet a certain set of restrictions (e.g., events / tasks that are classified as confidential) on his behalf.

5.3.8.

A user wants to know which security principals are granted/denied the right to reply to events / tasks that meet a certain set of restrictions (e.g., events / tasks that are classified as confidential) on his behalf.

5.3.9.

A user wants to know whether he is granted/denied the right to reply to events / tasks that meet a certain set of restrictions (e.g., events / tasks that are classified as confidential) on behalf of a given user.

5.3.10.

A user wants to grant/deny to security principals the right to send event invitations that meet a certain set of restrictions (e.g., events that are classified as confidential) on his behalf.

5.3.11.

A user wants to know which security principals are granted/denied the right to send event invitations that meet a certain set of restrictions (e.g., events that are classified as confidential) on his behalf.

5.3.12.

A user wants to know whether he is granted/denied the right to send event invitations that meet a certain set of restrictions (e.g., events that are classified as confidential) on behalf of a given user.

5.3.13.

A user wants to know whether a given user is granted/denied the right to send event invitations that meet a certain set of restrictions (e.g., events that are classified as confidential) on his behalf.

5.3.14.

A user wants to grant/deny to security principals the right to assign tasks that meet a certain set of restrictions (e.g., tasks that are classified as private) to other users on his behalf.

5.3.15.

A user wants to know which security principals are granted/denied the right to assign tasks that meet a certain set of restrictions (e.g., tasks that are classified as private) to other users on his behalf.

5.3.16.

A user wants to know whether he is granted/denied the right to assign tasks that meet a certain set of restrictions (e.g., tasks that are classified as private) to other users on behalf of a given user.

5.3.17.

A user wants to know whether a given user is granted/denied the right to assign tasks that meet a certain set of restrictions (e.g., tasks that are classified as private) to other users on his behalf.