draft-ietf-calext-availability-04.txt   rfc7953.txt 
Network Working Group C. Daboo Internet Engineering Task Force (IETF) C. Daboo
Internet-Draft Apple Request for Comments: 7953 Apple
Updates: 5545,4791,6638 (if approved) M. Douglass Updates: 4791, 5545, 6638 M. Douglass
Intended status: Standards Track Spherical Cow Group Category: Standards Track Spherical Cow Group
Expires: January 8, 2017 July 7, 2016 ISSN: 2070-1721 August 2016
Calendar Availability Calendar Availability
draft-ietf-calext-availability-04
Abstract Abstract
This document specifies a new iCalendar (RFC 5545) calendar component This document specifies a new iCalendar (RFC 5545) component that
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 (RFC 5546 ) standard iCalendar free-busy lookups, including the iCalendar
Transport-independent Interoperability Protocol (iTIP; RFC 5546)
free-busy requests, to generate repeating blocks of available or busy free-busy requests, to generate repeating blocks of available or busy
time with exceptions as needed. time with exceptions as needed.
This document also defines extensions to Calendaring Extensions to This document also defines extensions to the Calendaring Extensions
WebDAV (CalDAV) calendar access protocol (RFC 4791) and the to WebDAV (CalDAV) calendar access protocol (RFC 4791) and the
associated scheduling protocol (RFC 6638) to specify how this new associated scheduling protocol (RFC 6638) to specify how this new
calendar component can be used when evaluating free-busy time. calendar component can be used when evaluating free-busy time.
Editorial Note (To be removed by RFC Editor before publication)
Discussion of this specification is taking place on the mailing list
http://lists.osafoundation.org/mailman/listinfo/ietf-caldav .
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on January 8, 2017. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc7953.
Copyright Notice Copyright Notice
Copyright (c) 2016 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
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 2. Conventions Used in This Document . . . . . . . . . . . . . . 3
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 . . . . . . . . . . . . . . . . . 12 5. Calculating Free-Busy Time . . . . . . . . . . . . . . . . . 12
5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . 13
6. Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . . 15 6. Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . . 15
7. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 15 7. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 15
7.1. CalDAV Requirements Overview . . . . . . . . . . . . . . 15 7.1. CalDAV Requirements Overview . . . . . . . . . . . . . . 15
7.2. New features in CalDAV . . . . . . . . . . . . . . . . . 15 7.2. New Features in CalDAV . . . . . . . . . . . . . . . . . 16
8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19
9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 19 9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 19
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
10.1. Component Registrations . . . . . . . . . . . . . . . . 20 10.1. Component Registrations . . . . . . . . . . . . . . . . 20
10.2. Property Registrations . . . . . . . . . . . . . . . . . 20 10.2. Property Registrations . . . . . . . . . . . . . . . . . 20
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 11. Normative References . . . . . . . . . . . . . . . . . . . . 20
12. Normative References . . . . . . . . . . . . . . . . . . . . 20 Appendix A. Example Calendar #1 . . . . . . . . . . . . . . . . 22
Appendix A. Example Calendar #1 . . . . . . . . . . . . . . . . 21 Appendix B. Example Calendar #2 . . . . . . . . . . . . . . . . 23
Appendix B. Example Calendar #2 . . . . . . . . . . . . . . . . 21 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 24
Appendix C. Change History (To be removed by RFC Editor before Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24
publication) . . . . . . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25
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
ought be able to specify such periods directly via their calendar ought be able to specify such periods directly via their calendar
user agent, and have them automatically considered as part of the user agent and have them automatically considered as part of the
normal free-busy lookup for that user. In addition, it ought be normal free-busy lookup for that user. In addition, it ought be
possible to present different periods of available time depending on possible to present different periods of available time depending on
which user is making the request. which user is making the request.
iCalendar [RFC5545] defines a "VFREEBUSY" component that can be used iCalendar [RFC5545] defines a "VFREEBUSY" component that can be used
to represent fixed busy time periods, but it does not provide a way to represent fixed busy time periods, but it does not provide a way
to specify a repeating period of available or unavailable time. to specify a repeating period of available or unavailable time.
Since repeating patterns are often the case, "VFREEBUSY" components Since repeating patterns are often the case, "VFREEBUSY" components
are not sufficient to solve this problem. are not sufficient to solve this problem.
skipping to change at page 3, line 35 skipping to change at page 3, line 42
feature provides a CALDAV:free-busy-query REPORT that returns free- feature provides a CALDAV:free-busy-query REPORT that returns free-
busy information for a calendar collection or hierarchy of calendar busy information for a calendar collection or hierarchy of calendar
collections. Also, the CalDAV calendar-auto-schedule [RFC6638] collections. Also, the CalDAV calendar-auto-schedule [RFC6638]
feature allows free-busy information for a calendar user to be feature allows free-busy information for a calendar user to be
determined. Both of these operations involve examining user determined. Both of these operations involve examining user
calendars for events that 'block time', with the blocked out periods calendars for events that 'block time', with the blocked out periods
being returned in a "VFREEBUSY" component. being returned in a "VFREEBUSY" component.
This specification extends the CalDAV calendar-access and CalDAV This specification extends the CalDAV calendar-access and CalDAV
calendar-auto-schedule features to allow the new iCalendar calendar-auto-schedule features to allow the new iCalendar
availability components to be stored and manipulated, and to allow availability components to be stored and manipulated and to allow
free-busy lookups to use the information from any such components, if free-busy lookups to use the information from any such components, if
present. present.
2. Conventions Used in This Document 2. Conventions Used in This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119]. [RFC2119].
When XML element types in the namespaces "DAV:" and When XML element types in the namespaces "DAV:" and
"urn:ietf:params:xml:ns:caldav" are referenced in this document "urn:ietf:params:xml:ns:caldav" are referenced in this document
outside of the context of an XML fragment, the string "DAV:" and outside of the context of an XML fragment, the string "DAV:" and
"CALDAV:" will be prefixed to the element type names respectively. "CALDAV:" will be prefixed to the element type names respectively.
3. iCalendar Extensions 3. iCalendar Extensions
This specification adds a new "VAVAILABILITY" calendar component to This specification adds a new "VAVAILABILITY" calendar component to
iCalendar. The "VAVAILABILITY" component is itself a container for iCalendar. The "VAVAILABILITY" component is itself a container for
new "AVAILABLE" sub-components. new "AVAILABLE" subcomponents.
The purpose of the "VAVAILABILITY" calendar component is to provide a The purpose of the "VAVAILABILITY" calendar component is to provide a
grouping of available time information over a specific range of time. grouping of available time information over a specific range of time.
Within that, there are specific time ranges that are marked as Within that, there are specific time ranges that are marked as
available via a set of "AVAILABLE" calendar sub-components. Together available via a set of "AVAILABLE" calendar subcomponents. Together
these can be used to specify available time that can repeat over set these can be used to specify available time that can repeat over set
periods of time, and which can vary over time. periods of time, and which can vary over time.
An illustration of how "VAVAILABILITY" and "AVAILABLE" components An illustration of how "VAVAILABILITY" and "AVAILABLE" components
work is shown below. work is shown below.
Time-range Time Range
<=========================================================> <=========================================================>
+-------------------------------------------------+ +-------------------------------------------------+
| VAVAILABILITY | | VAVAILABILITY |
+-------------------------------------------------+ +-------------------------------------------------+
+------------+ +------------+ +------------+ +------------+
| AVAILABLE | | AVAILABLE | | AVAILABLE | | AVAILABLE |
+------------+ +------------+ +------------+ +------------+
<-> <-----> <-----------> Busy Time <-> <-----> <-----------> Busy Time
The overall time-range is shown at the top. A "VAVAILABILITY" The overall time range is shown at the top. A "VAVAILABILITY"
component spans part of the range. The time-range covered by the component spans part of the range. The time range covered by the
"VAVAILABILITY" component is considered to be busy, except for the "VAVAILABILITY" component is considered to be busy, except for the
ranges covered by the "AVAILABLE" components within the ranges covered by the "AVAILABLE" components within the
"VAVAILABILITY" component. "VAVAILABILITY" component.
3.1. VAVAILABILITY Component 3.1. VAVAILABILITY Component
Component Name: VAVAILABILITY Component Name: VAVAILABILITY
Purpose: Provide a grouping of component properties and sub- Purpose: Provide a grouping of component properties and
components that describe the availability associated with a subcomponents that describe the availability associated with a
calendar user. calendar user.
Format Definition: A "VAVAILABILITY" calendar component is defined Format Definition: A "VAVAILABILITY" calendar component is defined
by the following notation: by the following notation:
availabilityc = "BEGIN" ":" "VAVAILABILITY" CRLF availabilityc = "BEGIN" ":" "VAVAILABILITY" CRLF
availabilityprop *availablec availabilityprop *availablec
"END" ":" "VAVAILABILITY" CRLF "END" ":" "VAVAILABILITY" CRLF
availabilityprop = *( availabilityprop = *(
; ;
; 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 / location / 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 /
; ;
; the following are OPTIONAL, ; the following are OPTIONAL
; and MAY occur more than once ; and MAY occur more than once
; ;
categories / comment / contact / categories / comment / contact /
x-prop / iana-prop x-prop / iana-prop
; ;
) )
availablec = "BEGIN" ":" "AVAILABLE" CRLF availablec = "BEGIN" ":" "AVAILABLE" CRLF
availableprop availableprop
"END" ":" "AVAILABLE" CRLF "END" ":" "AVAILABLE" CRLF
availableprop = *( availableprop = *(
; ;
; the following are REQUIRED, ; the following are REQUIRED
; but MUST NOT occur more than once ; but MUST NOT occur more than once
; ;
dtstamp / dtstart / uid / dtstamp / dtstart / uid /
; ;
; Either 'dtend' or 'duration' MAY appear in ; Either 'dtend' or 'duration' MAY appear in
; 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 /
location / 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
within which availability information is provided. A within which availability information is provided. A
"VAVAILABILITY" component can specify a start time and an end time "VAVAILABILITY" component can specify a start time and an end time
or duration. If "DTSTART" is not present, then the start time is or duration. If "DTSTART" is not present, then the start time is
unbounded. If "DTEND" or "DURATION" are not present, then the end unbounded. If "DTEND" or "DURATION" are not present, then the end
time is unbounded. Within the specified time period, availability time is unbounded. Within the specified time period, availability
defaults to a free-busy type of "BUSY-UNAVAILABLE" (see defaults to a free-busy type of "BUSY-UNAVAILABLE" (see
Section 3.2), except for any time periods corresponding to Section 3.2), except for any time periods corresponding to
"AVAILABLE" sub-components. "AVAILABLE" subcomponents.
"AVAILABLE" sub-components are used to indicate periods of free "AVAILABLE" subcomponents are used to indicate periods of free
time within the time range of the enclosing "VAVAILABILITY" time within the time range of the enclosing "VAVAILABILITY"
component. "AVAILABLE" sub-components MAY include recurrence component. "AVAILABLE" subcomponents MAY include recurrence
properties to specify recurring periods of time, which can be properties to specify recurring periods of time, which can be
overridden using normal iCalendar recurrence behavior (i.e., use overridden using normal iCalendar recurrence behavior (i.e., use
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" subcomponents MUST be
"DATE-TIME" values specified as either date with UTC time or date "DATE-TIME" values specified as either the date with UTC time or
with local time and a time zone reference. the date 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, unless [RFC7809] is in effect. all components, unless [RFC7809] is in effect.
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.
skipping to change at page 7, line 19 skipping to change at page 7, line 33
Other calendar properties MAY be specified in "VAVAILABILITY" or Other calendar properties MAY be specified in "VAVAILABILITY" or
"AVAILABLE" components and are considered attributes of the marked "AVAILABLE" components and are considered attributes of the marked
block of time. Their usage is application specific. For example, block of time. Their usage is application specific. For example,
the "LOCATION" property might be used to indicate that a person is the "LOCATION" property might be used to indicate that a person is
available in one location for part of the week and a different available in one location for part of the week and a different
location for another part of the week (but see Section 9 for when location for another part of the week (but see Section 9 for when
it is appropriate to add additional data like this). it is appropriate to add additional data like this).
Example: The following is an example of a "VAVAILABILITY" calendar Example: The following is an example of a "VAVAILABILITY" calendar
component used to represent the availability of a user, always component used to represent the availability of a user, always
available Monday through Friday, 9:00 AM to 5:00 PM in the available Monday through Friday, 9:00 am to 5:00 pm in the
America/Montreal time zone: America/Montreal time zone:
BEGIN:VAVAILABILITY BEGIN:VAVAILABILITY
ORGANIZER:mailto:bernard@example.com ORGANIZER:mailto:bernard@example.com
UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF
DTSTAMP:20111005T133225Z DTSTAMP:20111005T133225Z
BEGIN:AVAILABLE BEGIN:AVAILABLE
UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF
SUMMARY:Monday to Friday from 9:00 to 17:00 SUMMARY:Monday to Friday from 9:00 to 17:00
DTSTART;TZID=America/Montreal:20111002T090000 DTSTART;TZID=America/Montreal:20111002T090000
skipping to change at page 7, line 34 skipping to change at page 8, line 4
UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF
DTSTAMP:20111005T133225Z DTSTAMP:20111005T133225Z
BEGIN:AVAILABLE BEGIN:AVAILABLE
UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF
SUMMARY:Monday to Friday from 9:00 to 17:00 SUMMARY:Monday to Friday from 9:00 to 17:00
DTSTART;TZID=America/Montreal:20111002T090000 DTSTART;TZID=America/Montreal:20111002T090000
DTEND;TZID=America/Montreal:20111002T170000 DTEND;TZID=America/Montreal:20111002T170000
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
The following is an example of a "VAVAILABILITY" calendar The following is an example of a "VAVAILABILITY" calendar
component used to represent the availability of a user available component used to represent the availability of a user available
Monday through Thursday, 9:00 AM to 5:00 PM at the main office, Monday through Thursday, 9:00 am to 5:00 pm, at the main office,
and Friday 9:00 AM to 12:00 PM in the branch office in the and Friday, 9:00 am to 12:00 pm, in the branch office in the
America/Montreal time zone between October 2nd and December 2nd America/Montreal time zone between October 2nd and December 2nd
2011: 2011:
BEGIN:VAVAILABILITY BEGIN:VAVAILABILITY
ORGANIZER:mailto:bernard@example.com ORGANIZER:mailto:bernard@example.com
UID:84D0F948-7FC6-4C1D-BBF3-BA9827B424B5 UID:84D0F948-7FC6-4C1D-BBF3-BA9827B424B5
DTSTAMP:20111005T133225Z DTSTAMP:20111005T133225Z
DTSTART;TZID=America/Montreal:20111002T000000 DTSTART;TZID=America/Montreal:20111002T000000
DTEND;TZID=America/Montreal:20111202T000000 DTEND;TZID=America/Montreal:20111202T000000
BEGIN:AVAILABLE BEGIN:AVAILABLE
skipping to change at page 8, line 31 skipping to change at page 8, line 37
SUMMARY:Friday from 9:00 to 12:00 SUMMARY:Friday from 9:00 to 12:00
DTSTART;TZID=America/Montreal:20111006T090000 DTSTART;TZID=America/Montreal:20111006T090000
DTEND;TZID=America/Montreal:20111006T120000 DTEND;TZID=America/Montreal:20111006T120000
RRULE:FREQ=WEEKLY RRULE:FREQ=WEEKLY
LOCATION:Branch Office LOCATION:Branch Office
END:AVAILABLE END:AVAILABLE
END:VAVAILABILITY END:VAVAILABILITY
The following is an example of three "VAVAILABILITY" calendar The following is an example of three "VAVAILABILITY" calendar
components used to represent the availability of a traveling components used to represent the availability of a traveling
worker: Monday through Friday, 9:00 AM to 5:00 PM each day. worker: Monday through Friday, 9:00 am to 5:00 pm each day.
However, for three weeks the calendar user is working in Montreal, However, for three weeks the calendar user is working in Montreal,
then one week in Denver, then back to Montreal. Note that each then one week in Denver, then back to Montreal. Note that each
overall period is covered by separate "VAVAILABILITY" components. overall period is covered by separate "VAVAILABILITY" components.
The last of these has no DTEND so continues on "for ever". This The last of these has no DTEND so it continues on "forever". This
example shows one way "blocks" of available time can be example shows one way "blocks" of available time can be
represented. See Section 4 for another approach using priorities. represented. See Section 4 for another approach using priorities.
BEGIN:VAVAILABILITY BEGIN:VAVAILABILITY
ORGANIZER:mailto:bernard@example.com ORGANIZER:mailto:bernard@example.com
UID:BE082249-7BDD-4FE0-BDBA-DE6598C32FC9 UID:BE082249-7BDD-4FE0-BDBA-DE6598C32FC9
DTSTAMP:20111005T133225Z DTSTAMP:20111005T133225Z
DTSTART;TZID=America/Montreal:20111002T000000 DTSTART;TZID=America/Montreal:20111002T000000
DTEND;TZID=America/Montreal:20111023T030000 DTEND;TZID=America/Montreal:20111023T030000
BEGIN:AVAILABLE BEGIN:AVAILABLE
skipping to change at page 10, line 13 skipping to change at page 10, line 13
END:VAVAILABILITY END:VAVAILABILITY
3.2. Busy Time Type 3.2. Busy Time Type
Property Name: BUSYTYPE Property Name: BUSYTYPE
Purpose: This property specifies the default busy time type. Purpose: This property specifies the default busy time type.
Value Type: TEXT Value Type: TEXT
Property Parameters: IANA and non-standard property parameters can Property Parameters: IANA and nonstandard property parameters can be
be specified on this property. specified on this property.
Conformance: This property can be specified within "VAVAILABILITY" Conformance: This property can be specified within "VAVAILABILITY"
calendar components. calendar components.
Format Definition: This property is defined by the following Format Definition: This property is defined by the following
notation: notation:
busytype = "BUSYTYPE" busytypeparam ":" busytypevalue CRLF busytype = "BUSYTYPE" busytypeparam ":" busytypevalue CRLF
busytypeparam = *(";" other-param) busytypeparam = *(";" other-param)
skipping to change at page 10, line 41 skipping to change at page 10, line 41
type. The values correspond to those used by the "FBTYPE" type. The values correspond to those used by the "FBTYPE"
parameter used on a "FREEBUSY" property, with the exception that parameter used on a "FREEBUSY" property, with the exception that
the "FREE" value is not used in this property. If not specified the "FREE" value is not used in this property. If not specified
on a component that allows this property, the default is "BUSY- on a component that allows this property, the default is "BUSY-
UNAVAILABLE". UNAVAILABLE".
Example: The following is an example of this property: Example: The following is an example of this property:
BUSYTYPE:BUSY BUSYTYPE:BUSY
4. Combining VAVAILABILITY components 4. Combining VAVAILABILITY Components
The "VAVAILABILITY" component allows a calendar user to describe The "VAVAILABILITY" component allows a calendar user to describe
their availability over extended periods of time through the use of their availability over extended periods of time through the use of
recurrence patterns. This availability might be relatively constant recurrence patterns. This availability might be relatively constant
from year to year. from year to year.
However, there is usually some degree of irregularity, as people take However, there is usually some degree of irregularity, as people take
vacations or perhaps spend a few weeks at a different office. For vacations or perhaps spend a few weeks at a different office. For
that period of time there is a need to redefine their availability. that period of time there is a need to redefine their availability.
Rather than modify their existing availability, the "PRIORITY" Rather than modify their existing availability, the "PRIORITY"
property allows new "VAVAILABILITY" components to override others of property allows new "VAVAILABILITY" components to override others of
lower ordinal priority. Note that iCalendar [RFC5545] defines the lower ordinal priority. Note that iCalendar [RFC5545] defines the
"PRIORITY" property such that a value of 0 is undefined, 1 is the "PRIORITY" property such that a value of 0 is undefined, 1 is the
highest priority and 9 is the lowest. highest priority, and 9 is the lowest.
When combining "VAVAILABILITY" components, an absence of a "PRIORITY" When combining "VAVAILABILITY" components, an absence of a "PRIORITY"
property or a value of 0 implies the lowest level of priority. When property or a value of 0 implies the lowest level of priority. When
two or more VAVAILABILITY components overlap, and they have the same two or more VAVAILABILITY components overlap, and they have the same
PRIORITY value, the overlapping busy time type is determined by the PRIORITY value, the overlapping busy time type is determined by the
following order: BUSY > BUSY-UNAVAILABLE > BUSY-TENTATIVE. i.e., if following order: BUSY > BUSY-UNAVAILABLE > BUSY-TENTATIVE. That is,
one component has a BUSYTYPE set to BUSY, and the another has if one component has a BUSYTYPE set to BUSY and the other has
BUSYTYPE set to BUSY-UNAVAILABLE, then the effective busy time type BUSYTYPE set to BUSY-UNAVAILABLE, then the effective busy time type
over the time range that they overlap would be BUSY. It is up to the over the time range that they overlap would be BUSY. It is up to the
creator of such components to ensure that combining them produces a creator of such components to ensure that combining them produces a
consistent and expected result. consistent and expected result.
To calculate the available time, order the intersecting To calculate the available time, order the intersecting
"VAVAILABILITY" components by priority (i.e., lowest to highest "VAVAILABILITY" components by priority (the lowest to highest
"PRIORITY" values are 0, 9, 8, 7, 6, 5, 4, 3, 2, 1). "PRIORITY" values are 0, 9, 8, 7, 6, 5, 4, 3, 2, 1).
Step through the resulting list of "VAVAILABILITY" components. For Step through the resulting list of "VAVAILABILITY" components. For
each, the time range covered by the "VAVAILABILITY" component is set each, the time range covered by the "VAVAILABILITY" component is set
to busy and then portions of it defined by the "AVAILABLE" components to busy and then portions of it defined by the "AVAILABLE" components
in the "VAVAILABILITY" component are set to free. in the "VAVAILABILITY" component are set to free.
Note that, if any "VAVAILABILITY" component completely covers the Note that, if any "VAVAILABILITY" component completely covers the
date range of interest, then any lower priority "VAVAILABILITY" date range of interest, then any lower priority "VAVAILABILITY"
components can be ignored. components can be ignored.
skipping to change at page 12, line 21 skipping to change at page 12, line 21
+-----+----+----+-----+----+-----+----+-----+----+------+ +-----+----+----+-----+----+-----+----+-----+----+------+
5. Calculating Free-Busy Time 5. Calculating Free-Busy Time
This section describes how free-busy time information for a calendar This section describes how free-busy time information for a calendar
user is calculated in the presence of "VAVAILABILITY" calendar user is calculated in the presence of "VAVAILABILITY" calendar
components. components.
An iCalendar "VFREEBUSY" component is used to convey "rolled-up" An iCalendar "VFREEBUSY" component is used to convey "rolled-up"
free-busy time information for a calendar user. This can be free-busy time information for a calendar user. This can be
generated as the result of an iTIP free-busy [RFC5546] request or generated as the result of an iTIP [RFC5546] free-busy request or
through some other mechanism (e.g., a CalDAV calendar-access through some other mechanism (e.g., a CalDAV calendar-access
CALDAV:free-busy-query REPORT). CALDAV:free-busy-query REPORT).
When one or more "VAVAILABILITY" components are present and intersect When one or more "VAVAILABILITY" components are present and intersect
the time-range for the free-busy request, first the available time is the time range for the free-busy request, first the available time is
calculated, as outlined in Section 4. Once that is done, regular calculated, as outlined in Section 4. Once that is done, regular
"VEVENT" and "VFREEBUSY" components can be "overlaid" in the usual "VEVENT" and "VFREEBUSY" components can be "overlaid" in the usual
way to block out time. way to block out time.
An example procedure for this is as follows: An example procedure for this is as follows:
1. Initially mark the entire period of the free-busy request as 1. Initially mark the entire period of the free-busy request as
free. free.
2. For each "VAVAILABILITY" component ordered by PRIORITY (lowest to 2. For each "VAVAILABILITY" component ordered by PRIORITY (lowest to
highest): highest):
A. Determine if the "VAVAILABILITY" intersects the time-range of A. Determine if the "VAVAILABILITY" intersects the time range of
the free-busy request. If not ignore it. the free-busy request. If not, ignore it.
B. Determine if the "VAVAILABILITY" is completely overridden by B. Determine if the "VAVAILABILITY" is completely overridden by
a higher priority component. If so ignore it. a higher priority component. If so, ignore it.
C. For the time period covered by the "VAVAILABILITY" component, C. For the time period covered by the "VAVAILABILITY" component,
mark time in the free-busy request result set as busy, using mark time in the free-busy request result set as busy, using
the busy time type derived from the "BUSYTYPE" property in the busy time type derived from the "BUSYTYPE" property in
the "VAVAILABILITY" component. the "VAVAILABILITY" component.
D. Append the "VAVAILABILITY" component to a list of components D. Append the "VAVAILABILITY" component to a list of components
for further processing in step 3, if it has not been ignored. for further processing in step 3, if it has not been ignored.
3. For each "VAVAILABILITY" component in the list resulting from 3. For each "VAVAILABILITY" component in the list resulting from
step 2, in order from the first item to the last item: step 2, in order from the first item to the last item:
A. For each "AVAILABLE" component in the "VAVAILABILITY" A. For each "AVAILABLE" component in the "VAVAILABILITY"
component: component:
i. Expand all recurring instances, taking into account i. Expand all recurring instances, taking into account
overridden instances, ignoring instances or parts of overridden instances, ignoring instances or parts of
instances that fall outside of the free-busy request time- instances that fall outside of the free-busy request
range or the time period specified by the "VAVAILABILITY" time range or the time period specified by the
component. "VAVAILABILITY" component.
ii. For each instance, mark the corresponding time in the ii. For each instance, mark the corresponding time in the
free-busy request result set as free. free-busy request result set as free.
4. For each "VEVENT" or "VFREEBUSY" component apply normal free-busy 4. For each "VEVENT" or "VFREEBUSY" component, apply normal free-
processing within the free-busy request time-range. busy processing within the free-busy request time range.
5.1. Examples 5.1. Examples
In the examples below a table is used to represent time slots for the In the examples below, a table is used to represent time slots for
period of a free-busy request. Each time slot is two hours long. the period of a free-busy request. Each time slot is two hours long.
The column header represents the hours from midnight local time. The column header represents the hours from midnight local time.
Each row below the column headers represents a step in the free-busy Each row below the column headers represents a step in the free-busy
result set determination, following the procedure outlined above. result set determination, following the procedure outlined above.
Each cell in the rows below the column header contains a single Each cell in the rows below the column header contains a single
character that represents the free-busy type for the corresponding character that represents the free-busy type for the corresponding
time period at the end of the process step represented by the row. time period at the end of the process step represented by the row.
The characters in the row are: The characters in the row are:
F Represents "FREE" time in that slot. F Represents "FREE" time in that slot.
skipping to change at page 13, line 51 skipping to change at page 13, line 51
T Represents "BUSY-TENTATIVE" time in that slot. T Represents "BUSY-TENTATIVE" time in that slot.
I Represents data to be ignored in that slot (as per step 2.B I Represents data to be ignored in that slot (as per step 2.B
above). above).
5.1.1. Simple Example 5.1.1. Simple Example
Appendix A shows the user's calendar. This includes one Appendix A shows the user's calendar. This includes one
"VAVAILABILITY" component giving available time within the requested "VAVAILABILITY" component giving available time within the requested
time-range of 8:00 AM to 6:00 PM, together with one "VEVENT" time range of 8:00 am to 6:00 pm, together with one "VEVENT"
component representing a two hour meeting starting at 12:00 PM. component representing a two hour meeting starting at 12:00 pm.
A free-busy request for Monday, 6th November 2011, midnight to A free-busy request for Monday, 6th November 2011, midnight to
midnight in the America/Montreal timezone would be calculated as midnight in the America/Montreal time zone would be calculated as
follows using the steps described above. follows using the steps described above.
+------+----+----+----+----+----+----+----+----+----+----+----+----+ +------+----+----+----+----+----+----+----+----+----+----+----+----+
| Step | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | | Step | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 |
+------+----+----+----+----+----+----+----+----+----+----+----+----+ +------+----+----+----+----+----+----+----+----+----+----+----+----+
| 1. | F | F | F | F | F | F | F | F | F | F | F | F | | 1. | F | F | F | F | F | F | F | F | F | F | F | F |
| 2. | U | U | U | U | U | U | U | U | U | U | U | U | | 2. | U | U | U | U | U | U | U | U | U | U | U | U |
| 3. | U | U | U | U | F | F | F | F | F | U | U | U | | 3. | U | U | U | U | F | F | F | F | F | U | U | U |
| 4. | U | U | U | U | F | F | B | F | F | U | U | U | | 4. | U | U | U | U | F | F | B | F | F | U | U | U |
+------+----+----+----+----+----+----+----+----+----+----+----+----+ +------+----+----+----+----+----+----+----+----+----+----+----+----+
5.1.2. Further Example 5.1.2. Further Example
Appendix B shows another way to represent the availability of the Appendix B shows another way to represent the availability of the
traveling worker shown above. Here we represent their base traveling worker shown above. Here we represent their base
availability of Monday through Friday, 8:00 AM to 6:00 PM each day availability of Monday through Friday, 8:00 am to 6:00 pm each day
with a "VAVAILABILITY" with default "PRIORITY" (there is no "DTEND" with a "VAVAILABILITY" with default "PRIORITY" (there is no "DTEND"
property so that this availability is unbounded). For the week the property so that this availability is unbounded). For the week the
calendar user is working in Denver (October 23rd through October calendar user is working in Denver (October 23rd through October
30th), we represent their availability with a "VAVAILABILITY" 30th), we represent their availability with a "VAVAILABILITY"
component with priority 1, which overrides the base availability. component with priority 1, which overrides the base availability.
There is also a two hour meeting starting at 12:00 PM (in the There is also a two hour meeting starting at 12:00 pm (in the
America/Denver time zone). America/Denver time zone).
A free-busy request for Monday, 24th October 2011, midnight to A free-busy request for Monday, 24th October 2011, midnight to
midnight in the America/Montreal timezone, would be calculated as midnight in the America/Montreal time zone, would be calculated as
follows using the steps described above. Note that there is a two follows using the steps described above. Note that there is a two
hour offset in the in the available time, compared to the previous hour offset in the in the available time, compared to the previous
example, due to the two hour difference between the time zone of the example, due to the two hour difference between the time zone of the
free busy request and the time zone of the user's availability and free-busy request and the time zone of the user's availability and
meeting. "2.P0" shows the base availability, and "2.P1" shows the meeting. "2.P0" shows the base availability, and "2.P1" shows the
higher priority availability. "3.P1" only shows the higher priority higher priority availability. "3.P1" only shows the higher priority
availability contributing to the overall free busy, since the default availability contributing to the overall free-busy since the default
availability is ignored (as per step 2.B described above). availability is ignored (as per step 2.B described above).
+------+----+----+----+----+----+----+----+----+----+----+----+----+ +------+----+----+----+----+----+----+----+----+----+----+----+----+
| Step | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | | Step | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 |
+------+----+----+----+----+----+----+----+----+----+----+----+----+ +------+----+----+----+----+----+----+----+----+----+----+----+----+
| 1. | F | F | F | F | F | F | F | F | F | F | F | F | | 1. | F | F | F | F | F | F | F | F | F | F | F | F |
| 2.P0 | I | I | I | I | I | I | I | I | I | I | I | I | | 2.P0 | I | I | I | I | I | I | I | I | I | I | I | I |
| 2.P1 | U | U | U | U | U | U | U | U | U | U | U | U | | 2.P1 | U | U | U | U | U | U | U | U | U | U | U | U |
| 3.P1 | U | U | U | U | U | F | F | F | F | F | U | U | | 3.P1 | U | U | U | U | U | F | F | F | F | F | U | U |
| 4. | U | U | U | U | U | F | F | B | F | F | U | U | | 4. | U | U | U | U | U | F | F | B | F | F | U | U |
skipping to change at page 15, line 16 skipping to change at page 15, line 16
This specification does not define how "VAVAILABILITY" components are This specification does not define how "VAVAILABILITY" components are
used in scheduling messages sent using the iTIP [RFC5546] protocol. used in scheduling messages sent using the iTIP [RFC5546] protocol.
It is expected that future specifications will define how iTIP It is expected that future specifications will define how iTIP
scheduling can make use of "VAVAILABILITY" components. scheduling can make use of "VAVAILABILITY" components.
7. CalDAV Extensions 7. CalDAV Extensions
7.1. CalDAV Requirements Overview 7.1. CalDAV Requirements Overview
This section lists what functionality is required of a CalDAV server This section lists what functionality is required of a CalDAV server,
which supports "VAVAILABILITY" components in stored calendar data. A which supports "VAVAILABILITY" components in stored calendar data. A
server: server:
o MUST advertise support for "VAVAILABILITY" components in o MUST advertise support for "VAVAILABILITY" components in
CALDAV:supported-calendar-component-set properties on calendars CALDAV:supported-calendar-component-set properties on calendars
which allow storing of such components; that allow storing of such components;
o MUST support CALDAV:free-busy-query REPORTs that aggregate the o MUST support CALDAV:free-busy-query REPORTs that aggregate the
information in any "VAVAILABILITY" components in the calendar information in any "VAVAILABILITY" components in the calendar
collections targeted by the request; collections targeted by the request;
o MUST support "VAVAILABILITY" components stored in a o MUST support "VAVAILABILITY" components stored in a
CALDAV:calendar-availability WebDAV property on a CalDAV CALDAV:calendar-availability Web Distributed Authoring and
scheduling inbox collection, if the CalDAV calendar-auto-schedule Versioning (WebDAV) property on a CalDAV scheduling Inbox
feature is supported; collection, if the CalDAV calendar-auto-schedule feature is
supported;
o MUST support iTIP [RFC5546] free-busy requests that aggregate the o MUST support iTIP [RFC5546] free-busy requests that aggregate the
information in any "VAVAILABILITY" components in calendar information in any "VAVAILABILITY" components in calendar
collections that contribute to free-busy, or in any collections that contribute to free-busy, or in any
"VAVAILABILITY" components stored in the CALDAV:calendar- "VAVAILABILITY" components stored in the CALDAV:calendar-
availability property on the CalDAV scheduling inbox collection of availability property on the CalDAV scheduling Inbox collection of
the calendar user targeted by the iTIP free-busy request, if the the calendar user targeted by the iTIP free-busy request, if the
CalDAV calendar-auto-schedule feature is available. CalDAV calendar-auto-schedule feature is available.
Processing of "VAVAILABILITY" components MUST conform to all the Processing of "VAVAILABILITY" components MUST conform to all the
requirements CalDAV imposes on calendar object resources (see requirements CalDAV imposes on calendar object resources (see
Section 4.1 of [RFC4791]). Section 4.1 of [RFC4791]).
7.2. New features in CalDAV 7.2. New Features in CalDAV
7.2.1. Calendar Availability Support 7.2.1. Calendar Availability Support
A server supporting the features described in this document MUST A server supporting the features described in this document MUST
include "calendar-availability" as a field in the DAV response header include "calendar-availability" as a field in the DAV response header
from an OPTIONS request. A value of "calendar-availability" in the from an OPTIONS request. A value of "calendar-availability" in the
DAV response header indicates to clients that the server supports all DAV response header indicates to clients that the server supports all
the requirements specified in this document. the requirements specified in this document.
7.2.1.1. Example: Using OPTIONS for the Discovery of Calendar 7.2.1.1. Example: Using OPTIONS for the Discovery of Calendar
skipping to change at page 18, line 14 skipping to change at page 18, line 14
Description: This property allows a user to specify their Description: This property allows a user to specify their
availability by including an "VAVAILABILITY" component in the availability by including an "VAVAILABILITY" component in the
value of this property. If present, the server MUST use this value of this property. If present, the server MUST use this
"VAVAILABILITY" component when determining free-busy information "VAVAILABILITY" component when determining free-busy information
as part of an iTIP free-busy request being handled by the server. as part of an iTIP free-busy request being handled by the server.
Definition: Definition:
<!ELEMENT calendar-availability (#PCDATA) > <!ELEMENT calendar-availability (#PCDATA) >
; Data value MUST be iCalendar object containing ; Data value MUST be an iCalendar object containing
; "VAVAILABILITY" or "VTIMEZONE" components. ; "VAVAILABILITY" or "VTIMEZONE" components.
Example: Example:
<C:calendar-availability xmlns:D="DAV:" <C:calendar-availability xmlns:D="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C="urn:ietf:params:xml:ns:caldav"
>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
skipping to change at page 18, line 40 skipping to change at page 18, line 40
UID:6C9F69C3-BDA8-424E-B2CB-7012E796DDF7 UID:6C9F69C3-BDA8-424E-B2CB-7012E796DDF7
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.5. iTIP free-busy requests 7.2.5. iTIP Free-Busy Requests
The [RFC6638] processing of an iTIP free-busy request targeted at the The CalDAV calendar-auto-schedule feature (see Section 5 of
owner of the CALDAV:schedule-inbox will include free-busy information [RFC6638]) includes a mechanism for free-busy information to be
derived from "VAVAILABILITY" components in any calendar collection requested via the CalDAV protocol. Any "VAVAILABILITY" components in
targeted during the request, as described in Section 5. In addition, any calendar collections targeted during such a request MUST be
the "VAVAILABILITY" component specified in the CALDAV:calendar- included as part of the calculation of the overall free-busy
availability property on the owner's Inbox, MUST be included in the information. In addition, the "VAVAILABILITY" component specified in
free-busy calculation. the CALDAV:calendar-availability property on the owner's Inbox MUST
also be included in the free-busy calculation. Processing of all
such "VAVAILABILITY" components is done as per Section 5.
8. Security Considerations 8. Security Considerations
Calculation of availability information, particularly with multiple Calculation of availability information, particularly with multiple
overlapping time-ranges, can be complex, and CalDAV servers MUST overlapping time ranges, can be complex, and CalDAV servers MUST
limit the complexity of such data stored by a client. limit the complexity of such data stored by a client.
An attacker able to "inject" availability information into a calendar An attacker able to "inject" availability information into a calendar
user's calendar data could ensure that the user never appears free user's calendar data could ensure that the user never appears free
for meetings, or appears free at inappropriate times. Calendar for meetings or appears free at inappropriate times. Calendar
systems MUST ensure that availability information for a calendar user systems MUST ensure that availability information for a calendar user
can only be modified by authorized users. can only be modified by authorized users.
Security considerations in [RFC5545], [RFC5546], [RFC4791], Security considerations in [RFC5545], [RFC5546], [RFC4791],
[RFC6638], and [RFC7809] MUST also be adhered to. [RFC6638], and [RFC7809] MUST also be adhered to.
9. Privacy Considerations 9. Privacy Considerations
Free-busy and availability information can be used by attackers to Free-busy and availability information can be used by attackers to
infer the whereabouts or overall level of "activity" of the infer the whereabouts or overall level of "activity" of the
skipping to change at page 19, line 35 skipping to change at page 19, line 35
to expose their free-busy and availability information MUST limit to expose their free-busy and availability information MUST limit
access to that information to only authorized users. access to that information to only authorized users.
When "VAVAILABILITY" components are sent to or shared with other When "VAVAILABILITY" components are sent to or shared with other
calendar users, care has to be taken not to expose more information calendar users, care has to be taken not to expose more information
than is needed by each recipient. For example, a business owner will than is needed by each recipient. For example, a business owner will
likely not want their customers to know where they might be or what likely not want their customers to know where they might be or what
they might be doing, but family members might be willing to expose they might be doing, but family members might be willing to expose
such information to each other. Thus, calendaring systems allowing such information to each other. Thus, calendaring systems allowing
"VAVAILABILITY" components to be sent or shared to other calendar "VAVAILABILITY" components to be sent or shared to other calendar
users, MUST provide a way for non-essential properties to be removed users MUST provide a way for nonessential properties to be removed
(e.g., "SUMMARY", "LOCATION", and "DESCRIPTION"). (e.g., "SUMMARY", "LOCATION", and "DESCRIPTION").
iCalendar "VFREEBUSY" information generated from "VAVAILABILITY" iCalendar "VFREEBUSY" information generated from "VAVAILABILITY"
components MUST NOT include information other than busy or free time components MUST NOT include information other than busy or free time
periods. In particular, user specified property values such as periods. In particular, user specified property values such as
"SUMMARY", "LOCATION" and "DESCRIPTION" MUST NOT be copied into the "SUMMARY", "LOCATION", and "DESCRIPTION" MUST NOT be copied into the
free-busy result data. free-busy result data.
Privacy considerations in [RFC5545], [RFC5546], [RFC4791], [RFC6638], Privacy considerations in [RFC5545], [RFC5546], [RFC4791], [RFC6638],
and [RFC7809] MUST also be adhered to. and [RFC7809] MUST also be adhered to.
10. IANA Considerations 10. IANA Considerations
10.1. Component Registrations 10.1. Component Registrations
This documents defines the following new iCalendar components to be This document defines the following new iCalendar components, which
added to the registry defined in Section 8.3.1 of [RFC5545]: have been added to the registry defined in Section 8.3.1 of
[RFC5545]:
+---------------+---------+-----------------------+ +---------------+---------+------------------------+
| Component | Status | Reference | | Component | Status | Reference |
+---------------+---------+-----------------------+ +---------------+---------+------------------------+
| VAVAILABILITY | Current | RFCXXXX, Section 3.1 | | VAVAILABILITY | Current | RFC 7953, Section 3.1 |
| AVAILABLE | Current | RFCXXXX, Section 3.1 | | AVAILABLE | Current | RFC 7953, Section 3.1 |
+---------------+---------+-----------------------+ +---------------+---------+------------------------+
10.2. Property Registrations 10.2. Property Registrations
This documents defines the following new iCalendar properties to be This documents defines the following new iCalendar properties, which
added to the registry defined in Section 8.3.2 of [RFC5545]: have been added to the registry defined in Section 8.3.2 of
[RFC5545]:
+----------+---------+-----------------------+
| Property | Status | Reference |
+----------+---------+-----------------------+
| BUSYTYPE | Current | RFCXXXX, Section 3.2 |
+----------+---------+-----------------------+
11. Acknowledgments
Thanks to the following for providing feedback: Toby Considine +----------+---------+------------------------+
Bernard Desruisseaux, Alexey Melnikov, Daniel Migault, Ken Murchison, | Property | Status | Reference |
Evert Pot, Dave Thewlis. This specification came about via +----------+---------+------------------------+
discussions at the Calendaring and Scheduling Consortium. | BUSYTYPE | Current | RFC 7953, Section 3.2 |
+----------+---------+------------------------+
12. Normative References 11. 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, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/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, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
DOI 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>.
skipping to change at page 23, line 5 skipping to change at page 24, line 5
UID:A35AA091-3846-48ED-96F6-881E8A0D0A93 UID:A35AA091-3846-48ED-96F6-881E8A0D0A93
SUMMARY:Monday to Friday from 9:00 to 17:00 SUMMARY:Monday to Friday from 9:00 to 17:00
DTSTART;TZID=America/Denver:20111023T080000 DTSTART;TZID=America/Denver:20111023T080000
DTEND;TZID=America/Denver:20111023T180000 DTEND;TZID=America/Denver:20111023T180000
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
LOCATION:Denver LOCATION:Denver
END:AVAILABLE END:AVAILABLE
END:VAVAILABILITY END:VAVAILABILITY
END:VCALENDAR END:VCALENDAR
Appendix C. Change History (To be removed by RFC Editor before Acknowledgements
publication)
Changes in draft-ietf-calext-availability-04:
1. [OPSDIR] Mark as updating 5545, 4791, 6638.
2. [OPSDIR] Moved alternative example to Appendix.
3. [OPSDIR] Use different symbols for different nested list levels
in Section 5.
4. [OPSDIR] Added table to illustrate spacing out priority values.
5. [OPSDIR] Editorial fixes.
6. [IESG] changed to MUST for server applying limits.
7. [IESG] Editorial fixes.
8. Changed UID values to UUIDs.
9. Abstract tweak to spell out CalDAV.
Changes in draft-ietf-calext-availability-03:
1. [EXPERT] Make 7809 reference more authoritative.
2. [EXPERT] Add reference to privacy section when describing use of
LOCATION.
3. [EXPERT] Added more text to privacy section to cover published
or iTIP-messaged VAVAILABILITY components.
4. [EXPERT] Clarify highest to lowest priority ordering in free-
busy calculation.
5. [EXPERT] Fixed PRIORITY in example.
6. [EXPERT] Editorial fixes.
7. [EXPERT] Clarify that calendar-availability follows the RFC7809
rule wrt VTIMEZONE presence.
8. [WGCHAIR] Added text suggesting how best to assign priority
values.
9. [WGCHAIR] Clarify example procedure step 3 ordering.
10. Be more explicit about dependent security and privacy
considerations.
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:
1. Minor editorial fixes.
2. ABNF syntax fixes.
3. Clarify BUSTYPE precedence when combining components with the
same PRIORITY values.
4. Added section explaining that iTIP use is not defined
5. Added Privacy Considerations and tweaked Security Considerations.
6. Added diagram to illustrate the overall concept.
7. Limit the calendar-availability property to a single
"VAVAILABILITY" component.
Changes in draft-ietf-calext-availability-00:
1. Re-publication as WG document.
Changes in draft-daboo-calendar-availability-05:
1. Small typos.
2. Fix explanation of priority.
3. Change uid values to make legal and easier to follow.
Changes in draft-daboo-calendar-availability-04:
1. Small typos.
2. Add prioritized example.
Changes in draft-daboo-calendar-availability-03:
1. Switch authors.
2. CalDAV scheduling is now rfc6638.
3. List priority as a vavailability property and define its use.
Changes in draft-daboo-calendar-availability-02:
1. Updated to 5545/5546 references.
2. Fixed some examples.
3. Added some more properties to the components
4. Fixed text that said dtstart was required in VAVAILABILITY
Changes in draft-daboo-calendar-availability-01:
1. Allow property on Inbox for caldav-schedule.
2. Clarify that DURATION can only be present in VAVAILABILITY if
DTSTART is also present, and DTEND is not.
3. Updated references.
4. Added templates. Thanks to the following for providing feedback: Toby Considine,
Bernard Desruisseaux, Alexey Melnikov, Daniel Migault, Ken Murchison,
Evert Pot, and Dave Thewlis. This specification came about via
discussions at the Calendaring and Scheduling Consortium.
Authors' Addresses Authors' Addresses
Cyrus Daboo Cyrus Daboo
Apple Inc. Apple Inc.
1 Infinite Loop 1 Infinite Loop
Cupertino, CA 95014 Cupertino, CA 95014
USA United States of America
Email: cyrus@daboo.name Email: cyrus@daboo.name
URI: http://www.apple.com/ URI: http://www.apple.com/
Michael Douglass Michael Douglass
Spherical Cow Group Spherical Cow Group
226 3rd Street 226 3rd Street
Troy, NY 12180 Troy, NY 12180
USA United States of America
Email: mdouglass@sphericalcowgroup.com Email: mdouglass@sphericalcowgroup.com
URI: http://sphericalcowgroup.com URI: http://sphericalcowgroup.com
 End of changes. 81 change blocks. 
271 lines changed or deleted 137 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/