draft-ietf-calext-vpoll-00.txt   draft-ietf-calext-vpoll-01.txt 
Network Working Group E. York Network Working Group E. York
Internet-Draft California Things, Inc Internet-Draft
Intended status: Standards Track C. Daboo Intended status: Standards Track C. Daboo
Expires: May 24, 2020 Apple Inc. Expires: 17 April 2021
M. Douglass M. Douglass
Spherical Cow Group 14 October 2020
November 21, 2019
VPOLL: Consensus Scheduling Component for iCalendar VPOLL: Consensus Scheduling Component for iCalendar
draft-ietf-calext-vpoll-00 draft-ietf-calext-vpoll-01
Abstract Abstract
This specification introduces a new iCalendar component which allows This specification introduces a new iCalendar component which allows
for consensus scheduling, that is, voting on a number of alternative for consensus scheduling, that is, voting on a number of alternative
meeting or task alternatives. meeting or task alternatives.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 35 skipping to change at page 1, line 34
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 24, 2020. This Internet-Draft will expire on 17 April 2021.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 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 (https://trustee.ietf.org/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document. Code Components
to this document. Code Components extracted from this document must extracted from this document must include Simplified BSD License text
include Simplified BSD License text as described in Section 4.e of as described in Section 4.e of the Trust Legal Provisions and are
the Trust Legal Provisions and are provided without warranty as provided without warranty as described in the Simplified BSD License.
described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 3
2. Terms and definitions . . . . . . . . . . . . . . . . . . . . 4 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. consensus scheduling . . . . . . . . . . . . . . . . . . 4 3. Terms and definitions . . . . . . . . . . . . . . . . . . . . 4
2.2. active Vpoll . . . . . . . . . . . . . . . . . . . . . . 5 3.1. consensus scheduling . . . . . . . . . . . . . . . . . . 4
2.3. voter . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2. active Vpoll . . . . . . . . . . . . . . . . . . . . . . 4
3. Simple Consensus Scheduling . . . . . . . . . . . . . . . . . 5 3.3. voter . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. The VPOLL Component: An Overview . . . . . . . . . . . . 5 4. Simple Consensus Scheduling . . . . . . . . . . . . . . . . . 5
3.2. The VPOLL Alternative Choices: An Overview . . . . . . . 7 4.1. The VPOLL Component: An Overview . . . . . . . . . . . . 5
3.3. VPOLL responses . . . . . . . . . . . . . . . . . . . . . 8 4.2. The VPOLL Alternative Choices: An Overview . . . . . . . 7
3.4. VPOLL updates . . . . . . . . . . . . . . . . . . . . . . 9 4.3. VPOLL responses . . . . . . . . . . . . . . . . . . . . . 8
3.5. VPOLL Completion . . . . . . . . . . . . . . . . . . . . 11 4.4. VPOLL updates . . . . . . . . . . . . . . . . . . . . . . 9
3.6. Other Responses . . . . . . . . . . . . . . . . . . . . . 11 4.5. VPOLL Completion . . . . . . . . . . . . . . . . . . . . 11
4. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . 12 4.6. Other Responses . . . . . . . . . . . . . . . . . . . . . 12
4.1. Updated Participant Type Value . . . . . . . . . . . . . 12 5. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . 12
4.2. Updated Relation Type Value . . . . . . . . . . . . . . . 12 5.1. Updated Participant Type Value . . . . . . . . . . . . . 12
4.3. Updated Status Value . . . . . . . . . . . . . . . . . . 13 5.2. Updated Relation Type Value . . . . . . . . . . . . . . . 12
4.4. New Property Parameters . . . . . . . . . . . . . . . . . 13 5.3. Updated Status Value . . . . . . . . . . . . . . . . . . 13
4.4.1. Required . . . . . . . . . . . . . . . . . . . . . . 13 5.4. New Property Parameters . . . . . . . . . . . . . . . . . 13
4.4.2. Stay-Informed . . . . . . . . . . . . . . . . . . . . 14 5.4.1. Required . . . . . . . . . . . . . . . . . . . . . . 13
4.5. New Properties . . . . . . . . . . . . . . . . . . . . . 14 5.4.2. Stay-Informed . . . . . . . . . . . . . . . . . . . . 14
4.5.1. Accept-Response . . . . . . . . . . . . . . . . . . . 14 5.5. New Properties . . . . . . . . . . . . . . . . . . . . . 14
4.5.2. Poll-Completion . . . . . . . . . . . . . . . . . . . 15 5.5.1. Accept-Response . . . . . . . . . . . . . . . . . . . 14
4.5.3. Poll-Item-Id . . . . . . . . . . . . . . . . . . . . 16 5.5.2. Poll-Completion . . . . . . . . . . . . . . . . . . . 15
4.5.4. Poll-Mode . . . . . . . . . . . . . . . . . . . . . . 17 5.5.3. Poll-Item-Id . . . . . . . . . . . . . . . . . . . . 16
4.5.5. Poll-properties . . . . . . . . . . . . . . . . . . . 18 5.5.4. Poll-Mode . . . . . . . . . . . . . . . . . . . . . . 17
4.5.6. Poll-Winner . . . . . . . . . . . . . . . . . . . . . 18 5.5.5. Poll-properties . . . . . . . . . . . . . . . . . . . 17
4.5.7. Reply-URL . . . . . . . . . . . . . . . . . . . . . . 19 5.5.6. Poll-Winner . . . . . . . . . . . . . . . . . . . . . 18
4.5.8. Response . . . . . . . . . . . . . . . . . . . . . . 20 5.5.7. Reply-URL . . . . . . . . . . . . . . . . . . . . . . 19
4.6. New Components . . . . . . . . . . . . . . . . . . . . . 20 5.5.8. Response . . . . . . . . . . . . . . . . . . . . . . 19
4.6.1. VPOLL Component . . . . . . . . . . . . . . . . . . . 20 5.6. New Components . . . . . . . . . . . . . . . . . . . . . 20
4.6.2. VOTE Component . . . . . . . . . . . . . . . . . . . 23 5.6.1. VPOLL Component . . . . . . . . . . . . . . . . . . . 20
5. Poll Modes . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.6.2. VOTE Component . . . . . . . . . . . . . . . . . . . 22
5.1. POLL-MODE:BASIC . . . . . . . . . . . . . . . . . . . . . 25 6. Poll Modes . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1.1. Property restrictions . . . . . . . . . . . . . . . . 25 6.1. POLL-MODE:BASIC . . . . . . . . . . . . . . . . . . . . . 24
5.1.2. Outcome reporting . . . . . . . . . . . . . . . . . . 25 6.1.1. Property restrictions . . . . . . . . . . . . . . . . 24
6. iTIP Extensions . . . . . . . . . . . . . . . . . . . . . . . 25 6.1.2. Outcome reporting . . . . . . . . . . . . . . . . . . 24
6.1. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 25 7. iTIP Extensions . . . . . . . . . . . . . . . . . . . . . . . 24
6.2. Interoperability Models . . . . . . . . . . . . . . . . . 26 7.1. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2.1. Delegation . . . . . . . . . . . . . . . . . . . . . 26 7.2. Interoperability Models . . . . . . . . . . . . . . . . . 26
6.2.2. Acting on Behalf of Other Calendar Users . . . . . . 27 7.2.1. Delegation . . . . . . . . . . . . . . . . . . . . . 26
6.2.3. Component Revisions . . . . . . . . . . . . . . . . . 27 7.2.2. Acting on Behalf of Other Calendar Users . . . . . . 26
6.2.4. Message Sequencing . . . . . . . . . . . . . . . . . 27 7.2.3. Component Revisions . . . . . . . . . . . . . . . . . 26
6.3. Application Protocol Elements . . . . . . . . . . . . . . 27 7.2.4. Message Sequencing . . . . . . . . . . . . . . . . . 26
6.3.1. Methods for VPOLL Calendar Components . . . . . . . . 27 7.3. Application Protocol Elements . . . . . . . . . . . . . . 26
6.3.2. Method: PUBLISH . . . . . . . . . . . . . . . . . . . 28 7.3.1. Methods for VPOLL Calendar Components . . . . . . . . 26
6.3.3. Method: REQUEST . . . . . . . . . . . . . . . . . . . 30 7.3.2. Method: PUBLISH . . . . . . . . . . . . . . . . . . . 28
6.3.3.1. Rescheduling a poll . . . . . . . . . . . . . . . 32 7.3.3. Method: REQUEST . . . . . . . . . . . . . . . . . . . 31
6.3.3.2. Updating or Reconfirmation of a Poll . . . . . . 32 7.3.4. Method: REPLY . . . . . . . . . . . . . . . . . . . . 37
6.3.3.3. Confirmation of a Poll . . . . . . . . . . . . . 33 7.3.5. Method: CANCEL . . . . . . . . . . . . . . . . . . . 40
6.3.3.4. Closing a Poll . . . . . . . . . . . . . . . . . 33 7.3.6. Method: REFRESH . . . . . . . . . . . . . . . . . . . 43
6.3.3.5. Delegating a Poll to Another CU . . . . . . . . . 33 7.3.7. Method: POLLSTATUS . . . . . . . . . . . . . . . . . 45
6.3.3.6. Changing the Organizer . . . . . . . . . . . . . 34 8. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 47
6.3.3.7. Sending on Behalf of the Organizer . . . . . . . 34 8.1. Calendar Collection Properties . . . . . . . . . . . . . 47
6.3.3.8. Forwarding to an Uninvited CU . . . . . . . . . . 34 8.1.1. CALDAV:supported-vpoll-component-sets . . . . . . . . 47
6.3.3.9. Updating Voter Status . . . . . . . . . . . . . . 35 8.1.2. CALDAV:vpoll-max-items . . . . . . . . . . . . . . . 49
6.3.4. Method: REPLY . . . . . . . . . . . . . . . . . . . . 35 8.1.3. CALDAV:vpoll-max-active . . . . . . . . . . . . . . . 50
6.3.5. Method: CANCEL . . . . . . . . . . . . . . . . . . . 37 8.1.4. CALDAV:vpoll-max-voters . . . . . . . . . . . . . . . 51
6.3.6. Method: REFRESH . . . . . . . . . . . . . . . . . . . 39 8.1.5. CalDAV:even-more-properties . . . . . . . . . . . . . 51
6.3.7. Method: POLLSTATUS . . . . . . . . . . . . . . . . . 40 8.1.6. Extensions to CalDAV scheduling . . . . . . . . . . . 51
7. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 42 8.2. Additional Preconditions for PUT, COPY, and MOVE . . . . 52
7.1. Calendar Collection Properties . . . . . . . . . . . . . 42 8.3. CalDAV:calendar-query Report . . . . . . . . . . . . . . 52
7.1.1. CALDAV:supported-vpoll-component-sets . . . . . . . . 42 8.3.1. Example: Partial Retrieval of VPOLL . . . . . . . . . 53
7.1.2. CALDAV:vpoll-max-items . . . . . . . . . . . . . . . 43 8.4. CalDAV time ranges . . . . . . . . . . . . . . . . . . . 55
7.1.3. CALDAV:vpoll-max-active . . . . . . . . . . . . . . . 44 9. Security Considerations . . . . . . . . . . . . . . . . . . . 56
7.1.4. CALDAV:vpoll-max-voters . . . . . . . . . . . . . . . 45 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56
7.1.5. CalDAV:even-more-properties . . . . . . . . . . . . . 46 10.1. Parameter Registrations . . . . . . . . . . . . . . . . 57
7.1.6. Extensions to CalDAV scheduling . . . . . . . . . . . 46 10.2. Property Registrations . . . . . . . . . . . . . . . . . 57
7.2. Additional Preconditions for PUT, COPY, and MOVE . . . . 46 10.3. POLL-MODE Registration Template . . . . . . . . . . . . 57
7.3. CalDAV:calendar-query Report . . . . . . . . . . . . . . 47 10.4. POLL-MODE Registrations . . . . . . . . . . . . . . . . 58
7.3.1. Example: Partial Retrieval of VPOLL . . . . . . . . . 47 11. Normative references . . . . . . . . . . . . . . . . . . . . 58
7.4. CalDAV time ranges . . . . . . . . . . . . . . . . . . . 49 Appendix A. Open issues . . . . . . . . . . . . . . . . . . . . 59
8. Security Considerations . . . . . . . . . . . . . . . . . . . 50 Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 60
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 61
9.1. Parameter Registrations . . . . . . . . . . . . . . . . . 51
9.2. Property Registrations . . . . . . . . . . . . . . . . . 51
9.3. POLL-MODE Registration Template . . . . . . . . . . . . . 51
9.4. POLL-MODE Registrations . . . . . . . . . . . . . . . . . 51
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 52
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 52
11.1. Normative References . . . . . . . . . . . . . . . . . . 52
11.2. Informative References . . . . . . . . . . . . . . . . . 53
Appendix A. Open issues . . . . . . . . . . . . . . . . . . . . 53
Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 55
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56
1. Introduction 1. Acknowledgements
The authors would like to thank the members of the Calendaring and
Scheduling Consortium (CalConnect) for contributing their ideas and
support.
2. Introduction
The currently existing approach to agreeing on meeting times using The currently existing approach to agreeing on meeting times using
iTip [RFC5546] and/or iMip [RFC6047] has some significant failings. iTip [RFC5546] and/or iMip [RFC6047] has some significant failings.
There is no useful bargaining or suggestion mechanism in iTip, only There is no useful bargaining or suggestion mechanism in iTip, only
the ability for a potential attendee to accept or refuse or to the ability for a potential attendee to accept or refuse or to
counter with a time of their own choosing. counter with a time of their own choosing.
Part of the problem is that for many potential attendees, their Part of the problem is that for many potential attendees, their
freebusy is not an accurate representation of their availability. In freebusy is not an accurate representation of their availability. In
fact, when trying to schedule conference calls across different fact, when trying to schedule conference calls across different
skipping to change at page 4, line 36 skipping to change at page 4, line 27
schedules to make themselves available for a popular choice. schedules to make themselves available for a popular choice.
The component and properties defined in this specification provide a The component and properties defined in this specification provide a
standardized structure for this process and allow calendar clients standardized structure for this process and allow calendar clients
and servers and web based services to interact. and servers and web based services to interact.
These structures also have uses beyond the relatively simple needs of These structures also have uses beyond the relatively simple needs of
most meeting organizers. The process of coming to consensus can also most meeting organizers. The process of coming to consensus can also
be viewed as a bidding process. be viewed as a bidding process.
2. Terms and definitions 3. Terms and definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
[RFC2119].
Additionally the following terms are used: For the purposes of this document, the following terms and
definitions apply.
2.1. consensus scheduling 3.1. consensus scheduling
The process whereby users come to some agreement on meeting or task The process whereby users come to some agreement on meeting or task
alternatives and then book that meeting or task. alternatives and then book that meeting or task.
2.2. active Vpoll 3.2. active Vpoll
A VPoll may have a DTSTART, DTEND and DURATION which may define the A VPoll may have a DTSTART, DTEND and DURATION which may define the
start and end of the active voting period start and end of the active voting period
2.3. voter 3.3. voter
A participant who votes on the alternatives. A voter need not be an A participant who votes on the alternatives. A voter need not be an
attendee of any of the alternatives presented. attendee of any of the alternatives presented.
3. Simple Consensus Scheduling 4. Simple Consensus Scheduling
This specification defines components and properties which can be This specification defines components and properties which can be
used for simple consensus scheduling but also have the generality to used for simple consensus scheduling but also have the generality to
handle more complex cases. To provide an easy (and for many - handle more complex cases. To provide an easy (and for many a
sufficient) introduction to consensus scheduling and VPOLL we will sufficient) introduction to consensus scheduling and VPOLL we will
outline the flow of information for the simple case of voting on a outline the flow of information for the simple case of voting on a
number of meeting alternatives which differ only in time. In number of meeting alternatives which differ only in time of the
addition the voters will all be potential attendees. meeting. In addition the voters will all be potential attendees.
This specification not only defines data structures but adds a new This specification not only defines data structures but adds new iTip
iTip method used when consensus has been reached. This document will methods, one used when consensus has been reached and one to
show how a VPOLL object is used to inform voters of the state of a distribute the current status of the poll.
simple vote on some alternatives.
3.1. The VPOLL Component: An Overview This document will show how a VPOLL object is used to inform voters
of the state of a simple vote on some alternatives.
4.1. The VPOLL Component: An Overview
The VPOLL component acts as a wrapper for a number of alternatives to The VPOLL component acts as a wrapper for a number of alternatives to
be voted on, together with some properties and a new component used be voted on, together with some properties and a new component used
to maintain the state of the voting. For our simple example the to maintain the state of the voting. For our simple example the
following VPOLL properties and sub-components are either required or following VPOLL properties and sub-components are either required or
appropriate: appropriate:
DTSTAMP DTSTAMP The usual [RFC5545] property.
The usual [RFC5545] property.
SEQUENCE SEQUENCE The usual [RFC5545] property. See below for SEQUENCE
The usual [RFC5545] property. See below for SEQUENCE behavior. behavior.
UID UID The usual [RFC5545] property.
The usual [RFC5545] property.
ORGANIZER ORGANIZER The usual [RFC5545] property. In general this need not be
The usual [RFC5545] property. In general this need not be an an organizer of any of the alternatives. In this simple outline
organizer of any of the alternatives. In this simple outline we we assume it is the same.
assume it is the same.
SUMMARY SUMMARY The usual [RFC5545] property. This optional but recommended
The usual [RFC5545] property. This optional but recommended
property provides the a short title to the poll. property provides the a short title to the poll.
DESCRIPTION DESCRIPTION The usual [RFC5545] property. This optional property
The usual [RFC5545] property. This optional property provides provides more details.
more details.
DTEND DTEND The usual [RFC5545] property. This optional property provides
The usual [RFC5545] property. This optional property provides a a poll closing time and date after which the VPOLL is no longer
poll closing time and date after which the VPOLL is no longer
active. active.
POLL-MODE POLL-MODE A new property which defines how the votes are used to
A new property which defines how the votes are used to obtain a obtain a result. For our use case it will take the value "BASIC"
result. For our use case it will take the value "BASIC" meaning meaning one event will be chosen from the alternatives.
one event will be chosen from the alternatives.
POLL-COMPLETION POLL-COMPLETION A new property which defines who (server or client)
A new property which defines who (server or client) chooses and/or chooses and/or submits the winning choice. In our example the
submits the winning choice. In our example the value is "SERVER- value is "SERVER-SUBMIT" which means the client chooses the winner
SUBMIT" which means the client chooses the winner but the server but the server will submit the winning choice.
will submit the winning choice.
POLL-PROPERTIES POLL-PROPERTIES A new property which defines which icalendar
A new property which defines which icalendar properties are being properties are being voted on. For our use case it will take the
voted on. For our use case it will take the value "DTSTART, value "DTSTART, LOCATION" meaning only those properties are
LOCATION" meaning only those properties are significant for significant for voting. Other properties in the events may differ
voting. Other properties in the events may differ but are not but are not considered significant for the voting process.
considered significant for the voting process.
PARTICIPANT PARTICIPANT There is one of these components for each voter with the
There is one of these components for each voter with the
PARTICIPANT-TYPE set to "VOTER". The CALENDAR-ADDRESS property PARTICIPANT-TYPE set to "VOTER". The CALENDAR-ADDRESS property
identifies the voter and this component will contain one VOTE identifies the voter and this component will contain one VOTE
component for each item being voted on. component for each item being voted on.
VOTE VOTE A new component. There is one of these for each voter and
A new component. There is one of these for each voter and choice. choice. It usually contains at least a POLL-ITEM-ID property to
It usually contains at least a POLL-ITEM-ID property to identify identify the choice and a RESPONSE property to provide a vote.
the choice and a RESPONSE property to provide a vote. For more For more complex poll modes it may contain other information such
complex poll modes it may contain other information such as cost as cost or estimated duration.
or estimated duration.
VEVENT VEVENT In our simple use case there will be multiple VEVENT sub-
In our simple use case there will be multiple VEVENT sub-
components defining the alternatives. Each will have a different components defining the alternatives. Each will have a different
date and or time for the meeting. date and or time for the meeting.
EXAMPLE
VPOLL with 3 voters and 3 alternative meetings: VPOLL with 3 voters and 3 alternative meetings:
BEGIN:VCALENDAR BEGIN:VCALENDAR
VERSION:2.0 VERSION:2.0
PRODID:-//Example//Example PRODID:-//Example//Example
METHOD:REQUEST METHOD:REQUEST
BEGIN:VPOLL BEGIN:VPOLL
POLL-MODE:BASIC POLL-MODE:BASIC
POLL-COMPLETION:SERVER-SUBMIT POLL-COMPLETION:SERVER-SUBMIT
POLL-PROPERTIES:DTSTART,LOCATION POLL-PROPERTIES:DTSTART,LOCATION
skipping to change at page 7, line 41 skipping to change at page 7, line 39
END PARTICIPANT END PARTICIPANT
BEGIN:VEVENT.......(with a poll-item-id=1) BEGIN:VEVENT.......(with a poll-item-id=1)
END:VEVENT END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=2) BEGIN:VEVENT.......(with a poll-item-id=2)
END:VEVENT END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=3) BEGIN:VEVENT.......(with a poll-item-id=3)
END:VEVENT END:VEVENT
END:VPOLL END:VPOLL
END:VCALENDAR END:VCALENDAR
Figure 1
As can be seen in the example above, there is an iTip METHOD property As can be seen in the example above, there is an iTip METHOD property
with the value REQUEST. The VPOLL object will be distributed to all with the value REQUEST. The VPOLL object will be distributed to all
the voters, either through iMip or through some VPOLL enabled the voters, either through iMip or through some VPOLL enabled
service. service.
3.2. The VPOLL Alternative Choices: An Overview 4.2. The VPOLL Alternative Choices: An Overview
Within the VPOLL component we have the alternatives to vote on. In Within the VPOLL component we have the alternatives to vote on. In
many respects these are standard [RFC5545] components. For our many respects these are standard [RFC5545] components. For our
simple use case they are all VEVENT components. In addition to the simple use case they are all VEVENT components. In addition to the
usual [RFC5545] properties some extra properties are used for a usual [RFC5545] properties some extra properties are used for a
VPOLL. VPOLL.
POLL-ITEM-ID POLL-ITEM-ID This provides a unique reference to the sub-component
This provides a unique reference to the sub-component within the within the VPOLL. It's value SHOULD be a small integer.
VPOLL. It's value SHOULD be a small integer.
3.3. VPOLL responses 4.3. VPOLL responses
Upon receipt of a VPOLL REQUEST the voter will reply with a VPOLL Upon receipt of a VPOLL REQUEST the voter will reply with a VPOLL
component containing their vote. In our simple case it will have the component containing their vote. In our simple case it will have the
following properties and components: following properties and components:
DTSTAMP DTSTAMP The usual [RFC5545] property.
The usual [RFC5545] property.
SEQUENCE SEQUENCE The usual [RFC5545] property. See below for SEQUENCE
The usual [RFC5545] property. See below for SEQUENCE behavior. behavior.
UID UID Same as the request.
Same as the request.
ORGANIZER ORGANIZER Same as the request.
Same as the request.
SUMMARY SUMMARY Same as the request.
Same as the request.
PARTICIPANT PARTICIPANT One only with a CALENDAR-ADDRESS identifying the voter
One only with a CALENDAR-ADDRESS identifying the voter replying. replying.
VOTE VOTE One per item being voted on.
One per item being voted on.
POLL-ITEM-ID POLL-ITEM-ID One inside each VOTE component to identify the choice.
One inside each VOTE component to identify the choice.
RESPONSE RESPONSE One inside each VOTE component to specify the vote.
One inside each VOTE component to specify the vote.
Note that a voter can send a number of REPLYs for each REQUEST sent Note that a voter can send a number of REPLYs for each REQUEST sent
by the organizer. Each REPLY completely replaces the voting record by the organizer. Each REPLY completely replaces the voting record
for that voter for all components being voted on. In our example, if for that voter for all components being voted on. In our example, if
Eric responds and votes for items 1 and 2 and then responds again Eric responds and votes for items 1 and 2 and then responds again
with a vote for only item 3, the final outcome is one vote on item 3. with a vote for only item 3, the final outcome is one vote on item 3.
NOTE NOTE This is poll-mode specific behavior?
This is poll-mode specific behavior?
EXAMPLE
REPLY VPOLL from Cyrus: REPLY VPOLL from Cyrus:
BEGIN:VCALENDAR BEGIN:VCALENDAR
VERSION:2.0 VERSION:2.0
PRODID:-//Example//Example PRODID:-//Example//Example
METHOD: REPLY METHOD: REPLY
BEGIN:VPOLL BEGIN:VPOLL
ORGANIZER:mailto:mike@example.com ORGANIZER:mailto:mike@example.com
UID:sched01-1234567890 UID:sched01-1234567890
skipping to change at page 9, line 37 skipping to change at page 9, line 35
COMMENT:Work on WebDAV COMMENT:Work on WebDAV
END:VOTE END:VOTE
BEGIN:VOTE BEGIN:VOTE
POLL-ITEM-ID:3 POLL-ITEM-ID:3
RESPONSE:0 RESPONSE:0
END:VOTE END:VOTE
END:PARTICIPANT END:PARTICIPANT
END:VPOLL END:VPOLL
END:VCALENDAR END:VCALENDAR
3.4. VPOLL updates Figure 2
4.4. VPOLL updates
When the organizer receives a response from one or more voters the When the organizer receives a response from one or more voters the
current state of the poll is sent to all voters. The new iTip method current state of the poll is sent to all voters. The new iTip method
POLLSTATUS is used. The VPOLL can contain a reduced set of POLLSTATUS is used. The VPOLL can contain a reduced set of
properties but MUST contain DTSTAMP, SEQUENCE (if not 0), UID, properties but MUST contain DTSTAMP, SEQUENCE (if not 0), UID,
ORGANIZER and one or more PARTICIPANT components each populated with ORGANIZER and one or more PARTICIPANT components each populated with
zero or more VOTE components. zero or more VOTE components.
EXAMPLE
BEGIN:VCALENDAR BEGIN:VCALENDAR
VERSION:2.0 VERSION:2.0
PRODID:-//Example//Example PRODID:-//Example//Example
METHOD: POLLSTATUS METHOD: POLLSTATUS
BEGIN:VPOLL BEGIN:VPOLL
ORGANIZER:mailto:mike@example.com ORGANIZER:mailto:mike@example.com
UID:sched01-1234567890 UID:sched01-1234567890
DTSTAMP:20120101T020000Z DTSTAMP:20120101T020000Z
SEQUENCE:0 SEQUENCE:0
SUMMARY:What to do this week SUMMARY:What to do this week
skipping to change at page 11, line 5 skipping to change at page 10, line 51
RESPONSE:100 RESPONSE:100
END:VOTE END:VOTE
BEGIN:VOTE BEGIN:VOTE
POLL-ITEM-ID:3 POLL-ITEM-ID:3
RESPONSE:0 RESPONSE:0
END:VOTE END:VOTE
END:PARTICIPANT END:PARTICIPANT
END:VPOLL END:VPOLL
END:VCALENDAR END:VCALENDAR
3.5. VPOLL Completion Figure 3
4.5. VPOLL Completion
After a number of REPLY messages have been received the poll will be After a number of REPLY messages have been received the poll will be
considered complete. If there is a DTEND on the poll the system may considered complete. If there is a DTEND on the poll the system may
automatically close the poll, or the organizer may, at any time, automatically close the poll, or the organizer may, at any time,
consider the poll complete. A VPOLL can be completed (and consider the poll complete. A VPOLL can be completed (and
effectively closed for voting) by sending an iTip REQUEST message effectively closed for voting) by sending an iTip REQUEST message
with the VPOLL STATUS property set to COMPLETED. with the VPOLL STATUS property set to COMPLETED.
The poll winner is confirmed by sending a final iTip REQUEST message The poll winner is confirmed by sending a final iTip REQUEST message
with the VPOLL STATUS property set to CONFIRMED. In this case the with the VPOLL STATUS property set to CONFIRMED. In this case the
VPOLL component contains all the events being voted on along with a VPOLL component contains all the events being voted on along with a
POLL-WINNER property to identify the winning event. As the POLL- POLL-WINNER property to identify the winning event. As the POLL-
COMPLETION property is set to SERVER-SUBMIT the server will submit COMPLETION property is set to SERVER-SUBMIT the server will submit
the winning choice and when it has done so set the STATUS to the winning choice and when it has done so set the STATUS to
"SUBMITTED". "SUBMITTED".
EXAMPLE
VPOLL confirmation: VPOLL confirmation:
BEGIN:VCALENDAR BEGIN:VCALENDAR
VERSION:2.0 VERSION:2.0
PRODID:-//Example//Example PRODID:-//Example//Example
METHOD: REQUEST METHOD: REQUEST
BEGIN:VPOLL BEGIN:VPOLL
ORGANIZER:mailto:douglm@example.com ORGANIZER:mailto:douglm@example.com
UID:sched01-1234567890 UID:sched01-1234567890
DTSTAMP:20120101T030000Z DTSTAMP:20120101T030000Z
skipping to change at page 11, line 47 skipping to change at page 11, line 49
POLL-WINNER:3 POLL-WINNER:3
BEGIN:VEVENT.......(with a poll-item-id=1) BEGIN:VEVENT.......(with a poll-item-id=1)
END:VEVENT END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=2) BEGIN:VEVENT.......(with a poll-item-id=2)
END:VEVENT END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=3) BEGIN:VEVENT.......(with a poll-item-id=3)
END:VEVENT END:VEVENT
END:VPOLL END:VPOLL
END:VCALENDAR END:VCALENDAR
3.6. Other Responses Figure 4
4.6. Other Responses
A voter being asked to choose between a number of ORGANIZER supplied A voter being asked to choose between a number of ORGANIZER supplied
alternatives may find none of them acceptable or may simply not care. alternatives may find none of them acceptable or may simply not care.
An alternative response, which may be disallowed by the ORGANIZER, is An alternative response, which may be disallowed by the ORGANIZER, is
to send back the respondees availability or freebusy or even one or to send back the respondees availability or freebusy or even one or
more new, alternative choices. more new, alternative choices.
This is accomplished by responding with a VOTE component which has no This is accomplished by responding with a VOTE component which has no
POLL-ITEM-ID property. In this case it MUST contain some alternative POLL-ITEM-ID property. In this case it MUST contain some alternative
information. What form this takes depends on the poll mode in information. What form this takes depends on the poll mode in
effect. effect.
4. iCalendar Extensions 5. iCalendar Extensions
4.1. Updated Participant Type Value 5.1. Updated Participant Type Value
Participant type property values are defined in section 11.2.1. of Participant type property values are defined in section 11.2.1. of
[I-D.draft-ietf-calext-eventpub-extensions]. This specification [I-D.ietf-calext-eventpub-extensions]. This specification updates
updates that type to include the new participant type VOTER to that type to include the new participant type VOTER to provide
provide information about the voter and to contain their votes. information about the voter and to contain their votes.
Format Definition Format Definition This property parameter is redefined by the
This property parameter is redefined by the following notation: following notation:
partvalue /= "VOTER" partvalue /= "VOTER"
Description Figure 5
The new property value indicates that the associated PARTICIPANT
component identifies a voter in a VPOLL.
4.2. Updated Relation Type Value Description The new property value indicates that the associated
PARTICIPANT component identifies a voter in a VPOLL.
5.2. Updated Relation Type Value
Relationship parameter type values are defined in section 3.2.15. of Relationship parameter type values are defined in section 3.2.15. of
[RFC5545]. This specification updates that type to include the new [RFC5545]. This specification updates that type to include the new
relationship value POLL to provide a link to the VPOLL component in relationship value POLL to provide a link to the VPOLL component in
which the current component appears. which the current component appears.
Format Definition Format Definition This property parameter is redefined by the
This property parameter is redefined by the following notation: following notation:
reltypeparam /= "RELTYPE" "=" "POLL" reltypeparam /= "RELTYPE" "=" "POLL"
; Property value is a VPOLL uid ; Property value is a VPOLL uid
Description Figure 6
This parameter can be specified on a property that references
another related calendar component. The new parameter value Description This parameter can be specified on a property that
indicates that the associated property references a VPOLL references another related calendar component. The new parameter
value indicates that the associated property references a VPOLL
component which contains the current component. component which contains the current component.
4.3. Updated Status Value 5.3. Updated Status Value
Status property values are defined in section 3.8.1.11. of [RFC5545]. Status property values are defined in section 3.8.1.11. of [RFC5545].
This specification updates that type to define valid VPOLL status This specification updates that type to define valid VPOLL status
values. values.
Format Definition Format Definition This property parameter is redefined by the
This property parameter is redefined by the following notation: following notation:
statvalue /= statvalue-poll statvalue /= statvalue-poll
; Status values for "VPOLL". ; Status values for "VPOLL".
statvalue-poll = "IN-PROCESS" statvalue-poll = "IN-PROCESS"
/ "COMPLETED" ; Poll has closed, / "COMPLETED" ; Poll has closed,
; nothing has been chosen yet ; nothing has been chosen yet
/ "CONFIRMED" ; Poll has closed and / "CONFIRMED" ; Poll has closed and
; winning items confirmed ; winning items confirmed
/ "SUBMITTED" ; The winning item has been / "SUBMITTED" ; The winning item has been
; submitted ; submitted
/ "CANCELLED" / "CANCELLED"
Description Figure 7
These values allow clients and servers to handle the choosing and
submission of winning choices.
If the client is choosing and the server submitting then the Description These values allow clients and servers to handle the
client should set the POLL-WINNER property, set the status to choosing and submission of winning choices.
CONFIRMED and save the poll. When the server submits the winning
choice it will set the status to SUBMITTED.
4.4. New Property Parameters If the client is choosing and the server submitting then the
client should set the POLL-WINNER property, set the status to
CONFIRMED and save the poll. When the server submits the winning
choice it will set the status to SUBMITTED.
4.4.1. Required Figure 8
Parameter name 5.4. New Property Parameters
REQUIRED
Purpose 5.4.1. Required
To specify whether the associated property is required in the
current context.
Format Definition Parameter name REQUIRED
This parameter is defined by the following notation:
Purpose To specify whether the associated property is required in
the current context.
Format Definition This parameter is defined by the following
notation:
requirededparam = "REQUIRED" "=" ("TRUE" / "FALSE") requirededparam = "REQUIRED" "=" ("TRUE" / "FALSE")
; Default is FALSE ; Default is FALSE
Description Figure 9
This parameter MAY be specified on REPLY-URL and, if the value is
TRUE, indicates the organizer requires all replies to be made via
the specified service rather than iTip replies.
4.4.2. Stay-Informed Description This parameter MAY be specified on REPLY-URL and, if the
value is TRUE, indicates the organizer requires all replies to be
made via the specified service rather than iTip replies.
Parameter name 5.4.2. Stay-Informed
STAY-INFORMED
Purpose Parameter name STAY-INFORMED
To specify the voter also wants to be added as an ATTENDEE when
the poll is confirmed.
Format Definition Purpose To specify the voter also wants to be added as an ATTENDEE
This parameter is defined by the following notation: when the poll is confirmed.
Format Definition This parameter is defined by the following
notation:
stayinformedparam = "STAY-INFORMED" "=" ("TRUE" / "FALSE") stayinformedparam = "STAY-INFORMED" "=" ("TRUE" / "FALSE")
; Default is FALSE ; Default is FALSE
Description Figure 10
This parameter MAY be specified on the CALENDAR-ADDRESS property
in the PARTICIPANT component and, if the value is TRUE, indicates
the voter wishes to be added to the final choice as a non
participant.
4.5. New Properties Description This parameter MAY be specified on the CALENDAR-ADDRESS
property in the PARTICIPANT component and, if the value is TRUE,
indicates the voter wishes to be added to the final choice as a
non participant.
4.5.1. Accept-Response 5.5. New Properties
Property name 5.5.1. Accept-Response
ACCEPT-RESPONSE
Purpose Property name ACCEPT-RESPONSE
This property is used in VPOLL to indicate the types of component
that may be supplied in a response.
Property Parameters Purpose This property is used in VPOLL to indicate the types of
Non-standard or iana parameters can be specified on this property. component that may be supplied in a response.
Conformance Property Parameters Non-standard or iana parameters can be specified
This property MAY be specified in a VPOLL component. on this property.
Description Conformance This property MAY be specified in a VPOLL component.
When used in a VPOLL this property indicates what allowable
component types may be returned in a reply. Typically this would Description When used in a VPOLL this property indicates what
allow a voter to respond with their freebusy or availability allowable component types may be returned in a reply. Typically
rather than choosing one of the presented alternatives. this would allow a voter to respond with their freebusy or
availability rather than choosing one of the presented
alternatives.
If this property is not present voters are only allowed to respond If this property is not present voters are only allowed to respond
to the choices in the request. to the choices in the request.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
acceptresponse = "ACCEPT-RESPONSE" acceptresponseparams ":" acceptresponse = "ACCEPT-RESPONSE" acceptresponseparams ":"
iana-token ("," iana-token) CRLF iana-token ("," iana-token) CRLF
acceptresponseparams = *(";" other-param) acceptresponseparams = *(";" other-param)
4.5.2. Poll-Completion Figure 11
Property name 5.5.2. Poll-Completion
POLL-COMPLETION
Purpose Property name POLL-COMPLETION
This property is used in VPOLL to indicate whether the client or
server is responsible for choosing and/or submitting the Purpose This property is used in VPOLL to indicate whether the
client or server is responsible for choosing and/or submitting the
winner(s). winner(s).
Description Description When a VPOLL is stored on a server which is capable of
When a VPOLL is stored on a server which is capable of handling handling choosing and submission of winning choices a value of
choosing and submission of winning choices a value of SERVER SERVER indicates that the server should close the poll, choose the
indicates that the server should close the poll, choose the winner winner and submit whenever it is appropriate to do so.
and submit whenever it is appropriate to do so.
For example, in BASIC poll-mode, reaching the DTEND of the poll For example, in BASIC poll-mode, reaching the DTEND of the poll
could trigger this server side action. could trigger this server side action.
Server initiated submission requires that the submitted choice Server initiated submission requires that the submitted choice
MUST be a valid calendaring component. MUST be a valid calendaring component.
POLL-COMPLETION=SERVER-SUBMIT allows the client to set the poll- POLL-COMPLETION=SERVER-SUBMIT allows the client to set the poll-
winner, set the status to CONFIRMED and then store the poll on the winner, set the status to CONFIRMED and then store the poll on the
server. The server will then submit the winning choice and set server. The server will then submit the winning choice and set
the status to SUBMITTED. the status to SUBMITTED.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
poll-completion = "POLL-COMPLETION" pcparam ":" pcvalue CRLF poll-completion = "POLL-COMPLETION" pcparam ":" pcvalue CRLF
pcparam = *(";" other-param) pcparam = *(";" other-param)
pcvalue = "SERVER" ; The server is responsible for both choosing and pcvalue = "SERVER" ; The server is responsible for both choosing and
; submitting the winner(s) ; submitting the winner(s)
/ "SERVER-SUBMIT" ; The server is responsible for / "SERVER-SUBMIT" ; The server is responsible for
; submitting the winner(s). The client chooses. ; submitting the winner(s). The client chooses.
/ "SERVER-CHOICE" ; The server is responsible for / "SERVER-CHOICE" ; The server is responsible for
; choosing the winner(s). The client will submit. ; choosing the winner(s). The client will submit.
/ "CLIENT" ; The client is responsible for both choosing and / "CLIENT" ; The client is responsible for both choosing and
; submitting the winner(s) ; submitting the winner(s)
/ iana-token / iana-token
/ x-name / x-name
;Default is CLIENT ;Default is CLIENT
Example Figure 12
The following is an example of this property:
Example The following is an example of this property:
POLL-COMPLETION: SERVER-SUBMIT POLL-COMPLETION: SERVER-SUBMIT
4.5.3. Poll-Item-Id Figure 13
Property name 5.5.3. Poll-Item-Id
POLL-ITEM-ID
Purpose Property name POLL-ITEM-ID
This property is used in VPOLL child components as an identifier.
Value type Purpose This property is used in VPOLL child components as an
INTEGER identifier.
Property Parameters Value type INTEGER
Non-standard parameters can be specified on this property.
Conformance Property Parameters Non-standard parameters can be specified on this
This property MUST be specified in a VOTE component and in VPOLL property.
choice items.
Description Conformance This property MUST be specified in a VOTE component and
In a METHOD:REQUEST each choice component MUST have a POLL-ITEM-ID in VPOLL choice items.
property. Each set of components with the same POLL- ITEM-ID
value represents one overall set of items to be voted on. Description In a METHOD:REQUEST each choice component MUST have a
POLL-ITEM-ID property. Each set of components with the same POLL-
ITEM-ID value represents one overall set of items to be voted on.
POLL-ITEM-ID SHOULD be a unique small integer for each component POLL-ITEM-ID SHOULD be a unique small integer for each component
or set of components. If it remains the same between REQUESTs or set of components. If it remains the same between REQUESTs
then the previous response for that component MAY be re-used. To then the previous response for that component MAY be re-used. To
force a re-vote on a component due to a significant change, the force a re-vote on a component due to a significant change, the
POLL-ITEM-ID MUST change. POLL-ITEM-ID MUST change.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
pollitemid = "POLL-ITEM-ID" pollitemdparams ":" pollitemid = "POLL-ITEM-ID" pollitemdparams ":"
integer CRLF integer CRLF
pollitemidparams = *( pollitemidparams = *(
(";" other-param) (";" other-param)
) )
4.5.4. Poll-Mode Figure 14
Property name 5.5.4. Poll-Mode
POLL-MODE
Purpose Property name POLL-MODE
This property is used in VPOLL to indicate what voting mode is to
be applied.
Property Parameters Purpose This property is used in VPOLL to indicate what voting mode
Non-standard or iana parameters can be specified on this property. is to be applied.
Conformance Property Parameters Non-standard or iana parameters can be specified
This property MAY be specified in a VPOLL component or its sub- on this property.
components.
Description Conformance This property MAY be specified in a VPOLL component or
The poll mode defines how the votes are applied to obtain a its sub-components.
result. BASIC mode, the default, means that the voters are
selecting one component (or group of components) with a given Description The poll mode defines how the votes are applied to
obtain a result. BASIC mode, the default, means that the voters
are selecting one component (or group of components) with a given
POLL=ITEM-ID. POLL=ITEM-ID.
Other polling modes may be defined in updates to this Other polling modes may be defined in updates to this
specification. These may allow for such modes as ranking or task specification. These may allow for such modes as ranking or task
assignment. assignment.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
pollmode = "POLL-MODE" pollmodeparams ":" pollmode = "POLL-MODE" pollmodeparams ":"
("BASIC" / iana-token / other-token) CRLF ("BASIC" / iana-token / other-token) CRLF
pollmodeparams = *(";" other-param) pollmodeparams = *(";" other-param)
4.5.5. Poll-properties Figure 15
Property name 5.5.5. Poll-properties
POLL-PROPERTIES
Purpose Property name POLL-PROPERTIES
This property is used in VPOLL to define which icalendar Purpose This property is used in VPOLL to define which icalendar
properties are being voted on. properties are being voted on.
Property Parameters Property Parameters Non-standard or iana parameters can be specified
Non-standard or iana parameters can be specified on this property. on this property.
Conformance Conformance This property MAY be specified in a VPOLL component.
This property MAY be specified in a VPOLL component.
Description Description This property defines which icalendar properties are
This property defines which icalendar properties are significant significant in the voting process. It may not be clear to voters
in the voting process. It may not be clear to voters which which properties are varying in a significant manner. Clients may
properties are varying in a significant manner. Clients may use use this property to highlight those listed properties.
this property to highlight those listed properties.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
pollproperties = "POLL-PROPERTIES" pollpropparams ":" pollproperties = "POLL-PROPERTIES" pollpropparams ":"
text *("," text) CRLF text *("," text) CRLF
pollpropparams = *(";" other-param) pollpropparams = *(";" other-param)
4.5.6. Poll-Winner Figure 16
Property name 5.5.6. Poll-Winner
POLL-WINNER
Purpose Property name POLL-WINNER
This property is used in a basic mode VPOLL to indicate which of
the VPOLL sub-components won.
Value type Purpose This property is used in a basic mode VPOLL to indicate
INTEGER which of the VPOLL sub-components won.
Property Parameters Value type INTEGER
Non-standard parameters can be specified on this property.
Conformance Property Parameters Non-standard parameters can be specified on this
This property MAY be specified in a VPOLL component. property.
Description Conformance This property MAY be specified in a VPOLL component.
For poll confirmation each child component MUST have a POLL-ITEM-
ID property. For basic mode the VPOLL component SHOULD have a Description For poll confirmation each child component MUST have a
POLL-WINNER property which MUST correspond to one of the POLL- POLL-ITEM-ID property. For basic mode the VPOLL component SHOULD
ITEM-ID properties and indicates which sub-component was the have a POLL-WINNER property which MUST correspond to one of the
POLL-ITEM-ID properties and indicates which sub-component was the
winner. winner.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
pollwinner = "POLL-WINNER" pollwinnerparams ":" pollwinner = "POLL-WINNER" pollwinnerparams ":"
integer CRLF integer CRLF
pollwinnerparams = *(";" other-param) pollwinnerparams = *(";" other-param)
; Used with a STATUS:CONFIRMED VPOLL to indicate which ; Used with a STATUS:CONFIRMED VPOLL to indicate which
; components have been confirmed ; components have been confirmed
4.5.7. Reply-URL Figure 17
Property name 5.5.7. Reply-URL
REPLY-URL
Purpose Property name REPLY-URL
This property may be used in scheduling messages to indicate
Purpose This property may be used in scheduling messages to indicate
additional reply methods, for example a web-service. additional reply methods, for example a web-service.
Property Parameters Property Parameters Non-standard, required or iana parameters can be
Non-standard, required or iana parameters can be specified on this specified on this property.
property.
Conformance Conformance This property MAY be specified in a VPOLL component.
This property MAY be specified in a VPOLL component.
Description Description When used in a scheduling message this property
When used in a scheduling message this property indicates indicates additional or required services that can be used to
additional or required services that can be used to reply. reply. Typically this would be a web service of some form.
Typically this would be a web service of some form.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF
reply-urlparams = *( reply-urlparams = *(
(";" requiredparam) / (";" requiredparam) /
(";" other-param) (";" other-param)
) )
4.5.8. Response Figure 18
Property name 5.5.8. Response
RESPONSE
Purpose Property name RESPONSE
To specify a response vote.
Value type Purpose To specify a response vote.
INTEGER
Format Definition Value type INTEGER
This property is defined by the following notation:
Format Definition This property is defined by the following
notation:
response = "RESPONSE" response-params ":" integer CRLF response = "RESPONSE" response-params ":" integer CRLF
; integer value 0..100 ; integer value 0..100
responseparams = *(";" other-param) responseparams = *(";" other-param)
Description Figure 19
This parameter can be specified on the POLL-ITEM-ID property to
provide the value of the voters response. This parameter allows Description This parameter can be specified on the POLL-ITEM-ID
for fine grained responses which are appropriate to some property to provide the value of the voters response. This
applications. For the case of individuals voting for a choice of parameter allows for fine grained responses which are appropriate
events, client applications SHOULD conform to the following to some applications. For the case of individuals voting for a
convention: choice of events, client applications SHOULD conform to the
following convention:
* 0 - 39 A "NO vote" * 0 - 39 A "NO vote"
* 40 - 79 A "MAYBE" vote * 40 - 79 A "MAYBE" vote
* 80 - 89 A "YES - but not preferred vote" * 80 - 89 A "YES - but not preferred vote"
* 90-100 A "YES" vote. * 90-100 A "YES" vote.
Clients MUST preserve the response value when there is no Clients MUST preserve the response value when there is no
change from the user even if they have a UI with fixed states change from the user even if they have a UI with fixed states
(e.g. yes/no/maybe). (e.g. yes/no/maybe).
4.6. New Components 5.6. New Components
4.6.1. VPOLL Component 5.6.1. VPOLL Component
Component name Component name VPOLL
VPOLL
Purpose Purpose This component provides a mechanism by which voters can vote
This component provides a mechanism by which voters can vote on on provided choices.
provided choices.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
pollc = "BEGIN" ":" "VPOLL" CRLF pollc = "BEGIN" ":" "VPOLL" CRLF
pollprop pollprop
*participantc *eventc *todoc *journalc *freebusyc *participantc *eventc *todoc *journalc *freebusyc
*availabilityc *alarmc *iana-comp *x-comp *availabilityc *alarmc *iana-comp *x-comp
"END" ":" "VPOLL" CRLF "END" ":" "VPOLL" CRLF
pollprop = *( pollprop = *(
; ;
; The following are REQUIRED, ; The following are REQUIRED,
skipping to change at page 22, line 50 skipping to change at page 21, line 50
; ;
; The following is OPTIONAL, it SHOULD appear ; The following is OPTIONAL, it SHOULD appear
; once for the confirmation of a BASIC mode ; once for the confirmation of a BASIC mode
; VPOLL. Other modes may define differing ; VPOLL. Other modes may define differing
; requirements. ; requirements.
; ;
pollwinner / pollwinner /
; ;
) )
Description Figure 20
This component provides a mechanism by which voters can vote on
provided choices. The outcome depends upon the POLL-MODE in Description This component provides a mechanism by which voters can
effect. vote on provided choices. The outcome depends upon the POLL-MODE
in effect.
The PARTICIPANT components in VPOLL requests provide information The PARTICIPANT components in VPOLL requests provide information
on each recipient who will be voting - both their identity through on each recipient who will be voting - both their identity through
the CALENDAR-ADDRESS property and their votes through the VOTE the CALENDAR-ADDRESS property and their votes through the VOTE
components. components.
If specified, the "DTSTART" property defines the start or opening If specified, the "DTSTART" property defines the start or opening
of the poll active period. If absent the poll is presumed to have of the poll active period. If absent the poll is presumed to have
started when created. started when created.
skipping to change at page 23, line 30 skipping to change at page 22, line 29
"DTEND" MAY be specified with or without "DTSTART" and indicates "DTEND" MAY be specified with or without "DTSTART" and indicates
the ending of the poll. If DTEND is specified it MUST be later the ending of the poll. If DTEND is specified it MUST be later
than the DTSTART or CREATED property. than the DTSTART or CREATED property.
If one or more VALARM components are included in the VPOLL they If one or more VALARM components are included in the VPOLL they
are not components to be voted on and MUST NOT contain a POLL- are not components to be voted on and MUST NOT contain a POLL-
ITEM-ID property. VALARM sub-components may be used to provide ITEM-ID property. VALARM sub-components may be used to provide
warnings to the user when polls are due to start or end. warnings to the user when polls are due to start or end.
TODO: Need some text to describe what relative alarms are relative 5.6.2. VOTE Component
to.
4.6.2. VOTE Component
Component name Component name VOTE
VOTE
Purpose Purpose This component provides a mechanism by which voters can vote
This component provides a mechanism by which voters can vote on on provided choices.
provided choices.
Conformance Conformance This component may be specified zero or more times in a
This component may be specified zero or more times in a
PARTICIPANT component which identifies the voter. PARTICIPANT component which identifies the voter.
Format Definition Format Definition This property is defined by the following
This property is defined by the following notation: notation:
votec = "BEGIN" ":" "VOTE" CRLF votec = "BEGIN" ":" "VOTE" CRLF
voteprop voteprop
*eventc *todoc *journalc *freebusyc *eventc *todoc *journalc *freebusyc
*availabilityc *alarmc *iana-comp *x-comp *availabilityc *alarmc *iana-comp *x-comp
"END" ":" "VOTE" CRLF "END" ":" "VOTE" CRLF
voteprop = *( voteprop = *(
; ;
; The following are REQUIRED, ; The following are REQUIRED,
skipping to change at page 24, line 25 skipping to change at page 23, line 25
; ;
pollitemid / response / pollitemid / response /
; ;
; The following are OPTIONAL, ; The following are OPTIONAL,
; and MAY occur more than once. ; and MAY occur more than once.
; ;
comment / x-prop / iana-prop comment / x-prop / iana-prop
; ;
) )
Description Figure 21
This component appears inside the PARTICIPANT component with a
PARTICIPANT-TYPE of VOTER to identify the voter. This component Description This component appears inside the PARTICIPANT component
contains that participants responses. with a PARTICIPANT-TYPE of VOTER to identify the voter. This
component contains that participants responses.
The required and optional properties and their meanings will The required and optional properties and their meanings will
depend upon the POLL-MODE in effect. depend upon the POLL-MODE in effect.
For any POLL-MODE, POLL-ITEM-ID is used to associate the For any POLL-MODE, POLL-ITEM-ID is used to associate the
information to a choice supplied by the organizer. This means information to a choice supplied by the organizer. This means
that each VOTE component only provides information about that that each VOTE component only provides information about that
choice. choice.
If allowed by the POLL-MODE a VOTE component without a POLL-ITEM- If allowed by the POLL-MODE a VOTE component without a POLL-ITEM-
ID may be provided in a REPLY to indicate a possible new choice or ID may be provided in a REPLY to indicate a possible new choice or
to provide information to the ORGANIZER - such as the respondees to provide information to the ORGANIZER - such as the respondees
availability. availability.
5. Poll Modes 6. Poll Modes
The VPOLL component is intended to allow for various forms of The VPOLL component is intended to allow for various forms of
polling. The particular form in efffect is indicated by the POLL- polling. The particular form in efffect is indicated by the POLL-
MODE property. MODE property.
New poll modes can be registered by including a completed POLL-MODE New poll modes can be registered by including a completed POLL-MODE
Registration Template (see Section 9.3) in a published RFC. Registration Template (see Section 10.3) in a published RFC.
5.1. POLL-MODE:BASIC 6.1. POLL-MODE:BASIC
BASIC poll mode is the form of voting in which one possible outcome BASIC poll mode is the form of voting in which one possible outcome
is chosen from a set of possibilities. Usually this will be is chosen from a set of possibilities. Usually this will be
represented as a number of possible event objects one of which will represented as a number of possible event objects one of which will
be selected. be selected.
5.1.1. Property restrictions 6.1.1. Property restrictions
This poll mode has the following property requirements: This poll mode has the following property requirements:
POLL-ITEM-ID POLL-ITEM-ID Each contained sub-component that is being voted upon
Each contained sub-component that is being voted upon MUST contain MUST contain a POLL-ITEM_ID property which is unique within the
a POLL-ITEM_ID property which is unique within the context of the context of the POLL. The value MUST NOT be reused when events are
POLL. The value MUST NOT be reused when events are removed and/or removed and/or added to the poll.
added to the poll.
POLL-WINNER POLL-WINNER On confirmation of the poll this property MUST be
On confirmation of the poll this property MUST be present and present and identifies the winning component.
identifies the winning component.
5.1.2. Outcome reporting 6.1.2. Outcome reporting
To confirm the winner the POLL-WINNER property MUST be present and To confirm the winner the POLL-WINNER property MUST be present and
the STATUS MUST be set to CONFIRMED. the STATUS MUST be set to CONFIRMED.
When the winning VEVENT or VTODO is not a scheduled entity, that is, When the winning VEVENT or VTODO is not a scheduled entity, that is,
it has no ORGANIZER or ATTENDEES it MUST be assigned an ORGANIZER it has no ORGANIZER or ATTENDEES it MUST be assigned an ORGANIZER
property and a list of non-participating ATTENDEEs. This allows the property and a list of non-participating ATTENDEEs. This allows the
winning entity to be distributed to the participants through iTip or winning entity to be distributed to the participants through iTip or
some other protocol. some other protocol.
6. iTIP Extensions 7. iTIP Extensions
This specification introduces a number of extensions to [RFC5546]. This specification introduces a number of extensions to [RFC5546].
In group scheduling the parties involved are organizer and attendees. In group scheduling the parties involved are organizer and attendees.
In VPOLL the parties are organizer and voters. In VPOLL the parties are organizer and voters.
For many of the iTip processing rules the voters take the place of For many of the iTip processing rules the voters take the place of
attendees. attendees.
6.1. Methods 7.1. Methods
There are some extensions to the behavior of iTip methods for a VPOLL There are some extensions to the behavior of iTip methods for a VPOLL
object and two new methods are defined. object and two new methods are defined.
+----------------+--------------------------------------------------+ +================+================================================+
| Method | Description | | Method | Description |
+----------------+--------------------------------------------------+ +================+================================================+
| PUBLISH | No changes (yet) | | PUBLISH | No changes (yet) |
| REQUEST | Each child component MUST have a POLL-ITEM-ID | +----------------+------------------------------------------------+
| | property. Each set of components with the same | | REQUEST | Each child component MUST have a POLL-ITEM-ID |
| | POLL-ITEM-ID value represents one overall set of | | | property. Each set of components with the |
| | items to be voted on. | | | same POLL-ITEM-ID value represents one overall |
| REPLY | There MUST be a single VPOLL component which | | | set of items to be voted on. |
| | MUST have: either one or more POLL-ITEM-ID | +----------------+------------------------------------------------+
| | properties with a RESPONSE param matching that | | REPLY | There MUST be a single VPOLL component which |
| | from a REQUEST or a VFREEBUSY or VAVAILABILITY | | | MUST have: either one or more POLL-ITEM-ID |
| | child component showing overall busy/available | | | properties with a RESPONSE param matching that |
| | time. The VPOLL MUST have one voter only. | | | from a REQUEST or a VFREEBUSY or VAVAILABILITY |
| ADD | Not supported for VPOLL. | | | child component showing overall busy/available |
| CANCEL | There MUST be a single VPOLL component with UID | | | time. The VPOLL MUST have one voter only. |
| | matching that of the poll being cancelled. | +----------------+------------------------------------------------+
| REFRESH | The organizer returns a METHOD:REQUEST with the | | ADD | Not supported for VPOLL. |
| | current full state, or a METHOD:CANCEL or an | +----------------+------------------------------------------------+
| | error if no matching poll is found. | | CANCEL | There MUST be a single VPOLL component with |
| COUNTER | Not supported for VPOLL. | | | UID |
| DECLINECOUNTER | Not supported for VPOLL. | +----------------+------------------------------------------------+
| POLLSTATUS | Used to send the current state of the poll to | | | matching that of the poll being cancelled. |
| | all voters. The VPOLL can contain a reduced set | +----------------+------------------------------------------------+
| | of properties but MUST contain DTSTAMP, SEQUENCE | | REFRESH | The organizer returns a METHOD:REQUEST with |
| | (if not 0), UID, ORGANIZER and PARTICIPANTS. | | | the current full state, or a METHOD:CANCEL or |
+----------------+--------------------------------------------------+ | | an error if no matching poll is found. |
+----------------+------------------------------------------------+
| COUNTER | Not supported for VPOLL. |
+----------------+------------------------------------------------+
| DECLINECOUNTER | Not supported for VPOLL. |
+----------------+------------------------------------------------+
| POLLSTATUS | Used to send the current state of the poll to |
| | all voters. The VPOLL can contain a reduced |
| | set of properties but MUST contain DTSTAMP, |
| | SEQUENCE (if not 0), UID, ORGANIZER and |
| | PARTICIPANTS. |
+----------------+------------------------------------------------+
Table 1
The following table shows the above methods broken down by who can The following table shows the above methods broken down by who can
send them with VPOLL components. send them with VPOLL components.
+------------+------------------------------------------------+ +============+================================================+
| Originator | Methods | | Originator | Methods |
+------------+------------------------------------------------+ +============+================================================+
| Organizer | CANCEL, PUBLISH, REQUEST, POLLSTATUS | | Organizer | CANCEL, PUBLISH, REQUEST, POLLSTATUS |
+------------+------------------------------------------------+
| Voter | REPLY, REFRESH, REQUEST (only when delegating) | | Voter | REPLY, REFRESH, REQUEST (only when delegating) |
+------------+------------------------------------------------+ +------------+------------------------------------------------+
6.2. Interoperability Models Table 2
7.2. Interoperability Models
Most of the standard iTip specification applies with respect to Most of the standard iTip specification applies with respect to
organizer and voters. organizer and voters.
6.2.1. Delegation 7.2.1. Delegation
TBD TBD
6.2.2. Acting on Behalf of Other Calendar Users 7.2.2. Acting on Behalf of Other Calendar Users
TBD TBD
6.2.3. Component Revisions 7.2.3. Component Revisions
o Need to talk about what a change in SEQUENCE means * Need to talk about what a change in SEQUENCE means
o Sequence change forces a revote. * Sequence change forces a revote.
o New voter - no sequence change * New voter - no sequence change
o Add another poll set or change poll item ids or any change to a * Add another poll set or change poll item ids or any change to a
child child
o component - bump sequence * component - bump sequence
6.2.4. Message Sequencing 7.2.4. Message Sequencing
TBD TBD
6.3. Application Protocol Elements 7.3. Application Protocol Elements
6.3.1. Methods for VPOLL Calendar Components 7.3.1. Methods for VPOLL Calendar Components
This section defines the property set restrictions for the method This section defines the property set restrictions for the method
types that are applicable to the "VPOLL" calendar component. Each types that are applicable to the "VPOLL" calendar component. Each
method is defined using a table that clarifies the property method is defined using a table that clarifies the property
constraints that define the particular method. constraints that define the particular method.
The presence column uses the following values to assert whether a The presence column uses the following values to assert whether a
property is required or optional, and the number of times it may property is required or optional, and the number of times it may
appear in the iCalendar object. appear in the iCalendar object.
+----------------+--------------------------------------------------+ +================+=================================================+
| Presence Value | Description | | Presence Value | Description |
+----------------+--------------------------------------------------+ +================+=================================================+
| 1 | One instance MUST be present. | | 1 | One instance MUST be present. |
| 1+ | At least one instance MUST be present. | +----------------+-------------------------------------------------+
| 0 | Instances of this property MUST NOT be present. | | 1+ | At least one instance MUST be present. |
| 0+ | Multiple instances MAY be present. | +----------------+-------------------------------------------------+
| 0 or 1 | Up to 1 instance of this property MAY be | | 0 | Instances of this property MUST NOT be present. |
| | present. | +----------------+-------------------------------------------------+
+----------------+--------------------------------------------------+ | 0+ | Multiple instances MAY be present. |
+----------------+-------------------------------------------------+
| 0 or 1 | Up to 1 instance of this property MAY be |
| | present. |
+----------------+-------------------------------------------------+
Table 3
The following summarizes the methods that are defined for the "VPOLL" The following summarizes the methods that are defined for the "VPOLL"
calendar component. calendar component.
+------------+------------------------------------------------------+ +============+======================================================+
| Method | Description | | Method | Description |
+============+======================================================+
| PUBLISH | Post notification of an poll. Used primarily |
| | as a method of advertising the existence of a |
| | poll. |
+------------+------------------------------------------------------+ +------------+------------------------------------------------------+
| PUBLISH | Post notification of an poll. Used primarily as a | | REQUEST | To make a request for a poll. This is an |
| | method of advertising the existence of a poll. | | | explicit invitation to one or more voters. |
| REQUEST | To make a request for a poll. This is an explicit | | | Poll requests are also used to update, change |
| | invitation to one or more voters. Poll requests are | | | or confirm an existing poll. Clients that |
| | also used to update, change or confirm an existing | | | cannot handle REQUEST MAY degrade the poll to |
| | poll. Clients that cannot handle REQUEST MAY degrade | | | view it as a PUBLISH. REQUEST SHOULD NOT be |
| | the poll to view it as a PUBLISH. REQUEST SHOULD NOT | | | used just to set the status of the poll - |
| | be used just to set the status of the poll - |
| | POLLSTATUS provides a more compact approach. | | | POLLSTATUS provides a more compact approach. |
| REPLY | Reply to a poll request. Voters may set their | +------------+------------------------------------------------------+
| | RESPONSE parameter to supply the current vote in the | | REPLY | Reply to a poll request. Voters may set |
| | range 0 to 100. | | | their RESPONSE parameter to supply the |
| | current vote in the range 0 to 100. |
+------------+------------------------------------------------------+
| CANCEL | Cancel a poll. | | CANCEL | Cancel a poll. |
| REFRESH | A request is sent to an Organizer by a Voter asking | +------------+------------------------------------------------------+
| | for the latest version of a poll to be resent to the | | REFRESH | A request is sent to an Organizer by a Voter |
| | requester. | | | asking for the latest version of a poll to be |
| POLLSTATUS | Used to send the current state of the poll to all | | | resent to the requester. |
| | voters. The VPOLL can contain a reduced set of | +------------+------------------------------------------------------+
| | properties but MUST contain DTSTAMP, SEQUENCE (if | | POLLSTATUS | Used to send the current state of the poll to |
| | not 0), UID, ORGANIZER and PARTICIPANT. | | | all voters. The VPOLL can contain a reduced |
| | set of properties but MUST contain DTSTAMP, |
| | SEQUENCE (if not 0), UID, ORGANIZER and |
| | PARTICIPANT. |
+------------+------------------------------------------------------+ +------------+------------------------------------------------------+
6.3.2. Method: PUBLISH Table 4
7.3.2. Method: PUBLISH
The "PUBLISH" method in a "VPOLL" calendar component is an The "PUBLISH" method in a "VPOLL" calendar component is an
unsolicited posting of an iCalendar object. Any CU may add published unsolicited posting of an iCalendar object. Any CU may add published
components to their calendar. The "Organizer" MUST be present in a components to their calendar. The "Organizer" MUST be present in a
published iCalendar component. "Voters" MUST NOT be present. Its published iCalendar component. "Voters" MUST NOT be present. Its
expected usage is for encapsulating an arbitrary poll as an iCalendar expected usage is for encapsulating an arbitrary poll as an iCalendar
object. The "Organizer" may subsequently update (with another object. The "Organizer" may subsequently update (with another
"PUBLISH" method) or cancel (with a "CANCEL" method) a previously "PUBLISH" method) or cancel (with a "CANCEL" method) a previously
published "VPOLL" calendar component. published "VPOLL" calendar component.
Note Note Not clear how useful this is but needs some work on
Not clear how useful this is but needs some work on transmitting transmitting the current vote without any voter identification.
the current vote without any voter identification.
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +=================+==========+=====================================+
| Component/Property | Presence | Comment | | Component/ | Presence | Comment |
+--------------------+----------+-----------------------------------+ | Property | | |
| METHOD | 1 | MUST equal PUBLISH. | +=================+==========+=====================================+
| VPOLL | 1+ | | | METHOD | 1 | MUST equal PUBLISH. |
| DTSTAMP | 1 | | +-----------------+----------+-------------------------------------+
| DTSTART | 0 or 1 | If present defines the start of | | VPOLL | 1+ | |
| | | the poll. Otherwise the poll | +-----------------+----------+-------------------------------------+
| | | starts when it is created and | | DTSTAMP | 1 | |
| | | distributed. | +-----------------+----------+-------------------------------------+
| ORGANIZER | 1 | | | DTSTART | 0 or 1 | If present defines the start of the |
| SUMMARY | 1 | Can be null. | | | | poll. Otherwise the poll starts |
| UID | 1 | | | | | when it is created and distributed. |
| SEQUENCE | 0 or 1 | MUST be present if value is | +-----------------+----------+-------------------------------------+
| | | greater than 0; MAY be present if | | ORGANIZER | 1 | |
| | | 0. | +-----------------+----------+-------------------------------------+
| ACCEPT-RESPONSE | 0 or 1 | | | SUMMARY | 1 | Can be null. |
| ATTACH | 0+ | | +-----------------+----------+-------------------------------------+
| CATEGORIES | 0+ | | | UID | 1 | |
| CLASS | 0 or 1 | | +-----------------+----------+-------------------------------------+
| COMMENT | 0+ | | | SEQUENCE | 0 or 1 | MUST be present if value is greater |
| COMPLETED | 0 or 1 | | | | | than 0; MAY be present if 0. |
| CONTACT | 0 or 1 | | +-----------------+----------+-------------------------------------+
| CREATED | 0 or 1 | | | ACCEPT-RESPONSE | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null. | +-----------------+----------+-------------------------------------+
| DTEND | 0 or 1 | If present, DURATION MUST NOT be | | ATTACH | 0+ | |
| | | present. | +-----------------+----------+-------------------------------------+
| DURATION | 0 or 1 | If present, DTEND MUST NOT be | | CATEGORIES | 0+ | |
| | | present. | +-----------------+----------+-------------------------------------+
| LAST-MODIFIED | 0 or 1 | | | CLASS | 0 or 1 | |
| POLL-ITEM-ID | 0 | | +-----------------+----------+-------------------------------------+
| POLL-MODE | 0 or 1 | | | COMMENT | 0+ | |
| POLL-PROPERTIES | 0 or 1 | | +-----------------+----------+-------------------------------------+
| PRIORITY | 0 or 1 | | | COMPLETED | 0 or 1 | |
| RELATED-TO | 0+ | | +-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | | | CONTACT | 0 or 1 | |
| STATUS | 0 or 1 | MAY be one of | +-----------------+----------+-------------------------------------+
| | | COMPLETED/CONFIRMED/CANCELLED. | | CREATED | 0 or 1 | |
| URL | 0 or 1 | | +-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | | | DESCRIPTION | 0 or 1 | Can be null. |
| X-PROPERTY | 0+ | | +-----------------+----------+-------------------------------------+
| PARTICIPANT | 0+ | Only PARTICIPANT components with | | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
| | | PARTICIPANT-TYPE not equal to | | | | present. |
| | | "VOTER" - that is, no voters | +-----------------+----------+-------------------------------------+
| REQUEST-STATUS | 0 | | | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
| VALARM | 0+ | | | | | present. |
| VEVENT | 0+ | Depending upon the poll mode in | +-----------------+----------+-------------------------------------+
| | | effect there MAY be candidate | | LAST-MODIFIED | 0 or 1 | |
| | | components included in the poll | +-----------------+----------+-------------------------------------+
| | | component. | | POLL-ITEM-ID | 0 | |
| VFREEBUSY | 0 | | +-----------------+----------+-------------------------------------+
| VJOURNAL | 0+ | Depending upon the poll mode in | | POLL-MODE | 0 or 1 | |
| | | effect there MAY be candidate | +-----------------+----------+-------------------------------------+
| | | components included in the poll | | POLL-PROPERTIES | 0 or 1 | |
| | | component. | +-----------------+----------+-------------------------------------+
| VTODO | 0+ | Depending upon the poll mode in | | PRIORITY | 0 or 1 | |
| | | effect there MAY be candidate | +-----------------+----------+-------------------------------------+
| | | components included in the poll | | RELATED-TO | 0+ | |
| | | component. | +-----------------+----------+-------------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time | | RESOURCES | 0+ | |
| | | refers to a timezone. | +-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | | | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ |
| X-COMPONENT | 0+ | | | | | CANCELLED. |
+--------------------+----------+-----------------------------------+ +-----------------+----------+-------------------------------------+
| URL | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| X-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| PARTICIPANT | 0+ | Only PARTICIPANT components with |
| | | PARTICIPANT-TYPE not equal to |
| | | "VOTER" - that is, no voters |
+-----------------+----------+-------------------------------------+
| REQUEST-STATUS | 0 | |
+-----------------+----------+-------------------------------------+
| VALARM | 0+ | |
+-----------------+----------+-------------------------------------+
| VEVENT | 0+ | Depending upon the poll mode in |
| | | effect there MAY be candidate |
| | | components included in the poll |
| | | component. |
+-----------------+----------+-------------------------------------+
| VFREEBUSY | 0 | |
+-----------------+----------+-------------------------------------+
| VJOURNAL | 0+ | Depending upon the poll mode in |
| | | effect there MAY be candidate |
| | | components included in the poll |
| | | component. |
+-----------------+----------+-------------------------------------+
| VTODO | 0+ | Depending upon the poll mode in |
| | | effect there MAY be candidate |
| | | components included in the poll |
| | | component. |
+-----------------+----------+-------------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone. |
+-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
| X-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
Constraints for a METHOD:PUBLISH of a VPOLL Table 5: Constraints for a METHOD:PUBLISH of a VPOLL
6.3.3. Method: REQUEST 7.3.3. Method: REQUEST
The "REQUEST" method in a "VPOLL" component provides the following The "REQUEST" method in a "VPOLL" component provides the following
scheduling functions: scheduling functions:
o Invite "Voters" to respond to the poll. * Invite "Voters" to respond to the poll.
o Change the items being voted upon. * Change the items being voted upon.
o Complete or confirm the poll. * Complete or confirm the poll.
o Response to a "REFRESH" request. * Response to a "REFRESH" request.
o Update the details of an existing vpoll. * Update the details of an existing vpoll.
o Update the status of "Voters". * Update the status of "Voters".
o Forward a "VPOLL" to another uninvited CU. * Forward a "VPOLL" to another uninvited CU.
o For an existing "VPOLL" calendar component, delegate the role of * For an existing "VPOLL" calendar component, delegate the role of
"Voter" to another CU. "Voter" to another CU.
o For an existing "VPOLL" calendar component, change the role of * For an existing "VPOLL" calendar component, change the role of
"Organizer" to another CU. "Organizer" to another CU.
The "Organizer" originates the "REQUEST". The recipients of the The "Organizer" originates the "REQUEST". The recipients of the
"REQUEST" method are the CUs voting in the poll, the "Voters". "REQUEST" method are the CUs voting in the poll, the "Voters".
"Voters" use the "REPLY" method to convey votes to the "Organizer". "Voters" use the "REPLY" method to convey votes to the "Organizer".
The "UID" and "SEQUENCE" properties are used to distinguish the The "UID" and "SEQUENCE" properties are used to distinguish the
various uses of the "REQUEST" method. If the "UID" property value in various uses of the "REQUEST" method. If the "UID" property value in
the "REQUEST" is not found on the recipient's calendar, then the the "REQUEST" is not found on the recipient's calendar, then the
"REQUEST" is for a new "VPOLL" calendar component. If the "UID" "REQUEST" is for a new "VPOLL" calendar component. If the "UID"
property value is found on the recipient's calendar, then the property value is found on the recipient's calendar, then the
"REQUEST" is for an update, or a reconfirmation of the "VPOLL" "REQUEST" is for an update, or a reconfirmation of the "VPOLL"
calendar component. calendar component.
For the "REQUEST" method only a single iCalendar object is permitted. For the "REQUEST" method only a single iCalendar object is permitted.
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +=================+==========+=====================================+
| Component/Property | Presence | Comment | | Component/ | Presence | Comment |
+--------------------+----------+-----------------------------------+ | Property | | |
| METHOD | 1 | MUST be REQUEST. | +=================+==========+=====================================+
| VPOLL | 1 | | | METHOD | 1 | MUST be REQUEST. |
| PARTICIPANT | 1+ | Identified as voters with the | +-----------------+----------+-------------------------------------+
| | | PARTICIPANT-TYPE=VOTER | | VPOLL | 1 | |
| DTSTAMP | 1 | | +-----------------+----------+-------------------------------------+
| DTSTART | 0 or 1 | If present defines the start of | | PARTICIPANT | 1+ | Identified as voters with the |
| | | the poll. Otherwise the poll | | | | PARTICIPANT-TYPE=VOTER |
| | | starts when it is created and | +-----------------+----------+-------------------------------------+
| | | distributed. | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | +-----------------+----------+-------------------------------------+
| SEQUENCE | 0 or 1 | MUST be present if value is | | DTSTART | 0 or 1 | If present defines the start of the |
| | | greater than 0; MAY be present if | | | | poll. Otherwise the poll starts |
| | | 0. | | | | when it is created and distributed. |
| SUMMARY | 1 | Can be null. | +-----------------+----------+-------------------------------------+
| UID | 1 | | | ORGANIZER | 1 | |
| ACCEPT-RESPONSE | 0 or 1 | | +-----------------+----------+-------------------------------------+
| ATTACH | 0+ | | | SEQUENCE | 0 or 1 | MUST be present if value is greater |
| CATEGORIES | 0+ | | | | | than 0; MAY be present if 0. |
| CLASS | 0 or 1 | | +-----------------+----------+-------------------------------------+
| COMMENT | 0+ | | | SUMMARY | 1 | Can be null. |
| COMPLETED | 0 or 1 | | +-----------------+----------+-------------------------------------+
| CONTACT | 0+ | | | UID | 1 | |
| CREATED | 0 or 1 | | +-----------------+----------+-------------------------------------+
| DESCRIPTION | 0 or 1 | Can be null. | | ACCEPT-RESPONSE | 0 or 1 | |
| DTEND | 0 or 1 | If present, DURATION MUST NOT be | +-----------------+----------+-------------------------------------+
| | | present. | | ATTACH | 0+ | |
| DURATION | 0 or 1 | If present, DTEND MUST NOT be | +-----------------+----------+-------------------------------------+
| | | present. | | CATEGORIES | 0+ | |
| GEO | 0 or 1 | | +-----------------+----------+-------------------------------------+
| LAST-MODIFIED | 0 or 1 | | | CLASS | 0 or 1 | |
| LOCATION | 0 or 1 | | +-----------------+----------+-------------------------------------+
| POLL-ITEM-ID | 0 | | | COMMENT | 0+ | |
| POLL-MODE | 0 or 1 | | +-----------------+----------+-------------------------------------+
| POLL-PROPERTIES | 0 or 1 | | | COMPLETED | 0 or 1 | |
| PRIORITY | 0 or 1 | | +-----------------+----------+-------------------------------------+
| RELATED-TO | 0+ | | | CONTACT | 0+ | |
| REQUEST-STATUS | 0 | | +-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | | | CREATED | 0 or 1 | |
| STATUS | 0 or 1 | MAY be one of | +-----------------+----------+-------------------------------------+
| | | COMPLETED/CONFIRMED/CANCELLED. | | DESCRIPTION | 0 or 1 | Can be null. |
| TRANSP | 0 or 1 | | +-----------------+----------+-------------------------------------+
| URL | 0 or 1 | | | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
| IANA-PROPERTY | 0+ | | | | | present. |
| X-PROPERTY | 0+ | | +-----------------+----------+-------------------------------------+
| VALARM | 0+ | | | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
| VTIMEZONE | 0+ | MUST be present if any date/time | | | | present. |
| | | refers to a timezone. | +-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | | | GEO | 0 or 1 | |
| X-COMPONENT | 0+ | | +-----------------+----------+-------------------------------------+
| VEVENT | 0+ | Depending upon the poll mode in | | LAST-MODIFIED | 0 or 1 | |
| | | effect there MAY be candidate | +-----------------+----------+-------------------------------------+
| | | components included in the poll | | LOCATION | 0 or 1 | |
| | | component. | +-----------------+----------+-------------------------------------+
| VFREEBUSY | 0 | | | POLL-ITEM-ID | 0 | |
| VJOURNAL | 0+ | Depending upon the poll mode in | +-----------------+----------+-------------------------------------+
| | | effect there MAY be candidate | | POLL-MODE | 0 or 1 | |
| | | components included in the poll | +-----------------+----------+-------------------------------------+
| | | component. | | POLL-PROPERTIES | 0 or 1 | |
| VTODO | 0+ | Depending upon the poll mode in | +-----------------+----------+-------------------------------------+
| | | effect there MAY be candidate | | PRIORITY | 0 or 1 | |
| | | components included in the poll | +-----------------+----------+-------------------------------------+
| | | component. | | RELATED-TO | 0+ | |
+--------------------+----------+-----------------------------------+ +-----------------+----------+-------------------------------------+
| REQUEST-STATUS | 0 | |
+-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | |
+-----------------+----------+-------------------------------------+
| STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ |
| | | CANCELLED. |
+-----------------+----------+-------------------------------------+
| TRANSP | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| URL | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| X-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| VALARM | 0+ | |
+-----------------+----------+-------------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone. |
+-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
| X-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
| VEVENT | 0+ | Depending upon the poll mode in |
| | | effect there MAY be candidate |
| | | components included in the poll |
| | | component. |
+-----------------+----------+-------------------------------------+
| VFREEBUSY | 0 | |
+-----------------+----------+-------------------------------------+
| VJOURNAL | 0+ | Depending upon the poll mode in |
| | | effect there MAY be candidate |
| | | components included in the poll |
| | | component. |
+-----------------+----------+-------------------------------------+
| VTODO | 0+ | Depending upon the poll mode in |
| | | effect there MAY be candidate |
| | | components included in the poll |
| | | component. |
+-----------------+----------+-------------------------------------+
Constraints for a METHOD:REQUEST of a VPOLL Table 6: Constraints for a METHOD:REQUEST of a VPOLL
6.3.3.1. Rescheduling a poll 7.3.3.1. Rescheduling a poll
The "REQUEST" method may be used to reschedule a poll, that is force The "REQUEST" method may be used to reschedule a poll, that is force
a revote. A rescheduled poll involves a change to the existing poll a revote. A rescheduled poll involves a change to the existing poll
in terms of its time the components being voted on may have changed. in terms of its time the components being voted on may have changed.
If the recipient CUA of a "REQUEST" method finds that the "UID" If the recipient CUA of a "REQUEST" method finds that the "UID"
property value already exists on the calendar but that the "SEQUENCE" property value already exists on the calendar but that the "SEQUENCE"
(or "DTSTAMP") property value in the "REQUEST" method is greater than (or "DTSTAMP") property value in the "REQUEST" method is greater than
the value for the existing poll, then the "REQUEST" method describes the value for the existing poll, then the "REQUEST" method describes
a rescheduling of the poll. a rescheduling of the poll.
6.3.3.2. Updating or Reconfirmation of a Poll 7.3.3.2. Updating or Reconfirmation of a Poll
The "REQUEST" method may be used to update or reconfirm a poll. An The "REQUEST" method may be used to update or reconfirm a poll. An
update to an existing poll does not involve changes to the time or update to an existing poll does not involve changes to the time or
candidates, and might not involve a change to the location or candidates, and might not involve a change to the location or
description for the poll. If the recipient CUA of a "REQUEST" method description for the poll. If the recipient CUA of a "REQUEST" method
finds that the "UID" property value already exists on the calendar finds that the "UID" property value already exists on the calendar
and that the "SEQUENCE" property value in the "REQUEST" is the same and that the "SEQUENCE" property value in the "REQUEST" is the same
as the value for the existing poll, then the "REQUEST" method as the value for the existing poll, then the "REQUEST" method
describes an update of the poll details, but not a rescheduling of describes an update of the poll details, but not a rescheduling of
the POLL. the POLL.
The update "REQUEST" method is the appropriate response to a The update "REQUEST" method is the appropriate response to a
"REFRESH" method sent from a "Voter" to the "Organizer" of a poll. "REFRESH" method sent from a "Voter" to the "Organizer" of a poll.
The "Organizer" of a poll may also send unsolicited "REQUEST" The "Organizer" of a poll may also send unsolicited "REQUEST"
methods. The unsolicited "REQUEST" methods may be used to update the methods. The unsolicited "REQUEST" methods may be used to update the
details of the poll without rescheduling it, to update the "RESPONSE" details of the poll without rescheduling it, to update the "RESPONSE"
parameter of "Voters", or to reconfirm the poll. parameter of "Voters", or to reconfirm the poll.
6.3.3.3. Confirmation of a Poll 7.3.3.3. Confirmation of a Poll
The "REQUEST" method may be used to confirm a poll, that is announce The "REQUEST" method may be used to confirm a poll, that is announce
the winner in BASIC mode. The STATUS MUST be set to CONFIRMED and the winner in BASIC mode. The STATUS MUST be set to CONFIRMED and
for BASIC mode a VPOLL POLL-WINNER property must be provided with the for BASIC mode a VPOLL POLL-WINNER property must be provided with the
poll-id of the winning component. poll-id of the winning component.
6.3.3.4. Closing a Poll 7.3.3.4. Closing a Poll
The "REQUEST" method may be used to close a poll, that is indicate The "REQUEST" method may be used to close a poll, that is indicate
voting is completed. The STATUS MUST be set to COMPLETED. voting is completed. The STATUS MUST be set to COMPLETED.
6.3.3.5. Delegating a Poll to Another CU 7.3.3.5. Delegating a Poll to Another CU
Some calendar and scheduling systems allow "Voters" to delegate the Some calendar and scheduling systems allow "Voters" to delegate the
vote to another "Calendar User". iTIP supports this concept using the vote to another "Calendar User". iTIP supports this concept using the
following workflow. Any "Voter" may delegate their right to vote in following workflow. Any "Voter" may delegate their right to vote in
a poll to another CU. The implication is that the delegate a poll to another CU. The implication is that the delegate
participates in lieu of the original "Voter", NOT in addition to the participates in lieu of the original "Voter", NOT in addition to the
"Voter". The delegator MUST notify the "Organizer" of this action "Voter". The delegator MUST notify the "Organizer" of this action
using the steps outlined below. Implementations may support or using the steps outlined below. Implementations may support or
restrict delegation as they see fit. For instance, some restrict delegation as they see fit. For instance, some
implementations may restrict a delegate from delegating a "REQUEST" implementations may restrict a delegate from delegating a "REQUEST"
skipping to change at page 34, line 16 skipping to change at page 36, line 10
to the "Organizer", and optionally to the "Delegator". The "REPLY" to the "Organizer", and optionally to the "Delegator". The "REPLY"
method SHOULD include the "Voter" property with the "DELEGATED-FROM" method SHOULD include the "Voter" property with the "DELEGATED-FROM"
parameter value of the "Delegator's" calendar address. parameter value of the "Delegator's" calendar address.
The "Delegator" may continue to receive updates to the poll even The "Delegator" may continue to receive updates to the poll even
though they will not be attending. This is accomplished by the though they will not be attending. This is accomplished by the
"Delegator" setting their "role" attribute to "NON-PARTICIPANT" in "Delegator" setting their "role" attribute to "NON-PARTICIPANT" in
the "REPLY" to the "Organizer". the "REPLY" to the "Organizer".
6.3.3.6. Changing the Organizer 7.3.3.6. Changing the Organizer
The situation may arise where the "Organizer" of a "VPOLL" is no The situation may arise where the "Organizer" of a "VPOLL" is no
longer able to perform the "Organizer" role and abdicates without longer able to perform the "Organizer" role and abdicates without
passing on the "Organizer" role to someone else. When this occurs, passing on the "Organizer" role to someone else. When this occurs,
the "Voters" of the "VPOLL" may use out-of-band mechanisms to the "Voters" of the "VPOLL" may use out-of-band mechanisms to
communicate the situation and agree upon a new "Organizer". The new communicate the situation and agree upon a new "Organizer". The new
"Organizer" should then send out a new "REQUEST" with a modified "Organizer" should then send out a new "REQUEST" with a modified
version of the "VPOLL" in which the "SEQUENCE" number has been version of the "VPOLL" in which the "SEQUENCE" number has been
incremented and the "ORGANIZER" property has been changed to the new incremented and the "ORGANIZER" property has been changed to the new
"Organizer". "Organizer".
6.3.3.7. Sending on Behalf of the Organizer 7.3.3.7. Sending on Behalf of the Organizer
There are a number of scenarios that support the need for a "Calendar There are a number of scenarios that support the need for a "Calendar
User" to act on behalf of the "Organizer" without explicit role User" to act on behalf of the "Organizer" without explicit role
changing. This might be the case if the CU designated as "Organizer" changing. This might be the case if the CU designated as "Organizer"
is sick or unable to perform duties associated with that function. is sick or unable to perform duties associated with that function.
In these cases, iTIP supports the notion of one CU acting on behalf In these cases, iTIP supports the notion of one CU acting on behalf
of another. Using the "SENT-BY" parameter, a "Calendar User" could of another. Using the "SENT-BY" parameter, a "Calendar User" could
send an updated "VPOLL" "REQUEST". In the case where one CU sends on send an updated "VPOLL" "REQUEST". In the case where one CU sends on
behalf of another CU, the "Voter" responses are still directed back behalf of another CU, the "Voter" responses are still directed back
towards the CU designated as "Organizer". towards the CU designated as "Organizer".
6.3.3.8. Forwarding to an Uninvited CU 7.3.3.8. Forwarding to an Uninvited CU
A "Voter" invited to a "VPOLL" calendar component may send the A "Voter" invited to a "VPOLL" calendar component may send the
"VPOLL" calendar component to another new CU not previously "VPOLL" calendar component to another new CU not previously
associated with the "VPOLL" calendar component. The current "Voter" associated with the "VPOLL" calendar component. The current "Voter"
participating in the "VPOLL" calendar component does this by participating in the "VPOLL" calendar component does this by
forwarding the original "REQUEST" method to the new CU. The new CU forwarding the original "REQUEST" method to the new CU. The new CU
can send a "REPLY" to the "Organizer" of the "VPOLL" calendar can send a "REPLY" to the "Organizer" of the "VPOLL" calendar
component. The reply contains a "Voter" property for the new CU. component. The reply contains a "Voter" property for the new CU.
The "Organizer" ultimately decides whether or not the new CU becomes The "Organizer" ultimately decides whether or not the new CU becomes
skipping to change at page 35, line 18 skipping to change at page 37, line 15
If the "Organizer" decides to add the new CU, the new "Voter" If the "Organizer" decides to add the new CU, the new "Voter"
property is added to the "VPOLL" calendar component. Furthermore, property is added to the "VPOLL" calendar component. Furthermore,
the "Organizer" is free to change any "Voter" property parameter from the "Organizer" is free to change any "Voter" property parameter from
the values supplied by the new CU to something the "Organizer" the values supplied by the new CU to something the "Organizer"
considers appropriate. The "Organizer" SHOULD send the new CU a considers appropriate. The "Organizer" SHOULD send the new CU a
"REQUEST" message to inform them that they have been added. "REQUEST" message to inform them that they have been added.
When forwarding a "REQUEST" to another CU, the forwarding "Voter" When forwarding a "REQUEST" to another CU, the forwarding "Voter"
MUST NOT make changes to the original message. MUST NOT make changes to the original message.
6.3.3.9. Updating Voter Status 7.3.3.9. Updating Voter Status
The "Organizer" of an poll may also request updated status from one The "Organizer" of an poll may also request updated status from one
or more "Voters". The "Organizer" sends a "REQUEST" method to the or more "Voters". The "Organizer" sends a "REQUEST" method to the
"Voter" and sets the "RSVP=TRUE" property parameter on the "Voter" and sets the "RSVP=TRUE" property parameter on the
PARTICIPANT CALENDAR-ADDRESS. The "SEQUENCE" property for the poll PARTICIPANT CALENDAR-ADDRESS. The "SEQUENCE" property for the poll
is not changed from its previous value. A recipient will determine is not changed from its previous value. A recipient will determine
that the only change in the "REQUEST" is that their "RSVP" property that the only change in the "REQUEST" is that their "RSVP" property
parameter indicates a request for updated status. The recipient parameter indicates a request for updated status. The recipient
SHOULD respond with a "REPLY" method indicating their current vote SHOULD respond with a "REPLY" method indicating their current vote
with respect to the "REQUEST". with respect to the "REQUEST".
6.3.4. Method: REPLY 7.3.4. Method: REPLY
The "REPLY" method in a "VPOLL" calendar component is used to respond The "REPLY" method in a "VPOLL" calendar component is used to respond
(e.g., accept or decline) to a "REQUEST" or to reply to a delegation (e.g., accept or decline) to a "REQUEST" or to reply to a delegation
"REQUEST". When used to provide a delegation response, the "REQUEST". When used to provide a delegation response, the
"Delegator" SHOULD include the calendar address of the "Delegate" on "Delegator" SHOULD include the calendar address of the "Delegate" on
the "DELEGATED-TO" property parameter of the "Delegator's" "CALENDAR- the "DELEGATED-TO" property parameter of the "Delegator's" "CALENDAR-
ADDRESS" property. The "Delegate" SHOULD include the calendar ADDRESS" property. The "Delegate" SHOULD include the calendar
address of the "Delegator" on the "DELEGATED-FROM" property parameter address of the "Delegator" on the "DELEGATED-FROM" property parameter
of the "Delegate's" "CALENDAR-ADDRESS" property. of the "Delegate's" "CALENDAR-ADDRESS" property.
skipping to change at page 36, line 22 skipping to change at page 38, line 22
"Voters" may have another CU respond on their behalf. This is done "Voters" may have another CU respond on their behalf. This is done
using the "SENT-BY" parameter. using the "SENT-BY" parameter.
The optional properties listed in the table below (those listed as The optional properties listed in the table below (those listed as
"0+" or "0 or 1") MUST NOT be changed from those of the original "0+" or "0 or 1") MUST NOT be changed from those of the original
request. (But see comments on VFREEBUSY and VAVAILABILITY) request. (But see comments on VFREEBUSY and VAVAILABILITY)
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +=================+==========+=====================================+
| Component/Property | Presence | Comment | | Component/ | Presence | Comment |
+--------------------+----------+-----------------------------------+ | Property | | |
| METHOD | 1 | MUST be REPLY. | +=================+==========+=====================================+
| VPOLL | 1+ | All components MUST have the same | | METHOD | 1 | MUST be REPLY. |
| | | UID. | +-----------------+----------+-------------------------------------+
| PARTICIPANT | 1 | Identifies the Voter replying. | | VPOLL | 1+ | All components MUST have the same |
| DTSTAMP | 1 | | +-----------------+----------+-------------------------------------+
| ORGANIZER | 1 | | | | | UID. |
| UID | 1 | MUST be the UID of the original | +-----------------+----------+-------------------------------------+
| | | REQUEST. | | PARTICIPANT | 1 | Identifies the Voter replying. |
| SEQUENCE | 0 or 1 | If non-zero, MUST be the sequence | +-----------------+----------+-------------------------------------+
| | | number of the original REQUEST. | | DTSTAMP | 1 | |
| | | MAY be present if 0. | +-----------------+----------+-------------------------------------+
| ACCEPT-RESPONSE | 0 or 1 | | | ORGANIZER | 1 | |
| ATTACH | 0+ | | +-----------------+----------+-------------------------------------+
| CATEGORIES | 0+ | | | UID | 1 | MUST be the UID of the original |
| CLASS | 0 or 1 | | +-----------------+----------+-------------------------------------+
| COMMENT | 0+ | | | | | REQUEST. |
| COMPLETED | 0 or 1 | | +-----------------+----------+-------------------------------------+
| CONTACT | 0+ | | | SEQUENCE | 0 or 1 | If non-zero, MUST be the sequence |
| CREATED | 0 or 1 | | | | | number of the original REQUEST. |
| DESCRIPTION | 0 or 1 | | | | | MAY be present if 0. |
| DTEND | 0 or 1 | If present, DURATION MUST NOT be | +-----------------+----------+-------------------------------------+
| | | present. | | ACCEPT-RESPONSE | 0 or 1 | |
| DTSTART | 0 or 1 | | +-----------------+----------+-------------------------------------+
| DURATION | 0 or 1 | If present, DTEND MUST NOT be | | ATTACH | 0+ | |
| | | present. | +-----------------+----------+-------------------------------------+
| GEO | 0 or 1 | | | CATEGORIES | 0+ | |
| LAST-MODIFIED | 0 or 1 | | +-----------------+----------+-------------------------------------+
| LOCATION | 0 or 1 | | | CLASS | 0 or 1 | |
| POLL-ITEM-ID | 1+ | One per item being voted on. | +-----------------+----------+-------------------------------------+
| POLL-MODE | 0 | | | COMMENT | 0+ | |
| POLL-PROPERTIES | 0 | | +-----------------+----------+-------------------------------------+
| PRIORITY | 0 or 1 | | | COMPLETED | 0 or 1 | |
| RELATED-TO | 0+ | | +-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | | | CONTACT | 0+ | |
| REQUEST-STATUS | 0+ | | +-----------------+----------+-------------------------------------+
| STATUS | 0 or 1 | | | CREATED | 0 or 1 | |
| SUMMARY | 0 or 1 | | +-----------------+----------+-------------------------------------+
| TRANSP | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| URL | 0 or 1 | | +-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | | | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
| X-PROPERTY | 0+ | | | | | present. |
| VALARM | 0 | | +-----------------+----------+-------------------------------------+
| VTIMEZONE | 0 or 1 | MUST be present if any date/time | | DTSTART | 0 or 1 | |
| | | refers to a timezone. | +-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | | | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
| X-COMPONENT | 0+ | | | | | present. |
| VEVENT | 0 | | +-----------------+----------+-------------------------------------+
| VFREEBUSY | 0 or 1 | A voter may respond with a | | GEO | 0 or 1 | |
| | | VFREEBUSY component indicating | +-----------------+----------+-------------------------------------+
| | | that the ORGANIZER may select | | LAST-MODIFIED | 0 or 1 | |
| | | some other time which is not | +-----------------+----------+-------------------------------------+
| | | marked as busy. | | LOCATION | 0 or 1 | |
| VAVAILABILITY | 0 | A voter may respond with a | +-----------------+----------+-------------------------------------+
| | | VAVAILABILITY component | | POLL-ITEM-ID | 1+ | One per item being voted on. |
| | | indicating that the ORGANIZER may | +-----------------+----------+-------------------------------------+
| | | select some other time which is | | POLL-MODE | 0 | |
| | | shown as available. | +-----------------+----------+-------------------------------------+
| VJOURNAL | 0 | | | POLL-PROPERTIES | 0 | |
| VTODO | 0 | | +-----------------+----------+-------------------------------------+
+--------------------+----------+-----------------------------------+ | PRIORITY | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| RELATED-TO | 0+ | |
+-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | |
+-----------------+----------+-------------------------------------+
| REQUEST-STATUS | 0+ | |
+-----------------+----------+-------------------------------------+
| STATUS | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| SUMMARY | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| TRANSP | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| URL | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| X-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| VALARM | 0 | |
+-----------------+----------+-------------------------------------+
| VTIMEZONE | 0 or 1 | MUST be present if any date/time |
| | | refers to a timezone. |
+-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
| X-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
| VEVENT | 0 | |
+-----------------+----------+-------------------------------------+
| VFREEBUSY | 0 or 1 | A voter may respond with a |
| | | VFREEBUSY component indicating that |
| | | the ORGANIZER may select some other |
| | | time which is not marked as busy. |
+-----------------+----------+-------------------------------------+
| VAVAILABILITY | 0 | A voter may respond with a |
| | | VAVAILABILITY component indicating |
| | | that the ORGANIZER may select some |
| | | other time which is shown as |
| | | available. |
+-----------------+----------+-------------------------------------+
| VJOURNAL | 0 | |
+-----------------+----------+-------------------------------------+
| VTODO | 0 | |
+-----------------+----------+-------------------------------------+
Constraints for a METHOD:REPLY of a VPOLL Table 7: Constraints for a METHOD:REPLY of a VPOLL
6.3.5. Method: CANCEL 7.3.5. Method: CANCEL
The "CANCEL" method in a "VPOLL" calendar component is used to send a The "CANCEL" method in a "VPOLL" calendar component is used to send a
cancellation notice of an existing poll request to the affected cancellation notice of an existing poll request to the affected
"Voters". The message is sent by the "Organizer" of the poll. "Voters". The message is sent by the "Organizer" of the poll.
The "Organizer" MUST send a "CANCEL" message to each "Voter" affected The "Organizer" MUST send a "CANCEL" message to each "Voter" affected
by the cancellation. This can be done using a single "CANCEL" by the cancellation. This can be done using a single "CANCEL"
message for all "Voters" or by using multiple messages with different message for all "Voters" or by using multiple messages with different
subsets of the affected "Voters" in each. subsets of the affected "Voters" in each.
When a "VPOLL" is cancelled, the "SEQUENCE" property value MUST be When a "VPOLL" is cancelled, the "SEQUENCE" property value MUST be
incremented as described in Section 6.2.3. incremented as described in Section 7.2.3.
Once a CANCEL message has been sent to all voters no further voting Once a CANCEL message has been sent to all voters no further voting
may take place. The poll is considered closed. may take place. The poll is considered closed.
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +=================+==========+==================================+
| Component/Property | Presence | Comment | | Component/ | Presence | Comment |
+--------------------+----------+-----------------------------------+ | Property | | |
| METHOD | 1 | MUST be CANCEL. | +=================+==========+==================================+
| VPOLL | 1+ | All must have the same UID. | | METHOD | 1 | MUST be CANCEL. |
| PARTICIPANT | 0+ | MUST include some or all Voters | +-----------------+----------+----------------------------------+
| | | being removed from the poll. MUST | | VPOLL | 1+ | All must have the same UID. |
| | | include some or all Voters if the | +-----------------+----------+----------------------------------+
| | | entire poll is cancelled. | | PARTICIPANT | 0+ | MUST include some or all Voters |
| UID | 1 | MUST be the UID of the original | | | | being removed from the poll. |
| | | REQUEST. | | | | MUST include some or all Voters |
| DTSTAMP | 1 | | | | | if the entire poll is cancelled. |
| ORGANIZER | 1 | | +-----------------+----------+----------------------------------+
| SEQUENCE | 1 | | | UID | 1 | MUST be the UID of the original |
| ATTACH | 0+ | | | | | REQUEST. |
| ACCEPT-RESPONSE | 0 | | +-----------------+----------+----------------------------------+
| COMMENT | 0+ | | | DTSTAMP | 1 | |
| COMPLETED | 0 or 1 | | +-----------------+----------+----------------------------------+
| CATEGORIES | 0+ | | | ORGANIZER | 1 | |
| CLASS | 0 or 1 | | +-----------------+----------+----------------------------------+
| CONTACT | 0+ | | | SEQUENCE | 1 | |
| CREATED | 0 or 1 | | +-----------------+----------+----------------------------------+
| DESCRIPTION | 0 or 1 | | | ATTACH | 0+ | |
| DTEND | 0 or 1 | If present, DURATION MUST NOT be | +-----------------+----------+----------------------------------+
| | | present. | | ACCEPT-RESPONSE | 0 | |
| DTSTART | 0 or 1 | | +-----------------+----------+----------------------------------+
| DURATION | 0 or 1 | If present, DTEND MUST NOT be | | COMMENT | 0+ | |
| | | present. | +-----------------+----------+----------------------------------+
| GEO | 0 or 1 | | | COMPLETED | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | +-----------------+----------+----------------------------------+
| LOCATION | 0 or 1 | | | CATEGORIES | 0+ | |
| POLL-ITEM-ID | 0 | | +-----------------+----------+----------------------------------+
| POLL-MODE | 0 | | | CLASS | 0 or 1 | |
| POLL-PROPERTIES | 0 | | +-----------------+----------+----------------------------------+
| PRIORITY | 0 or 1 | | | CONTACT | 0+ | |
| RELATED-TO | 0+ | | +-----------------+----------+----------------------------------+
| RESOURCES | 0+ | | | CREATED | 0 or 1 | |
| STATUS | 0 or 1 | MUST be set to CANCELLED to | +-----------------+----------+----------------------------------+
| | | cancel the entire event. If | | DESCRIPTION | 0 or 1 | |
| | | uninviting specific Attendees, | +-----------------+----------+----------------------------------+
| | | then MUST NOT be included. | | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
| SUMMARY | 0 or 1 | | | | | present. |
| TRANSP | 0 or 1 | | +-----------------+----------+----------------------------------+
| URL | 0 or 1 | | | DTSTART | 0 or 1 | |
| IANA-PROPERTY | 0+ | | +-----------------+----------+----------------------------------+
| X-PROPERTY | 0+ | | | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
| REQUEST-STATUS | 0 | | | | | present. |
| VALARM | 0 | | +-----------------+----------+----------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time | | GEO | 0 or 1 | |
| | | refers to a timezone. | +-----------------+----------+----------------------------------+
| IANA-COMPONENT | 0+ | | | LAST-MODIFIED | 0 or 1 | |
| X-COMPONENT | 0+ | | +-----------------+----------+----------------------------------+
| VTODO | 0 | | | LOCATION | 0 or 1 | |
| VJOURNAL | 0 | | +-----------------+----------+----------------------------------+
| VEVENT | 0 | | | POLL-ITEM-ID | 0 | |
| VFREEBUSY | 0 | | +-----------------+----------+----------------------------------+
+--------------------+----------+-----------------------------------+ | POLL-MODE | 0 | |
+-----------------+----------+----------------------------------+
| POLL-PROPERTIES | 0 | |
+-----------------+----------+----------------------------------+
| PRIORITY | 0 or 1 | |
+-----------------+----------+----------------------------------+
| RELATED-TO | 0+ | |
+-----------------+----------+----------------------------------+
| RESOURCES | 0+ | |
+-----------------+----------+----------------------------------+
| STATUS | 0 or 1 | MUST be set to CANCELLED to |
| | | cancel the entire event. If |
| | | uninviting specific Attendees, |
| | | then MUST NOT be included. |
+-----------------+----------+----------------------------------+
| SUMMARY | 0 or 1 | |
+-----------------+----------+----------------------------------+
| TRANSP | 0 or 1 | |
+-----------------+----------+----------------------------------+
| URL | 0 or 1 | |
+-----------------+----------+----------------------------------+
| IANA-PROPERTY | 0+ | |
+-----------------+----------+----------------------------------+
| X-PROPERTY | 0+ | |
+-----------------+----------+----------------------------------+
| REQUEST-STATUS | 0 | |
+-----------------+----------+----------------------------------+
| VALARM | 0 | |
+-----------------+----------+----------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone. |
+-----------------+----------+----------------------------------+
| IANA-COMPONENT | 0+ | |
+-----------------+----------+----------------------------------+
| X-COMPONENT | 0+ | |
+-----------------+----------+----------------------------------+
| VTODO | 0 | |
+-----------------+----------+----------------------------------+
| VJOURNAL | 0 | |
+-----------------+----------+----------------------------------+
| VEVENT | 0 | |
+-----------------+----------+----------------------------------+
| VFREEBUSY | 0 | |
+-----------------+----------+----------------------------------+
Constraints for a METHOD:CANCEL of a VPOLL Table 8: Constraints for a METHOD:CANCEL of a VPOLL
6.3.6. Method: REFRESH 7.3.6. Method: REFRESH
The "REFRESH" method in a "VPOLL" calendar component is used by The "REFRESH" method in a "VPOLL" calendar component is used by
"Voters" of an existing event to request an updated description from "Voters" of an existing event to request an updated description from
the poll "Organizer". The "REFRESH" method must specify the "UID" the poll "Organizer". The "REFRESH" method must specify the "UID"
property of the poll to update. The "Organizer" responds with the property of the poll to update. The "Organizer" responds with the
latest description and version of the poll. latest description and version of the poll.
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +====================+==========+============================+
| Component/Property | Presence | Comment | | Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+ +====================+==========+============================+
| METHOD | 1 | MUST be REFRESH. | | METHOD | 1 | MUST be REFRESH. |
| VPOLL | 1 | | +--------------------+----------+----------------------------+
| PARTICIPANT | 1 | MUST identify the requester as a | | VPOLL | 1 | |
| | | voter. | +--------------------+----------+----------------------------+
| DTSTAMP | 1 | | | PARTICIPANT | 1 | MUST identify the |
| ORGANIZER | 1 | | | | | requester as a voter. |
| UID | 1 | MUST be the UID associated with | +--------------------+----------+----------------------------+
| | | original REQUEST. | | DTSTAMP | 1 | |
| COMMENT | 0+ | | +--------------------+----------+----------------------------+
| COMPLETED | 0 | | | ORGANIZER | 1 | |
| IANA-PROPERTY | 0+ | | +--------------------+----------+----------------------------+
| X-PROPERTY | 0+ | | | UID | 1 | MUST be the UID associated |
| ACCEPT-RESPONSE | 0 | | | | | with original REQUEST. |
| ATTACH | 0 | | +--------------------+----------+----------------------------+
| CATEGORIES | 0 | | | COMMENT | 0+ | |
| CLASS | 0 | | +--------------------+----------+----------------------------+
| CONTACT | 0 | | | COMPLETED | 0 | |
| CREATED | 0 | | +--------------------+----------+----------------------------+
| DESCRIPTION | 0 | | | IANA-PROPERTY | 0+ | |
| DTEND | 0 | | +--------------------+----------+----------------------------+
| DTSTART | 0 | | | X-PROPERTY | 0+ | |
| DURATION | 0 | | +--------------------+----------+----------------------------+
| GEO | 0 | | | ACCEPT-RESPONSE | 0 | |
| LAST-MODIFIED | 0 | | +--------------------+----------+----------------------------+
| LOCATION | 0 | | | ATTACH | 0 | |
| POLL-ITEM-ID | 0 | | +--------------------+----------+----------------------------+
| POLL-MODE | 0 | | | CATEGORIES | 0 | |
| POLL-PROPERTIES | 0 | | +--------------------+----------+----------------------------+
| PRIORITY | 0 | | | CLASS | 0 | |
| RELATED-TO | 0 | | +--------------------+----------+----------------------------+
| REQUEST-STATUS | 0 | | | CONTACT | 0 | |
| RESOURCES | 0 | | +--------------------+----------+----------------------------+
| SEQUENCE | 0 | | | CREATED | 0 | |
| STATUS | 0 | | +--------------------+----------+----------------------------+
| SUMMARY | 0 | | | DESCRIPTION | 0 | |
| URL | 0 | | +--------------------+----------+----------------------------+
| VALARM | 0 | | | DTEND | 0 | |
| VTIMEZONE | 0+ | | +--------------------+----------+----------------------------+
| IANA-COMPONENT | 0+ | | | DTSTART | 0 | |
| X-COMPONENT | 0+ | | +--------------------+----------+----------------------------+
| VTODO | 0 | | | DURATION | 0 | |
| VJOURNAL | 0 | | +--------------------+----------+----------------------------+
| VEVENT | 0 | | | GEO | 0 | |
| VFREEBUSY | 0 | | +--------------------+----------+----------------------------+
+--------------------+----------+-----------------------------------+ | LAST-MODIFIED | 0 | |
+--------------------+----------+----------------------------+
| LOCATION | 0 | |
+--------------------+----------+----------------------------+
| POLL-ITEM-ID | 0 | |
+--------------------+----------+----------------------------+
| POLL-MODE | 0 | |
+--------------------+----------+----------------------------+
| POLL-PROPERTIES | 0 | |
+--------------------+----------+----------------------------+
| PRIORITY | 0 | |
+--------------------+----------+----------------------------+
| RELATED-TO | 0 | |
+--------------------+----------+----------------------------+
| REQUEST-STATUS | 0 | |
+--------------------+----------+----------------------------+
| RESOURCES | 0 | |
+--------------------+----------+----------------------------+
| SEQUENCE | 0 | |
+--------------------+----------+----------------------------+
| STATUS | 0 | |
+--------------------+----------+----------------------------+
| SUMMARY | 0 | |
+--------------------+----------+----------------------------+
| URL | 0 | |
+--------------------+----------+----------------------------+
| VALARM | 0 | |
+--------------------+----------+----------------------------+
| VTIMEZONE | 0+ | |
+--------------------+----------+----------------------------+
| IANA-COMPONENT | 0+ | |
+--------------------+----------+----------------------------+
| X-COMPONENT | 0+ | |
+--------------------+----------+----------------------------+
| VTODO | 0 | |
+--------------------+----------+----------------------------+
| VJOURNAL | 0 | |
+--------------------+----------+----------------------------+
| VEVENT | 0 | |
+--------------------+----------+----------------------------+
| VFREEBUSY | 0 | |
+--------------------+----------+----------------------------+
Constraints for a METHOD:REFRESH of a VPOLL Table 9: Constraints for a METHOD:REFRESH of a VPOLL
6.3.7. Method: POLLSTATUS 7.3.7. Method: POLLSTATUS
The "POLLSTATUS" method in a "VPOLL" calendar component is used to The "POLLSTATUS" method in a "VPOLL" calendar component is used to
inform recipients of the current status of the poll in a compact inform recipients of the current status of the poll in a compact
manner. The "Organizer" MUST be present in the confirmed poll manner. The "Organizer" MUST be present in the confirmed poll
component. All "Voters" MUST be present. The selected component(s) component. All "Voters" MUST be present. The selected component(s)
according to the poll mode SHOULD NOT be present in the poll according to the poll mode SHOULD NOT be present in the poll
component. Clients receiving this message may store the confirmed component. Clients receiving this message may store the confirmed
items in their calendars. items in their calendars.
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +=================+==========+=====================================+
| Component/Property | Presence | Comment | | Component/ | Presence | Comment |
+--------------------+----------+-----------------------------------+ | Property | | |
| METHOD | 1 | MUST equal POLLSTATUS. | +=================+==========+=====================================+
| VPOLL | 1+ | | | METHOD | 1 | MUST equal POLLSTATUS. |
| PARTICIPANT | 1+ | The voters containing their | +-----------------+----------+-------------------------------------+
| | | current vote | | VPOLL | 1+ | |
| COMPLETED | 0 or 1 | Only present for a completed poll | +-----------------+----------+-------------------------------------+
| DTSTAMP | 1 | | | PARTICIPANT | 1+ | The voters containing their current |
| DTSTART | 0 or 1 | | | | | vote |
| ORGANIZER | 1 | | +-----------------+----------+-------------------------------------+
| SUMMARY | 1 | Can be null. | | COMPLETED | 0 or 1 | Only present for a completed poll |
| UID | 1 | | +-----------------+----------+-------------------------------------+
| SEQUENCE | 0 or 1 | MUST be present if value is | | DTSTAMP | 1 | |
| | | greater than 0; MAY be present if | +-----------------+----------+-------------------------------------+
| | | 0. | | DTSTART | 0 or 1 | |
| ACCEPT-RESPONSE | 0 | | +-----------------+----------+-------------------------------------+
| ATTACH | 0 | | | ORGANIZER | 1 | |
| CATEGORIES | 0 | | +-----------------+----------+-------------------------------------+
| CLASS | 0 | | | SUMMARY | 1 | Can be null. |
| COMMENT | 0+ | | +-----------------+----------+-------------------------------------+
| CONTACT | 0 | | | UID | 1 | |
| CREATED | 0 or 1 | | +-----------------+----------+-------------------------------------+
| DESCRIPTION | 0 or 1 | Can be null. | | SEQUENCE | 0 or 1 | MUST be present if value is greater |
| DTEND | 0 or 1 | If present, DURATION MUST NOT be | | | | than 0; MAY be present if 0. |
| | | present. | +-----------------+----------+-------------------------------------+
| DURATION | 0 or 1 | If present, DTEND MUST NOT be | | ACCEPT-RESPONSE | 0 | |
| | | present. | +-----------------+----------+-------------------------------------+
| LAST-MODIFIED | 0 or 1 | | | ATTACH | 0 | |
| POLL-ITEM-ID | 0 | | +-----------------+----------+-------------------------------------+
| POLL-MODE | 0 or 1 | | | CATEGORIES | 0 | |
| POLL-PROPERTIES | 0 | | +-----------------+----------+-------------------------------------+
| PRIORITY | 0 or 1 | | | CLASS | 0 | |
| RELATED-TO | 0+ | | +-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | | | COMMENT | 0+ | |
| STATUS | 0 or 1 | MAY be one of | +-----------------+----------+-------------------------------------+
| | | TENTATIVE/CONFIRMED/CANCELLED. | | CONTACT | 0 | |
| URL | 0 or 1 | | +-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | | | CREATED | 0 or 1 | |
| X-PROPERTY | 0+ | | +-----------------+----------+-------------------------------------+
| REQUEST-STATUS | 0 | | | DESCRIPTION | 0 or 1 | Can be null. |
| VALARM | 0+ | | +-----------------+----------+-------------------------------------+
| VEVENT | 0 | All candidate components SHOULD | | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
| | | NOT be present. | | | | present. |
| VFREEBUSY | 0 | | +-----------------+----------+-------------------------------------+
| VJOURNAL | 0 | All candidate components SHOULD | | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
| | | NOT be present. | | | | present. |
| VTODO | 0 | All candidate components SHOULD | +-----------------+----------+-------------------------------------+
| | | NOT be present. | | LAST-MODIFIED | 0 or 1 | |
| VTIMEZONE | 0+ | MUST be present if any date/time | +-----------------+----------+-------------------------------------+
| | | refers to a timezone. | | POLL-ITEM-ID | 0 | |
| IANA-COMPONENT | 0+ | | +-----------------+----------+-------------------------------------+
| X-COMPONENT | 0+ | | | POLL-MODE | 0 or 1 | |
+--------------------+----------+-----------------------------------+ +-----------------+----------+-------------------------------------+
| POLL-PROPERTIES | 0 | |
+-----------------+----------+-------------------------------------+
| PRIORITY | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| RELATED-TO | 0+ | |
+-----------------+----------+-------------------------------------+
| RESOURCES | 0+ | |
+-----------------+----------+-------------------------------------+
| STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED/ |
| | | CANCELLED. |
+-----------------+----------+-------------------------------------+
| URL | 0 or 1 | |
+-----------------+----------+-------------------------------------+
| IANA-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| X-PROPERTY | 0+ | |
+-----------------+----------+-------------------------------------+
| REQUEST-STATUS | 0 | |
+-----------------+----------+-------------------------------------+
| VALARM | 0+ | |
+-----------------+----------+-------------------------------------+
| VEVENT | 0 | All candidate components SHOULD NOT |
| | | be present. |
+-----------------+----------+-------------------------------------+
| VFREEBUSY | 0 | |
+-----------------+----------+-------------------------------------+
| VJOURNAL | 0 | All candidate components SHOULD NOT |
| | | be present. |
+-----------------+----------+-------------------------------------+
| VTODO | 0 | All candidate components SHOULD NOT |
| | | be present. |
+-----------------+----------+-------------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone. |
+-----------------+----------+-------------------------------------+
| IANA-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
| X-COMPONENT | 0+ | |
+-----------------+----------+-------------------------------------+
Constraints for a METHOD:POLLSTATUS of a VPOLL Table 10: Constraints for a METHOD:POLLSTATUS of a VPOLL
7. CalDAV Extensions 8. CalDAV Extensions
This specification extends [RFC4791] in that it defines a new This specification extends [RFC4791] in that it defines a new
component and new iCalendar properties to be supported and requires component and new iCalendar properties to be supported and requires
extra definitions related to time-ranges and reports. extra definitions related to time-ranges and reports.
Additionally, it extends [RFC6638] as it a VPOLL component is a Additionally, it extends [RFC6638] as it a VPOLL component is a
schedulable entity. schedulable entity.
7.1. Calendar Collection Properties 8.1. Calendar Collection Properties
This section defines new CalDAV properties for calendar collections. This section defines new CalDAV properties for calendar collections.
7.1.1. CALDAV:supported-vpoll-component-sets 8.1.1. CALDAV:supported-vpoll-component-sets
Name
supported-vpoll-component-sets
Namespace Name supported-vpoll-component-sets
urn:ietf:params:xml:ns:caldav
Purpose Namespace urn:ietf:params:xml:ns:caldav
Specifies the calendar component types (e.g., VEVENT, VTODO, etc.) Purpose Specifies the calendar component types (e.g., VEVENT, VTODO,
and combination of types that may be included in a VPOLL etc.) and combination of types that may be included in a VPOLL
component. component.
Conformance Conformance This property MAY be defined on any calendar collection.
This property MAY be defined on any calendar collection. If If defined, it MUST be protected and SHOULD NOT be returned by a
defined, it MUST be protected and SHOULD NOT be returned by a PROPFIND DAV:allprop request (as defined in [RFC2518]).
PROPFIND DAV:allprop request (as defined in section=12.14.1
[RFC2518]).
Description Description The CALDAV:supported-vpoll-component-sets property is
The CALDAV:supported-vpoll-component-sets property is used to used to specify restrictions on the calendar component types that
specify restrictions on the calendar component types that VPOLL VPOLL components may contain in a calendar collection.
components may contain in a calendar collection.
It also specifies the combination of allowed component types. It also specifies the combination of allowed component types.
Any attempt by the client to store VPOLL components with component Any attempt by the client to store VPOLL components with component
types or combinations of types not listed in this property, if it types or combinations of types not listed in this property, if it
exists, MUST result in an error, with the "CALDAV:supported-vpoll- exists, MUST result in an error, with the "CALDAV:supported-vpoll-
component-sets" precondition Section 7.2 being violated. Since component-sets" precondition Section 8.2 being violated. Since
this property is protected, it cannot be changed by clients using this property is protected, it cannot be changed by clients using
a PROPPATCH request. However, clients can initialize the value of a PROPPATCH request. However, clients can initialize the value of
this property when creating a new calendar collection with this property when creating a new calendar collection with
MKCALENDAR. In the absence of this property, the server MUST MKCALENDAR. In the absence of this property, the server MUST
accept all component types, and the client can assume that all accept all component types, and the client can assume that all
component types are accepted. component types are accepted.
Definition Definition
<!ELEMENT supported-vpoll-component-sets <!ELEMENT supported-vpoll-component-sets
(supported-vpoll-component-set*) > (supported-vpoll-component-set*) >
<!ELEMENT supported-vpoll-component-set (comp+)> <!ELEMENT supported-vpoll-component-set (comp+)>
Figure 22
<C:supported-vpoll-component-sets <C:supported-vpoll-component-sets
xmlns:C="urn:ietf:params:xml:ns:caldav"> xmlns:C="urn:ietf:params:xml:ns:caldav">
<!-- VPOLLs with VEVENT, VFREEBUSY or VTODO --> <!-- VPOLLs with VEVENT, VFREEBUSY or VTODO -->
<C:supported-vpoll-component-set> <C:supported-vpoll-component-set>
<C:comp name="VEVENT" /> <C:comp name="VEVENT" />
<C:comp name="VFREEBUSY" /> <C:comp name="VFREEBUSY" />
<C:comp name="VTODO" /> <C:comp name="VTODO" />
</C:supported-vpoll-component-set> </C:supported-vpoll-component-set>
skipping to change at page 43, line 46 skipping to change at page 49, line 32
<C:supported-vpoll-component-set> <C:supported-vpoll-component-set>
<C:comp name="VEVENT" /> <C:comp name="VEVENT" />
</C:supported-vpoll-component-set> </C:supported-vpoll-component-set>
<!-- VPOLLs with just VTODO --> <!-- VPOLLs with just VTODO -->
<C:supported-vpoll-component-set> <C:supported-vpoll-component-set>
<C:comp name="VTODO" /> <C:comp name="VTODO" />
</C:supported-vpoll-component-set> </C:supported-vpoll-component-set>
</C:supported-vpoll-component-sets> </C:supported-vpoll-component-sets>
7.1.2. CALDAV:vpoll-max-items Figure 23
Name 8.1.2. CALDAV:vpoll-max-items
vpoll-max-items
Namespace Name vpoll-max-items
urn:ietf:params:xml:ns:caldav
Purpose Namespace urn:ietf:params:xml:ns:caldav
Provides a numeric value indicating the maximum number of items
that may be contained in any instance of a VPOLL calendar object
resource stored in the calendar collection.
Conformance Purpose Provides a numeric value indicating the maximum number of
This property MAY be defined on any calendar collection. If items that may be contained in any instance of a VPOLL calendar
defined, it MUST be protected and SHOULD NOT be returned by a object resource stored in the calendar collection.
PROPFIND DAV:allprop request (as defined in section=12.14.1
[RFC2518]).
Description Conformance This property MAY be defined on any calendar collection.
The CALDAV:vpoll-max-items is used to specify a numeric value that If defined, it MUST be protected and SHOULD NOT be returned by a
indicates the maximum number of iCalendar components in any one PROPFIND DAV:allprop request (as defined in [RFC2518]).
instance of a VPOLL calendar object resource stored in a calendar
collection. Any attempt to store a calendar object resource with Description The CALDAV:vpoll-max-items is used to specify a numeric
more components per instance than this value MUST result in an value that indicates the maximum number of iCalendar components in
error, with the CALDAV: vpoll-max-items precondition Section 7.2 any one instance of a VPOLL calendar object resource stored in a
being violated. In the absence of this property, the client can calendar collection. Any attempt to store a calendar object
assume that the server can handle any number of items in a VPOLL resource with more components per instance than this value MUST
calendar component. result in an error, with the CALDAV: vpoll-max-items precondition
Section 8.2 being violated. In the absence of this property, the
client can assume that the server can handle any number of items
in a VPOLL calendar component.
Definition Definition
<!ELEMENT vpoll-max-items (#PCDATA)> <!ELEMENT vpoll-max-items (#PCDATA)>
PCDATA value: a numeric value (integer greater than zero) PCDATA value: a numeric value (integer greater than zero)
Figure 24
<C:vpoll-max-items xmlns:C="urn:ietf:params:xml:ns:caldav" <C:vpoll-max-items xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:vpoll-max-items> >25</C:vpoll-max-items>
7.1.3. CALDAV:vpoll-max-active Figure 25
Name 8.1.3. CALDAV:vpoll-max-active
vpoll-max-active
Namespace Name vpoll-max-active
urn:ietf:params:xml:ns:caldav
Purpose Namespace urn:ietf:params:xml:ns:caldav
Provides a numeric value indicating the maximum number of active
vpolls at any one time.
Conformance Purpose Provides a numeric value indicating the maximum number of
This property MAY be defined on any calendar collection. If active vpolls at any one time.
defined, it MUST be protected and SHOULD NOT be returned by a
PROPFIND DAV:allprop request (as defined in section=12.14.1
[RFC2518]).
Description Conformance This property MAY be defined on any calendar collection.
The CALDAV:vpoll-max-active is used to specify a numeric value If defined, it MUST be protected and SHOULD NOT be returned by a
that indicates the maximum number of active VPOLLs at any one PROPFIND DAV:allprop request (as defined in [RFC2518]).
time. Any attempt to store a new active VPOLL calendar object
Description The CALDAV:vpoll-max-active is used to specify a numeric
value that indicates the maximum number of active VPOLLs at any
one time. Any attempt to store a new active VPOLL calendar object
resource which results in exceeding this limit MUST result in an resource which results in exceeding this limit MUST result in an
error, with the "CALDAV:vpoll-max-active" precondition Section 7.2 error, with the "CALDAV:vpoll-max-active" precondition Section 8.2
being violated. In the absence of this property, the client can being violated. In the absence of this property, the client can
assume that the server can handle any number of active VPOLLs. assume that the server can handle any number of active VPOLLs.
Definition Definition
<!ELEMENT vpoll-max-active (#PCDATA)> <!ELEMENT vpoll-max-active (#PCDATA)>
PCDATA value: a numeric value (integer greater than zero) PCDATA value: a numeric value (integer greater than zero)
Figure 26
<C:vpoll-max-active xmlns:C="urn:ietf:params:xml:ns:caldav" <C:vpoll-max-active xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:vpoll-max-active> >25</C:vpoll-max-active>
Figure 27
7.1.4. CALDAV:vpoll-max-voters 8.1.4. CALDAV:vpoll-max-voters
Name Name "vpoll-max-voters"
"vpoll-max-voters"
Namespace Namespace "urn:ietf:params:xml:ns:caldav"
"urn:ietf:params:xml:ns:caldav"
Purpose Purpose Provides a numeric value indicating the maximum number of
Provides a numeric value indicating the maximum number of voters voters for any instance of a VPOLL calendar object resource stored
for any instance of a VPOLL calendar object resource stored in the in the calendar collection.
calendar collection.
Conformance Conformance This property MAY be defined on any calendar collection.
This property MAY be defined on any calendar collection. If If defined, it MUST be protected and SHOULD NOT be returned by a
defined, it MUST be protected and SHOULD NOT be returned by a PROPFIND "DAV:allprop" request (as defined in [RFC2518]).
PROPFIND "DAV:allprop" request (as defined in section=12.14.1
[RFC2518]).
Description Description The "CALDAV:vpoll-max-voters" is used to specify a
The "CALDAV:vpoll-max-voters" is used to specify a numeric value numeric value that indicates the maximum number of voters for any
that indicates the maximum number of voters for any one instance one instance of a VPOLL calendar object resource stored in a
of a VPOLL calendar object resource stored in a calendar calendar collection. Any attempt to store a calendar object
collection. Any attempt to store a calendar object resource with resource with more voters per instance than this value MUST result
more voters per instance than this value MUST result in an error, in an error, with the CALDAV: "vpoll-max-voters" precondition
with the CALDAV: "vpoll-max-voters" precondition Section 7.2 being Section 8.2 being violated. In the absence of this property, the
violated. In the absence of this property, the client can assume client can assume that the server can handle any number of voters
that the server can handle any number of voters in a VPOLL in a VPOLL calendar component.
calendar component.
Definition Definition
<!ELEMENT vpoll-max-voters (#PCDATA)> <!ELEMENT vpoll-max-voters (#PCDATA)>
PCDATA value: a numeric value (integer greater than zero) PCDATA value: a numeric value (integer greater than zero)
Figure 28
<C:vpoll-max-voters xmlns:C="urn:ietf:params:xml:ns:caldav" <C:vpoll-max-voters xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:vpoll-max-voters> >25</C:vpoll-max-voters>
7.1.5. CalDAV:even-more-properties Figure 29
TODO: vpoll-supported-mode poll options - e.g "vpoll-basic" 8.1.5. CalDAV:even-more-properties
7.1.6. Extensions to CalDAV scheduling 8.1.6. Extensions to CalDAV scheduling
This specification extends [RFC6638]. This specification extends [RFC6638].
Each section of Appendix A "Scheduling Privileges Summary" is Each section of Appendix A "Scheduling Privileges Summary" is
extended to include VPOLL. extended to include VPOLL.
Any reference to the ATTENDEE property should be read to include the Any reference to the ATTENDEE property should be read to include the
CALENDAR-ADDRESS property contained in the PARTICIPANT compoents. CALENDAR-ADDRESS property contained in the PARTICIPANT compoents.
That is, for scheduling purposes the CALENDAR-ADDRESS property is That is, for scheduling purposes the CALENDAR-ADDRESS property is
handled in exactly the same manner as the ATTENDEE property. handled in exactly the same manner as the ATTENDEE property.
7.2. Additional Preconditions for PUT, COPY, and MOVE 8.2. Additional Preconditions for PUT, COPY, and MOVE
This specification creates additional Preconditions for PUT, COPY, This specification creates additional Preconditions for PUT, COPY,
and MOVE methods. These preconditions apply when a PUT operation of and MOVE methods. These preconditions apply when a PUT operation of
a VPOLL calendar object resource into a calendar collection occurs, a VPOLL calendar object resource into a calendar collection occurs,
or when a COPY or MOVE operation of a calendar object resource into a or when a COPY or MOVE operation of a calendar object resource into a
calendar collection occurs, or when a COPY or MOVE operation occurs calendar collection occurs, or when a COPY or MOVE operation occurs
on a calendar collection. on a calendar collection.
The new preconditions are: The new preconditions are:
(CALDAV:supported-vpoll-component-sets) (CALDAV:supported-vpoll-component-sets) The VPOLL resource submitted
The VPOLL resource submitted in the PUT request, or targeted by a in the PUT request, or targeted by a COPY or MOVE request, MUST
COPY or MOVE request, MUST contain a type or combination of contain a type or combination of calendar component that is
calendar component that is supported in the targeted calendar supported in the targeted calendar collection;
collection;
(CALDAV:vpoll-max-items) (CALDAV:vpoll-max-items) The VPOLL resource submitted in the PUT
The VPOLL resource submitted in the PUT request, or targeted by a request, or targeted by a COPY or MOVE request, MUST have a number
COPY or MOVE request, MUST have a number of sub-components of sub-components (excluding VTIMEZONE) less than or equal to the
(excluding VTIMEZONE) less than or equal to the value of the value of the "CALDAV:vpoll-max-items" property value Section 8.1.2
"CALDAV:vpoll-max-items" property value Section 7.1.2 on the on the calendar collection where the resource will be stored;
calendar collection where the resource will be stored;
(CALDAV:vpoll-max-active) (CALDAV:vpoll-max-active) The PUT request, or COPY or MOVE request,
The PUT request, or COPY or MOVE request, MUST not result in the MUST not result in the number of active VPOLLs being greater than
number of active VPOLLs being greater than the value of the the value of the "CALDAV:vpoll-max-active" property value
"CALDAV:vpoll-max-active" property value Section 7.1.3 on the Section 8.1.3 on the calendar collection where the resource will
calendar collection where the resource will be stored; be stored;
(CALDAV:vpoll-max-voters) (CALDAV:vpoll-max-voters) The VPOLL resource submitted in the PUT
The VPOLL resource submitted in the PUT request, or targeted by a request, or targeted by a COPY or MOVE request, MUST have a number
COPY or MOVE request, MUST have a number of voters represented by of voters represented by PARTICIPANT components less than or equal
PARTICIPANT components less than or equal to the value of the to the value of the "CALDAV:vpoll-max-voters" property value
"CALDAV:vpoll-max-voters" property value Section 7.1.4 on the Section 8.1.4 on the calendar collection where the resource will
calendar collection where the resource will be stored; be stored;
7.3. CalDAV:calendar-query Report 8.3. CalDAV:calendar-query Report
This allows the retrieval of VPOLLs and their included components. This allows the retrieval of VPOLLs and their included components.
The query specification allows queries to be directed at the The query specification allows queries to be directed at the
contained sub-components. For VPOLL queries this feature is contained sub-components. For VPOLL queries this feature is
disallowed. Time-range queries can only target the vpoll component disallowed. Time-range queries can only target the vpoll component
itself. itself.
7.3.1. Example: Partial Retrieval of VPOLL 8.3.1. Example: Partial Retrieval of VPOLL
In this example, the client requests the server to return specific In this example, the client requests the server to return specific
components and properties of the VPOLL components that overlap the components and properties of the VPOLL components that overlap the
time range from December 4, 2012, at 00:00:00 A.M. UTC to December time range from December 4, 2012, at 00:00:00 A.M. UTC to December
5, 2012, at 00:00:00 A.M. UTC. In addition, the "DAV:getetag" 5, 2012, at 00:00:00 A.M. UTC. In addition, the "DAV:getetag"
property is also requested and returned as part of the response. property is also requested and returned as part of the response.
Note that due to the CALDAV: calendar-data element restrictions, the Note that due to the CALDAV: calendar-data element restrictions, the
DTSTAMP property in VPOLL components has not been returned, and the DTSTAMP property in VPOLL components has not been returned, and the
only property returned in the VCALENDAR object is VERSION. only property returned in the VCALENDAR object is VERSION.
skipping to change at page 49, line 28 skipping to change at page 55, line 4
BEGIN:VPOLL BEGIN:VPOLL
DTSTART;TZID=US/Eastern:20121204T100000 DTSTART;TZID=US/Eastern:20121204T100000
DURATION:PT4D DURATION:PT4D
SUMMARY:Poll #3 SUMMARY:Poll #3
UID:DC6C50A017428C5216A2F1CD@example.com UID:DC6C50A017428C5216A2F1CD@example.com
END:VPOLL END:VPOLL
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.4. CalDAV time ranges Figure 30
"CALDAV:time-range XML Element" in section=9.9 [RFC4791] describes 8.4. CalDAV time ranges
how to specify time ranges to limit the set of calendar components
returned by the server. This specification extends [RFC4791] to "CALDAV:time-range XML Element" in [RFC4791] describes how to specify
describe the meaning of time ranges for VPOLL time ranges to limit the set of calendar components returned by the
server. This specification extends [RFC4791] to describe the meaning
of time ranges for VPOLL
A VPOLL component is said to overlap a given time range if the A VPOLL component is said to overlap a given time range if the
condition for the corresponding component state specified in the condition for the corresponding component state specified in the
table below is satisfied. The conditions depend on the presence of table below is satisfied. The conditions depend on the presence of
the DTSTART, DURATION, DTEND, COMPLETED and CREATED properties in the the DTSTART, DURATION, DTEND, COMPLETED and CREATED properties in the
VPOLL component. Note that, as specified above, the DTEND value MUST VPOLL component. Note that, as specified above, the DTEND value MUST
be a DATE-TIME value equal to or after the DTSTART value if be a DATE-TIME value equal to or after the DTSTART value if
specified. specified.
+-------------------------------------------------------------------+ +-------------------------------------------------------------------+
skipping to change at page 50, line 41 skipping to change at page 56, line 41
| | | | | | AND | | | | | | | AND |
| | | | | | ((end >= CREATED) OR (end >= COMPLETED))| | | | | | | ((end >= CREATED) OR (end >= COMPLETED))|
+---+---+---+---+---+-----------------------------------------------+ +---+---+---+---+---+-----------------------------------------------+
| N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) | | N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) |
+---+---+---+---+---+-----------------------------------------------+ +---+---+---+---+---+-----------------------------------------------+
| N | N | N | N | Y | (end > CREATED) | | N | N | N | N | Y | (end > CREATED) |
+---+---+---+---+---+-----------------------------------------------+ +---+---+---+---+---+-----------------------------------------------+
| N | N | N | N | N | TRUE | | N | N | N | N | N | TRUE |
+---+---+---+---+---+-----------------------------------------------+ +---+---+---+---+---+-----------------------------------------------+
8. Security Considerations Figure 31
9. Security Considerations
Applications using these property need to be aware of the risks Applications using these property need to be aware of the risks
entailed in using the URIs provided as values. See [RFC3986] for a entailed in using the URIs provided as values. See [RFC3986] for a
discussion of the security considerations relating to URIs. discussion of the security considerations relating to URIs.
9. IANA Considerations 10. IANA Considerations
9.1. Parameter Registrations 10.1. Parameter Registrations
This document defines the following new iCalendar property parameters This document defines the following new iCalendar property parameters
to be added to the registry defined in section=8.2.4 [RFC5545]: to be added to the registry defined in [RFC5545]:
+--------------------+---------+---------------+ +====================+=========+===============+
| Property Parameter | Status | Reference | | Property Parameter | Status | Reference |
+====================+=========+===============+
| REQUIRED | Current | Section 5.4.1 |
+--------------------+---------+---------------+ +--------------------+---------+---------------+
| REQUIRED | Current | Section 4.4.1 | | STAY-INFORMED | Current | Section 5.4.2 |
| STAY-INFORMED | Current | Section 4.4.2 |
+--------------------+---------+---------------+ +--------------------+---------+---------------+
9.2. Property Registrations Table 11
10.2. Property Registrations
This document defines the following new iCalendar properties to be This document defines the following new iCalendar properties to be
added to the registry defined in section=8.2.3 [RFC5545]: added to the registry defined in [RFC5545]:
+-----------------+---------+---------------+ +=================+=========+===============+
| Property | Status | Reference | | Property | Status | Reference |
+=================+=========+===============+
| ACCEPT-RESPONSE | Current | Section 5.5.7 |
+-----------------+---------+---------------+ +-----------------+---------+---------------+
| ACCEPT-RESPONSE | Current | Section 4.5.7 | | POLL-ITEM-ID | Current | Section 5.5.3 |
| POLL-ITEM-ID | Current | Section 4.5.3 | +-----------------+---------+---------------+
| POLL-MODE | Current | Section 4.5.4 | | POLL-MODE | Current | Section 5.5.4 |
| POLL-PROPERTIES | Current | Section 4.5.5 | +-----------------+---------+---------------+
| POLL-WINNER | Current | Section 4.5.6 | | POLL-PROPERTIES | Current | Section 5.5.5 |
| RESPONSE | Current | Section 4.5.8 | +-----------------+---------+---------------+
| POLL-WINNER | Current | Section 5.5.6 |
+-----------------+---------+---------------+
| RESPONSE | Current | Section 5.5.8 |
+-----------------+---------+---------------+ +-----------------+---------+---------------+
9.3. POLL-MODE Registration Template Table 12
10.3. POLL-MODE Registration Template
A poll mode is defined by completing the following template. A poll mode is defined by completing the following template.
Poll mode name Poll mode name The name of the poll mode.
The name of the poll mode.
Purpose Purpose The purpose of the poll mode. Give a short but clear
The purpose of the poll mode. Give a short but clear description. description.
Reference Reference A reference to the RFC in which the poll mode is defined
A reference to the RFC in which the poll mode is defined
9.4. POLL-MODE Registrations 10.4. POLL-MODE Registrations
This document defines the following registered poll modes. This document defines the following registered poll modes.
+----------+--------------------------------------------+-----------+ +===========+=======================================+===========+
| Poll | Purpose | Reference | | Poll mode | Purpose | Reference |
| mode | | | | name | | |
| name | | | +===========+=======================================+===========+
+----------+--------------------------------------------+-----------+ | BASIC | To provide simple voting for a single | Current |
| BASIC | To provide simple voting for a single | Current | | | outcome from a number of candidates. | |
| | outcome from a number of candidates. | | +-----------+---------------------------------------+-----------+
+----------+--------------------------------------------+-----------+
10. Acknowledgements
The authors would like to thank the members of the Calendaring and
Scheduling Consortium (CalConnect) for contributing their ideas and
support.
11. References
11.1. Normative References
[I-D.draft-ietf-calext-eventpub-extensions] Table 13
Douglass, M., "Event Publishing Extensions to iCalendar",
draft-ietf-calext-eventpub-extensions-15 (work in
progress), October 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 11. Normative references
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S., and D. [RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S., and D.
Jensen, "HTTP Extensions for Distributed Authoring -- Jensen, "HTTP Extensions for Distributed
WEBDAV", RFC 2518, DOI 10.17487/RFC2518, February 1999, Authoring — WEBDAV", IETF RFC 2518, IETF RFC 2518,
DOI 10.17487/RFC2518, February 1999,
<https://www.rfc-editor.org/info/rfc2518>. <https://www.rfc-editor.org/info/rfc2518>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", IETF RFC 3986,
RFC 3986, DOI 10.17487/RFC3986, January 2005, IETF RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>. <https://www.rfc-editor.org/info/rfc3986>.
[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)", IETF RFC
DOI 10.17487/RFC4791, March 2007, 4791, IETF RFC 4791, DOI 10.17487/RFC4791, March 2007,
<https://www.rfc-editor.org/info/rfc4791>. <https://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)", Scheduling Core Object Specification (iCalendar)", IETF
RFC 5545, DOI 10.17487/RFC5545, September 2009, RFC 5545, IETF RFC 5545, DOI 10.17487/RFC5545, September
<https://www.rfc-editor.org/info/rfc5545>. 2009, <https://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, Interoperability Protocol (iTIP)", IETF RFC 5546, IETF RFC
DOI 10.17487/RFC5546, December 2009, 5546, DOI 10.17487/RFC5546, December 2009,
<https://www.rfc-editor.org/info/rfc5546>. <https://www.rfc-editor.org/info/rfc5546>.
[RFC6047] Melnikov, A., Ed., "iCalendar Message-Based [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based
Interoperability Protocol (iMIP)", RFC 6047, Interoperability Protocol (iMIP)", IETF RFC 6047, IETF RFC
DOI 10.17487/RFC6047, December 2010, 6047, DOI 10.17487/RFC6047, December 2010,
<https://www.rfc-editor.org/info/rfc6047>. <https://www.rfc-editor.org/info/rfc6047>.
[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", IETF RFC 6638, IETF RFC 6638,
DOI 10.17487/RFC6638, June 2012,
<https://www.rfc-editor.org/info/rfc6638>. <https://www.rfc-editor.org/info/rfc6638>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [I-D.ietf-calext-eventpub-extensions]
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, Douglass, M., "Event Publishing Extensions to iCalendar",
May 2017, <https://www.rfc-editor.org/info/rfc8174>. IETF I-D.ietf-calext-eventpub-extensions, IETF I-D.ietf-
calext-eventpub-extensions, October 2019.
11.2. Informative References
[IETF.TLP]
IETF, "IETF Trust Legal Provisions (TLP)", April 2018,
<https://trustee.ietf.org/trust-legal-provisions.html>.
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC
Text on Security Considerations", BCP 72, RFC 3552,
DOI 10.17487/RFC3552, July 2003,
<https://www.rfc-editor.org/info/rfc3552>.
[RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed
Authoring and Versioning (WebDAV)", RFC 4918,
DOI 10.17487/RFC4918, June 2007,
<https://www.rfc-editor.org/info/rfc4918>.
[RFC5378] Bradner, S., Ed. and J. Contreras, Ed., "Rights
Contributors Provide to the IETF Trust", BCP 78, RFC 5378,
DOI 10.17487/RFC5378, November 2008,
<https://www.rfc-editor.org/info/rfc5378>.
Appendix A. Open issues Appendix A. Open issues
public-comment: Not documented and was a parameter on something. public-comment: Not documented and was a parameter on something.
Really sounds like a PARTICIPANT or VOTE property Really sounds like a PARTICIPANT or VOTE property
Notifications: Need to do a section on what Notifications to support. Notifications: Need to do a section on what Notifications to support.
A. VPOLL is about to end and you haven't voted on it yet. Instead A. VPOLL is about to end and you haven't voted on it yet. Instead
reuse VALARMS to notify the user? reuse VALARMS to notify the user?
Future: Restarting a confirmed/completed VPOLL What to do with Future: Restarting a confirmed/completed VPOLL What to do with
changes to STATUS:CONFIRMED? Allow them or not? What do to that changes to STATUS:CONFIRMED? Allow them or not? What do to that
poll had a winning event or todo. Stress VPOLL UID MUST be unique poll had a winning event or todo. Stress VPOLL UID MUST be unique
Changing status back from CONFIRMED MUST adjust status of any events Changing status back from CONFIRMED MUST adjust status of any events
booked as a result of confirmation. MUST winning event be cancelled booked as a result of confirmation. MUST winning event be cancelled
for POLL-MODE basic? No - voter has indicated now unable to attend - for POLL-MODE basic? No - voter has indicated now unable to attend -
want to revote want to revote
Future: Voting on a confirmed/completed VPOLL Can a voter vote after Future: Voting on a confirmed/completed VPOLL Can a voter vote after
completion? May be unable to attend and wants to indicate. Requires completion? May be unable to attend and wants to indicate. Requires
skipping to change at page 54, line 27 skipping to change at page 59, line 47
events where that user's isn't the organizer of the poll? So is events where that user's isn't the organizer of the poll? So is
there a requirement that the account that poll is on is able to there a requirement that the account that poll is on is able to
create each one of the resources in the poll? i.e. I can't create a create each one of the resources in the poll? i.e. I can't create a
poll with a set of events where I am just the attendee of the events. poll with a set of events where I am just the attendee of the events.
Are there any other restrictions for components in a VPOLL? Add to Are there any other restrictions for components in a VPOLL? Add to
security consideration security consideration
Update to existing event after poll confirm When voting on existing Update to existing event after poll confirm When voting on existing
event - winning properties ONLY are merged in to the real event. event - winning properties ONLY are merged in to the real event.
Need to write down what isn't valid in a VPOLL Need to write down what isn't valid in a VPOLL a. Can't change POLL-
a. Can't change POLL-MODE MODE
Guide for ATTENDEE roles chair, NON-PARTICIPANT etc Guide for ATTENDEE roles chair, NON-PARTICIPANT etc
? - some iTip notes On confirm - send itip if appropriate (PUBLISH) - ? - some iTip notes On confirm - send itip if appropriate (PUBLISH) -
all non-participating - shared - feeds Organizer can specify where all non-participating - shared - feeds Organizer can specify where
result is? Confirm can specify that itip is sent - ITIP / NONE - result is? Confirm can specify that itip is sent - ITIP / NONE -
parameter ? on POLL-WINNER parameter ? on POLL-WINNER
Need to add example of freebusy in response Need to add example of freebusy in response
BEGIN:VCALENDAR BEGIN:VCALENDAR
VERSION:2.0 VERSION:2.0
PRODID:-//BedeworkCaldavTest//BedeworkCaldavTest PRODID:-//BedeworkCaldavTest//BedeworkCaldavTest
METHOD: REPLY METHOD: REPLY
BEGIN:VPOLL BEGIN:VPOLL
ORGANIZER:mailto:douglm@mysite.edu ORGANIZER:mailto:douglm@mysite.edu
BEGIN:PARTICIPANT BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:eric@example.com CALENDAR-ADDRESS:mailto:eric@example.com
UID:sched01-1234567890 UID:sched01-1234567890
skipping to change at page 55, line 24 skipping to change at page 60, line 31
DTSTAMP:20120101T010000Z DTSTAMP:20120101T010000Z
SEQUENCE:0 SEQUENCE:0
SUMMARY:What to do this week SUMMARY:What to do this week
BEGIN:VFREEBUSY BEGIN:VFREEBUSY
....... .......
END:VFREEBUSY END:VFREEBUSY
END:PARTICIPANT END:PARTICIPANT
END:VPOLL END:VPOLL
END:VCALENDAR END:VCALENDAR
Figure 32
Appendix B. Change log Appendix B. Change log
Calext V01: 2019-10-17 MD Calext V01: 2019-10-17 MD Replace VVOTER and VOTER with PARTICIPANT.
Replace VVOTER and VOTER with PARTICIPANT.
Calext V00: 2019-05-17 MD Calext V00: 2019-05-17 MD First calext version. Moved source to
First calext version. Moved source to metanorma. No changes to metanorma. No changes to specification.
specification.
V03: 2014-10-28 MD V03: 2014-10-28 MD
* Add VVOTER and VOTE components. * Add VVOTER and VOTE components.
* Add RESPONSE property. * Add RESPONSE property.
* Remove RESPONSE parameter from VOTER. * Remove RESPONSE parameter from VOTER.
V03: 2014-05-12 MD V03: 2014-05-12 MD
* Add reply-url property and required parameter. * Add reply-url property and required parameter.
* Fix ACCEPT-RESPONSE definition. * Fix ACCEPT-RESPONSE definition.
V02: 2014-05-12 MD V02: 2014-05-12 MD
* Typos fixed, clarifications made. * Typos fixed, clarifications made.
* Removed spurious COMMENT param. Switched some to PUBLIC- * Removed spurious COMMENT param. Switched some to PUBLIC-
COMMENT COMMENT
* Changed STAY-INFORMED to remove boolean value type and state * Changed STAY-INFORMED to remove boolean value type and state
explicit TRUE/FALSE values. explicit TRUE/FALSE values.
* iTip: Allow VPOLL DTSTART to be optional and allow * iTip: Allow VPOLL DTSTART to be optional and allow
VAVAILABILITY as subcomponent VAVAILABILITY as subcomponent
skipping to change at page 56, line 44 skipping to change at page 61, line 46
* Added CalDAV related parameters to VOTER * Added CalDAV related parameters to VOTER
* Removed bad CalDAV query example. State that queries cannot * Removed bad CalDAV query example. State that queries cannot
target the sub-components. target the sub-components.
Initial version: 2012-11-02 MD Initial version: 2012-11-02 MD
Authors' Addresses Authors' Addresses
Eric York Eric York
California Things, Inc
650 Main Street
Redwood City 94063
United States of America
Email: eric.york@gmail.com Email: eric.york@gmail.com
URI: www.linkedin.com/in/eryork
Cyrus Daboo Cyrus Daboo
Apple Inc.
1 Infinite Loop
Cupertino 95014
United States of America
Email: cyrus@daboo.name Email: cyrus@daboo.name
URI: https://www.apple.com
Michael Douglass Michael Douglass
Spherical Cow Group
226 3rd Street
Troy 12180
United States of America
Email: mikeadouglass@gmail.com Email: mikeadouglass@gmail.com
URI: https://sphericalcowgroup.com/
 End of changes. 306 change blocks. 
1115 lines changed or deleted 1308 lines changed or added

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