draft-ietf-calext-availability-01.txt   draft-ietf-calext-availability-02.txt 
Network Working Group C. Daboo Network Working Group C. Daboo
Internet-Draft Apple Internet-Draft Apple
Intended status: Standards Track M. Douglass Intended status: Standards Track M. Douglass
Expires: May 26, 2016 RPI Expires: November 24, 2016 RPI
November 23, 2015 May 23, 2016
Calendar Availability Calendar Availability
draft-ietf-calext-availability-01 draft-ietf-calext-availability-02
Abstract Abstract
This document specifies a new iCalendar calendar component that This document specifies a new iCalendar calendar component that
allows the publication of available and unavailable time periods allows the publication of available and unavailable time periods
associated with a calendar user. This component can be used in associated with a calendar user. This component can be used in
standard iCalendar free-busy lookups, including iTIP free-busy standard iCalendar free-busy lookups, including iTIP free-busy
requests, to generate repeating blocks of available or busy time with requests, to generate repeating blocks of available or busy time with
exceptions as needed. exceptions as needed.
skipping to change at page 1, line 45 skipping to change at page 1, line 45
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on May 26, 2016. This Internet-Draft will expire on November 24, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 34 skipping to change at page 2, line 34
3. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . 4 3. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . 4
3.1. VAVAILABILITY Component . . . . . . . . . . . . . . . . . 4 3.1. VAVAILABILITY Component . . . . . . . . . . . . . . . . . 4
3.2. Busy Time Type . . . . . . . . . . . . . . . . . . . . . 10 3.2. Busy Time Type . . . . . . . . . . . . . . . . . . . . . 10
4. Combining VAVAILABILITY components . . . . . . . . . . . . . 10 4. Combining VAVAILABILITY components . . . . . . . . . . . . . 10
5. Calculating Free-Busy Time . . . . . . . . . . . . . . . . . 11 5. Calculating Free-Busy Time . . . . . . . . . . . . . . . . . 11
5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . 12 5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . 12
6. Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . . 14 6. Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . . 14
7. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 14 7. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 14
7.1. CalDAV Requirements Overview . . . . . . . . . . . . . . 14 7.1. CalDAV Requirements Overview . . . . . . . . . . . . . . 14
7.2. New features in CalDAV . . . . . . . . . . . . . . . . . 15 7.2. New features in CalDAV . . . . . . . . . . . . . . . . . 15
8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 8. Security Considerations . . . . . . . . . . . . . . . . . . . 20
9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 18 9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 20
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
10.1. Component Registrations . . . . . . . . . . . . . . . . 18 10.1. Component Registrations . . . . . . . . . . . . . . . . 20
10.2. Property Registrations . . . . . . . . . . . . . . . . . 19 10.2. Property Registrations . . . . . . . . . . . . . . . . . 21
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21
12. Normative References . . . . . . . . . . . . . . . . . . . . 19 12. Normative References . . . . . . . . . . . . . . . . . . . . 21
Appendix A. Example Calendar #1 . . . . . . . . . . . . . . . . 20 Appendix A. Example Calendar #1 . . . . . . . . . . . . . . . . 22
Appendix B. Change History (To be removed by RFC Editor before Appendix B. Change History (To be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . 22 publication) . . . . . . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24
1. Introduction 1. Introduction
Calendar users often have regular periods of time when they are Calendar users often have regular periods of time when they are
either available to be scheduled or always unavailable. For example, either available to be scheduled or always unavailable. For example,
an office worker will often wish only to appear free to their work an office worker will often wish only to appear free to their work
colleagues during normal 'office hours' (e.g., Monday through Friday, colleagues during normal 'office hours' (e.g., Monday through Friday,
9 am through 5 pm). Or, a university professor might only be 9 am through 5 pm). Or, a university professor might only be
available to students during a set period of time (e.g., Thursday available to students during a set period of time (e.g., Thursday
afternoons, 2 pm through 5 pm during term time only). Ideally users afternoons, 2 pm through 5 pm during term time only). Ideally users
skipping to change at page 5, line 16 skipping to change at page 5, line 16
; ;
; the following are REQUIRED, ; the following are REQUIRED,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
; ;
dtstamp / uid dtstamp / uid
; ;
; the following are OPTIONAL, ; the following are OPTIONAL,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
; ;
busytype / class / created / description / busytype / class / created / description /
dtstart / last-mod / organizer / dtstart / last-mod / location / organizer /
priority /seq / summary / url / priority /seq / summary / url /
; ;
; Either 'dtend' or 'duration' MAY appear ; Either 'dtend' or 'duration' MAY appear
; in an 'availableprop', but 'dtend' and ; in an 'availableprop', but 'dtend' and
; 'duration' MUST NOT occur in the same ; 'duration' MUST NOT occur in the same
; 'availabilityprop'. ; 'availabilityprop'.
; 'duration' MUST NOT be present if ; 'duration' MUST NOT be present if
; 'dtstart' is not present ; 'dtstart' is not present
; ;
dtend / duration / dtend / duration /
skipping to change at page 6, line 9 skipping to change at page 6, line 9
; an 'availableprop', but 'dtend' and ; an 'availableprop', but 'dtend' and
; 'duration' MUST NOT occur in the same ; 'duration' MUST NOT occur in the same
; 'availableprop'. ; 'availableprop'.
; ;
dtend / duration / dtend / duration /
; ;
; the following are OPTIONAL, ; the following are OPTIONAL,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
; ;
created / description / last-mod / created / description / last-mod /
recurid / rrule / summary / location / recurid / rrule / summary /
; ;
; the following are OPTIONAL, ; the following are OPTIONAL,
; and MAY occur more than once ; and MAY occur more than once
; ;
categories / comment / contact / exdate / categories / comment / contact / exdate /
rdate / x-prop / iana-prop rdate / x-prop / iana-prop
) )
Description: A "VAVAILABILITY" component indicates a period of time Description: A "VAVAILABILITY" component indicates a period of time
skipping to change at page 6, line 44 skipping to change at page 6, line 44
of the "RECURRENCE-ID" property). of the "RECURRENCE-ID" property).
If specified, the "DTSTART" and "DTEND" properties in If specified, the "DTSTART" and "DTEND" properties in
"VAVAILABILITY" components and "AVAILABLE" sub-components MUST be "VAVAILABILITY" components and "AVAILABLE" sub-components MUST be
"DATE-TIME" values specified as either date with UTC time or date "DATE-TIME" values specified as either date with UTC time or date
with local time and a time zone reference. with local time and a time zone reference.
The iCalendar object containing the "VAVAILABILITY" component MUST The iCalendar object containing the "VAVAILABILITY" component MUST
contain appropriate "VTIMEZONE" components corresponding to each contain appropriate "VTIMEZONE" components corresponding to each
unique "TZID" parameter value used in any DATE-TIME properties in unique "TZID" parameter value used in any DATE-TIME properties in
all components. all components. Note that extensions, such as [RFC7809], might
relax this constraint.
When used to publish available time, the "ORGANIZER" property When used to publish available time, the "ORGANIZER" property
specifies the calendar user associated with the published specifies the calendar user associated with the published
available time. available time.
If the "PRIORITY" property is specified in "VAVAILABILITY" If the "PRIORITY" property is specified in "VAVAILABILITY"
components, it is used to determine how that component is combined components, it is used to determine how that component is combined
with other "VAVAILABILITY" components. See Section 4. with other "VAVAILABILITY" components. See Section 4.
Other calendar properties MAY be specified in "VAVAILABILITY" or Other calendar properties MAY be specified in "VAVAILABILITY" or
skipping to change at page 16, line 19 skipping to change at page 16, line 19
DAV: 1, 2, 3, access-control, calendar-access, DAV: 1, 2, 3, access-control, calendar-access,
calendar-availability calendar-availability
Date: Fri, 11 Nov 2005 09:32:12 GMT Date: Fri, 11 Nov 2005 09:32:12 GMT
Content-Length: 0 Content-Length: 0
In this example, the OPTIONS method returns the value "calendar- In this example, the OPTIONS method returns the value "calendar-
availability" in the DAV response header to indicate that the availability" in the DAV response header to indicate that the
collection "/home/bernard/calendars/" supports the new features collection "/home/bernard/calendars/" supports the new features
defined in this specification. defined in this specification.
7.2.2. CALDAV:free-busy-query REPORT 7.2.2. CALDAV Time Range Queries
Section 9.9 of [RFC4791] describes how to specify time ranges to
limit the set of calendar components returned by the server. This
specification extends [RFC4791] to describe how to apply time range
filtering to "VAVAILABILITY" components.
A "VAVAILABILITY" component is said to overlap a given time range if
the condition for the corresponding component state specified in the
table below is satisfied. The conditions depend on the presence of
the "DTSTART", "DTEND", and "DURATION" properties in the
"VAVAILABILITY" component. Note that, as specified above, the
"DTEND" value MUST be a "DATE-TIME" value equal to or after the
"DTSTART" value, if specified.
+------------------------------------------------------------+
| VAVAILABILITY has the DTSTART property? |
| +--------------------------------------------------------+
| | VAVAILABILITY has the DTEND property? |
| | +----------------------------------------------------+
| | | VAVAILABILITY has the DURATION property? |
| | | +------------------------------------------------+
| | | | Condition to evaluate |
+---+---+---+------------------------------------------------+
| Y | Y | N | (start < DTEND AND end > DTSTART) |
+---+---+---+------------------------------------------------+
| Y | N | Y | (start < DTSTART+DURATION AND end > DTSTART) |
+---+---+---+------------------------------------------------+
| Y | N | N | (end > DTSTART) |
+---+---+---+------------------------------------------------+
| N | Y | N | (start < DTEND) |
+---+---+---+------------------------------------------------+
| N | N | * | TRUE |
+---+---+---+------------------------------------------------+
7.2.3. CALDAV:free-busy-query REPORT
A CALDAV:free-busy-query REPORT can be executed on a calendar A CALDAV:free-busy-query REPORT can be executed on a calendar
collection that contains iCalendar "VAVAILABILITY" components. When collection that contains iCalendar "VAVAILABILITY" components. When
that occurs, the server MUST aggregate the information in any that occurs, the server MUST aggregate the information in any
"VAVAILABILITY" components when generating the free-busy response, as "VAVAILABILITY" components when generating the free-busy response, as
described in Section 5. described in Section 5.
7.2.3. CALDAV:calendar-availability Property 7.2.4. CALDAV:calendar-availability Property
Name: calendar-availability Name: calendar-availability
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Defines a "VAVAILABILITY" component that will be used in Purpose: Defines a "VAVAILABILITY" component that will be used in
calculating free-busy time when an iTIP free-busy request is calculating free-busy time when an iTIP free-busy request is
targeted at the calendar user who owns the Inbox. targeted at the calendar user who owns the Inbox.
Conformance: This property MAY be protected and SHOULD NOT be Conformance: This property MAY be protected and SHOULD NOT be
skipping to change at page 18, line 5 skipping to change at page 19, line 44
UID:avail-1-A@example.com UID:avail-1-A@example.com
SUMMARY:Monday to Friday from 9:00 to 18:00 SUMMARY:Monday to Friday from 9:00 to 18:00
DTSTART;TZID=America/Montreal:20111002T090000 DTSTART;TZID=America/Montreal:20111002T090000
DTEND;TZID=America/Montreal:20111002T180000 DTEND;TZID=America/Montreal:20111002T180000
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
END:AVAILABLE END:AVAILABLE
END:VAVAILABILITY END:VAVAILABILITY
END:VCALENDAR END:VCALENDAR
</C:calendar-availability> </C:calendar-availability>
7.2.4. iTIP free-busy requests 7.2.5. iTIP free-busy requests
The [RFC6638] processing of an iTIP free-busy request targeted at the The [RFC6638] processing of an iTIP free-busy request targeted at the
owner of the CALDAV:schedule-inbox will include free-busy information owner of the CALDAV:schedule-inbox will include free-busy information
derived from "VAVAILABILITY" components in any calendar collection derived from "VAVAILABILITY" components in any calendar collection
targeted during the request, as described in Section 5. In addition, targeted during the request, as described in Section 5. In addition,
any "VAVAILABILITY" component specified in the CALDAV:calendar- any "VAVAILABILITY" component specified in the CALDAV:calendar-
availability property on the owner's Inbox, MUST be included in the availability property on the owner's Inbox, MUST be included in the
free-busy calculation. free-busy calculation.
8. Security Considerations 8. Security Considerations
skipping to change at page 19, line 26 skipping to change at page 21, line 19
+----------+---------+-----------------------+ +----------+---------+-----------------------+
| Property | Status | Reference | | Property | Status | Reference |
+----------+---------+-----------------------+ +----------+---------+-----------------------+
| BUSYTYPE | Current | RFCXXXX, Section 3.2 | | BUSYTYPE | Current | RFCXXXX, Section 3.2 |
+----------+---------+-----------------------+ +----------+---------+-----------------------+
11. Acknowledgments 11. Acknowledgments
Thanks to the following for providing feedback: Toby Considine Thanks to the following for providing feedback: Toby Considine
Bernard Desruisseaux, Evert Pot, Dave Thewlis. This specification Bernard Desruisseaux, Ken Murchison, Evert Pot, Dave Thewlis. This
came about via discussions at the Calendaring and Scheduling specification came about via discussions at the Calendaring and
Consortium. Scheduling Consortium.
12. Normative References 12. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ Requirement Levels", BCP 14, RFC 2119,
RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
"Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, DOI "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
10.17487/RFC4791, March 2007, DOI 10.17487/RFC4791, March 2007,
<http://www.rfc-editor.org/info/rfc4791>. <http://www.rfc-editor.org/info/rfc4791>.
[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
Scheduling Core Object Specification (iCalendar)", RFC Scheduling Core Object Specification (iCalendar)",
5545, DOI 10.17487/RFC5545, September 2009, RFC 5545, DOI 10.17487/RFC5545, September 2009,
<http://www.rfc-editor.org/info/rfc5545>. <http://www.rfc-editor.org/info/rfc5545>.
[RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent
Interoperability Protocol (iTIP)", RFC 5546, DOI 10.17487/ Interoperability Protocol (iTIP)", RFC 5546,
RFC5546, December 2009, DOI 10.17487/RFC5546, December 2009,
<http://www.rfc-editor.org/info/rfc5546>. <http://www.rfc-editor.org/info/rfc5546>.
[RFC6638] Daboo, C. and B. Desruisseaux, "Scheduling Extensions to [RFC6638] Daboo, C. and B. Desruisseaux, "Scheduling Extensions to
CalDAV", RFC 6638, DOI 10.17487/RFC6638, June 2012, CalDAV", RFC 6638, DOI 10.17487/RFC6638, June 2012,
<http://www.rfc-editor.org/info/rfc6638>. <http://www.rfc-editor.org/info/rfc6638>.
[RFC7809] Daboo, C., "Calendaring Extensions to WebDAV (CalDAV):
Time Zones by Reference", RFC 7809, DOI 10.17487/RFC7809,
March 2016, <http://www.rfc-editor.org/info/rfc7809>.
Appendix A. Example Calendar #1 Appendix A. Example Calendar #1
iCalendar object iCalendar object
BEGIN:VCALENDAR BEGIN:VCALENDAR
CALSCALE:GREGORIAN CALSCALE:GREGORIAN
PRODID:-//example.com//iCalendar 2.0//EN PRODID:-//example.com//iCalendar 2.0//EN
VERSION:2.0 VERSION:2.0
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
LAST-MODIFIED:20040110T032845Z LAST-MODIFIED:20040110T032845Z
TZID:America/Montreal TZID:America/Montreal
BEGIN:DAYLIGHT BEGIN:DAYLIGHT
skipping to change at page 21, line 41 skipping to change at page 22, line 44
DURATION:PT1H DURATION:PT1H
SUMMARY:Meeting SUMMARY:Meeting
UID:60A48841ECB90F3F215FE3D2@example.com UID:60A48841ECB90F3F215FE3D2@example.com
END:VEVENT END:VEVENT
BEGIN:VAVAILABILITY BEGIN:VAVAILABILITY
UID:vavail-1@example.com UID:vavail-1@example.com
DTSTAMP:20111005T133225Z DTSTAMP:20111005T133225Z
DTSTART;TZID=America/Montreal:20111002T000000 DTSTART;TZID=America/Montreal:20111002T000000
BEGIN:AVAILABLE BEGIN:AVAILABLE
UID:avail-1-A@example.com UID:avail-1-A@example.com
SUMMARY:Monday to Friday from 9:00 to 18:00 SUMMARY:Monday to Friday from 8:00 to 18:00
DTSTART;TZID=America/Montreal:20111002T090000 DTSTART;TZID=America/Montreal:20111002T080000
DTEND;TZID=America/Montreal:20111002T180000 DTEND;TZID=America/Montreal:20111002T180000
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
END:AVAILABLE END:AVAILABLE
END:VAVAILABILITY END:VAVAILABILITY
END:VCALENDAR END:VCALENDAR
Appendix B. Change History (To be removed by RFC Editor before Appendix B. Change History (To be removed by RFC Editor before
publication) publication)
Changes in draft-ietf-calext-availability-02:
1. [WGLC] Change Appendix A example to start available time at
08:00.
2. [WGLC] Added new section with table describing CalDAV time range
query behavior.
3. Added text and reference to RFC7809.
4. Added location to formal syntax of components.
Changes in draft-ietf-calext-availability-01: Changes in draft-ietf-calext-availability-01:
1. Minor editorial fixes. 1. Minor editorial fixes.
2. ABNF syntax fixes. 2. ABNF syntax fixes.
3. Clarify BUSTYPE precedence when combining components with the 3. Clarify BUSTYPE precedence when combining components with the
same PRIORITY values. same PRIORITY values.
4. Added section explaining that iTIP use is not defined 4. Added section explaining that iTIP use is not defined
 End of changes. 21 change blocks. 
34 lines changed or deleted 87 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/