idnits 2.17.1
draft-ietf-calext-vpoll-01.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
== There is 1 instance of lines with non-ascii characters in the document.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
** The document seems to lack a both a reference to RFC 2119 and the
recommended RFC 2119 boilerplate, even if it appears to use RFC 2119
keywords.
RFC 2119 keyword, line 318: '...OLL. It's value SHOULD be a small int...'
RFC 2119 keyword, line 395: '... properties but MUST contain DTSTAMP,...'
RFC 2119 keyword, line 505: '... In this case it MUST contain some alt...'
RFC 2119 keyword, line 584: '... Parameter name REQUIRED...'
RFC 2119 keyword, line 597: '... This parameter MAY be specified on R...'
(151 more instances...)
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 2155 has weird spacing: '... Name suppo...'
== Line 2157 has weird spacing: '...mespace urn:i...'
== Line 2223 has weird spacing: '... Name vpoll...'
== Line 2225 has weird spacing: '...mespace urn:i...'
== Line 2259 has weird spacing: '... Name vpoll...'
== (1 more instance...)
== Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD',
or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please
use uppercase 'NOT' together with RFC 2119 keywords (if that is what you
mean).
Found 'MUST not' in this paragraph:
(CALDAV:vpoll-max-active) The PUT request, or COPY or MOVE
request, MUST not result in the number of active VPOLLs being greater
than the value of the "CALDAV:vpoll-max-active" property value Section
8.1.3 on the calendar collection where the resource will be stored;
-- The document date (14 October 2020) is 1283 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
** Obsolete normative reference: RFC 2518 (Obsoleted by RFC 4918)
Summary: 2 errors (**), 0 flaws (~~), 9 warnings (==), 1 comment (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 Network Working Group E. York
3 Internet-Draft
4 Intended status: Standards Track C. Daboo
5 Expires: 17 April 2021
6 M. Douglass
7 14 October 2020
9 VPOLL: Consensus Scheduling Component for iCalendar
10 draft-ietf-calext-vpoll-01
12 Abstract
14 This specification introduces a new iCalendar component which allows
15 for consensus scheduling, that is, voting on a number of alternative
16 meeting or task alternatives.
18 Status of This Memo
20 This Internet-Draft is submitted in full conformance with the
21 provisions of BCP 78 and BCP 79.
23 Internet-Drafts are working documents of the Internet Engineering
24 Task Force (IETF). Note that other groups may also distribute
25 working documents as Internet-Drafts. The list of current Internet-
26 Drafts is at https://datatracker.ietf.org/drafts/current/.
28 Internet-Drafts are draft documents valid for a maximum of six months
29 and may be updated, replaced, or obsoleted by other documents at any
30 time. It is inappropriate to use Internet-Drafts as reference
31 material or to cite them other than as "work in progress."
33 This Internet-Draft will expire on 17 April 2021.
35 Copyright Notice
37 Copyright (c) 2020 IETF Trust and the persons identified as the
38 document authors. All rights reserved.
40 This document is subject to BCP 78 and the IETF Trust's Legal
41 Provisions Relating to IETF Documents (https://trustee.ietf.org/
42 license-info) in effect on the date of publication of this document.
43 Please review these documents carefully, as they describe your rights
44 and restrictions with respect to this document. Code Components
45 extracted from this document must include Simplified BSD License text
46 as described in Section 4.e of the Trust Legal Provisions and are
47 provided without warranty as described in the Simplified BSD License.
49 Table of Contents
51 1. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 3
52 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
53 3. Terms and definitions . . . . . . . . . . . . . . . . . . . . 4
54 3.1. consensus scheduling . . . . . . . . . . . . . . . . . . 4
55 3.2. active Vpoll . . . . . . . . . . . . . . . . . . . . . . 4
56 3.3. voter . . . . . . . . . . . . . . . . . . . . . . . . . . 4
57 4. Simple Consensus Scheduling . . . . . . . . . . . . . . . . . 5
58 4.1. The VPOLL Component: An Overview . . . . . . . . . . . . 5
59 4.2. The VPOLL Alternative Choices: An Overview . . . . . . . 7
60 4.3. VPOLL responses . . . . . . . . . . . . . . . . . . . . . 8
61 4.4. VPOLL updates . . . . . . . . . . . . . . . . . . . . . . 9
62 4.5. VPOLL Completion . . . . . . . . . . . . . . . . . . . . 11
63 4.6. Other Responses . . . . . . . . . . . . . . . . . . . . . 12
64 5. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . 12
65 5.1. Updated Participant Type Value . . . . . . . . . . . . . 12
66 5.2. Updated Relation Type Value . . . . . . . . . . . . . . . 12
67 5.3. Updated Status Value . . . . . . . . . . . . . . . . . . 13
68 5.4. New Property Parameters . . . . . . . . . . . . . . . . . 13
69 5.4.1. Required . . . . . . . . . . . . . . . . . . . . . . 13
70 5.4.2. Stay-Informed . . . . . . . . . . . . . . . . . . . . 14
71 5.5. New Properties . . . . . . . . . . . . . . . . . . . . . 14
72 5.5.1. Accept-Response . . . . . . . . . . . . . . . . . . . 14
73 5.5.2. Poll-Completion . . . . . . . . . . . . . . . . . . . 15
74 5.5.3. Poll-Item-Id . . . . . . . . . . . . . . . . . . . . 16
75 5.5.4. Poll-Mode . . . . . . . . . . . . . . . . . . . . . . 17
76 5.5.5. Poll-properties . . . . . . . . . . . . . . . . . . . 17
77 5.5.6. Poll-Winner . . . . . . . . . . . . . . . . . . . . . 18
78 5.5.7. Reply-URL . . . . . . . . . . . . . . . . . . . . . . 19
79 5.5.8. Response . . . . . . . . . . . . . . . . . . . . . . 19
80 5.6. New Components . . . . . . . . . . . . . . . . . . . . . 20
81 5.6.1. VPOLL Component . . . . . . . . . . . . . . . . . . . 20
82 5.6.2. VOTE Component . . . . . . . . . . . . . . . . . . . 22
83 6. Poll Modes . . . . . . . . . . . . . . . . . . . . . . . . . 23
84 6.1. POLL-MODE:BASIC . . . . . . . . . . . . . . . . . . . . . 24
85 6.1.1. Property restrictions . . . . . . . . . . . . . . . . 24
86 6.1.2. Outcome reporting . . . . . . . . . . . . . . . . . . 24
87 7. iTIP Extensions . . . . . . . . . . . . . . . . . . . . . . . 24
88 7.1. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 24
89 7.2. Interoperability Models . . . . . . . . . . . . . . . . . 26
90 7.2.1. Delegation . . . . . . . . . . . . . . . . . . . . . 26
91 7.2.2. Acting on Behalf of Other Calendar Users . . . . . . 26
92 7.2.3. Component Revisions . . . . . . . . . . . . . . . . . 26
93 7.2.4. Message Sequencing . . . . . . . . . . . . . . . . . 26
94 7.3. Application Protocol Elements . . . . . . . . . . . . . . 26
95 7.3.1. Methods for VPOLL Calendar Components . . . . . . . . 26
96 7.3.2. Method: PUBLISH . . . . . . . . . . . . . . . . . . . 28
97 7.3.3. Method: REQUEST . . . . . . . . . . . . . . . . . . . 31
98 7.3.4. Method: REPLY . . . . . . . . . . . . . . . . . . . . 37
99 7.3.5. Method: CANCEL . . . . . . . . . . . . . . . . . . . 40
100 7.3.6. Method: REFRESH . . . . . . . . . . . . . . . . . . . 43
101 7.3.7. Method: POLLSTATUS . . . . . . . . . . . . . . . . . 45
102 8. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 47
103 8.1. Calendar Collection Properties . . . . . . . . . . . . . 47
104 8.1.1. CALDAV:supported-vpoll-component-sets . . . . . . . . 47
105 8.1.2. CALDAV:vpoll-max-items . . . . . . . . . . . . . . . 49
106 8.1.3. CALDAV:vpoll-max-active . . . . . . . . . . . . . . . 50
107 8.1.4. CALDAV:vpoll-max-voters . . . . . . . . . . . . . . . 51
108 8.1.5. CalDAV:even-more-properties . . . . . . . . . . . . . 51
109 8.1.6. Extensions to CalDAV scheduling . . . . . . . . . . . 51
110 8.2. Additional Preconditions for PUT, COPY, and MOVE . . . . 52
111 8.3. CalDAV:calendar-query Report . . . . . . . . . . . . . . 52
112 8.3.1. Example: Partial Retrieval of VPOLL . . . . . . . . . 53
113 8.4. CalDAV time ranges . . . . . . . . . . . . . . . . . . . 55
114 9. Security Considerations . . . . . . . . . . . . . . . . . . . 56
115 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56
116 10.1. Parameter Registrations . . . . . . . . . . . . . . . . 57
117 10.2. Property Registrations . . . . . . . . . . . . . . . . . 57
118 10.3. POLL-MODE Registration Template . . . . . . . . . . . . 57
119 10.4. POLL-MODE Registrations . . . . . . . . . . . . . . . . 58
120 11. Normative references . . . . . . . . . . . . . . . . . . . . 58
121 Appendix A. Open issues . . . . . . . . . . . . . . . . . . . . 59
122 Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 60
123 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 61
125 1. Acknowledgements
127 The authors would like to thank the members of the Calendaring and
128 Scheduling Consortium (CalConnect) for contributing their ideas and
129 support.
131 2. Introduction
133 The currently existing approach to agreeing on meeting times using
134 iTip [RFC5546] and/or iMip [RFC6047] has some significant failings.
135 There is no useful bargaining or suggestion mechanism in iTip, only
136 the ability for a potential attendee to accept or refuse or to
137 counter with a time of their own choosing.
139 Part of the problem is that for many potential attendees, their
140 freebusy is not an accurate representation of their availability. In
141 fact, when trying to schedule conference calls across different
142 organizations, attendees may not be allowed to provide freebusy
143 information or availability as this may reveal something of the
144 organizations internal activities.
146 A number of studies have shown that large amounts of time are spent
147 trying to come to an agreement - up to and beyond 20 working hours
148 per meeting. Many organizers fall back on other approaches such as
149 phone calls and email to determine a suitable time.
151 Online services have appeared as a result and these allow
152 participants to vote on a number of alternatives without revealing or
153 using freebusy or availability. When agreement is reached a
154 conventional scheduling message may be sent to the attendees. This
155 approach appears to reach consensus fairly rapidly. Peer pressure
156 may have some bearing on this as all voters are usually able to see
157 the current state of the voting and may adjust their own meeting
158 schedules to make themselves available for a popular choice.
160 The component and properties defined in this specification provide a
161 standardized structure for this process and allow calendar clients
162 and servers and web based services to interact.
164 These structures also have uses beyond the relatively simple needs of
165 most meeting organizers. The process of coming to consensus can also
166 be viewed as a bidding process.
168 3. Terms and definitions
170 For the purposes of this document, the following terms and
171 definitions apply.
173 3.1. consensus scheduling
175 The process whereby users come to some agreement on meeting or task
176 alternatives and then book that meeting or task.
178 3.2. active Vpoll
180 A VPoll may have a DTSTART, DTEND and DURATION which may define the
181 start and end of the active voting period
183 3.3. voter
185 A participant who votes on the alternatives. A voter need not be an
186 attendee of any of the alternatives presented.
188 4. Simple Consensus Scheduling
190 This specification defines components and properties which can be
191 used for simple consensus scheduling but also have the generality to
192 handle more complex cases. To provide an easy (and for many a
193 sufficient) introduction to consensus scheduling and VPOLL we will
194 outline the flow of information for the simple case of voting on a
195 number of meeting alternatives which differ only in time of the
196 meeting. In addition the voters will all be potential attendees.
198 This specification not only defines data structures but adds new iTip
199 methods, one used when consensus has been reached and one to
200 distribute the current status of the poll.
202 This document will show how a VPOLL object is used to inform voters
203 of the state of a simple vote on some alternatives.
205 4.1. The VPOLL Component: An Overview
207 The VPOLL component acts as a wrapper for a number of alternatives to
208 be voted on, together with some properties and a new component used
209 to maintain the state of the voting. For our simple example the
210 following VPOLL properties and sub-components are either required or
211 appropriate:
213 DTSTAMP The usual [RFC5545] property.
215 SEQUENCE The usual [RFC5545] property. See below for SEQUENCE
216 behavior.
218 UID The usual [RFC5545] property.
220 ORGANIZER The usual [RFC5545] property. In general this need not be
221 an organizer of any of the alternatives. In this simple outline
222 we assume it is the same.
224 SUMMARY The usual [RFC5545] property. This optional but recommended
225 property provides the a short title to the poll.
227 DESCRIPTION The usual [RFC5545] property. This optional property
228 provides more details.
230 DTEND The usual [RFC5545] property. This optional property provides
231 a poll closing time and date after which the VPOLL is no longer
232 active.
234 POLL-MODE A new property which defines how the votes are used to
235 obtain a result. For our use case it will take the value "BASIC"
236 meaning one event will be chosen from the alternatives.
238 POLL-COMPLETION A new property which defines who (server or client)
239 chooses and/or submits the winning choice. In our example the
240 value is "SERVER-SUBMIT" which means the client chooses the winner
241 but the server will submit the winning choice.
243 POLL-PROPERTIES A new property which defines which icalendar
244 properties are being voted on. For our use case it will take the
245 value "DTSTART, LOCATION" meaning only those properties are
246 significant for voting. Other properties in the events may differ
247 but are not considered significant for the voting process.
249 PARTICIPANT There is one of these components for each voter with the
250 PARTICIPANT-TYPE set to "VOTER". The CALENDAR-ADDRESS property
251 identifies the voter and this component will contain one VOTE
252 component for each item being voted on.
254 VOTE A new component. There is one of these for each voter and
255 choice. It usually contains at least a POLL-ITEM-ID property to
256 identify the choice and a RESPONSE property to provide a vote.
257 For more complex poll modes it may contain other information such
258 as cost or estimated duration.
260 VEVENT In our simple use case there will be multiple VEVENT sub-
261 components defining the alternatives. Each will have a different
262 date and or time for the meeting.
264 EXAMPLE
266 VPOLL with 3 voters and 3 alternative meetings:
268 BEGIN:VCALENDAR
269 VERSION:2.0
270 PRODID:-//Example//Example
271 METHOD:REQUEST
272 BEGIN:VPOLL
273 POLL-MODE:BASIC
274 POLL-COMPLETION:SERVER-SUBMIT
275 POLL-PROPERTIES:DTSTART,LOCATION
276 ORGANIZER:mailto:mike@example.com
277 UID:sched01-1234567890
278 DTSTAMP:20120101T000000Z
279 SUMMARY:What to do this week
280 DTEND:20120101T000000Z
281 BEGIN: PARTICIPANT
282 PARTICIPANT-TYPE: VOTER
283 CALENDAR-ADDRESS:mailto:cyrus@example.com
284 END PARTICIPANT
285 BEGIN: PARTICIPANT
286 PARTICIPANT-TYPE: VOTER
287 CALENDAR-ADDRESS:mailto:eric@example.com
288 END PARTICIPANT
289 BEGIN: PARTICIPANT
290 PARTICIPANT-TYPE: VOTER
291 CALENDAR-ADDRESS:mailto:mike@example.com
292 END PARTICIPANT
293 BEGIN:VEVENT.......(with a poll-item-id=1)
294 END:VEVENT
295 BEGIN:VEVENT.......(with a poll-item-id=2)
296 END:VEVENT
297 BEGIN:VEVENT.......(with a poll-item-id=3)
298 END:VEVENT
299 END:VPOLL
300 END:VCALENDAR
302 Figure 1
304 As can be seen in the example above, there is an iTip METHOD property
305 with the value REQUEST. The VPOLL object will be distributed to all
306 the voters, either through iMip or through some VPOLL enabled
307 service.
309 4.2. The VPOLL Alternative Choices: An Overview
311 Within the VPOLL component we have the alternatives to vote on. In
312 many respects these are standard [RFC5545] components. For our
313 simple use case they are all VEVENT components. In addition to the
314 usual [RFC5545] properties some extra properties are used for a
315 VPOLL.
317 POLL-ITEM-ID This provides a unique reference to the sub-component
318 within the VPOLL. It's value SHOULD be a small integer.
320 4.3. VPOLL responses
322 Upon receipt of a VPOLL REQUEST the voter will reply with a VPOLL
323 component containing their vote. In our simple case it will have the
324 following properties and components:
326 DTSTAMP The usual [RFC5545] property.
328 SEQUENCE The usual [RFC5545] property. See below for SEQUENCE
329 behavior.
331 UID Same as the request.
333 ORGANIZER Same as the request.
335 SUMMARY Same as the request.
337 PARTICIPANT One only with a CALENDAR-ADDRESS identifying the voter
338 replying.
340 VOTE One per item being voted on.
342 POLL-ITEM-ID One inside each VOTE component to identify the choice.
344 RESPONSE One inside each VOTE component to specify the vote.
346 Note that a voter can send a number of REPLYs for each REQUEST sent
347 by the organizer. Each REPLY completely replaces the voting record
348 for that voter for all components being voted on. In our example, if
349 Eric responds and votes for items 1 and 2 and then responds again
350 with a vote for only item 3, the final outcome is one vote on item 3.
352 NOTE This is poll-mode specific behavior?
354 EXAMPLE
356 REPLY VPOLL from Cyrus:
358 BEGIN:VCALENDAR
359 VERSION:2.0
360 PRODID:-//Example//Example
361 METHOD: REPLY
362 BEGIN:VPOLL
363 ORGANIZER:mailto:mike@example.com
364 UID:sched01-1234567890
365 DTSTAMP:20120101T010000Z
366 SUMMARY:What to do this week
367 BEGIN:PARTICIPANT
368 PARTICIPANT-TYPE: VOTER
369 CALENDAR-ADDRESS:mailto:cyrus@example.com
370 BEGIN:VOTE
371 POLL-ITEM-ID:1
372 RESPONSE:50
373 COMMENT:Work on iTIP
374 END:VOTE
375 BEGIN:VOTE
376 POLL-ITEM-ID:2
377 RESPONSE:100
378 COMMENT:Work on WebDAV
379 END:VOTE
380 BEGIN:VOTE
381 POLL-ITEM-ID:3
382 RESPONSE:0
383 END:VOTE
384 END:PARTICIPANT
385 END:VPOLL
386 END:VCALENDAR
388 Figure 2
390 4.4. VPOLL updates
392 When the organizer receives a response from one or more voters the
393 current state of the poll is sent to all voters. The new iTip method
394 POLLSTATUS is used. The VPOLL can contain a reduced set of
395 properties but MUST contain DTSTAMP, SEQUENCE (if not 0), UID,
396 ORGANIZER and one or more PARTICIPANT components each populated with
397 zero or more VOTE components.
399 EXAMPLE
400 BEGIN:VCALENDAR
401 VERSION:2.0
402 PRODID:-//Example//Example
403 METHOD: POLLSTATUS
404 BEGIN:VPOLL
405 ORGANIZER:mailto:mike@example.com
406 UID:sched01-1234567890
407 DTSTAMP:20120101T020000Z
408 SEQUENCE:0
409 SUMMARY:What to do this week
410 BEGIN:PARTICIPANT
411 PARTICIPANT-TYPE: VOTER
412 CALENDAR-ADDRESS:mailto:cyrus@example.com
413 BEGIN: VOTE
414 POLL-ITEM-ID:1
415 RESPONSE:50
416 COMMENT:Work on iTIP
417 END:VOTE
418 BEGIN:VOTE
419 POLL-ITEM-ID:2
420 RESPONSE:100
421 COMMENT:Work on WebDAV
422 END:VOTE
423 BEGIN:VOTE
424 POLL-ITEM-ID:3
425 RESPONSE:0
426 END:VOTE
427 END:PARTICIPANT
428 BEGIN:PARTICIPANT
429 PARTICIPANT-TYPE: VOTER
430 CALENDAR-ADDRESS:mailto:eric@example.com
431 BEGIN:VOTE
432 POLL-ITEM-ID:1
433 RESPONSE:100
434 END:VOTE
435 BEGIN:VOTE
436 POLL-ITEM-ID:2
437 RESPONSE:100
438 END:VOTE
439 BEGIN:VOTE
440 POLL-ITEM-ID:3
441 RESPONSE:0
442 END:VOTE
443 END:PARTICIPANT
444 END:VPOLL
445 END:VCALENDAR
447 Figure 3
449 4.5. VPOLL Completion
451 After a number of REPLY messages have been received the poll will be
452 considered complete. If there is a DTEND on the poll the system may
453 automatically close the poll, or the organizer may, at any time,
454 consider the poll complete. A VPOLL can be completed (and
455 effectively closed for voting) by sending an iTip REQUEST message
456 with the VPOLL STATUS property set to COMPLETED.
458 The poll winner is confirmed by sending a final iTip REQUEST message
459 with the VPOLL STATUS property set to CONFIRMED. In this case the
460 VPOLL component contains all the events being voted on along with a
461 POLL-WINNER property to identify the winning event. As the POLL-
462 COMPLETION property is set to SERVER-SUBMIT the server will submit
463 the winning choice and when it has done so set the STATUS to
464 "SUBMITTED".
466 EXAMPLE
468 VPOLL confirmation:
470 BEGIN:VCALENDAR
471 VERSION:2.0
472 PRODID:-//Example//Example
473 METHOD: REQUEST
474 BEGIN:VPOLL
475 ORGANIZER:mailto:douglm@example.com
476 UID:sched01-1234567890
477 DTSTAMP:20120101T030000Z
478 COMPLETED:20120101T030000Z
479 POLL-COMPLETION:SERVER-SUBMIT
480 SEQUENCE:0
481 SUMMARY:What to do this week
482 STATUS:CONFIRMED
483 POLL-WINNER:3
484 BEGIN:VEVENT.......(with a poll-item-id=1)
485 END:VEVENT
486 BEGIN:VEVENT.......(with a poll-item-id=2)
487 END:VEVENT
488 BEGIN:VEVENT.......(with a poll-item-id=3)
489 END:VEVENT
490 END:VPOLL
491 END:VCALENDAR
493 Figure 4
495 4.6. Other Responses
497 A voter being asked to choose between a number of ORGANIZER supplied
498 alternatives may find none of them acceptable or may simply not care.
500 An alternative response, which may be disallowed by the ORGANIZER, is
501 to send back the respondees availability or freebusy or even one or
502 more new, alternative choices.
504 This is accomplished by responding with a VOTE component which has no
505 POLL-ITEM-ID property. In this case it MUST contain some alternative
506 information. What form this takes depends on the poll mode in
507 effect.
509 5. iCalendar Extensions
511 5.1. Updated Participant Type Value
513 Participant type property values are defined in section 11.2.1. of
514 [I-D.ietf-calext-eventpub-extensions]. This specification updates
515 that type to include the new participant type VOTER to provide
516 information about the voter and to contain their votes.
518 Format Definition This property parameter is redefined by the
519 following notation:
521 partvalue /= "VOTER"
523 Figure 5
525 Description The new property value indicates that the associated
526 PARTICIPANT component identifies a voter in a VPOLL.
528 5.2. Updated Relation Type Value
530 Relationship parameter type values are defined in section 3.2.15. of
531 [RFC5545]. This specification updates that type to include the new
532 relationship value POLL to provide a link to the VPOLL component in
533 which the current component appears.
535 Format Definition This property parameter is redefined by the
536 following notation:
538 reltypeparam /= "RELTYPE" "=" "POLL"
539 ; Property value is a VPOLL uid
541 Figure 6
543 Description This parameter can be specified on a property that
544 references another related calendar component. The new parameter
545 value indicates that the associated property references a VPOLL
546 component which contains the current component.
548 5.3. Updated Status Value
550 Status property values are defined in section 3.8.1.11. of [RFC5545].
551 This specification updates that type to define valid VPOLL status
552 values.
554 Format Definition This property parameter is redefined by the
555 following notation:
557 statvalue /= statvalue-poll
558 ; Status values for "VPOLL".
559 statvalue-poll = "IN-PROCESS"
560 / "COMPLETED" ; Poll has closed,
561 ; nothing has been chosen yet
562 / "CONFIRMED" ; Poll has closed and
563 ; winning items confirmed
564 / "SUBMITTED" ; The winning item has been
565 ; submitted
566 / "CANCELLED"
568 Figure 7
570 Description These values allow clients and servers to handle the
571 choosing and submission of winning choices.
573 If the client is choosing and the server submitting then the
574 client should set the POLL-WINNER property, set the status to
575 CONFIRMED and save the poll. When the server submits the winning
576 choice it will set the status to SUBMITTED.
578 Figure 8
580 5.4. New Property Parameters
582 5.4.1. Required
584 Parameter name REQUIRED
586 Purpose To specify whether the associated property is required in
587 the current context.
589 Format Definition This parameter is defined by the following
590 notation:
592 requirededparam = "REQUIRED" "=" ("TRUE" / "FALSE")
593 ; Default is FALSE
595 Figure 9
597 Description This parameter MAY be specified on REPLY-URL and, if the
598 value is TRUE, indicates the organizer requires all replies to be
599 made via the specified service rather than iTip replies.
601 5.4.2. Stay-Informed
603 Parameter name STAY-INFORMED
605 Purpose To specify the voter also wants to be added as an ATTENDEE
606 when the poll is confirmed.
608 Format Definition This parameter is defined by the following
609 notation:
611 stayinformedparam = "STAY-INFORMED" "=" ("TRUE" / "FALSE")
612 ; Default is FALSE
614 Figure 10
616 Description This parameter MAY be specified on the CALENDAR-ADDRESS
617 property in the PARTICIPANT component and, if the value is TRUE,
618 indicates the voter wishes to be added to the final choice as a
619 non participant.
621 5.5. New Properties
623 5.5.1. Accept-Response
625 Property name ACCEPT-RESPONSE
627 Purpose This property is used in VPOLL to indicate the types of
628 component that may be supplied in a response.
630 Property Parameters Non-standard or iana parameters can be specified
631 on this property.
633 Conformance This property MAY be specified in a VPOLL component.
635 Description When used in a VPOLL this property indicates what
636 allowable component types may be returned in a reply. Typically
637 this would allow a voter to respond with their freebusy or
638 availability rather than choosing one of the presented
639 alternatives.
641 If this property is not present voters are only allowed to respond
642 to the choices in the request.
644 Format Definition This property is defined by the following
645 notation:
647 acceptresponse = "ACCEPT-RESPONSE" acceptresponseparams ":"
648 iana-token ("," iana-token) CRLF
650 acceptresponseparams = *(";" other-param)
652 Figure 11
654 5.5.2. Poll-Completion
656 Property name POLL-COMPLETION
658 Purpose This property is used in VPOLL to indicate whether the
659 client or server is responsible for choosing and/or submitting the
660 winner(s).
662 Description When a VPOLL is stored on a server which is capable of
663 handling choosing and submission of winning choices a value of
664 SERVER indicates that the server should close the poll, choose the
665 winner and submit whenever it is appropriate to do so.
667 For example, in BASIC poll-mode, reaching the DTEND of the poll
668 could trigger this server side action.
670 Server initiated submission requires that the submitted choice
671 MUST be a valid calendaring component.
673 POLL-COMPLETION=SERVER-SUBMIT allows the client to set the poll-
674 winner, set the status to CONFIRMED and then store the poll on the
675 server. The server will then submit the winning choice and set
676 the status to SUBMITTED.
678 Format Definition This property is defined by the following
679 notation:
681 poll-completion = "POLL-COMPLETION" pcparam ":" pcvalue CRLF
683 pcparam = *(";" other-param)
685 pcvalue = "SERVER" ; The server is responsible for both choosing and
686 ; submitting the winner(s)
687 / "SERVER-SUBMIT" ; The server is responsible for
688 ; submitting the winner(s). The client chooses.
689 / "SERVER-CHOICE" ; The server is responsible for
690 ; choosing the winner(s). The client will submit.
691 / "CLIENT" ; The client is responsible for both choosing and
692 ; submitting the winner(s)
693 / iana-token
694 / x-name
695 ;Default is CLIENT
697 Figure 12
699 Example The following is an example of this property:
701 POLL-COMPLETION: SERVER-SUBMIT
703 Figure 13
705 5.5.3. Poll-Item-Id
707 Property name POLL-ITEM-ID
709 Purpose This property is used in VPOLL child components as an
710 identifier.
712 Value type INTEGER
714 Property Parameters Non-standard parameters can be specified on this
715 property.
717 Conformance This property MUST be specified in a VOTE component and
718 in VPOLL choice items.
720 Description In a METHOD:REQUEST each choice component MUST have a
721 POLL-ITEM-ID property. Each set of components with the same POLL-
722 ITEM-ID value represents one overall set of items to be voted on.
724 POLL-ITEM-ID SHOULD be a unique small integer for each component
725 or set of components. If it remains the same between REQUESTs
726 then the previous response for that component MAY be re-used. To
727 force a re-vote on a component due to a significant change, the
728 POLL-ITEM-ID MUST change.
730 Format Definition This property is defined by the following
731 notation:
733 pollitemid = "POLL-ITEM-ID" pollitemdparams ":"
734 integer CRLF
736 pollitemidparams = *(
737 (";" other-param)
738 )
740 Figure 14
742 5.5.4. Poll-Mode
744 Property name POLL-MODE
746 Purpose This property is used in VPOLL to indicate what voting mode
747 is to be applied.
749 Property Parameters Non-standard or iana parameters can be specified
750 on this property.
752 Conformance This property MAY be specified in a VPOLL component or
753 its sub-components.
755 Description The poll mode defines how the votes are applied to
756 obtain a result. BASIC mode, the default, means that the voters
757 are selecting one component (or group of components) with a given
758 POLL=ITEM-ID.
760 Other polling modes may be defined in updates to this
761 specification. These may allow for such modes as ranking or task
762 assignment.
764 Format Definition This property is defined by the following
765 notation:
767 pollmode = "POLL-MODE" pollmodeparams ":"
768 ("BASIC" / iana-token / other-token) CRLF
770 pollmodeparams = *(";" other-param)
772 Figure 15
774 5.5.5. Poll-properties
776 Property name POLL-PROPERTIES
777 Purpose This property is used in VPOLL to define which icalendar
778 properties are being voted on.
780 Property Parameters Non-standard or iana parameters can be specified
781 on this property.
783 Conformance This property MAY be specified in a VPOLL component.
785 Description This property defines which icalendar properties are
786 significant in the voting process. It may not be clear to voters
787 which properties are varying in a significant manner. Clients may
788 use this property to highlight those listed properties.
790 Format Definition This property is defined by the following
791 notation:
793 pollproperties = "POLL-PROPERTIES" pollpropparams ":"
794 text *("," text) CRLF
796 pollpropparams = *(";" other-param)
798 Figure 16
800 5.5.6. Poll-Winner
802 Property name POLL-WINNER
804 Purpose This property is used in a basic mode VPOLL to indicate
805 which of the VPOLL sub-components won.
807 Value type INTEGER
809 Property Parameters Non-standard parameters can be specified on this
810 property.
812 Conformance This property MAY be specified in a VPOLL component.
814 Description For poll confirmation each child component MUST have a
815 POLL-ITEM-ID property. For basic mode the VPOLL component SHOULD
816 have a POLL-WINNER property which MUST correspond to one of the
817 POLL-ITEM-ID properties and indicates which sub-component was the
818 winner.
820 Format Definition This property is defined by the following
821 notation:
823 pollwinner = "POLL-WINNER" pollwinnerparams ":"
824 integer CRLF
826 pollwinnerparams = *(";" other-param)
828 ; Used with a STATUS:CONFIRMED VPOLL to indicate which
829 ; components have been confirmed
831 Figure 17
833 5.5.7. Reply-URL
835 Property name REPLY-URL
837 Purpose This property may be used in scheduling messages to indicate
838 additional reply methods, for example a web-service.
840 Property Parameters Non-standard, required or iana parameters can be
841 specified on this property.
843 Conformance This property MAY be specified in a VPOLL component.
845 Description When used in a scheduling message this property
846 indicates additional or required services that can be used to
847 reply. Typically this would be a web service of some form.
849 Format Definition This property is defined by the following
850 notation:
852 reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF
854 reply-urlparams = *(
855 (";" requiredparam) /
856 (";" other-param)
857 )
859 Figure 18
861 5.5.8. Response
863 Property name RESPONSE
865 Purpose To specify a response vote.
867 Value type INTEGER
869 Format Definition This property is defined by the following
870 notation:
872 response = "RESPONSE" response-params ":" integer CRLF
873 ; integer value 0..100
875 responseparams = *(";" other-param)
877 Figure 19
879 Description This parameter can be specified on the POLL-ITEM-ID
880 property to provide the value of the voters response. This
881 parameter allows for fine grained responses which are appropriate
882 to some applications. For the case of individuals voting for a
883 choice of events, client applications SHOULD conform to the
884 following convention:
886 * 0 - 39 A "NO vote"
888 * 40 - 79 A "MAYBE" vote
890 * 80 - 89 A "YES - but not preferred vote"
892 * 90-100 A "YES" vote.
894 Clients MUST preserve the response value when there is no
895 change from the user even if they have a UI with fixed states
896 (e.g. yes/no/maybe).
898 5.6. New Components
900 5.6.1. VPOLL Component
902 Component name VPOLL
904 Purpose This component provides a mechanism by which voters can vote
905 on provided choices.
907 Format Definition This property is defined by the following
908 notation:
910 pollc = "BEGIN" ":" "VPOLL" CRLF
911 pollprop
912 *participantc *eventc *todoc *journalc *freebusyc
913 *availabilityc *alarmc *iana-comp *x-comp
914 "END" ":" "VPOLL" CRLF
916 pollprop = *(
917 ;
918 ; The following are REQUIRED,
919 ; but MUST NOT occur more than once.
920 ;
921 dtstamp / uid / organizer /
922 ;
923 ; The following are OPTIONAL,
924 ; but MUST NOT occur more than once.
925 ;
926 acceptresponse / class / created / completed /
927 description / dtstart / last-mod / pollmode /
928 pollproperties / priority / seq / status /
929 summary / url /
930 ;
931 ; Either 'dtend' or 'duration' MAY appear in
932 ; a 'pollprop', but 'dtend' and 'duration'
933 ; MUST NOT occur in the same 'pollprop'.
934 ; 'duration' MUST only occur when 'dtstart'
935 ; is present
936 ;
937 dtend / duration /
938 ;
939 ; The following are OPTIONAL,
940 ; and MAY occur more than once.
941 ;
942 attach / categories / comment /
943 contact / rstatus / related /
944 resources / x-prop / iana-prop
945 ;
946 ; The following is OPTIONAL, it SHOULD appear
947 ; once for the confirmation of a BASIC mode
948 ; VPOLL. Other modes may define differing
949 ; requirements.
950 ;
951 pollwinner /
952 ;
953 )
955 Figure 20
957 Description This component provides a mechanism by which voters can
958 vote on provided choices. The outcome depends upon the POLL-MODE
959 in effect.
961 The PARTICIPANT components in VPOLL requests provide information
962 on each recipient who will be voting - both their identity through
963 the CALENDAR-ADDRESS property and their votes through the VOTE
964 components.
966 If specified, the "DTSTART" property defines the start or opening
967 of the poll active period. If absent the poll is presumed to have
968 started when created.
970 If "DTSTART" is present "DURATION" MAY be specified and indicates
971 the duration, and hence the ending, of the poll. The value of the
972 property MUST be a positive duration.
974 "DTEND" MAY be specified with or without "DTSTART" and indicates
975 the ending of the poll. If DTEND is specified it MUST be later
976 than the DTSTART or CREATED property.
978 If one or more VALARM components are included in the VPOLL they
979 are not components to be voted on and MUST NOT contain a POLL-
980 ITEM-ID property. VALARM sub-components may be used to provide
981 warnings to the user when polls are due to start or end.
983 5.6.2. VOTE Component
985 Component name VOTE
987 Purpose This component provides a mechanism by which voters can vote
988 on provided choices.
990 Conformance This component may be specified zero or more times in a
991 PARTICIPANT component which identifies the voter.
993 Format Definition This property is defined by the following
994 notation:
996 votec = "BEGIN" ":" "VOTE" CRLF
997 voteprop
998 *eventc *todoc *journalc *freebusyc
999 *availabilityc *alarmc *iana-comp *x-comp
1000 "END" ":" "VOTE" CRLF
1002 voteprop = *(
1003 ;
1004 ; The following are REQUIRED,
1005 ; but MUST NOT occur more than once.
1006 ;
1007 pollitemid / response /
1008 ;
1009 ; The following are OPTIONAL,
1010 ; and MAY occur more than once.
1011 ;
1012 comment / x-prop / iana-prop
1013 ;
1014 )
1016 Figure 21
1018 Description This component appears inside the PARTICIPANT component
1019 with a PARTICIPANT-TYPE of VOTER to identify the voter. This
1020 component contains that participants responses.
1022 The required and optional properties and their meanings will
1023 depend upon the POLL-MODE in effect.
1025 For any POLL-MODE, POLL-ITEM-ID is used to associate the
1026 information to a choice supplied by the organizer. This means
1027 that each VOTE component only provides information about that
1028 choice.
1030 If allowed by the POLL-MODE a VOTE component without a POLL-ITEM-
1031 ID may be provided in a REPLY to indicate a possible new choice or
1032 to provide information to the ORGANIZER - such as the respondees
1033 availability.
1035 6. Poll Modes
1037 The VPOLL component is intended to allow for various forms of
1038 polling. The particular form in efffect is indicated by the POLL-
1039 MODE property.
1041 New poll modes can be registered by including a completed POLL-MODE
1042 Registration Template (see Section 10.3) in a published RFC.
1044 6.1. POLL-MODE:BASIC
1046 BASIC poll mode is the form of voting in which one possible outcome
1047 is chosen from a set of possibilities. Usually this will be
1048 represented as a number of possible event objects one of which will
1049 be selected.
1051 6.1.1. Property restrictions
1053 This poll mode has the following property requirements:
1055 POLL-ITEM-ID Each contained sub-component that is being voted upon
1056 MUST contain a POLL-ITEM_ID property which is unique within the
1057 context of the POLL. The value MUST NOT be reused when events are
1058 removed and/or added to the poll.
1060 POLL-WINNER On confirmation of the poll this property MUST be
1061 present and identifies the winning component.
1063 6.1.2. Outcome reporting
1065 To confirm the winner the POLL-WINNER property MUST be present and
1066 the STATUS MUST be set to CONFIRMED.
1068 When the winning VEVENT or VTODO is not a scheduled entity, that is,
1069 it has no ORGANIZER or ATTENDEES it MUST be assigned an ORGANIZER
1070 property and a list of non-participating ATTENDEEs. This allows the
1071 winning entity to be distributed to the participants through iTip or
1072 some other protocol.
1074 7. iTIP Extensions
1076 This specification introduces a number of extensions to [RFC5546].
1077 In group scheduling the parties involved are organizer and attendees.
1078 In VPOLL the parties are organizer and voters.
1080 For many of the iTip processing rules the voters take the place of
1081 attendees.
1083 7.1. Methods
1085 There are some extensions to the behavior of iTip methods for a VPOLL
1086 object and two new methods are defined.
1088 +================+================================================+
1089 | Method | Description |
1090 +================+================================================+
1091 | PUBLISH | No changes (yet) |
1092 +----------------+------------------------------------------------+
1093 | REQUEST | Each child component MUST have a POLL-ITEM-ID |
1094 | | property. Each set of components with the |
1095 | | same POLL-ITEM-ID value represents one overall |
1096 | | set of items to be voted on. |
1097 +----------------+------------------------------------------------+
1098 | REPLY | There MUST be a single VPOLL component which |
1099 | | MUST have: either one or more POLL-ITEM-ID |
1100 | | properties with a RESPONSE param matching that |
1101 | | from a REQUEST or a VFREEBUSY or VAVAILABILITY |
1102 | | child component showing overall busy/available |
1103 | | time. The VPOLL MUST have one voter only. |
1104 +----------------+------------------------------------------------+
1105 | ADD | Not supported for VPOLL. |
1106 +----------------+------------------------------------------------+
1107 | CANCEL | There MUST be a single VPOLL component with |
1108 | | UID |
1109 +----------------+------------------------------------------------+
1110 | | matching that of the poll being cancelled. |
1111 +----------------+------------------------------------------------+
1112 | REFRESH | The organizer returns a METHOD:REQUEST with |
1113 | | the current full state, or a METHOD:CANCEL or |
1114 | | an error if no matching poll is found. |
1115 +----------------+------------------------------------------------+
1116 | COUNTER | Not supported for VPOLL. |
1117 +----------------+------------------------------------------------+
1118 | DECLINECOUNTER | Not supported for VPOLL. |
1119 +----------------+------------------------------------------------+
1120 | POLLSTATUS | Used to send the current state of the poll to |
1121 | | all voters. The VPOLL can contain a reduced |
1122 | | set of properties but MUST contain DTSTAMP, |
1123 | | SEQUENCE (if not 0), UID, ORGANIZER and |
1124 | | PARTICIPANTS. |
1125 +----------------+------------------------------------------------+
1127 Table 1
1129 The following table shows the above methods broken down by who can
1130 send them with VPOLL components.
1132 +============+================================================+
1133 | Originator | Methods |
1134 +============+================================================+
1135 | Organizer | CANCEL, PUBLISH, REQUEST, POLLSTATUS |
1136 +------------+------------------------------------------------+
1137 | Voter | REPLY, REFRESH, REQUEST (only when delegating) |
1138 +------------+------------------------------------------------+
1140 Table 2
1142 7.2. Interoperability Models
1144 Most of the standard iTip specification applies with respect to
1145 organizer and voters.
1147 7.2.1. Delegation
1149 TBD
1151 7.2.2. Acting on Behalf of Other Calendar Users
1153 TBD
1155 7.2.3. Component Revisions
1157 * Need to talk about what a change in SEQUENCE means
1159 * Sequence change forces a revote.
1161 * New voter - no sequence change
1163 * Add another poll set or change poll item ids or any change to a
1164 child
1166 * component - bump sequence
1168 7.2.4. Message Sequencing
1170 TBD
1172 7.3. Application Protocol Elements
1174 7.3.1. Methods for VPOLL Calendar Components
1176 This section defines the property set restrictions for the method
1177 types that are applicable to the "VPOLL" calendar component. Each
1178 method is defined using a table that clarifies the property
1179 constraints that define the particular method.
1181 The presence column uses the following values to assert whether a
1182 property is required or optional, and the number of times it may
1183 appear in the iCalendar object.
1185 +================+=================================================+
1186 | Presence Value | Description |
1187 +================+=================================================+
1188 | 1 | One instance MUST be present. |
1189 +----------------+-------------------------------------------------+
1190 | 1+ | At least one instance MUST be present. |
1191 +----------------+-------------------------------------------------+
1192 | 0 | Instances of this property MUST NOT be present. |
1193 +----------------+-------------------------------------------------+
1194 | 0+ | Multiple instances MAY be present. |
1195 +----------------+-------------------------------------------------+
1196 | 0 or 1 | Up to 1 instance of this property MAY be |
1197 | | present. |
1198 +----------------+-------------------------------------------------+
1200 Table 3
1202 The following summarizes the methods that are defined for the "VPOLL"
1203 calendar component.
1205 +============+======================================================+
1206 | Method | Description |
1207 +============+======================================================+
1208 | PUBLISH | Post notification of an poll. Used primarily |
1209 | | as a method of advertising the existence of a |
1210 | | poll. |
1211 +------------+------------------------------------------------------+
1212 | REQUEST | To make a request for a poll. This is an |
1213 | | explicit invitation to one or more voters. |
1214 | | Poll requests are also used to update, change |
1215 | | or confirm an existing poll. Clients that |
1216 | | cannot handle REQUEST MAY degrade the poll to |
1217 | | view it as a PUBLISH. REQUEST SHOULD NOT be |
1218 | | used just to set the status of the poll - |
1219 | | POLLSTATUS provides a more compact approach. |
1220 +------------+------------------------------------------------------+
1221 | REPLY | Reply to a poll request. Voters may set |
1222 | | their RESPONSE parameter to supply the |
1223 | | current vote in the range 0 to 100. |
1224 +------------+------------------------------------------------------+
1225 | CANCEL | Cancel a poll. |
1226 +------------+------------------------------------------------------+
1227 | REFRESH | A request is sent to an Organizer by a Voter |
1228 | | asking for the latest version of a poll to be |
1229 | | resent to the requester. |
1230 +------------+------------------------------------------------------+
1231 | POLLSTATUS | Used to send the current state of the poll to |
1232 | | all voters. The VPOLL can contain a reduced |
1233 | | set of properties but MUST contain DTSTAMP, |
1234 | | SEQUENCE (if not 0), UID, ORGANIZER and |
1235 | | PARTICIPANT. |
1236 +------------+------------------------------------------------------+
1238 Table 4
1240 7.3.2. Method: PUBLISH
1242 The "PUBLISH" method in a "VPOLL" calendar component is an
1243 unsolicited posting of an iCalendar object. Any CU may add published
1244 components to their calendar. The "Organizer" MUST be present in a
1245 published iCalendar component. "Voters" MUST NOT be present. Its
1246 expected usage is for encapsulating an arbitrary poll as an iCalendar
1247 object. The "Organizer" may subsequently update (with another
1248 "PUBLISH" method) or cancel (with a "CANCEL" method) a previously
1249 published "VPOLL" calendar component.
1251 Note Not clear how useful this is but needs some work on
1252 transmitting the current vote without any voter identification.
1254 This method type is an iCalendar object that conforms to the
1255 following property constraints:
1257 +=================+==========+=====================================+
1258 | Component/ | Presence | Comment |
1259 | Property | | |
1260 +=================+==========+=====================================+
1261 | METHOD | 1 | MUST equal PUBLISH. |
1262 +-----------------+----------+-------------------------------------+
1263 | VPOLL | 1+ | |
1264 +-----------------+----------+-------------------------------------+
1265 | DTSTAMP | 1 | |
1266 +-----------------+----------+-------------------------------------+
1267 | DTSTART | 0 or 1 | If present defines the start of the |
1268 | | | poll. Otherwise the poll starts |
1269 | | | when it is created and distributed. |
1270 +-----------------+----------+-------------------------------------+
1271 | ORGANIZER | 1 | |
1272 +-----------------+----------+-------------------------------------+
1273 | SUMMARY | 1 | Can be null. |
1274 +-----------------+----------+-------------------------------------+
1275 | UID | 1 | |
1276 +-----------------+----------+-------------------------------------+
1277 | SEQUENCE | 0 or 1 | MUST be present if value is greater |
1278 | | | than 0; MAY be present if 0. |
1279 +-----------------+----------+-------------------------------------+
1280 | ACCEPT-RESPONSE | 0 or 1 | |
1281 +-----------------+----------+-------------------------------------+
1282 | ATTACH | 0+ | |
1283 +-----------------+----------+-------------------------------------+
1284 | CATEGORIES | 0+ | |
1285 +-----------------+----------+-------------------------------------+
1286 | CLASS | 0 or 1 | |
1287 +-----------------+----------+-------------------------------------+
1288 | COMMENT | 0+ | |
1289 +-----------------+----------+-------------------------------------+
1290 | COMPLETED | 0 or 1 | |
1291 +-----------------+----------+-------------------------------------+
1292 | CONTACT | 0 or 1 | |
1293 +-----------------+----------+-------------------------------------+
1294 | CREATED | 0 or 1 | |
1295 +-----------------+----------+-------------------------------------+
1296 | DESCRIPTION | 0 or 1 | Can be null. |
1297 +-----------------+----------+-------------------------------------+
1298 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1299 | | | present. |
1300 +-----------------+----------+-------------------------------------+
1301 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1302 | | | present. |
1303 +-----------------+----------+-------------------------------------+
1304 | LAST-MODIFIED | 0 or 1 | |
1305 +-----------------+----------+-------------------------------------+
1306 | POLL-ITEM-ID | 0 | |
1307 +-----------------+----------+-------------------------------------+
1308 | POLL-MODE | 0 or 1 | |
1309 +-----------------+----------+-------------------------------------+
1310 | POLL-PROPERTIES | 0 or 1 | |
1311 +-----------------+----------+-------------------------------------+
1312 | PRIORITY | 0 or 1 | |
1313 +-----------------+----------+-------------------------------------+
1314 | RELATED-TO | 0+ | |
1315 +-----------------+----------+-------------------------------------+
1316 | RESOURCES | 0+ | |
1317 +-----------------+----------+-------------------------------------+
1318 | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ |
1319 | | | CANCELLED. |
1320 +-----------------+----------+-------------------------------------+
1321 | URL | 0 or 1 | |
1322 +-----------------+----------+-------------------------------------+
1323 | IANA-PROPERTY | 0+ | |
1324 +-----------------+----------+-------------------------------------+
1325 | X-PROPERTY | 0+ | |
1326 +-----------------+----------+-------------------------------------+
1327 | PARTICIPANT | 0+ | Only PARTICIPANT components with |
1328 | | | PARTICIPANT-TYPE not equal to |
1329 | | | "VOTER" - that is, no voters |
1330 +-----------------+----------+-------------------------------------+
1331 | REQUEST-STATUS | 0 | |
1332 +-----------------+----------+-------------------------------------+
1333 | VALARM | 0+ | |
1334 +-----------------+----------+-------------------------------------+
1335 | VEVENT | 0+ | Depending upon the poll mode in |
1336 | | | effect there MAY be candidate |
1337 | | | components included in the poll |
1338 | | | component. |
1339 +-----------------+----------+-------------------------------------+
1340 | VFREEBUSY | 0 | |
1341 +-----------------+----------+-------------------------------------+
1342 | VJOURNAL | 0+ | Depending upon the poll mode in |
1343 | | | effect there MAY be candidate |
1344 | | | components included in the poll |
1345 | | | component. |
1346 +-----------------+----------+-------------------------------------+
1347 | VTODO | 0+ | Depending upon the poll mode in |
1348 | | | effect there MAY be candidate |
1349 | | | components included in the poll |
1350 | | | component. |
1351 +-----------------+----------+-------------------------------------+
1352 | VTIMEZONE | 0+ | MUST be present if any date/time |
1353 | | | refers to a timezone. |
1354 +-----------------+----------+-------------------------------------+
1355 | IANA-COMPONENT | 0+ | |
1356 +-----------------+----------+-------------------------------------+
1357 | X-COMPONENT | 0+ | |
1358 +-----------------+----------+-------------------------------------+
1360 Table 5: Constraints for a METHOD:PUBLISH of a VPOLL
1362 7.3.3. Method: REQUEST
1364 The "REQUEST" method in a "VPOLL" component provides the following
1365 scheduling functions:
1367 * Invite "Voters" to respond to the poll.
1369 * Change the items being voted upon.
1371 * Complete or confirm the poll.
1373 * Response to a "REFRESH" request.
1375 * Update the details of an existing vpoll.
1377 * Update the status of "Voters".
1379 * Forward a "VPOLL" to another uninvited CU.
1381 * For an existing "VPOLL" calendar component, delegate the role of
1382 "Voter" to another CU.
1384 * For an existing "VPOLL" calendar component, change the role of
1385 "Organizer" to another CU.
1387 The "Organizer" originates the "REQUEST". The recipients of the
1388 "REQUEST" method are the CUs voting in the poll, the "Voters".
1389 "Voters" use the "REPLY" method to convey votes to the "Organizer".
1391 The "UID" and "SEQUENCE" properties are used to distinguish the
1392 various uses of the "REQUEST" method. If the "UID" property value in
1393 the "REQUEST" is not found on the recipient's calendar, then the
1394 "REQUEST" is for a new "VPOLL" calendar component. If the "UID"
1395 property value is found on the recipient's calendar, then the
1396 "REQUEST" is for an update, or a reconfirmation of the "VPOLL"
1397 calendar component.
1399 For the "REQUEST" method only a single iCalendar object is permitted.
1401 This method type is an iCalendar object that conforms to the
1402 following property constraints:
1404 +=================+==========+=====================================+
1405 | Component/ | Presence | Comment |
1406 | Property | | |
1407 +=================+==========+=====================================+
1408 | METHOD | 1 | MUST be REQUEST. |
1409 +-----------------+----------+-------------------------------------+
1410 | VPOLL | 1 | |
1411 +-----------------+----------+-------------------------------------+
1412 | PARTICIPANT | 1+ | Identified as voters with the |
1413 | | | PARTICIPANT-TYPE=VOTER |
1414 +-----------------+----------+-------------------------------------+
1415 | DTSTAMP | 1 | |
1416 +-----------------+----------+-------------------------------------+
1417 | DTSTART | 0 or 1 | If present defines the start of the |
1418 | | | poll. Otherwise the poll starts |
1419 | | | when it is created and distributed. |
1420 +-----------------+----------+-------------------------------------+
1421 | ORGANIZER | 1 | |
1422 +-----------------+----------+-------------------------------------+
1423 | SEQUENCE | 0 or 1 | MUST be present if value is greater |
1424 | | | than 0; MAY be present if 0. |
1425 +-----------------+----------+-------------------------------------+
1426 | SUMMARY | 1 | Can be null. |
1427 +-----------------+----------+-------------------------------------+
1428 | UID | 1 | |
1429 +-----------------+----------+-------------------------------------+
1430 | ACCEPT-RESPONSE | 0 or 1 | |
1431 +-----------------+----------+-------------------------------------+
1432 | ATTACH | 0+ | |
1433 +-----------------+----------+-------------------------------------+
1434 | CATEGORIES | 0+ | |
1435 +-----------------+----------+-------------------------------------+
1436 | CLASS | 0 or 1 | |
1437 +-----------------+----------+-------------------------------------+
1438 | COMMENT | 0+ | |
1439 +-----------------+----------+-------------------------------------+
1440 | COMPLETED | 0 or 1 | |
1441 +-----------------+----------+-------------------------------------+
1442 | CONTACT | 0+ | |
1443 +-----------------+----------+-------------------------------------+
1444 | CREATED | 0 or 1 | |
1445 +-----------------+----------+-------------------------------------+
1446 | DESCRIPTION | 0 or 1 | Can be null. |
1447 +-----------------+----------+-------------------------------------+
1448 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1449 | | | present. |
1450 +-----------------+----------+-------------------------------------+
1451 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1452 | | | present. |
1453 +-----------------+----------+-------------------------------------+
1454 | GEO | 0 or 1 | |
1455 +-----------------+----------+-------------------------------------+
1456 | LAST-MODIFIED | 0 or 1 | |
1457 +-----------------+----------+-------------------------------------+
1458 | LOCATION | 0 or 1 | |
1459 +-----------------+----------+-------------------------------------+
1460 | POLL-ITEM-ID | 0 | |
1461 +-----------------+----------+-------------------------------------+
1462 | POLL-MODE | 0 or 1 | |
1463 +-----------------+----------+-------------------------------------+
1464 | POLL-PROPERTIES | 0 or 1 | |
1465 +-----------------+----------+-------------------------------------+
1466 | PRIORITY | 0 or 1 | |
1467 +-----------------+----------+-------------------------------------+
1468 | RELATED-TO | 0+ | |
1469 +-----------------+----------+-------------------------------------+
1470 | REQUEST-STATUS | 0 | |
1471 +-----------------+----------+-------------------------------------+
1472 | RESOURCES | 0+ | |
1473 +-----------------+----------+-------------------------------------+
1474 | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ |
1475 | | | CANCELLED. |
1476 +-----------------+----------+-------------------------------------+
1477 | TRANSP | 0 or 1 | |
1478 +-----------------+----------+-------------------------------------+
1479 | URL | 0 or 1 | |
1480 +-----------------+----------+-------------------------------------+
1481 | IANA-PROPERTY | 0+ | |
1482 +-----------------+----------+-------------------------------------+
1483 | X-PROPERTY | 0+ | |
1484 +-----------------+----------+-------------------------------------+
1485 | VALARM | 0+ | |
1486 +-----------------+----------+-------------------------------------+
1487 | VTIMEZONE | 0+ | MUST be present if any date/time |
1488 | | | refers to a timezone. |
1489 +-----------------+----------+-------------------------------------+
1490 | IANA-COMPONENT | 0+ | |
1491 +-----------------+----------+-------------------------------------+
1492 | X-COMPONENT | 0+ | |
1493 +-----------------+----------+-------------------------------------+
1494 | VEVENT | 0+ | Depending upon the poll mode in |
1495 | | | effect there MAY be candidate |
1496 | | | components included in the poll |
1497 | | | component. |
1498 +-----------------+----------+-------------------------------------+
1499 | VFREEBUSY | 0 | |
1500 +-----------------+----------+-------------------------------------+
1501 | VJOURNAL | 0+ | Depending upon the poll mode in |
1502 | | | effect there MAY be candidate |
1503 | | | components included in the poll |
1504 | | | component. |
1505 +-----------------+----------+-------------------------------------+
1506 | VTODO | 0+ | Depending upon the poll mode in |
1507 | | | effect there MAY be candidate |
1508 | | | components included in the poll |
1509 | | | component. |
1510 +-----------------+----------+-------------------------------------+
1512 Table 6: Constraints for a METHOD:REQUEST of a VPOLL
1514 7.3.3.1. Rescheduling a poll
1516 The "REQUEST" method may be used to reschedule a poll, that is force
1517 a revote. A rescheduled poll involves a change to the existing poll
1518 in terms of its time the components being voted on may have changed.
1519 If the recipient CUA of a "REQUEST" method finds that the "UID"
1520 property value already exists on the calendar but that the "SEQUENCE"
1521 (or "DTSTAMP") property value in the "REQUEST" method is greater than
1522 the value for the existing poll, then the "REQUEST" method describes
1523 a rescheduling of the poll.
1525 7.3.3.2. Updating or Reconfirmation of a Poll
1527 The "REQUEST" method may be used to update or reconfirm a poll. An
1528 update to an existing poll does not involve changes to the time or
1529 candidates, and might not involve a change to the location or
1530 description for the poll. If the recipient CUA of a "REQUEST" method
1531 finds that the "UID" property value already exists on the calendar
1532 and that the "SEQUENCE" property value in the "REQUEST" is the same
1533 as the value for the existing poll, then the "REQUEST" method
1535 describes an update of the poll details, but not a rescheduling of
1536 the POLL.
1538 The update "REQUEST" method is the appropriate response to a
1539 "REFRESH" method sent from a "Voter" to the "Organizer" of a poll.
1541 The "Organizer" of a poll may also send unsolicited "REQUEST"
1542 methods. The unsolicited "REQUEST" methods may be used to update the
1543 details of the poll without rescheduling it, to update the "RESPONSE"
1544 parameter of "Voters", or to reconfirm the poll.
1546 7.3.3.3. Confirmation of a Poll
1548 The "REQUEST" method may be used to confirm a poll, that is announce
1549 the winner in BASIC mode. The STATUS MUST be set to CONFIRMED and
1550 for BASIC mode a VPOLL POLL-WINNER property must be provided with the
1551 poll-id of the winning component.
1553 7.3.3.4. Closing a Poll
1555 The "REQUEST" method may be used to close a poll, that is indicate
1556 voting is completed. The STATUS MUST be set to COMPLETED.
1558 7.3.3.5. Delegating a Poll to Another CU
1560 Some calendar and scheduling systems allow "Voters" to delegate the
1561 vote to another "Calendar User". iTIP supports this concept using the
1562 following workflow. Any "Voter" may delegate their right to vote in
1563 a poll to another CU. The implication is that the delegate
1564 participates in lieu of the original "Voter", NOT in addition to the
1565 "Voter". The delegator MUST notify the "Organizer" of this action
1566 using the steps outlined below. Implementations may support or
1567 restrict delegation as they see fit. For instance, some
1568 implementations may restrict a delegate from delegating a "REQUEST"
1569 to another CU.
1571 The "Delegator" of a poll forwards the existing "REQUEST" to the
1572 "Delegate". The "REQUEST" method MUST include a "Voter" property
1573 with the calendar address of the "Delegate". The "Delegator" MUST
1574 also send a "REPLY" method to the "Organizer" with the "Delegator's"
1575 "Voter" property "DELEGATED-TO" parameter set to the calendar address
1576 of the "Delegate". Also, a new "Voter" property for the "Delegate"
1577 MUST be included and must specify the calendar user address set in
1578 the "DELEGATED-TO" parameter, as above.
1580 In response to the request, the "Delegate" MUST send a "REPLY" method
1581 to the "Organizer", and optionally to the "Delegator". The "REPLY"
1583 method SHOULD include the "Voter" property with the "DELEGATED-FROM"
1584 parameter value of the "Delegator's" calendar address.
1586 The "Delegator" may continue to receive updates to the poll even
1587 though they will not be attending. This is accomplished by the
1588 "Delegator" setting their "role" attribute to "NON-PARTICIPANT" in
1589 the "REPLY" to the "Organizer".
1591 7.3.3.6. Changing the Organizer
1593 The situation may arise where the "Organizer" of a "VPOLL" is no
1594 longer able to perform the "Organizer" role and abdicates without
1595 passing on the "Organizer" role to someone else. When this occurs,
1596 the "Voters" of the "VPOLL" may use out-of-band mechanisms to
1597 communicate the situation and agree upon a new "Organizer". The new
1598 "Organizer" should then send out a new "REQUEST" with a modified
1599 version of the "VPOLL" in which the "SEQUENCE" number has been
1600 incremented and the "ORGANIZER" property has been changed to the new
1601 "Organizer".
1603 7.3.3.7. Sending on Behalf of the Organizer
1605 There are a number of scenarios that support the need for a "Calendar
1606 User" to act on behalf of the "Organizer" without explicit role
1607 changing. This might be the case if the CU designated as "Organizer"
1608 is sick or unable to perform duties associated with that function.
1609 In these cases, iTIP supports the notion of one CU acting on behalf
1610 of another. Using the "SENT-BY" parameter, a "Calendar User" could
1611 send an updated "VPOLL" "REQUEST". In the case where one CU sends on
1612 behalf of another CU, the "Voter" responses are still directed back
1613 towards the CU designated as "Organizer".
1615 7.3.3.8. Forwarding to an Uninvited CU
1617 A "Voter" invited to a "VPOLL" calendar component may send the
1618 "VPOLL" calendar component to another new CU not previously
1619 associated with the "VPOLL" calendar component. The current "Voter"
1620 participating in the "VPOLL" calendar component does this by
1621 forwarding the original "REQUEST" method to the new CU. The new CU
1622 can send a "REPLY" to the "Organizer" of the "VPOLL" calendar
1623 component. The reply contains a "Voter" property for the new CU.
1625 The "Organizer" ultimately decides whether or not the new CU becomes
1626 part of the poll and is not obligated to do anything with a "REPLY"
1627 from a new (uninvited) CU. If the "Organizer" does not want the new
1628 CU to be part of the poll, the new "Voter" property is not added to
1629 the "VPOLL" calendar component. The "Organizer" MAY send the CU a
1630 "CANCEL" message to indicate that they will not be added to the poll.
1632 If the "Organizer" decides to add the new CU, the new "Voter"
1633 property is added to the "VPOLL" calendar component. Furthermore,
1634 the "Organizer" is free to change any "Voter" property parameter from
1635 the values supplied by the new CU to something the "Organizer"
1636 considers appropriate. The "Organizer" SHOULD send the new CU a
1637 "REQUEST" message to inform them that they have been added.
1639 When forwarding a "REQUEST" to another CU, the forwarding "Voter"
1640 MUST NOT make changes to the original message.
1642 7.3.3.9. Updating Voter Status
1644 The "Organizer" of an poll may also request updated status from one
1645 or more "Voters". The "Organizer" sends a "REQUEST" method to the
1646 "Voter" and sets the "RSVP=TRUE" property parameter on the
1647 PARTICIPANT CALENDAR-ADDRESS. The "SEQUENCE" property for the poll
1648 is not changed from its previous value. A recipient will determine
1649 that the only change in the "REQUEST" is that their "RSVP" property
1650 parameter indicates a request for updated status. The recipient
1651 SHOULD respond with a "REPLY" method indicating their current vote
1652 with respect to the "REQUEST".
1654 7.3.4. Method: REPLY
1656 The "REPLY" method in a "VPOLL" calendar component is used to respond
1657 (e.g., accept or decline) to a "REQUEST" or to reply to a delegation
1658 "REQUEST". When used to provide a delegation response, the
1659 "Delegator" SHOULD include the calendar address of the "Delegate" on
1660 the "DELEGATED-TO" property parameter of the "Delegator's" "CALENDAR-
1661 ADDRESS" property. The "Delegate" SHOULD include the calendar
1662 address of the "Delegator" on the "DELEGATED-FROM" property parameter
1663 of the "Delegate's" "CALENDAR-ADDRESS" property.
1665 The "REPLY" method is also used when processing of a "REQUEST" fails.
1666 Depending on the value of the "REQUEST-STATUS" property, no action
1667 may have been performed.
1669 The "Organizer" of a poll may receive the "REPLY" method from a CU
1670 not in the original "REQUEST". For example, a "REPLY" may be
1671 received from a "Delegate" to a poll. In addition, the "REPLY"
1672 method may be received from an unknown CU (a "Party Crasher"). This
1673 uninvited "Voter" may be accepted, or the "Organizer" may cancel the
1674 poll for the uninvited "Voter" by sending a "CANCEL" method to the
1675 uninvited "Voter".
1677 A "Voter" MAY include a message to the "Organizer" using the
1678 "COMMENT" property. For example, if the user indicates a low
1679 interest and wants to let the "Organizer" know why, the reason can be
1680 expressed in the "COMMENT" property value.
1682 The "Organizer" may also receive a "REPLY" from one CU on behalf of
1683 another. Like the scenario enumerated above for the "Organizer",
1684 "Voters" may have another CU respond on their behalf. This is done
1685 using the "SENT-BY" parameter.
1687 The optional properties listed in the table below (those listed as
1688 "0+" or "0 or 1") MUST NOT be changed from those of the original
1689 request. (But see comments on VFREEBUSY and VAVAILABILITY)
1691 This method type is an iCalendar object that conforms to the
1692 following property constraints:
1694 +=================+==========+=====================================+
1695 | Component/ | Presence | Comment |
1696 | Property | | |
1697 +=================+==========+=====================================+
1698 | METHOD | 1 | MUST be REPLY. |
1699 +-----------------+----------+-------------------------------------+
1700 | VPOLL | 1+ | All components MUST have the same |
1701 +-----------------+----------+-------------------------------------+
1702 | | | UID. |
1703 +-----------------+----------+-------------------------------------+
1704 | PARTICIPANT | 1 | Identifies the Voter replying. |
1705 +-----------------+----------+-------------------------------------+
1706 | DTSTAMP | 1 | |
1707 +-----------------+----------+-------------------------------------+
1708 | ORGANIZER | 1 | |
1709 +-----------------+----------+-------------------------------------+
1710 | UID | 1 | MUST be the UID of the original |
1711 +-----------------+----------+-------------------------------------+
1712 | | | REQUEST. |
1713 +-----------------+----------+-------------------------------------+
1714 | SEQUENCE | 0 or 1 | If non-zero, MUST be the sequence |
1715 | | | number of the original REQUEST. |
1716 | | | MAY be present if 0. |
1717 +-----------------+----------+-------------------------------------+
1718 | ACCEPT-RESPONSE | 0 or 1 | |
1719 +-----------------+----------+-------------------------------------+
1720 | ATTACH | 0+ | |
1721 +-----------------+----------+-------------------------------------+
1722 | CATEGORIES | 0+ | |
1723 +-----------------+----------+-------------------------------------+
1724 | CLASS | 0 or 1 | |
1725 +-----------------+----------+-------------------------------------+
1726 | COMMENT | 0+ | |
1727 +-----------------+----------+-------------------------------------+
1728 | COMPLETED | 0 or 1 | |
1729 +-----------------+----------+-------------------------------------+
1730 | CONTACT | 0+ | |
1731 +-----------------+----------+-------------------------------------+
1732 | CREATED | 0 or 1 | |
1733 +-----------------+----------+-------------------------------------+
1734 | DESCRIPTION | 0 or 1 | |
1735 +-----------------+----------+-------------------------------------+
1736 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1737 | | | present. |
1738 +-----------------+----------+-------------------------------------+
1739 | DTSTART | 0 or 1 | |
1740 +-----------------+----------+-------------------------------------+
1741 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1742 | | | present. |
1743 +-----------------+----------+-------------------------------------+
1744 | GEO | 0 or 1 | |
1745 +-----------------+----------+-------------------------------------+
1746 | LAST-MODIFIED | 0 or 1 | |
1747 +-----------------+----------+-------------------------------------+
1748 | LOCATION | 0 or 1 | |
1749 +-----------------+----------+-------------------------------------+
1750 | POLL-ITEM-ID | 1+ | One per item being voted on. |
1751 +-----------------+----------+-------------------------------------+
1752 | POLL-MODE | 0 | |
1753 +-----------------+----------+-------------------------------------+
1754 | POLL-PROPERTIES | 0 | |
1755 +-----------------+----------+-------------------------------------+
1756 | PRIORITY | 0 or 1 | |
1757 +-----------------+----------+-------------------------------------+
1758 | RELATED-TO | 0+ | |
1759 +-----------------+----------+-------------------------------------+
1760 | RESOURCES | 0+ | |
1761 +-----------------+----------+-------------------------------------+
1762 | REQUEST-STATUS | 0+ | |
1763 +-----------------+----------+-------------------------------------+
1764 | STATUS | 0 or 1 | |
1765 +-----------------+----------+-------------------------------------+
1766 | SUMMARY | 0 or 1 | |
1767 +-----------------+----------+-------------------------------------+
1768 | TRANSP | 0 or 1 | |
1769 +-----------------+----------+-------------------------------------+
1770 | URL | 0 or 1 | |
1771 +-----------------+----------+-------------------------------------+
1772 | IANA-PROPERTY | 0+ | |
1773 +-----------------+----------+-------------------------------------+
1774 | X-PROPERTY | 0+ | |
1775 +-----------------+----------+-------------------------------------+
1776 | VALARM | 0 | |
1777 +-----------------+----------+-------------------------------------+
1778 | VTIMEZONE | 0 or 1 | MUST be present if any date/time |
1779 | | | refers to a timezone. |
1780 +-----------------+----------+-------------------------------------+
1781 | IANA-COMPONENT | 0+ | |
1782 +-----------------+----------+-------------------------------------+
1783 | X-COMPONENT | 0+ | |
1784 +-----------------+----------+-------------------------------------+
1785 | VEVENT | 0 | |
1786 +-----------------+----------+-------------------------------------+
1787 | VFREEBUSY | 0 or 1 | A voter may respond with a |
1788 | | | VFREEBUSY component indicating that |
1789 | | | the ORGANIZER may select some other |
1790 | | | time which is not marked as busy. |
1791 +-----------------+----------+-------------------------------------+
1792 | VAVAILABILITY | 0 | A voter may respond with a |
1793 | | | VAVAILABILITY component indicating |
1794 | | | that the ORGANIZER may select some |
1795 | | | other time which is shown as |
1796 | | | available. |
1797 +-----------------+----------+-------------------------------------+
1798 | VJOURNAL | 0 | |
1799 +-----------------+----------+-------------------------------------+
1800 | VTODO | 0 | |
1801 +-----------------+----------+-------------------------------------+
1803 Table 7: Constraints for a METHOD:REPLY of a VPOLL
1805 7.3.5. Method: CANCEL
1807 The "CANCEL" method in a "VPOLL" calendar component is used to send a
1808 cancellation notice of an existing poll request to the affected
1809 "Voters". The message is sent by the "Organizer" of the poll.
1811 The "Organizer" MUST send a "CANCEL" message to each "Voter" affected
1812 by the cancellation. This can be done using a single "CANCEL"
1813 message for all "Voters" or by using multiple messages with different
1814 subsets of the affected "Voters" in each.
1816 When a "VPOLL" is cancelled, the "SEQUENCE" property value MUST be
1817 incremented as described in Section 7.2.3.
1819 Once a CANCEL message has been sent to all voters no further voting
1820 may take place. The poll is considered closed.
1822 This method type is an iCalendar object that conforms to the
1823 following property constraints:
1825 +=================+==========+==================================+
1826 | Component/ | Presence | Comment |
1827 | Property | | |
1828 +=================+==========+==================================+
1829 | METHOD | 1 | MUST be CANCEL. |
1830 +-----------------+----------+----------------------------------+
1831 | VPOLL | 1+ | All must have the same UID. |
1832 +-----------------+----------+----------------------------------+
1833 | PARTICIPANT | 0+ | MUST include some or all Voters |
1834 | | | being removed from the poll. |
1835 | | | MUST include some or all Voters |
1836 | | | if the entire poll is cancelled. |
1837 +-----------------+----------+----------------------------------+
1838 | UID | 1 | MUST be the UID of the original |
1839 | | | REQUEST. |
1840 +-----------------+----------+----------------------------------+
1841 | DTSTAMP | 1 | |
1842 +-----------------+----------+----------------------------------+
1843 | ORGANIZER | 1 | |
1844 +-----------------+----------+----------------------------------+
1845 | SEQUENCE | 1 | |
1846 +-----------------+----------+----------------------------------+
1847 | ATTACH | 0+ | |
1848 +-----------------+----------+----------------------------------+
1849 | ACCEPT-RESPONSE | 0 | |
1850 +-----------------+----------+----------------------------------+
1851 | COMMENT | 0+ | |
1852 +-----------------+----------+----------------------------------+
1853 | COMPLETED | 0 or 1 | |
1854 +-----------------+----------+----------------------------------+
1855 | CATEGORIES | 0+ | |
1856 +-----------------+----------+----------------------------------+
1857 | CLASS | 0 or 1 | |
1858 +-----------------+----------+----------------------------------+
1859 | CONTACT | 0+ | |
1860 +-----------------+----------+----------------------------------+
1861 | CREATED | 0 or 1 | |
1862 +-----------------+----------+----------------------------------+
1863 | DESCRIPTION | 0 or 1 | |
1864 +-----------------+----------+----------------------------------+
1865 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1866 | | | present. |
1867 +-----------------+----------+----------------------------------+
1868 | DTSTART | 0 or 1 | |
1869 +-----------------+----------+----------------------------------+
1870 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1871 | | | present. |
1872 +-----------------+----------+----------------------------------+
1873 | GEO | 0 or 1 | |
1874 +-----------------+----------+----------------------------------+
1875 | LAST-MODIFIED | 0 or 1 | |
1876 +-----------------+----------+----------------------------------+
1877 | LOCATION | 0 or 1 | |
1878 +-----------------+----------+----------------------------------+
1879 | POLL-ITEM-ID | 0 | |
1880 +-----------------+----------+----------------------------------+
1881 | POLL-MODE | 0 | |
1882 +-----------------+----------+----------------------------------+
1883 | POLL-PROPERTIES | 0 | |
1884 +-----------------+----------+----------------------------------+
1885 | PRIORITY | 0 or 1 | |
1886 +-----------------+----------+----------------------------------+
1887 | RELATED-TO | 0+ | |
1888 +-----------------+----------+----------------------------------+
1889 | RESOURCES | 0+ | |
1890 +-----------------+----------+----------------------------------+
1891 | STATUS | 0 or 1 | MUST be set to CANCELLED to |
1892 | | | cancel the entire event. If |
1893 | | | uninviting specific Attendees, |
1894 | | | then MUST NOT be included. |
1895 +-----------------+----------+----------------------------------+
1896 | SUMMARY | 0 or 1 | |
1897 +-----------------+----------+----------------------------------+
1898 | TRANSP | 0 or 1 | |
1899 +-----------------+----------+----------------------------------+
1900 | URL | 0 or 1 | |
1901 +-----------------+----------+----------------------------------+
1902 | IANA-PROPERTY | 0+ | |
1903 +-----------------+----------+----------------------------------+
1904 | X-PROPERTY | 0+ | |
1905 +-----------------+----------+----------------------------------+
1906 | REQUEST-STATUS | 0 | |
1907 +-----------------+----------+----------------------------------+
1908 | VALARM | 0 | |
1909 +-----------------+----------+----------------------------------+
1910 | VTIMEZONE | 0+ | MUST be present if any date/time |
1911 | | | refers to a timezone. |
1912 +-----------------+----------+----------------------------------+
1913 | IANA-COMPONENT | 0+ | |
1914 +-----------------+----------+----------------------------------+
1915 | X-COMPONENT | 0+ | |
1916 +-----------------+----------+----------------------------------+
1917 | VTODO | 0 | |
1918 +-----------------+----------+----------------------------------+
1919 | VJOURNAL | 0 | |
1920 +-----------------+----------+----------------------------------+
1921 | VEVENT | 0 | |
1922 +-----------------+----------+----------------------------------+
1923 | VFREEBUSY | 0 | |
1924 +-----------------+----------+----------------------------------+
1926 Table 8: Constraints for a METHOD:CANCEL of a VPOLL
1928 7.3.6. Method: REFRESH
1930 The "REFRESH" method in a "VPOLL" calendar component is used by
1931 "Voters" of an existing event to request an updated description from
1932 the poll "Organizer". The "REFRESH" method must specify the "UID"
1933 property of the poll to update. The "Organizer" responds with the
1934 latest description and version of the poll.
1936 This method type is an iCalendar object that conforms to the
1937 following property constraints:
1939 +====================+==========+============================+
1940 | Component/Property | Presence | Comment |
1941 +====================+==========+============================+
1942 | METHOD | 1 | MUST be REFRESH. |
1943 +--------------------+----------+----------------------------+
1944 | VPOLL | 1 | |
1945 +--------------------+----------+----------------------------+
1946 | PARTICIPANT | 1 | MUST identify the |
1947 | | | requester as a voter. |
1948 +--------------------+----------+----------------------------+
1949 | DTSTAMP | 1 | |
1950 +--------------------+----------+----------------------------+
1951 | ORGANIZER | 1 | |
1952 +--------------------+----------+----------------------------+
1953 | UID | 1 | MUST be the UID associated |
1954 | | | with original REQUEST. |
1955 +--------------------+----------+----------------------------+
1956 | COMMENT | 0+ | |
1957 +--------------------+----------+----------------------------+
1958 | COMPLETED | 0 | |
1959 +--------------------+----------+----------------------------+
1960 | IANA-PROPERTY | 0+ | |
1961 +--------------------+----------+----------------------------+
1962 | X-PROPERTY | 0+ | |
1963 +--------------------+----------+----------------------------+
1964 | ACCEPT-RESPONSE | 0 | |
1965 +--------------------+----------+----------------------------+
1966 | ATTACH | 0 | |
1967 +--------------------+----------+----------------------------+
1968 | CATEGORIES | 0 | |
1969 +--------------------+----------+----------------------------+
1970 | CLASS | 0 | |
1971 +--------------------+----------+----------------------------+
1972 | CONTACT | 0 | |
1973 +--------------------+----------+----------------------------+
1974 | CREATED | 0 | |
1975 +--------------------+----------+----------------------------+
1976 | DESCRIPTION | 0 | |
1977 +--------------------+----------+----------------------------+
1978 | DTEND | 0 | |
1979 +--------------------+----------+----------------------------+
1980 | DTSTART | 0 | |
1981 +--------------------+----------+----------------------------+
1982 | DURATION | 0 | |
1983 +--------------------+----------+----------------------------+
1984 | GEO | 0 | |
1985 +--------------------+----------+----------------------------+
1986 | LAST-MODIFIED | 0 | |
1987 +--------------------+----------+----------------------------+
1988 | LOCATION | 0 | |
1989 +--------------------+----------+----------------------------+
1990 | POLL-ITEM-ID | 0 | |
1991 +--------------------+----------+----------------------------+
1992 | POLL-MODE | 0 | |
1993 +--------------------+----------+----------------------------+
1994 | POLL-PROPERTIES | 0 | |
1995 +--------------------+----------+----------------------------+
1996 | PRIORITY | 0 | |
1997 +--------------------+----------+----------------------------+
1998 | RELATED-TO | 0 | |
1999 +--------------------+----------+----------------------------+
2000 | REQUEST-STATUS | 0 | |
2001 +--------------------+----------+----------------------------+
2002 | RESOURCES | 0 | |
2003 +--------------------+----------+----------------------------+
2004 | SEQUENCE | 0 | |
2005 +--------------------+----------+----------------------------+
2006 | STATUS | 0 | |
2007 +--------------------+----------+----------------------------+
2008 | SUMMARY | 0 | |
2009 +--------------------+----------+----------------------------+
2010 | URL | 0 | |
2011 +--------------------+----------+----------------------------+
2012 | VALARM | 0 | |
2013 +--------------------+----------+----------------------------+
2014 | VTIMEZONE | 0+ | |
2015 +--------------------+----------+----------------------------+
2016 | IANA-COMPONENT | 0+ | |
2017 +--------------------+----------+----------------------------+
2018 | X-COMPONENT | 0+ | |
2019 +--------------------+----------+----------------------------+
2020 | VTODO | 0 | |
2021 +--------------------+----------+----------------------------+
2022 | VJOURNAL | 0 | |
2023 +--------------------+----------+----------------------------+
2024 | VEVENT | 0 | |
2025 +--------------------+----------+----------------------------+
2026 | VFREEBUSY | 0 | |
2027 +--------------------+----------+----------------------------+
2029 Table 9: Constraints for a METHOD:REFRESH of a VPOLL
2031 7.3.7. Method: POLLSTATUS
2033 The "POLLSTATUS" method in a "VPOLL" calendar component is used to
2034 inform recipients of the current status of the poll in a compact
2035 manner. The "Organizer" MUST be present in the confirmed poll
2036 component. All "Voters" MUST be present. The selected component(s)
2037 according to the poll mode SHOULD NOT be present in the poll
2038 component. Clients receiving this message may store the confirmed
2039 items in their calendars.
2041 This method type is an iCalendar object that conforms to the
2042 following property constraints:
2044 +=================+==========+=====================================+
2045 | Component/ | Presence | Comment |
2046 | Property | | |
2047 +=================+==========+=====================================+
2048 | METHOD | 1 | MUST equal POLLSTATUS. |
2049 +-----------------+----------+-------------------------------------+
2050 | VPOLL | 1+ | |
2051 +-----------------+----------+-------------------------------------+
2052 | PARTICIPANT | 1+ | The voters containing their current |
2053 | | | vote |
2054 +-----------------+----------+-------------------------------------+
2055 | COMPLETED | 0 or 1 | Only present for a completed poll |
2056 +-----------------+----------+-------------------------------------+
2057 | DTSTAMP | 1 | |
2058 +-----------------+----------+-------------------------------------+
2059 | DTSTART | 0 or 1 | |
2060 +-----------------+----------+-------------------------------------+
2061 | ORGANIZER | 1 | |
2062 +-----------------+----------+-------------------------------------+
2063 | SUMMARY | 1 | Can be null. |
2064 +-----------------+----------+-------------------------------------+
2065 | UID | 1 | |
2066 +-----------------+----------+-------------------------------------+
2067 | SEQUENCE | 0 or 1 | MUST be present if value is greater |
2068 | | | than 0; MAY be present if 0. |
2069 +-----------------+----------+-------------------------------------+
2070 | ACCEPT-RESPONSE | 0 | |
2071 +-----------------+----------+-------------------------------------+
2072 | ATTACH | 0 | |
2073 +-----------------+----------+-------------------------------------+
2074 | CATEGORIES | 0 | |
2075 +-----------------+----------+-------------------------------------+
2076 | CLASS | 0 | |
2077 +-----------------+----------+-------------------------------------+
2078 | COMMENT | 0+ | |
2079 +-----------------+----------+-------------------------------------+
2080 | CONTACT | 0 | |
2081 +-----------------+----------+-------------------------------------+
2082 | CREATED | 0 or 1 | |
2083 +-----------------+----------+-------------------------------------+
2084 | DESCRIPTION | 0 or 1 | Can be null. |
2085 +-----------------+----------+-------------------------------------+
2086 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
2087 | | | present. |
2088 +-----------------+----------+-------------------------------------+
2089 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
2090 | | | present. |
2091 +-----------------+----------+-------------------------------------+
2092 | LAST-MODIFIED | 0 or 1 | |
2093 +-----------------+----------+-------------------------------------+
2094 | POLL-ITEM-ID | 0 | |
2095 +-----------------+----------+-------------------------------------+
2096 | POLL-MODE | 0 or 1 | |
2097 +-----------------+----------+-------------------------------------+
2098 | POLL-PROPERTIES | 0 | |
2099 +-----------------+----------+-------------------------------------+
2100 | PRIORITY | 0 or 1 | |
2101 +-----------------+----------+-------------------------------------+
2102 | RELATED-TO | 0+ | |
2103 +-----------------+----------+-------------------------------------+
2104 | RESOURCES | 0+ | |
2105 +-----------------+----------+-------------------------------------+
2106 | STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED/ |
2107 | | | CANCELLED. |
2108 +-----------------+----------+-------------------------------------+
2109 | URL | 0 or 1 | |
2110 +-----------------+----------+-------------------------------------+
2111 | IANA-PROPERTY | 0+ | |
2112 +-----------------+----------+-------------------------------------+
2113 | X-PROPERTY | 0+ | |
2114 +-----------------+----------+-------------------------------------+
2115 | REQUEST-STATUS | 0 | |
2116 +-----------------+----------+-------------------------------------+
2117 | VALARM | 0+ | |
2118 +-----------------+----------+-------------------------------------+
2119 | VEVENT | 0 | All candidate components SHOULD NOT |
2120 | | | be present. |
2121 +-----------------+----------+-------------------------------------+
2122 | VFREEBUSY | 0 | |
2123 +-----------------+----------+-------------------------------------+
2124 | VJOURNAL | 0 | All candidate components SHOULD NOT |
2125 | | | be present. |
2126 +-----------------+----------+-------------------------------------+
2127 | VTODO | 0 | All candidate components SHOULD NOT |
2128 | | | be present. |
2129 +-----------------+----------+-------------------------------------+
2130 | VTIMEZONE | 0+ | MUST be present if any date/time |
2131 | | | refers to a timezone. |
2132 +-----------------+----------+-------------------------------------+
2133 | IANA-COMPONENT | 0+ | |
2134 +-----------------+----------+-------------------------------------+
2135 | X-COMPONENT | 0+ | |
2136 +-----------------+----------+-------------------------------------+
2138 Table 10: Constraints for a METHOD:POLLSTATUS of a VPOLL
2140 8. CalDAV Extensions
2142 This specification extends [RFC4791] in that it defines a new
2143 component and new iCalendar properties to be supported and requires
2144 extra definitions related to time-ranges and reports.
2146 Additionally, it extends [RFC6638] as it a VPOLL component is a
2147 schedulable entity.
2149 8.1. Calendar Collection Properties
2151 This section defines new CalDAV properties for calendar collections.
2153 8.1.1. CALDAV:supported-vpoll-component-sets
2155 Name supported-vpoll-component-sets
2157 Namespace urn:ietf:params:xml:ns:caldav
2158 Purpose Specifies the calendar component types (e.g., VEVENT, VTODO,
2159 etc.) and combination of types that may be included in a VPOLL
2160 component.
2162 Conformance This property MAY be defined on any calendar collection.
2163 If defined, it MUST be protected and SHOULD NOT be returned by a
2164 PROPFIND DAV:allprop request (as defined in [RFC2518]).
2166 Description The CALDAV:supported-vpoll-component-sets property is
2167 used to specify restrictions on the calendar component types that
2168 VPOLL components may contain in a calendar collection.
2170 It also specifies the combination of allowed component types.
2172 Any attempt by the client to store VPOLL components with component
2173 types or combinations of types not listed in this property, if it
2174 exists, MUST result in an error, with the "CALDAV:supported-vpoll-
2175 component-sets" precondition Section 8.2 being violated. Since
2176 this property is protected, it cannot be changed by clients using
2177 a PROPPATCH request. However, clients can initialize the value of
2178 this property when creating a new calendar collection with
2179 MKCALENDAR. In the absence of this property, the server MUST
2180 accept all component types, and the client can assume that all
2181 component types are accepted.
2183 Definition
2185
2188
2190 Figure 22
2192
2195
2196
2197
2198
2199
2200
2202
2203
2204
2205
2206
2208
2209
2210
2211
2213
2214
2215
2216
2217
2219 Figure 23
2221 8.1.2. CALDAV:vpoll-max-items
2223 Name vpoll-max-items
2225 Namespace urn:ietf:params:xml:ns:caldav
2227 Purpose Provides a numeric value indicating the maximum number of
2228 items that may be contained in any instance of a VPOLL calendar
2229 object resource stored in the calendar collection.
2231 Conformance This property MAY be defined on any calendar collection.
2232 If defined, it MUST be protected and SHOULD NOT be returned by a
2233 PROPFIND DAV:allprop request (as defined in [RFC2518]).
2235 Description The CALDAV:vpoll-max-items is used to specify a numeric
2236 value that indicates the maximum number of iCalendar components in
2237 any one instance of a VPOLL calendar object resource stored in a
2238 calendar collection. Any attempt to store a calendar object
2239 resource with more components per instance than this value MUST
2240 result in an error, with the CALDAV: vpoll-max-items precondition
2241 Section 8.2 being violated. In the absence of this property, the
2242 client can assume that the server can handle any number of items
2243 in a VPOLL calendar component.
2245 Definition
2247
2248 PCDATA value: a numeric value (integer greater than zero)
2250 Figure 24
2252 25
2255 Figure 25
2257 8.1.3. CALDAV:vpoll-max-active
2259 Name vpoll-max-active
2261 Namespace urn:ietf:params:xml:ns:caldav
2263 Purpose Provides a numeric value indicating the maximum number of
2264 active vpolls at any one time.
2266 Conformance This property MAY be defined on any calendar collection.
2267 If defined, it MUST be protected and SHOULD NOT be returned by a
2268 PROPFIND DAV:allprop request (as defined in [RFC2518]).
2270 Description The CALDAV:vpoll-max-active is used to specify a numeric
2271 value that indicates the maximum number of active VPOLLs at any
2272 one time. Any attempt to store a new active VPOLL calendar object
2273 resource which results in exceeding this limit MUST result in an
2274 error, with the "CALDAV:vpoll-max-active" precondition Section 8.2
2275 being violated. In the absence of this property, the client can
2276 assume that the server can handle any number of active VPOLLs.
2278 Definition
2280
2281 PCDATA value: a numeric value (integer greater than zero)
2283 Figure 26
2285 25
2287 Figure 27
2289 8.1.4. CALDAV:vpoll-max-voters
2291 Name "vpoll-max-voters"
2293 Namespace "urn:ietf:params:xml:ns:caldav"
2295 Purpose Provides a numeric value indicating the maximum number of
2296 voters for any instance of a VPOLL calendar object resource stored
2297 in the calendar collection.
2299 Conformance This property MAY be defined on any calendar collection.
2300 If defined, it MUST be protected and SHOULD NOT be returned by a
2301 PROPFIND "DAV:allprop" request (as defined in [RFC2518]).
2303 Description The "CALDAV:vpoll-max-voters" is used to specify a
2304 numeric value that indicates the maximum number of voters for any
2305 one instance of a VPOLL calendar object resource stored in a
2306 calendar collection. Any attempt to store a calendar object
2307 resource with more voters per instance than this value MUST result
2308 in an error, with the CALDAV: "vpoll-max-voters" precondition
2309 Section 8.2 being violated. In the absence of this property, the
2310 client can assume that the server can handle any number of voters
2311 in a VPOLL calendar component.
2313 Definition
2315
2316 PCDATA value: a numeric value (integer greater than zero)
2318 Figure 28
2320 25
2323 Figure 29
2325 8.1.5. CalDAV:even-more-properties
2327 8.1.6. Extensions to CalDAV scheduling
2329 This specification extends [RFC6638].
2331 Each section of Appendix A "Scheduling Privileges Summary" is
2332 extended to include VPOLL.
2334 Any reference to the ATTENDEE property should be read to include the
2335 CALENDAR-ADDRESS property contained in the PARTICIPANT compoents.
2336 That is, for scheduling purposes the CALENDAR-ADDRESS property is
2337 handled in exactly the same manner as the ATTENDEE property.
2339 8.2. Additional Preconditions for PUT, COPY, and MOVE
2341 This specification creates additional Preconditions for PUT, COPY,
2342 and MOVE methods. These preconditions apply when a PUT operation of
2343 a VPOLL calendar object resource into a calendar collection occurs,
2344 or when a COPY or MOVE operation of a calendar object resource into a
2345 calendar collection occurs, or when a COPY or MOVE operation occurs
2346 on a calendar collection.
2348 The new preconditions are:
2350 (CALDAV:supported-vpoll-component-sets) The VPOLL resource submitted
2351 in the PUT request, or targeted by a COPY or MOVE request, MUST
2352 contain a type or combination of calendar component that is
2353 supported in the targeted calendar collection;
2355 (CALDAV:vpoll-max-items) The VPOLL resource submitted in the PUT
2356 request, or targeted by a COPY or MOVE request, MUST have a number
2357 of sub-components (excluding VTIMEZONE) less than or equal to the
2358 value of the "CALDAV:vpoll-max-items" property value Section 8.1.2
2359 on the calendar collection where the resource will be stored;
2361 (CALDAV:vpoll-max-active) The PUT request, or COPY or MOVE request,
2362 MUST not result in the number of active VPOLLs being greater than
2363 the value of the "CALDAV:vpoll-max-active" property value
2364 Section 8.1.3 on the calendar collection where the resource will
2365 be stored;
2367 (CALDAV:vpoll-max-voters) The VPOLL resource submitted in the PUT
2368 request, or targeted by a COPY or MOVE request, MUST have a number
2369 of voters represented by PARTICIPANT components less than or equal
2370 to the value of the "CALDAV:vpoll-max-voters" property value
2371 Section 8.1.4 on the calendar collection where the resource will
2372 be stored;
2374 8.3. CalDAV:calendar-query Report
2376 This allows the retrieval of VPOLLs and their included components.
2377 The query specification allows queries to be directed at the
2378 contained sub-components. For VPOLL queries this feature is
2379 disallowed. Time-range queries can only target the vpoll component
2380 itself.
2382 8.3.1. Example: Partial Retrieval of VPOLL
2384 In this example, the client requests the server to return specific
2385 components and properties of the VPOLL components that overlap the
2386 time range from December 4, 2012, at 00:00:00 A.M. UTC to December
2387 5, 2012, at 00:00:00 A.M. UTC. In addition, the "DAV:getetag"
2388 property is also requested and returned as part of the response.
2389 Note that due to the CALDAV: calendar-data element restrictions, the
2390 DTSTAMP property in VPOLL components has not been returned, and the
2391 only property returned in the VCALENDAR object is VERSION.
2393 >> Request <<
2395 REPORT /cyrus/work/ HTTP/1.1
2396 Host: cal.example.com
2397 Depth: 1
2398 Content-Type: application/xml; charset="utf-8"
2399 Content-Length: xxxx
2401
2402
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2417
2418
2419
2420
2421
2422
2423
2425
2426
2427
2428
2429 >> Response <<
2431 HTTP/1.1 207 Multi-Status
2432 Date: Sat, 11 Nov 2012 09:32:12 GMT
2433 Content-Type: application/xml; charset="utf-8"
2434 Content-Length: xxxx
2436
2437
2439
2440 http://cal.example.com/cyrus/work/poll2.ics
2441
2442
2443 "fffff-abcd2"
2444 BEGIN:VCALENDAR
2445 VERSION:2.0
2446 BEGIN:VPOLL
2447 DTSTART;TZID=US/Eastern:20121202T120000
2448 DURATION:PT4D
2449 SUMMARY:Poll #2
2450 UID:00959BC664CA650E933C892C@example.com
2451 END:VPOLL
2452 END:VCALENDAR
2453
2454
2455 HTTP/1.1 200 OK
2456
2457
2458
2459 http://cal.example.com/cyrus/work/poll3.ics
2460
2461
2462 "fffff-abcd3"
2463 BEGIN:VCALENDAR
2465 VERSION:2.0
2466 PRODID:-//Example Corp.//CalDAV Client//EN
2467 BEGIN:VPOLL
2468 DTSTART;TZID=US/Eastern:20121204T100000
2469 DURATION:PT4D
2470 SUMMARY:Poll #3
2471 UID:DC6C50A017428C5216A2F1CD@example.com
2472 END:VPOLL
2473 END:VCALENDAR
2474
2475
2476 HTTP/1.1 200 OK
2478
2479
2480
2482 Figure 30
2484 8.4. CalDAV time ranges
2486 "CALDAV:time-range XML Element" in [RFC4791] describes how to specify
2487 time ranges to limit the set of calendar components returned by the
2488 server. This specification extends [RFC4791] to describe the meaning
2489 of time ranges for VPOLL
2491 A VPOLL component is said to overlap a given time range if the
2492 condition for the corresponding component state specified in the
2493 table below is satisfied. The conditions depend on the presence of
2494 the DTSTART, DURATION, DTEND, COMPLETED and CREATED properties in the
2495 VPOLL component. Note that, as specified above, the DTEND value MUST
2496 be a DATE-TIME value equal to or after the DTSTART value if
2497 specified.
2499 +-------------------------------------------------------------------+
2500 | VPOLL has the DTSTART property? |
2501 | +---------------------------------------------------------------+
2502 | | VPOLL has the DURATION property? |
2503 | | +-----------------------------------------------------------+
2504 | | | VPOLL has the DTEND property? |
2505 | | | +-------------------------------------------------------+
2506 | | | | VPOLL has the COMPLETED property? |
2507 | | | | +---------------------------------------------------+
2508 | | | | | VPOLL has the CREATED property? |
2509 | | | | | +-----------------------------------------------+
2510 | | | | | | Condition to evaluate |
2511 +---+---+---+---+---+-----------------------------------------------+
2512 | Y | Y | N | * | * | (start <= DTSTART+DURATION) AND |
2513 | | | | | | ((end > DTSTART) OR |
2514 | | | | | | (end >= DTSTART+DURATION)) |
2515 +---+---+---+---+---+-----------------------------------------------+
2516 | Y | N | Y | * | * | ((start < DTEND) OR (start <= DTSTART)) |
2517 | | | | | | AND |
2518 | | | | | | ((end > DTSTART) OR (end >= DTEND)) |
2519 +---+---+---+---+---+-----------------------------------------------+
2520 | Y | N | N | * | * | (start <= DTSTART) AND (end > DTSTART) |
2521 +---+---+---+---+---+-----------------------------------------------+
2522 | N | N | Y | * | * | (start < DTEND) AND (end >= DTEND) |
2523 +---+---+---+---+---+-----------------------------------------------+
2524 | N | N | N | Y | Y | ((start <= CREATED) OR (start <= COMPLETED))|
2525 | | | | | | AND |
2526 | | | | | | ((end >= CREATED) OR (end >= COMPLETED))|
2527 +---+---+---+---+---+-----------------------------------------------+
2528 | N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) |
2529 +---+---+---+---+---+-----------------------------------------------+
2530 | N | N | N | N | Y | (end > CREATED) |
2531 +---+---+---+---+---+-----------------------------------------------+
2532 | N | N | N | N | N | TRUE |
2533 +---+---+---+---+---+-----------------------------------------------+
2535 Figure 31
2537 9. Security Considerations
2539 Applications using these property need to be aware of the risks
2540 entailed in using the URIs provided as values. See [RFC3986] for a
2541 discussion of the security considerations relating to URIs.
2543 10. IANA Considerations
2544 10.1. Parameter Registrations
2546 This document defines the following new iCalendar property parameters
2547 to be added to the registry defined in [RFC5545]:
2549 +====================+=========+===============+
2550 | Property Parameter | Status | Reference |
2551 +====================+=========+===============+
2552 | REQUIRED | Current | Section 5.4.1 |
2553 +--------------------+---------+---------------+
2554 | STAY-INFORMED | Current | Section 5.4.2 |
2555 +--------------------+---------+---------------+
2557 Table 11
2559 10.2. Property Registrations
2561 This document defines the following new iCalendar properties to be
2562 added to the registry defined in [RFC5545]:
2564 +=================+=========+===============+
2565 | Property | Status | Reference |
2566 +=================+=========+===============+
2567 | ACCEPT-RESPONSE | Current | Section 5.5.7 |
2568 +-----------------+---------+---------------+
2569 | POLL-ITEM-ID | Current | Section 5.5.3 |
2570 +-----------------+---------+---------------+
2571 | POLL-MODE | Current | Section 5.5.4 |
2572 +-----------------+---------+---------------+
2573 | POLL-PROPERTIES | Current | Section 5.5.5 |
2574 +-----------------+---------+---------------+
2575 | POLL-WINNER | Current | Section 5.5.6 |
2576 +-----------------+---------+---------------+
2577 | RESPONSE | Current | Section 5.5.8 |
2578 +-----------------+---------+---------------+
2580 Table 12
2582 10.3. POLL-MODE Registration Template
2584 A poll mode is defined by completing the following template.
2586 Poll mode name The name of the poll mode.
2588 Purpose The purpose of the poll mode. Give a short but clear
2589 description.
2591 Reference A reference to the RFC in which the poll mode is defined
2593 10.4. POLL-MODE Registrations
2595 This document defines the following registered poll modes.
2597 +===========+=======================================+===========+
2598 | Poll mode | Purpose | Reference |
2599 | name | | |
2600 +===========+=======================================+===========+
2601 | BASIC | To provide simple voting for a single | Current |
2602 | | outcome from a number of candidates. | |
2603 +-----------+---------------------------------------+-----------+
2605 Table 13
2607 11. Normative references
2609 [RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S., and D.
2610 Jensen, "HTTP Extensions for Distributed
2611 Authoring — WEBDAV", IETF RFC 2518, IETF RFC 2518,
2612 DOI 10.17487/RFC2518, February 1999,
2613 .
2615 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
2616 Resource Identifier (URI): Generic Syntax", IETF RFC 3986,
2617 IETF RFC 3986, DOI 10.17487/RFC3986, January 2005,
2618 .
2620 [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
2621 "Calendaring Extensions to WebDAV (CalDAV)", IETF RFC
2622 4791, IETF RFC 4791, DOI 10.17487/RFC4791, March 2007,
2623 .
2625 [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
2626 Scheduling Core Object Specification (iCalendar)", IETF
2627 RFC 5545, IETF RFC 5545, DOI 10.17487/RFC5545, September
2628 2009, .
2630 [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent
2631 Interoperability Protocol (iTIP)", IETF RFC 5546, IETF RFC
2632 5546, DOI 10.17487/RFC5546, December 2009,
2633 .
2635 [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based
2636 Interoperability Protocol (iMIP)", IETF RFC 6047, IETF RFC
2637 6047, DOI 10.17487/RFC6047, December 2010,
2638 .
2640 [RFC6638] Daboo, C. and B. Desruisseaux, "Scheduling Extensions to
2641 CalDAV", IETF RFC 6638, IETF RFC 6638,
2642 DOI 10.17487/RFC6638, June 2012,
2643 .
2645 [I-D.ietf-calext-eventpub-extensions]
2646 Douglass, M., "Event Publishing Extensions to iCalendar",
2647 IETF I-D.ietf-calext-eventpub-extensions, IETF I-D.ietf-
2648 calext-eventpub-extensions, October 2019.
2650 Appendix A. Open issues
2652 public-comment: Not documented and was a parameter on something.
2653 Really sounds like a PARTICIPANT or VOTE property
2655 Notifications: Need to do a section on what Notifications to support.
2656 A. VPOLL is about to end and you haven't voted on it yet. Instead
2657 reuse VALARMS to notify the user?
2659 Future: Restarting a confirmed/completed VPOLL What to do with
2660 changes to STATUS:CONFIRMED? Allow them or not? What do to that
2661 poll had a winning event or todo. Stress VPOLL UID MUST be unique
2662 Changing status back from CONFIRMED MUST adjust status of any events
2663 booked as a result of confirmation. MUST winning event be cancelled
2664 for POLL-MODE basic? No - voter has indicated now unable to attend -
2665 want to revote
2667 Future: Voting on a confirmed/completed VPOLL Can a voter vote after
2668 completion? May be unable to attend and wants to indicate. Requires
2669 retention of VPOLL retention period Removed status
2671 ORGANIZER/ATTENDEE validity Can a user create a poll with scheduled
2672 events where that user's isn't the organizer of the poll? So is
2673 there a requirement that the account that poll is on is able to
2674 create each one of the resources in the poll? i.e. I can't create a
2675 poll with a set of events where I am just the attendee of the events.
2676 Are there any other restrictions for components in a VPOLL? Add to
2677 security consideration
2679 Update to existing event after poll confirm When voting on existing
2680 event - winning properties ONLY are merged in to the real event.
2682 Need to write down what isn't valid in a VPOLL a. Can't change POLL-
2683 MODE
2685 Guide for ATTENDEE roles chair, NON-PARTICIPANT etc
2686 ? - some iTip notes On confirm - send itip if appropriate (PUBLISH) -
2687 all non-participating - shared - feeds Organizer can specify where
2688 result is? Confirm can specify that itip is sent - ITIP / NONE -
2689 parameter ? on POLL-WINNER
2691 Need to add example of freebusy in response
2693 BEGIN:VCALENDAR
2694 VERSION:2.0
2695 PRODID:-//BedeworkCaldavTest//BedeworkCaldavTest
2696 METHOD: REPLY
2697 BEGIN:VPOLL
2698 ORGANIZER:mailto:douglm@mysite.edu
2699 BEGIN:PARTICIPANT
2700 PARTICIPANT-TYPE: VOTER
2701 CALENDAR-ADDRESS:mailto:eric@example.com
2702 UID:sched01-1234567890
2703 DTSTAMP:20120101T010000Z
2704 SEQUENCE:0
2705 SUMMARY:What to do this week
2706 BEGIN:VFREEBUSY
2707 .......
2708 END:VFREEBUSY
2709 END:PARTICIPANT
2710 END:VPOLL
2711 END:VCALENDAR
2713 Figure 32
2715 Appendix B. Change log
2717 Calext V01: 2019-10-17 MD Replace VVOTER and VOTER with PARTICIPANT.
2719 Calext V00: 2019-05-17 MD First calext version. Moved source to
2720 metanorma. No changes to specification.
2722 V03: 2014-10-28 MD
2723 * Add VVOTER and VOTE components.
2725 * Add RESPONSE property.
2727 * Remove RESPONSE parameter from VOTER.
2729 V03: 2014-05-12 MD
2730 * Add reply-url property and required parameter.
2732 * Fix ACCEPT-RESPONSE definition.
2734 V02: 2014-05-12 MD
2735 * Typos fixed, clarifications made.
2737 * Removed spurious COMMENT param. Switched some to PUBLIC-
2738 COMMENT
2740 * Changed STAY-INFORMED to remove boolean value type and state
2741 explicit TRUE/FALSE values.
2743 * iTip: Allow VPOLL DTSTART to be optional and allow
2744 VAVAILABILITY as subcomponent
2746 * iTip: fix broken table cells
2748 * Add POLL-PROPERTIES, POLL-WINNER to 5545 extensions table
2750 * Added Caldav scheduling section
2752 V01: 2013-08-07 MD
2753 * Removed method CONFIRM
2755 * Removed pollitemid from VPOLL abnf. Added text for pollwinner
2757 * Added POLL-WINNER and verbiage
2759 * Added STATUS values
2761 * Added RELTYPE=POLL
2763 * Added supported-vpoll-component-sets
2765 * Added CalDAV related parameters to VOTER
2767 * Removed bad CalDAV query example. State that queries cannot
2768 target the sub-components.
2770 Initial version: 2012-11-02 MD
2772 Authors' Addresses
2774 Eric York
2776 Email: eric.york@gmail.com
2778 Cyrus Daboo
2780 Email: cyrus@daboo.name
2781 Michael Douglass
2783 Email: mikeadouglass@gmail.com