idnits 2.17.1
draft-ietf-calext-vpoll-03.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:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
No issues found here.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 2126 has weird spacing: '... Name suppo...'
== Line 2128 has weird spacing: '...mespace urn:i...'
== Line 2190 has weird spacing: '... Name vpoll...'
== Line 2192 has weird spacing: '...mespace urn:i...'
== Line 2223 has weird spacing: '... Name vpoll...'
== (3 more instances...)
== 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 (5 March 2022) is 782 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: 1 error (**), 0 flaws (~~), 8 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 M. Douglass
5 Expires: 6 September 2022 5 March 2022
7 VPOLL: Consensus Scheduling Component for iCalendar
8 draft-ietf-calext-vpoll-03
10 Abstract
12 This specification introduces a new RFC5545 iCalendar component which
13 allows for consensus scheduling, that is, voting on a number of
14 alternative meeting or task alternatives.
16 Status of This Memo
18 This Internet-Draft is submitted in full conformance with the
19 provisions of BCP 78 and BCP 79.
21 Internet-Drafts are working documents of the Internet Engineering
22 Task Force (IETF). Note that other groups may also distribute
23 working documents as Internet-Drafts. The list of current Internet-
24 Drafts is at https://datatracker.ietf.org/drafts/current/.
26 Internet-Drafts are draft documents valid for a maximum of six months
27 and may be updated, replaced, or obsoleted by other documents at any
28 time. It is inappropriate to use Internet-Drafts as reference
29 material or to cite them other than as "work in progress."
31 This Internet-Draft will expire on 6 September 2022.
33 Copyright Notice
35 Copyright (c) 2022 IETF Trust and the persons identified as the
36 document authors. All rights reserved.
38 This document is subject to BCP 78 and the IETF Trust's Legal
39 Provisions Relating to IETF Documents (https://trustee.ietf.org/
40 license-info) in effect on the date of publication of this document.
41 Please review these documents carefully, as they describe your rights
42 and restrictions with respect to this document. Code Components
43 extracted from this document must include Revised BSD License text as
44 described in Section 4.e of the Trust Legal Provisions and are
45 provided without warranty as described in the Revised BSD License.
47 Table of Contents
49 1. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 3
50 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
51 3. Terms and definitions . . . . . . . . . . . . . . . . . . . . 4
52 3.1. consensus scheduling . . . . . . . . . . . . . . . . . . 4
53 3.2. active Vpoll . . . . . . . . . . . . . . . . . . . . . . 5
54 3.3. voter . . . . . . . . . . . . . . . . . . . . . . . . . . 5
55 4. Simple Consensus Scheduling . . . . . . . . . . . . . . . . . 5
56 4.1. The VPOLL Component: An Overview . . . . . . . . . . . . 5
57 4.2. The VPOLL Alternative Choices: An Overview . . . . . . . 7
58 4.3. VPOLL responses . . . . . . . . . . . . . . . . . . . . . 8
59 4.4. VPOLL updates . . . . . . . . . . . . . . . . . . . . . . 9
60 4.5. VPOLL Completion . . . . . . . . . . . . . . . . . . . . 11
61 4.6. Other Responses . . . . . . . . . . . . . . . . . . . . . 11
62 5. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . 12
63 5.1. Updated Participant Type Value . . . . . . . . . . . . . 12
64 5.2. Updated Relation Type Value . . . . . . . . . . . . . . . 12
65 5.3. Updated Status Value . . . . . . . . . . . . . . . . . . 13
66 5.4. New Property Parameters . . . . . . . . . . . . . . . . . 13
67 5.4.1. Required . . . . . . . . . . . . . . . . . . . . . . 13
68 5.4.2. Stay-Informed . . . . . . . . . . . . . . . . . . . . 14
69 5.5. New Properties . . . . . . . . . . . . . . . . . . . . . 14
70 5.5.1. Accept-Response . . . . . . . . . . . . . . . . . . . 14
71 5.5.2. Poll-Completion . . . . . . . . . . . . . . . . . . . 15
72 5.5.3. Poll-Item-Id . . . . . . . . . . . . . . . . . . . . 16
73 5.5.4. Poll-Mode . . . . . . . . . . . . . . . . . . . . . . 16
74 5.5.5. Poll-properties . . . . . . . . . . . . . . . . . . . 17
75 5.5.6. Poll-Winner . . . . . . . . . . . . . . . . . . . . . 17
76 5.5.7. Reply-URL . . . . . . . . . . . . . . . . . . . . . . 18
77 5.5.8. Response . . . . . . . . . . . . . . . . . . . . . . 19
78 5.6. New Components . . . . . . . . . . . . . . . . . . . . . 19
79 5.6.1. VPOLL Component . . . . . . . . . . . . . . . . . . . 19
80 5.6.2. VOTE Component . . . . . . . . . . . . . . . . . . . 22
81 6. Poll Modes . . . . . . . . . . . . . . . . . . . . . . . . . 23
82 6.1. POLL-MODE:BASIC . . . . . . . . . . . . . . . . . . . . . 24
83 6.1.1. Property restrictions . . . . . . . . . . . . . . . . 24
84 6.1.2. Outcome reporting . . . . . . . . . . . . . . . . . . 24
85 7. iTIP Extensions . . . . . . . . . . . . . . . . . . . . . . . 24
86 7.1. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 24
87 7.2. Interoperability Models . . . . . . . . . . . . . . . . . 26
88 7.2.1. Delegation . . . . . . . . . . . . . . . . . . . . . 26
89 7.2.2. Acting on Behalf of Other Calendar Users . . . . . . 26
90 7.2.3. Component Revisions . . . . . . . . . . . . . . . . . 26
91 7.2.4. Message Sequencing . . . . . . . . . . . . . . . . . 26
92 7.3. Application Protocol Elements . . . . . . . . . . . . . . 26
93 7.3.1. Methods for VPOLL Calendar Components . . . . . . . . 26
94 7.3.2. Method: PUBLISH . . . . . . . . . . . . . . . . . . . 28
95 7.3.3. Method: REQUEST . . . . . . . . . . . . . . . . . . . 31
96 7.3.4. Method: REPLY . . . . . . . . . . . . . . . . . . . . 37
97 7.3.5. Method: CANCEL . . . . . . . . . . . . . . . . . . . 40
98 7.3.6. Method: REFRESH . . . . . . . . . . . . . . . . . . . 43
99 7.3.7. Method: POLLSTATUS . . . . . . . . . . . . . . . . . 45
100 8. CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . . 47
101 8.1. Calendar Collection Properties . . . . . . . . . . . . . 47
102 8.1.1. CALDAV:supported-vpoll-component-sets . . . . . . . . 47
103 8.1.2. CALDAV:vpoll-max-items . . . . . . . . . . . . . . . 49
104 8.1.3. CALDAV:vpoll-max-active . . . . . . . . . . . . . . . 50
105 8.1.4. CALDAV:vpoll-max-voters . . . . . . . . . . . . . . . 50
106 8.1.5. CalDAV:even-more-properties . . . . . . . . . . . . . 51
107 8.1.6. Extensions to CalDAV scheduling . . . . . . . . . . . 51
108 8.2. Additional Preconditions for PUT, COPY, and MOVE . . . . 52
109 8.3. CalDAV:calendar-query Report . . . . . . . . . . . . . . 52
110 8.3.1. Example: Partial Retrieval of VPOLL . . . . . . . . . 53
111 8.4. CalDAV time ranges . . . . . . . . . . . . . . . . . . . 55
112 9. Security Considerations . . . . . . . . . . . . . . . . . . . 56
113 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56
114 10.1. Parameter Registrations . . . . . . . . . . . . . . . . 56
115 10.2. Property Registrations . . . . . . . . . . . . . . . . . 57
116 10.3. POLL-MODE Registration Template . . . . . . . . . . . . 57
117 10.4. POLL-MODE Registrations . . . . . . . . . . . . . . . . 57
118 11. Normative References . . . . . . . . . . . . . . . . . . . . 58
119 Appendix A. Open issues . . . . . . . . . . . . . . . . . . . . 59
120 Appendix B. Change log . . . . . . . . . . . . . . . . . . . . . 60
121 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 61
123 1. Acknowledgements
125 The authors would like to thank the members of the Calendaring and
126 Scheduling Consortium (CalConnect) for contributing their ideas and
127 support, in particular Cyrus Daboo for his help with the
128 specification and implementations.
130 2. Introduction
132 The currently existing approach to agreeing on meeting times using
133 iTip [RFC5546] and/or iMip [RFC6047] has some significant failings.
134 There is no useful bargaining or suggestion mechanism in iTip, only
135 the ability for a potential attendee to accept or refuse or to
136 counter with a time of their own choosing.
138 Part of the problem is that for many potential attendees, their
139 freebusy is not an accurate representation of their availability. In
140 fact, when trying to schedule conference calls across different
141 organizations, attendees may not be allowed to provide freebusy
142 information or availability as this may reveal something of the
143 organizations internal activities.
145 A number of studies have shown that large amounts of time are spent
146 trying to come to an agreement - up to and beyond 20 working hours
147 per meeting. Many organizers fall back on other approaches such as
148 phone calls and email to determine a suitable time.
150 Online services have appeared as a result and these allow
151 participants to vote on a number of alternatives without revealing or
152 using freebusy or availability. When agreement is reached a
153 conventional scheduling message may be sent to the attendees. This
154 approach appears to reach consensus fairly rapidly. Peer pressure
155 may have some bearing on this as all voters are usually able to see
156 the current state of the voting and may adjust their own meeting
157 schedules to make themselves available for a popular choice.
159 The component and properties defined in this specification provide a
160 standardized structure for this process and allow calendar clients
161 and servers and web based services to interact.
163 These structures also have uses beyond the relatively simple needs of
164 most meeting organizers. The process of coming to consensus can also
165 be viewed as a bidding process.
167 3. Terms and definitions
169 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
170 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
171 "OPTIONAL" in this document are to be interpreted as described in
172 [RFC2119].
174 The notation used in this memo to (re-)define iCalendar elements is
175 the ABNF notation of [RFC5234] as used by [RFC5545]. Any syntax
176 elements shown below that are not explicitly defined in this
177 specification come from iCalendar [RFC5545].
179 Additionally the following terms are used:
181 3.1. consensus scheduling
183 The process whereby users come to some agreement on meeting or task
184 alternatives and then book that meeting or task.
186 3.2. active Vpoll
188 A VPoll may have a DTSTART, DTEND and DURATION which may define the
189 start and end of the active voting period
191 3.3. voter
193 A participant who votes on the alternatives. A voter need not be an
194 attendee of any of the alternatives presented.
196 4. Simple Consensus Scheduling
198 This specification defines components and properties which can be
199 used for simple consensus scheduling but also have the generality to
200 handle more complex cases. To provide an easy (and for many a
201 sufficient) introduction to consensus scheduling and VPOLL we will
202 outline the flow of information for the simple case of voting on a
203 number of meeting alternatives which differ only in time of the
204 meeting. In addition the voters will all be potential attendees.
206 This specification not only defines data structures but adds new iTip
207 methods, one used when consensus has been reached and one to
208 distribute the current status of the poll.
210 This document will show how a VPOLL object is used to inform voters
211 of the state of a simple vote on some alternatives.
213 4.1. The VPOLL Component: An Overview
215 The VPOLL component acts as a wrapper for a number of alternatives to
216 be voted on, together with some properties and a new component used
217 to maintain the state of the voting. For our simple example the
218 following VPOLL properties and sub-components are either required or
219 appropriate:
221 DTSTAMP The usual [RFC5545] property.
223 SEQUENCE The usual [RFC5545] property. See below for SEQUENCE
224 behavior.
226 UID The usual [RFC5545] property.
228 ORGANIZER The usual [RFC5545] property. In general this need not be
229 an organizer of any of the alternatives. In this simple outline
230 we assume it is the same.
232 SUMMARY The usual [RFC5545] property. This optional but recommended
233 property provides the a short title to the poll.
235 DESCRIPTION The usual [RFC5545] property. This optional property
236 provides more details.
238 DTEND The usual [RFC5545] property. This optional property provides
239 a poll closing time and date after which the VPOLL is no longer
240 active.
242 POLL-MODE A new property which defines how the votes are used to
243 obtain a result. For our use case it will take the value "BASIC"
244 meaning one event will be chosen from the alternatives.
246 POLL-COMPLETION A new property which defines who (server or client)
247 chooses and/or submits the winning choice. In our example the
248 value is "SERVER-SUBMIT" which means the client chooses the winner
249 but the server will submit the winning choice.
251 POLL-PROPERTIES A new property which defines which icalendar
252 properties are being voted on. For our use case it will take the
253 value "DTSTART, LOCATION" meaning only those properties are
254 significant for voting. Other properties in the events may differ
255 but are not considered significant for the voting process.
257 PARTICIPANT There is one of these components for each voter with the
258 PARTICIPANT-TYPE set to "VOTER". The CALENDAR-ADDRESS property
259 identifies the voter and this component will contain one VOTE
260 component for each item being voted on.
262 VOTE A new component. There is one of these for each voter and
263 choice. It usually contains at least a POLL-ITEM-ID property to
264 identify the choice and a RESPONSE property to provide a vote.
265 For more complex poll modes it may contain other information such
266 as cost or estimated duration.
268 VEVENT In our simple use case there will be multiple VEVENT sub-
269 components defining the alternatives. Each will have a different
270 date and or time for the meeting.
272 EXAMPLE
274 VPOLL with 3 voters and 3 alternative meetings:
276 BEGIN:VCALENDAR
277 VERSION:2.0
278 PRODID:-//Example//Example
279 METHOD:REQUEST
280 BEGIN:VPOLL
281 POLL-MODE:BASIC
282 POLL-COMPLETION:SERVER-SUBMIT
283 POLL-PROPERTIES:DTSTART,LOCATION
284 ORGANIZER:mailto:mike@example.com
285 UID:sched01-1234567890
286 DTSTAMP:20120101T000000Z
287 SUMMARY:What to do this week
288 DTEND:20120101T000000Z
289 BEGIN:PARTICIPANT
290 PARTICIPANT-TYPE: VOTER
291 CALENDAR-ADDRESS:mailto:cyrus@example.com
292 END:PARTICIPANT
293 BEGIN:PARTICIPANT
294 PARTICIPANT-TYPE: VOTER
295 CALENDAR-ADDRESS:mailto:eric@example.com
296 END:PARTICIPANT
297 BEGIN:PARTICIPANT
298 PARTICIPANT-TYPE: VOTER
299 CALENDAR-ADDRESS:mailto:mike@example.com
300 END:PARTICIPANT
301 BEGIN:VEVENT.......(with a poll-item-id=1)
302 END:VEVENT
303 BEGIN:VEVENT.......(with a poll-item-id=2)
304 END:VEVENT
305 BEGIN:VEVENT.......(with a poll-item-id=3)
306 END:VEVENT
307 END:VPOLL
308 END:VCALENDAR
310 As can be seen in the example above, there is an iTip METHOD property
311 with the value REQUEST. The VPOLL object will be distributed to all
312 the voters, either through iMip or through some VPOLL enabled
313 service.
315 4.2. The VPOLL Alternative Choices: An Overview
317 Within the VPOLL component we have the alternatives to vote on. In
318 many respects these are standard [RFC5545] components. For our
319 simple use case they are all VEVENT components. In addition to the
320 usual [RFC5545] properties some extra properties are used for a
321 VPOLL.
323 POLL-ITEM-ID This provides a unique reference to the sub-component
324 within the VPOLL. It's value SHOULD be a small integer.
326 4.3. VPOLL responses
328 Upon receipt of a VPOLL REQUEST the voter will reply with a VPOLL
329 component containing their vote. In our simple case it will have the
330 following properties and components:
332 DTSTAMP The usual [RFC5545] property.
334 SEQUENCE The usual [RFC5545] property. See below for SEQUENCE
335 behavior.
337 UID Same as the request.
339 ORGANIZER Same as the request.
341 SUMMARY Same as the request.
343 PARTICIPANT One only with a CALENDAR-ADDRESS identifying the voter
344 replying.
346 VOTE One per item being voted on.
348 POLL-ITEM-ID One inside each VOTE component to identify the choice.
350 RESPONSE One inside each VOTE component to specify the vote.
352 Note that a voter can send a number of REPLYs for each REQUEST sent
353 by the organizer. in BASIC mode each REPLY completely replaces the
354 voting record for that voter for all components being voted on. In
355 our example, if Eric responds and votes for items 1 and 2 and then
356 responds again with a vote for only item 3, the final outcome is one
357 vote on item 3.
359 NOTE This is poll-mode specific behavior.
361 EXAMPLE
363 REPLY VPOLL from Cyrus:
365 BEGIN:VCALENDAR
366 VERSION:2.0
367 PRODID:-//Example//Example
368 METHOD: REPLY
369 BEGIN:VPOLL
370 ORGANIZER:mailto:mike@example.com
371 UID:sched01-1234567890
372 DTSTAMP:20120101T010000Z
373 SUMMARY:What to do this week
374 BEGIN:PARTICIPANT
375 PARTICIPANT-TYPE: VOTER
376 CALENDAR-ADDRESS:mailto:cyrus@example.com
377 BEGIN:VOTE
378 POLL-ITEM-ID:1
379 RESPONSE:50
380 COMMENT:Work on iTIP
381 END:VOTE
382 BEGIN:VOTE
383 POLL-ITEM-ID:2
384 RESPONSE:100
385 COMMENT:Work on WebDAV
386 END:VOTE
387 BEGIN:VOTE
388 POLL-ITEM-ID:3
389 RESPONSE:0
390 END:VOTE
391 END:PARTICIPANT
392 END:VPOLL
393 END:VCALENDAR
395 4.4. VPOLL updates
397 When the organizer receives a response from one or more voters the
398 current state of the poll is sent to all voters. The new iTip method
399 POLLSTATUS is used. The VPOLL can contain a reduced set of
400 properties but MUST contain DTSTAMP, SEQUENCE (if not 0), UID,
401 ORGANIZER and one or more PARTICIPANT components each populated with
402 zero or more VOTE components.
404 EXAMPLE
405 BEGIN:VCALENDAR
406 VERSION:2.0
407 PRODID:-//Example//Example
408 METHOD: POLLSTATUS
409 BEGIN:VPOLL
410 ORGANIZER:mailto:mike@example.com
411 UID:sched01-1234567890
412 DTSTAMP:20120101T020000Z
413 SEQUENCE:0
414 SUMMARY:What to do this week
415 BEGIN:PARTICIPANT
416 PARTICIPANT-TYPE: VOTER
417 CALENDAR-ADDRESS:mailto:cyrus@example.com
418 BEGIN: VOTE
419 POLL-ITEM-ID:1
420 RESPONSE:50
421 COMMENT:Work on iTIP
422 END:VOTE
423 BEGIN:VOTE
424 POLL-ITEM-ID:2
425 RESPONSE:100
426 COMMENT:Work on WebDAV
427 END:VOTE
428 BEGIN:VOTE
429 POLL-ITEM-ID:3
430 RESPONSE:0
431 END:VOTE
432 END:PARTICIPANT
433 BEGIN:PARTICIPANT
434 PARTICIPANT-TYPE: VOTER
435 CALENDAR-ADDRESS:mailto:eric@example.com
436 BEGIN:VOTE
437 POLL-ITEM-ID:1
438 RESPONSE:100
439 END:VOTE
440 BEGIN:VOTE
441 POLL-ITEM-ID:2
442 RESPONSE:100
443 END:VOTE
444 BEGIN:VOTE
445 POLL-ITEM-ID:3
446 RESPONSE:0
447 END:VOTE
448 END:PARTICIPANT
449 END:VPOLL
450 END:VCALENDAR
452 4.5. VPOLL Completion
454 After a number of REPLY messages have been received the poll will be
455 considered complete. If there is a DTEND on the poll the system may
456 automatically close the poll, or the organizer may, at any time,
457 consider the poll complete. A VPOLL can be completed (and
458 effectively closed for voting) by sending an iTip REQUEST message
459 with the VPOLL STATUS property set to COMPLETED.
461 The poll winner is confirmed by sending a final iTip REQUEST message
462 with the VPOLL STATUS property set to CONFIRMED. In this case the
463 VPOLL component contains all the events being voted on along with a
464 POLL-WINNER property to identify the winning event. As the POLL-
465 COMPLETION property is set to SERVER-SUBMIT the server will submit
466 the winning choice and when it has done so set the STATUS to
467 "SUBMITTED".
469 EXAMPLE
471 VPOLL confirmation:
473 BEGIN:VCALENDAR
474 VERSION:2.0
475 PRODID:-//Example//Example
476 METHOD: REQUEST
477 BEGIN:VPOLL
478 ORGANIZER:mailto:douglm@example.com
479 UID:sched01-1234567890
480 DTSTAMP:20120101T030000Z
481 COMPLETED:20120101T030000Z
482 POLL-COMPLETION:SERVER-SUBMIT
483 SEQUENCE:0
484 SUMMARY:What to do this week
485 STATUS:CONFIRMED
486 POLL-WINNER:3
487 BEGIN:VEVENT.......(with a poll-item-id=1)
488 END:VEVENT
489 BEGIN:VEVENT.......(with a poll-item-id=2)
490 END:VEVENT
491 BEGIN:VEVENT.......(with a poll-item-id=3)
492 END:VEVENT
493 END:VPOLL
494 END:VCALENDAR
496 4.6. Other Responses
498 A voter being asked to choose between a number of ORGANIZER supplied
499 alternatives may find none of them acceptable or may simply not care.
501 An alternative response, which may be disallowed by the ORGANIZER, is
502 to send back the respondees availability or freebusy or even one or
503 more new, alternative choices.
505 This is accomplished by responding with a VOTE component which has no
506 POLL-ITEM-ID property. In this case it MUST contain some alternative
507 information. What form this takes depends on the poll mode in
508 effect.
510 5. iCalendar Extensions
512 5.1. Updated Participant Type Value
514 Participant type property values are defined in section 11.2.1. of
515 [RFC9073]. This specification updates that type to include the new
516 participant type VOTER to provide information about the voter and to
517 contain their votes.
519 Format Definition This property parameter is redefined by the
520 following notation:
522 partvalue /= "VOTER"
524 Description The new property value indicates that the associated
525 PARTICIPANT component identifies a voter in a VPOLL.
527 5.2. Updated Relation Type Value
529 Relationship parameter type values are defined in section 3.2.15. of
530 [RFC5545]. This specification updates that type to include the new
531 relationship value POLL to provide a link to the VPOLL component in
532 which the current component appears.
534 Format Definition This property parameter is redefined by the
535 following notation:
537 reltypeparam /= "RELTYPE" "=" "POLL"
538 ; Property value is a VPOLL uid
540 Description This parameter can be specified on a property that
541 references another related calendar component. The new parameter
542 value indicates that the associated property references a VPOLL
543 component which contains the current component.
545 5.3. Updated Status Value
547 Status property values are defined in section 3.8.1.11. of [RFC5545].
548 This specification updates that type to define valid VPOLL status
549 values.
551 Format Definition This property parameter is redefined by the
552 following notation:
554 statvalue /= statvalue-poll
555 ; Status values for "VPOLL".
556 statvalue-poll = "IN-PROCESS"
557 / "COMPLETED" ; Poll has closed,
558 ; nothing has been chosen yet
559 / "CONFIRMED" ; Poll has closed and
560 ; winning items confirmed
561 / "SUBMITTED" ; The winning item has been
562 ; submitted
563 / "CANCELLED"
565 Description These values allow clients and servers to handle the
566 choosing and submission of winning choices.
568 If the client is choosing and the server submitting then the
569 client should set the POLL-WINNER property, set the status to
570 CONFIRMED and save the poll. When the server submits the winning
571 choice it will set the status to SUBMITTED.
573 Figure 1
575 5.4. New Property Parameters
577 5.4.1. Required
579 Parameter name REQUIRED
581 Purpose To specify whether the associated property is required in
582 the current context.
584 Format Definition This parameter is defined by the following
585 notation:
587 requirededparam = "REQUIRED" "=" ("TRUE" / "FALSE")
588 ; Default is FALSE
590 Description This parameter MAY be specified on REPLY-URL and, if the
591 value is TRUE, indicates the organizer requires all replies to be
592 made via the specified service rather than iTip replies.
594 5.4.2. Stay-Informed
596 Parameter name STAY-INFORMED
598 Purpose To specify the voter also wants to be added as an ATTENDEE
599 when the poll is confirmed.
601 Format Definition This parameter is defined by the following
602 notation:
604 stayinformedparam = "STAY-INFORMED" "=" ("TRUE" / "FALSE")
605 ; Default is FALSE
607 Description This parameter MAY be specified on the CALENDAR-ADDRESS
608 property in the PARTICIPANT component and, if the value is TRUE,
609 indicates the voter wishes to be added to the final choice as a
610 non participant.
612 5.5. New Properties
614 5.5.1. Accept-Response
616 Property name ACCEPT-RESPONSE
618 Purpose This property is used in VPOLL to indicate the types of
619 component that may be supplied in a response.
621 Property Parameters Non-standard or iana parameters can be specified
622 on this property.
624 Conformance This property MAY be specified in a VPOLL component.
626 Description When used in a VPOLL this property indicates what
627 allowable component types may be returned in a reply. Typically
628 this would allow a voter to respond with their freebusy or
629 availability rather than choosing one of the presented
630 alternatives.
632 If this property is not present voters are only allowed to respond
633 to the choices in the request.
635 Format Definition This property is defined by the following
636 notation:
638 acceptresponse = "ACCEPT-RESPONSE" acceptresponseparams ":"
639 iana-token ("," iana-token) CRLF
641 acceptresponseparams = *(";" other-param)
643 5.5.2. Poll-Completion
645 Property name POLL-COMPLETION
647 Purpose This property is used in VPOLL to indicate whether the
648 client or server is responsible for choosing and/or submitting the
649 winner(s).
651 Description When a VPOLL is stored on a server which is capable of
652 handling choosing and submission of winning choices a value of
653 SERVER indicates that the server should close the poll, choose the
654 winner and submit whenever it is appropriate to do so.
656 For example, in BASIC poll-mode, reaching the DTEND of the poll
657 could trigger this server side action.
659 Server initiated submission requires that the submitted choice
660 MUST be a valid calendaring component.
662 POLL-COMPLETION=SERVER-SUBMIT allows the client to set the poll-
663 winner, set the status to CONFIRMED and then store the poll on the
664 server. The server will then submit the winning choice and set
665 the status to SUBMITTED.
667 Format Definition This property is defined by the following
668 notation:
670 poll-completion = "POLL-COMPLETION" pcparam ":" pcvalue CRLF
672 pcparam = *(";" other-param)
674 pcvalue = "SERVER" ; The server is responsible for both choosing and
675 ; submitting the winner(s)
676 / "SERVER-SUBMIT" ; The server is responsible for
677 ; submitting the winner(s). The client chooses.
678 / "SERVER-CHOICE" ; The server is responsible for
679 ; choosing the winner(s). The client will submit.
680 / "CLIENT" ; The client is responsible for both choosing and
681 ; submitting the winner(s)
682 / iana-token
683 / x-name
684 ;Default is CLIENT
686 Example The following is an example of this property:
688 POLL-COMPLETION: SERVER-SUBMIT
690 5.5.3. Poll-Item-Id
692 Property name POLL-ITEM-ID
694 Purpose This property is used in VPOLL child components as an
695 identifier.
697 Value type INTEGER
699 Property Parameters Non-standard parameters can be specified on this
700 property.
702 Conformance This property MUST be specified in a VOTE component and
703 in VPOLL choice items.
705 Description In a METHOD:REQUEST each choice component MUST have a
706 POLL-ITEM-ID property. Each set of components with the same POLL-
707 ITEM-ID value represents one overall set of items to be voted on.
709 POLL-ITEM-ID SHOULD be a unique small integer for each component
710 or set of components. If it remains the same between REQUESTs
711 then the previous response for that component MAY be re-used. To
712 force a re-vote on a component due to a significant change, the
713 POLL-ITEM-ID MUST change.
715 Format Definition This property is defined by the following
716 notation:
718 pollitemid = "POLL-ITEM-ID" pollitemdparams ":"
719 integer CRLF
721 pollitemidparams = *(
722 (";" other-param)
723 )
725 5.5.4. Poll-Mode
727 Property name POLL-MODE
729 Purpose This property is used in VPOLL to indicate what voting mode
730 is to be applied.
732 Property Parameters Non-standard or iana parameters can be specified
733 on this property.
735 Conformance This property MAY be specified in a VPOLL component or
736 its sub-components.
738 Description The poll mode defines how the votes are applied to
739 obtain a result. BASIC mode, the default, means that the voters
740 are selecting one component (or group of components) with a given
741 POLL=ITEM-ID.
743 Other polling modes may be defined in updates to this
744 specification. These may allow for such modes as ranking or task
745 assignment.
747 Format Definition This property is defined by the following
748 notation:
750 pollmode = "POLL-MODE" pollmodeparams ":"
751 ("BASIC" / iana-token / other-token) CRLF
753 pollmodeparams = *(";" other-param)
755 5.5.5. Poll-properties
757 Property name POLL-PROPERTIES
759 Purpose This property is used in VPOLL to define which icalendar
760 properties are being voted on.
762 Property Parameters Non-standard or iana parameters can be specified
763 on this property.
765 Conformance This property MAY be specified in a VPOLL component.
767 Description This property defines which icalendar properties are
768 significant in the voting process. It may not be clear to voters
769 which properties are varying in a significant manner. Clients may
770 use this property to highlight those listed properties.
772 Format Definition This property is defined by the following
773 notation:
775 pollproperties = "POLL-PROPERTIES" pollpropparams ":"
776 text *("," text) CRLF
778 pollpropparams = *(";" other-param)
780 5.5.6. Poll-Winner
782 Property name POLL-WINNER
784 Purpose This property is used in a basic mode VPOLL to indicate
785 which of the VPOLL sub-components won.
787 Value type INTEGER
789 Property Parameters Non-standard parameters can be specified on this
790 property.
792 Conformance This property MAY be specified in a VPOLL component.
794 Description For poll confirmation each child component MUST have a
795 POLL-ITEM-ID property. For basic mode the VPOLL component SHOULD
796 have a POLL-WINNER property which MUST correspond to one of the
797 POLL-ITEM-ID properties and indicates which sub-component was the
798 winner.
800 Format Definition This property is defined by the following
801 notation:
803 pollwinner = "POLL-WINNER" pollwinnerparams ":"
804 integer CRLF
806 pollwinnerparams = *(";" other-param)
808 ; Used with a STATUS:CONFIRMED VPOLL to indicate which
809 ; components have been confirmed
811 5.5.7. Reply-URL
813 Property name REPLY-URL
815 Purpose This property may be used in scheduling messages to indicate
816 additional reply methods, for example a web-service.
818 Value type URI
820 Property Parameters Non-standard, required or iana parameters can be
821 specified on this property.
823 Conformance This property MAY be specified in a VPOLL component.
825 Description When used in a scheduling message this property
826 indicates additional or required services that can be used to
827 reply. Typically this would be a web service of some form.
829 Format Definition This property is defined by the following
830 notation:
832 reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF
834 reply-urlparams = *(
835 (";" requiredparam) /
836 (";" other-param)
837 )
839 5.5.8. Response
841 Property name RESPONSE
843 Purpose To specify a response vote.
845 Value type INTEGER
847 Format Definition This property is defined by the following
848 notation:
850 response = "RESPONSE" response-params ":" integer CRLF
851 ; integer value 0..100
853 responseparams = *(";" other-param)
855 Description This parameter can be specified on the POLL-ITEM-ID
856 property to provide the value of the voters response. This
857 parameter allows for fine grained responses which are appropriate
858 to some applications. For the case of individuals voting for a
859 choice of events, client applications SHOULD conform to the
860 following convention:
862 * 0 - 39 A "NO vote"
864 * 40 - 79 A "MAYBE" vote
866 * 80 - 89 A "YES - but not preferred vote"
868 * 90-100 A "YES" vote.
870 Clients MUST preserve the response value when there is no
871 change from the user even if they have a UI with fixed states
872 (e.g. yes/no/maybe).
874 5.6. New Components
876 5.6.1. VPOLL Component
878 Component name VPOLL
879 Purpose This component provides a mechanism by which voters can vote
880 on provided choices.
882 Format Definition This property is defined by the following
883 notation:
885 pollc = "BEGIN" ":" "VPOLL" CRLF
886 pollprop
887 *participantc *eventc *todoc *journalc *freebusyc
888 *availabilityc *alarmc *iana-comp *x-comp
889 "END" ":" "VPOLL" CRLF
891 pollprop = *(
892 ;
893 ; The following are REQUIRED,
894 ; but MUST NOT occur more than once.
895 ;
896 dtstamp / uid / organizer /
897 ;
898 ; The following are OPTIONAL,
899 ; but MUST NOT occur more than once.
900 ;
901 acceptresponse / class / created / completed /
902 description / dtstart / last-mod / pollmode /
903 pollproperties / priority / seq / status /
904 summary / url /
905 ;
906 ; Either 'dtend' or 'duration' MAY appear in
907 ; a 'pollprop', but 'dtend' and 'duration'
908 ; MUST NOT occur in the same 'pollprop'.
909 ; 'duration' MUST only occur when 'dtstart'
910 ; is present
911 ;
912 dtend / duration /
913 ;
914 ; The following are OPTIONAL,
915 ; and MAY occur more than once.
916 ;
917 attach / categories / comment /
918 contact / rstatus / related /
919 resources / x-prop / iana-prop
920 ;
921 ; The following is OPTIONAL, it SHOULD appear
922 ; once for the confirmation of a BASIC mode
923 ; VPOLL. Other modes may define differing
924 ; requirements.
925 ;
926 pollwinner /
927 ;
928 )
930 Description This component provides a mechanism by which voters can
931 vote on provided choices. The outcome depends upon the POLL-MODE
932 in effect.
934 The PARTICIPANT components in VPOLL requests provide information
935 on each recipient who will be voting - both their identity through
936 the CALENDAR-ADDRESS property and their votes through the VOTE
937 components.
939 If specified, the "DTSTART" property defines the start or opening
940 of the poll active period. If absent the poll is presumed to have
941 started when created.
943 If "DTSTART" is present "DURATION" MAY be specified and indicates
944 the duration, and hence the ending, of the poll. The value of the
945 property MUST be a positive duration.
947 "DTEND" MAY be specified with or without "DTSTART" and indicates
948 the ending of the poll. If DTEND is specified it MUST be later
949 than the DTSTART or CREATED property.
951 If one or more VALARM components are included in the VPOLL they
952 are not components to be voted on and MUST NOT contain a POLL-
953 ITEM-ID property. VALARM sub-components may be used to provide
954 warnings to the user when polls are due to start or end.
956 5.6.2. VOTE Component
958 Component name VOTE
960 Purpose This component provides a mechanism by which voters can vote
961 on provided choices.
963 Conformance This component may be specified zero or more times in a
964 PARTICIPANT component which identifies the voter.
966 Format Definition This property is defined by the following
967 notation:
969 votec = "BEGIN" ":" "VOTE" CRLF
970 voteprop
971 *eventc *todoc *journalc *freebusyc
972 *availabilityc *alarmc *iana-comp *x-comp
973 "END" ":" "VOTE" CRLF
975 voteprop = *(
976 ;
977 ; The following are REQUIRED,
978 ; but MUST NOT occur more than once.
979 ;
980 pollitemid / response /
981 ;
982 ; The following are OPTIONAL,
983 ; and MAY occur more than once.
984 ;
985 comment / x-prop / iana-prop
986 ;
987 )
989 Description This component appears inside the PARTICIPANT component
990 with a PARTICIPANT-TYPE of VOTER to identify the voter. This
991 component contains that participants responses.
993 The required and optional properties and their meanings will
994 depend upon the POLL-MODE in effect.
996 For any POLL-MODE, POLL-ITEM-ID is used to associate the
997 information to a choice supplied by the organizer. This means
998 that each VOTE component only provides information about that
999 choice.
1001 If allowed by the POLL-MODE a VOTE component without a POLL-ITEM-
1002 ID may be provided in a REPLY to indicate a possible new choice or
1003 to provide information to the ORGANIZER - such as the respondees
1004 availability.
1006 6. Poll Modes
1008 The VPOLL component is intended to allow for various forms of
1009 polling. The particular form in efffect is indicated by the POLL-
1010 MODE property.
1012 New poll modes can be registered by including a completed POLL-MODE
1013 Registration Template (see Section 10.3) in a published RFC.
1015 6.1. POLL-MODE:BASIC
1017 BASIC poll mode is the form of voting in which one possible outcome
1018 is chosen from a set of possibilities. Usually this will be
1019 represented as a number of possible event objects one of which will
1020 be selected.
1022 6.1.1. Property restrictions
1024 This poll mode has the following property requirements:
1026 POLL-ITEM-ID Each contained sub-component that is being voted upon
1027 MUST contain a POLL-ITEM_ID property which is unique within the
1028 context of the POLL. The value MUST NOT be reused when events are
1029 removed and/or added to the poll.
1031 POLL-WINNER On confirmation of the poll this property MUST be
1032 present and identifies the winning component.
1034 6.1.2. Outcome reporting
1036 To confirm the winner the POLL-WINNER property MUST be present and
1037 the STATUS MUST be set to CONFIRMED.
1039 When the winning VEVENT or VTODO is not a scheduled entity, that is,
1040 it has no ORGANIZER or ATTENDEES it MUST be assigned an ORGANIZER
1041 property and a list of non-participating ATTENDEEs. This allows the
1042 winning entity to be distributed to the participants through iTip or
1043 some other protocol.
1045 7. iTIP Extensions
1047 This specification introduces a number of extensions to [RFC5546].
1048 In group scheduling the parties involved are organizer and attendees.
1049 In VPOLL the parties are organizer and voters.
1051 For many of the iTip processing rules the voters take the place of
1052 attendees.
1054 7.1. Methods
1056 There are some extensions to the behavior of iTip methods for a VPOLL
1057 object and two new methods are defined.
1059 +================+================================================+
1060 | Method | Description |
1061 +================+================================================+
1062 | PUBLISH | No changes (yet) |
1063 +----------------+------------------------------------------------+
1064 | REQUEST | Each child component MUST have a POLL-ITEM-ID |
1065 | | property. Each set of components with the |
1066 | | same POLL-ITEM-ID value represents one overall |
1067 | | set of items to be voted on. |
1068 +----------------+------------------------------------------------+
1069 | REPLY | There MUST be a single VPOLL component which |
1070 | | MUST have: either one or more POLL-ITEM-ID |
1071 | | properties with a RESPONSE param matching that |
1072 | | from a REQUEST or a VFREEBUSY or VAVAILABILITY |
1073 | | child component showing overall busy/available |
1074 | | time. The VPOLL MUST have one voter only. |
1075 +----------------+------------------------------------------------+
1076 | ADD | Not supported for VPOLL. |
1077 +----------------+------------------------------------------------+
1078 | CANCEL | There MUST be a single VPOLL component with |
1079 | | UID |
1080 +----------------+------------------------------------------------+
1081 | | matching that of the poll being cancelled. |
1082 +----------------+------------------------------------------------+
1083 | REFRESH | The organizer returns a METHOD:REQUEST with |
1084 | | the current full state, or a METHOD:CANCEL or |
1085 | | an error if no matching poll is found. |
1086 +----------------+------------------------------------------------+
1087 | COUNTER | Not supported for VPOLL. |
1088 +----------------+------------------------------------------------+
1089 | DECLINECOUNTER | Not supported for VPOLL. |
1090 +----------------+------------------------------------------------+
1091 | POLLSTATUS | Used to send the current state of the poll to |
1092 | | all voters. The VPOLL can contain a reduced |
1093 | | set of properties but MUST contain DTSTAMP, |
1094 | | SEQUENCE (if not 0), UID, ORGANIZER and |
1095 | | PARTICIPANTS. |
1096 +----------------+------------------------------------------------+
1098 Table 1
1100 The following table shows the above methods broken down by who can
1101 send them with VPOLL components.
1103 +============+================================================+
1104 | Originator | Methods |
1105 +============+================================================+
1106 | Organizer | CANCEL, PUBLISH, REQUEST, POLLSTATUS |
1107 +------------+------------------------------------------------+
1108 | Voter | REPLY, REFRESH, REQUEST (only when delegating) |
1109 +------------+------------------------------------------------+
1111 Table 2
1113 7.2. Interoperability Models
1115 Most of the standard iTip specification applies with respect to
1116 organizer and voters.
1118 7.2.1. Delegation
1120 TBD
1122 7.2.2. Acting on Behalf of Other Calendar Users
1124 TBD
1126 7.2.3. Component Revisions
1128 * Need to talk about what a change in SEQUENCE means
1130 * Sequence change forces a revote.
1132 * New voter - no sequence change
1134 * Add another poll set or change poll item ids or any change to a
1135 child
1137 * component - bump sequence
1139 7.2.4. Message Sequencing
1141 TBD
1143 7.3. Application Protocol Elements
1145 7.3.1. Methods for VPOLL Calendar Components
1147 This section defines the property set restrictions for the method
1148 types that are applicable to the "VPOLL" calendar component. Each
1149 method is defined using a table that clarifies the property
1150 constraints that define the particular method.
1152 The presence column uses the following values to assert whether a
1153 property is required or optional, and the number of times it may
1154 appear in the iCalendar object.
1156 +================+=================================================+
1157 | Presence Value | Description |
1158 +================+=================================================+
1159 | 1 | One instance MUST be present. |
1160 +----------------+-------------------------------------------------+
1161 | 1+ | At least one instance MUST be present. |
1162 +----------------+-------------------------------------------------+
1163 | 0 | Instances of this property MUST NOT be present. |
1164 +----------------+-------------------------------------------------+
1165 | 0+ | Multiple instances MAY be present. |
1166 +----------------+-------------------------------------------------+
1167 | 0 or 1 | Up to 1 instance of this property MAY be |
1168 | | present. |
1169 +----------------+-------------------------------------------------+
1171 Table 3
1173 The following summarizes the methods that are defined for the "VPOLL"
1174 calendar component.
1176 +============+======================================================+
1177 | Method | Description |
1178 +============+======================================================+
1179 | PUBLISH | Post notification of an poll. Used primarily |
1180 | | as a method of advertising the existence of a |
1181 | | poll. |
1182 +------------+------------------------------------------------------+
1183 | REQUEST | To make a request for a poll. This is an |
1184 | | explicit invitation to one or more voters. |
1185 | | Poll requests are also used to update, change |
1186 | | or confirm an existing poll. Clients that |
1187 | | cannot handle REQUEST MAY degrade the poll to |
1188 | | view it as a PUBLISH. REQUEST SHOULD NOT be |
1189 | | used just to set the status of the poll - |
1190 | | POLLSTATUS provides a more compact approach. |
1191 +------------+------------------------------------------------------+
1192 | REPLY | Reply to a poll request. Voters may set |
1193 | | their RESPONSE parameter to supply the |
1194 | | current vote in the range 0 to 100. |
1195 +------------+------------------------------------------------------+
1196 | CANCEL | Cancel a poll. |
1197 +------------+------------------------------------------------------+
1198 | REFRESH | A request is sent to an Organizer by a Voter |
1199 | | asking for the latest version of a poll to be |
1200 | | resent to the requester. |
1201 +------------+------------------------------------------------------+
1202 | POLLSTATUS | Used to send the current state of the poll to |
1203 | | all voters. The VPOLL can contain a reduced |
1204 | | set of properties but MUST contain DTSTAMP, |
1205 | | SEQUENCE (if not 0), UID, ORGANIZER and |
1206 | | PARTICIPANT. |
1207 +------------+------------------------------------------------------+
1209 Table 4
1211 7.3.2. Method: PUBLISH
1213 The "PUBLISH" method in a "VPOLL" calendar component is an
1214 unsolicited posting of an iCalendar object. Any CU may add published
1215 components to their calendar. The "Organizer" MUST be present in a
1216 published iCalendar component. "Voters" MUST NOT be present. Its
1217 expected usage is for encapsulating an arbitrary poll as an iCalendar
1218 object. The "Organizer" may subsequently update (with another
1219 "PUBLISH" method) or cancel (with a "CANCEL" method) a previously
1220 published "VPOLL" calendar component.
1222 Note Not clear how useful this is but needs some work on
1223 transmitting the current vote without any voter identification.
1225 This method type is an iCalendar object that conforms to the
1226 following property constraints:
1228 +=================+==========+=====================================+
1229 | Component/ | Presence | Comment |
1230 | Property | | |
1231 +=================+==========+=====================================+
1232 | METHOD | 1 | MUST equal PUBLISH. |
1233 +-----------------+----------+-------------------------------------+
1234 | VPOLL | 1+ | |
1235 +-----------------+----------+-------------------------------------+
1236 | DTSTAMP | 1 | |
1237 +-----------------+----------+-------------------------------------+
1238 | DTSTART | 0 or 1 | If present defines the start of the |
1239 | | | poll. Otherwise the poll starts |
1240 | | | when it is created and distributed. |
1241 +-----------------+----------+-------------------------------------+
1242 | ORGANIZER | 1 | |
1243 +-----------------+----------+-------------------------------------+
1244 | SUMMARY | 1 | Can be null. |
1245 +-----------------+----------+-------------------------------------+
1246 | UID | 1 | |
1247 +-----------------+----------+-------------------------------------+
1248 | SEQUENCE | 0 or 1 | MUST be present if value is greater |
1249 | | | than 0; MAY be present if 0. |
1250 +-----------------+----------+-------------------------------------+
1251 | ACCEPT-RESPONSE | 0 or 1 | |
1252 +-----------------+----------+-------------------------------------+
1253 | ATTACH | 0+ | |
1254 +-----------------+----------+-------------------------------------+
1255 | CATEGORIES | 0+ | |
1256 +-----------------+----------+-------------------------------------+
1257 | CLASS | 0 or 1 | |
1258 +-----------------+----------+-------------------------------------+
1259 | COMMENT | 0+ | |
1260 +-----------------+----------+-------------------------------------+
1261 | COMPLETED | 0 or 1 | |
1262 +-----------------+----------+-------------------------------------+
1263 | CONTACT | 0 or 1 | |
1264 +-----------------+----------+-------------------------------------+
1265 | CREATED | 0 or 1 | |
1266 +-----------------+----------+-------------------------------------+
1267 | DESCRIPTION | 0 or 1 | Can be null. |
1268 +-----------------+----------+-------------------------------------+
1269 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1270 | | | present. |
1271 +-----------------+----------+-------------------------------------+
1272 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1273 | | | present. |
1274 +-----------------+----------+-------------------------------------+
1275 | LAST-MODIFIED | 0 or 1 | |
1276 +-----------------+----------+-------------------------------------+
1277 | POLL-ITEM-ID | 0 | |
1278 +-----------------+----------+-------------------------------------+
1279 | POLL-MODE | 0 or 1 | |
1280 +-----------------+----------+-------------------------------------+
1281 | POLL-PROPERTIES | 0 or 1 | |
1282 +-----------------+----------+-------------------------------------+
1283 | PRIORITY | 0 or 1 | |
1284 +-----------------+----------+-------------------------------------+
1285 | RELATED-TO | 0+ | |
1286 +-----------------+----------+-------------------------------------+
1287 | RESOURCES | 0+ | |
1288 +-----------------+----------+-------------------------------------+
1289 | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ |
1290 | | | CANCELLED. |
1291 +-----------------+----------+-------------------------------------+
1292 | URL | 0 or 1 | |
1293 +-----------------+----------+-------------------------------------+
1294 | IANA-PROPERTY | 0+ | |
1295 +-----------------+----------+-------------------------------------+
1296 | X-PROPERTY | 0+ | |
1297 +-----------------+----------+-------------------------------------+
1298 | PARTICIPANT | 0+ | Only PARTICIPANT components with |
1299 | | | PARTICIPANT-TYPE not equal to |
1300 | | | "VOTER" - that is, no voters |
1301 +-----------------+----------+-------------------------------------+
1302 | REQUEST-STATUS | 0 | |
1303 +-----------------+----------+-------------------------------------+
1304 | VALARM | 0+ | |
1305 +-----------------+----------+-------------------------------------+
1306 | VEVENT | 0+ | Depending upon the poll mode in |
1307 | | | effect there MAY be candidate |
1308 | | | components included in the poll |
1309 | | | component. |
1310 +-----------------+----------+-------------------------------------+
1311 | VFREEBUSY | 0 | |
1312 +-----------------+----------+-------------------------------------+
1313 | VJOURNAL | 0+ | Depending upon the poll mode in |
1314 | | | effect there MAY be candidate |
1315 | | | components included in the poll |
1316 | | | component. |
1317 +-----------------+----------+-------------------------------------+
1318 | VTODO | 0+ | Depending upon the poll mode in |
1319 | | | effect there MAY be candidate |
1320 | | | components included in the poll |
1321 | | | component. |
1322 +-----------------+----------+-------------------------------------+
1323 | VTIMEZONE | 0+ | MUST be present if any date/time |
1324 | | | refers to a timezone. |
1325 +-----------------+----------+-------------------------------------+
1326 | IANA-COMPONENT | 0+ | |
1327 +-----------------+----------+-------------------------------------+
1328 | X-COMPONENT | 0+ | |
1329 +-----------------+----------+-------------------------------------+
1331 Table 5: Constraints for a METHOD:PUBLISH of a VPOLL
1333 7.3.3. Method: REQUEST
1335 The "REQUEST" method in a "VPOLL" component provides the following
1336 scheduling functions:
1338 * Invite "Voters" to respond to the poll.
1340 * Change the items being voted upon.
1342 * Complete or confirm the poll.
1344 * Response to a "REFRESH" request.
1346 * Update the details of an existing vpoll.
1348 * Update the status of "Voters".
1350 * Forward a "VPOLL" to another uninvited CU.
1352 * For an existing "VPOLL" calendar component, delegate the role of
1353 "Voter" to another CU.
1355 * For an existing "VPOLL" calendar component, change the role of
1356 "Organizer" to another CU.
1358 The "Organizer" originates the "REQUEST". The recipients of the
1359 "REQUEST" method are the CUs voting in the poll, the "Voters".
1360 "Voters" use the "REPLY" method to convey votes to the "Organizer".
1362 The "UID" and "SEQUENCE" properties are used to distinguish the
1363 various uses of the "REQUEST" method. If the "UID" property value in
1364 the "REQUEST" is not found on the recipient's calendar, then the
1365 "REQUEST" is for a new "VPOLL" calendar component. If the "UID"
1366 property value is found on the recipient's calendar, then the
1367 "REQUEST" is for an update, or a reconfirmation of the "VPOLL"
1368 calendar component.
1370 For the "REQUEST" method only a single iCalendar object is permitted.
1372 This method type is an iCalendar object that conforms to the
1373 following property constraints:
1375 +=================+==========+=====================================+
1376 | Component/ | Presence | Comment |
1377 | Property | | |
1378 +=================+==========+=====================================+
1379 | METHOD | 1 | MUST be REQUEST. |
1380 +-----------------+----------+-------------------------------------+
1381 | VPOLL | 1 | |
1382 +-----------------+----------+-------------------------------------+
1383 | PARTICIPANT | 1+ | Identified as voters with the |
1384 | | | PARTICIPANT-TYPE=VOTER |
1385 +-----------------+----------+-------------------------------------+
1386 | DTSTAMP | 1 | |
1387 +-----------------+----------+-------------------------------------+
1388 | DTSTART | 0 or 1 | If present defines the start of the |
1389 | | | poll. Otherwise the poll starts |
1390 | | | when it is created and distributed. |
1391 +-----------------+----------+-------------------------------------+
1392 | ORGANIZER | 1 | |
1393 +-----------------+----------+-------------------------------------+
1394 | SEQUENCE | 0 or 1 | MUST be present if value is greater |
1395 | | | than 0; MAY be present if 0. |
1396 +-----------------+----------+-------------------------------------+
1397 | SUMMARY | 1 | Can be null. |
1398 +-----------------+----------+-------------------------------------+
1399 | UID | 1 | |
1400 +-----------------+----------+-------------------------------------+
1401 | ACCEPT-RESPONSE | 0 or 1 | |
1402 +-----------------+----------+-------------------------------------+
1403 | ATTACH | 0+ | |
1404 +-----------------+----------+-------------------------------------+
1405 | CATEGORIES | 0+ | |
1406 +-----------------+----------+-------------------------------------+
1407 | CLASS | 0 or 1 | |
1408 +-----------------+----------+-------------------------------------+
1409 | COMMENT | 0+ | |
1410 +-----------------+----------+-------------------------------------+
1411 | COMPLETED | 0 or 1 | |
1412 +-----------------+----------+-------------------------------------+
1413 | CONTACT | 0+ | |
1414 +-----------------+----------+-------------------------------------+
1415 | CREATED | 0 or 1 | |
1416 +-----------------+----------+-------------------------------------+
1417 | DESCRIPTION | 0 or 1 | Can be null. |
1418 +-----------------+----------+-------------------------------------+
1419 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1420 | | | present. |
1421 +-----------------+----------+-------------------------------------+
1422 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1423 | | | present. |
1424 +-----------------+----------+-------------------------------------+
1425 | GEO | 0 or 1 | |
1426 +-----------------+----------+-------------------------------------+
1427 | LAST-MODIFIED | 0 or 1 | |
1428 +-----------------+----------+-------------------------------------+
1429 | LOCATION | 0 or 1 | |
1430 +-----------------+----------+-------------------------------------+
1431 | POLL-ITEM-ID | 0 | |
1432 +-----------------+----------+-------------------------------------+
1433 | POLL-MODE | 0 or 1 | |
1434 +-----------------+----------+-------------------------------------+
1435 | POLL-PROPERTIES | 0 or 1 | |
1436 +-----------------+----------+-------------------------------------+
1437 | PRIORITY | 0 or 1 | |
1438 +-----------------+----------+-------------------------------------+
1439 | RELATED-TO | 0+ | |
1440 +-----------------+----------+-------------------------------------+
1441 | REQUEST-STATUS | 0 | |
1442 +-----------------+----------+-------------------------------------+
1443 | RESOURCES | 0+ | |
1444 +-----------------+----------+-------------------------------------+
1445 | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ |
1446 | | | CANCELLED. |
1447 +-----------------+----------+-------------------------------------+
1448 | TRANSP | 0 or 1 | |
1449 +-----------------+----------+-------------------------------------+
1450 | URL | 0 or 1 | |
1451 +-----------------+----------+-------------------------------------+
1452 | IANA-PROPERTY | 0+ | |
1453 +-----------------+----------+-------------------------------------+
1454 | X-PROPERTY | 0+ | |
1455 +-----------------+----------+-------------------------------------+
1456 | VALARM | 0+ | |
1457 +-----------------+----------+-------------------------------------+
1458 | VTIMEZONE | 0+ | MUST be present if any date/time |
1459 | | | refers to a timezone. |
1460 +-----------------+----------+-------------------------------------+
1461 | IANA-COMPONENT | 0+ | |
1462 +-----------------+----------+-------------------------------------+
1463 | X-COMPONENT | 0+ | |
1464 +-----------------+----------+-------------------------------------+
1465 | VEVENT | 0+ | Depending upon the poll mode in |
1466 | | | effect there MAY be candidate |
1467 | | | components included in the poll |
1468 | | | component. |
1469 +-----------------+----------+-------------------------------------+
1470 | VFREEBUSY | 0 | |
1471 +-----------------+----------+-------------------------------------+
1472 | VJOURNAL | 0+ | Depending upon the poll mode in |
1473 | | | effect there MAY be candidate |
1474 | | | components included in the poll |
1475 | | | component. |
1476 +-----------------+----------+-------------------------------------+
1477 | VTODO | 0+ | Depending upon the poll mode in |
1478 | | | effect there MAY be candidate |
1479 | | | components included in the poll |
1480 | | | component. |
1481 +-----------------+----------+-------------------------------------+
1483 Table 6: Constraints for a METHOD:REQUEST of a VPOLL
1485 7.3.3.1. Rescheduling a poll
1487 The "REQUEST" method may be used to reschedule a poll, that is force
1488 a revote. A rescheduled poll involves a change to the existing poll
1489 in terms of its time the components being voted on may have changed.
1490 If the recipient CUA of a "REQUEST" method finds that the "UID"
1491 property value already exists on the calendar but that the "SEQUENCE"
1492 (or "DTSTAMP") property value in the "REQUEST" method is greater than
1493 the value for the existing poll, then the "REQUEST" method describes
1494 a rescheduling of the poll.
1496 7.3.3.2. Updating or Reconfirmation of a Poll
1498 The "REQUEST" method may be used to update or reconfirm a poll. An
1499 update to an existing poll does not involve changes to the time or
1500 candidates, and might not involve a change to the location or
1501 description for the poll. If the recipient CUA of a "REQUEST" method
1502 finds that the "UID" property value already exists on the calendar
1503 and that the "SEQUENCE" property value in the "REQUEST" is the same
1504 as the value for the existing poll, then the "REQUEST" method
1506 describes an update of the poll details, but not a rescheduling of
1507 the POLL.
1509 The update "REQUEST" method is the appropriate response to a
1510 "REFRESH" method sent from a "Voter" to the "Organizer" of a poll.
1512 The "Organizer" of a poll may also send unsolicited "REQUEST"
1513 methods. The unsolicited "REQUEST" methods may be used to update the
1514 details of the poll without rescheduling it, to update the "RESPONSE"
1515 parameter of "Voters", or to reconfirm the poll.
1517 7.3.3.3. Confirmation of a Poll
1519 The "REQUEST" method may be used to confirm a poll, that is announce
1520 the winner in BASIC mode. The STATUS MUST be set to CONFIRMED and
1521 for BASIC mode a VPOLL POLL-WINNER property must be provided with the
1522 poll-id of the winning component.
1524 7.3.3.4. Closing a Poll
1526 The "REQUEST" method may be used to close a poll, that is indicate
1527 voting is completed. The STATUS MUST be set to COMPLETED.
1529 7.3.3.5. Delegating a Poll to Another CU
1531 Some calendar and scheduling systems allow "Voters" to delegate the
1532 vote to another "Calendar User". iTIP supports this concept using the
1533 following workflow. Any "Voter" may delegate their right to vote in
1534 a poll to another CU. The implication is that the delegate
1535 participates in lieu of the original "Voter", NOT in addition to the
1536 "Voter". The delegator MUST notify the "Organizer" of this action
1537 using the steps outlined below. Implementations may support or
1538 restrict delegation as they see fit. For instance, some
1539 implementations may restrict a delegate from delegating a "REQUEST"
1540 to another CU.
1542 The "Delegator" of a poll forwards the existing "REQUEST" to the
1543 "Delegate". The "REQUEST" method MUST include a "Voter" property
1544 with the calendar address of the "Delegate". The "Delegator" MUST
1545 also send a "REPLY" method to the "Organizer" with the "Delegator's"
1546 "Voter" property "DELEGATED-TO" parameter set to the calendar address
1547 of the "Delegate". Also, a new "Voter" property for the "Delegate"
1548 MUST be included and must specify the calendar user address set in
1549 the "DELEGATED-TO" parameter, as above.
1551 In response to the request, the "Delegate" MUST send a "REPLY" method
1552 to the "Organizer", and optionally to the "Delegator". The "REPLY"
1554 method SHOULD include the "Voter" property with the "DELEGATED-FROM"
1555 parameter value of the "Delegator's" calendar address.
1557 The "Delegator" may continue to receive updates to the poll even
1558 though they will not be attending. This is accomplished by the
1559 "Delegator" setting their "role" attribute to "NON-PARTICIPANT" in
1560 the "REPLY" to the "Organizer".
1562 7.3.3.6. Changing the Organizer
1564 The situation may arise where the "Organizer" of a "VPOLL" is no
1565 longer able to perform the "Organizer" role and abdicates without
1566 passing on the "Organizer" role to someone else. When this occurs,
1567 the "Voters" of the "VPOLL" may use out-of-band mechanisms to
1568 communicate the situation and agree upon a new "Organizer". The new
1569 "Organizer" should then send out a new "REQUEST" with a modified
1570 version of the "VPOLL" in which the "SEQUENCE" number has been
1571 incremented and the "ORGANIZER" property has been changed to the new
1572 "Organizer".
1574 7.3.3.7. Sending on Behalf of the Organizer
1576 There are a number of scenarios that support the need for a "Calendar
1577 User" to act on behalf of the "Organizer" without explicit role
1578 changing. This might be the case if the CU designated as "Organizer"
1579 is sick or unable to perform duties associated with that function.
1580 In these cases, iTIP supports the notion of one CU acting on behalf
1581 of another. Using the "SENT-BY" parameter, a "Calendar User" could
1582 send an updated "VPOLL" "REQUEST". In the case where one CU sends on
1583 behalf of another CU, the "Voter" responses are still directed back
1584 towards the CU designated as "Organizer".
1586 7.3.3.8. Forwarding to an Uninvited CU
1588 A "Voter" invited to a "VPOLL" calendar component may send the
1589 "VPOLL" calendar component to another new CU not previously
1590 associated with the "VPOLL" calendar component. The current "Voter"
1591 participating in the "VPOLL" calendar component does this by
1592 forwarding the original "REQUEST" method to the new CU. The new CU
1593 can send a "REPLY" to the "Organizer" of the "VPOLL" calendar
1594 component. The reply contains a "Voter" property for the new CU.
1596 The "Organizer" ultimately decides whether or not the new CU becomes
1597 part of the poll and is not obligated to do anything with a "REPLY"
1598 from a new (uninvited) CU. If the "Organizer" does not want the new
1599 CU to be part of the poll, the new "Voter" property is not added to
1600 the "VPOLL" calendar component. The "Organizer" MAY send the CU a
1601 "CANCEL" message to indicate that they will not be added to the poll.
1603 If the "Organizer" decides to add the new CU, the new "Voter"
1604 property is added to the "VPOLL" calendar component. Furthermore,
1605 the "Organizer" is free to change any "Voter" property parameter from
1606 the values supplied by the new CU to something the "Organizer"
1607 considers appropriate. The "Organizer" SHOULD send the new CU a
1608 "REQUEST" message to inform them that they have been added.
1610 When forwarding a "REQUEST" to another CU, the forwarding "Voter"
1611 MUST NOT make changes to the original message.
1613 7.3.3.9. Updating Voter Status
1615 The "Organizer" of an poll may also request updated status from one
1616 or more "Voters". The "Organizer" sends a "REQUEST" method to the
1617 "Voter" and sets the "RSVP=TRUE" property parameter on the
1618 PARTICIPANT CALENDAR-ADDRESS. The "SEQUENCE" property for the poll
1619 is not changed from its previous value. A recipient will determine
1620 that the only change in the "REQUEST" is that their "RSVP" property
1621 parameter indicates a request for updated status. The recipient
1622 SHOULD respond with a "REPLY" method indicating their current vote
1623 with respect to the "REQUEST".
1625 7.3.4. Method: REPLY
1627 The "REPLY" method in a "VPOLL" calendar component is used to respond
1628 (e.g., accept or decline) to a "REQUEST" or to reply to a delegation
1629 "REQUEST". When used to provide a delegation response, the
1630 "Delegator" SHOULD include the calendar address of the "Delegate" on
1631 the "DELEGATED-TO" property parameter of the "Delegator's" "CALENDAR-
1632 ADDRESS" property. The "Delegate" SHOULD include the calendar
1633 address of the "Delegator" on the "DELEGATED-FROM" property parameter
1634 of the "Delegate's" "CALENDAR-ADDRESS" property.
1636 The "REPLY" method is also used when processing of a "REQUEST" fails.
1637 Depending on the value of the "REQUEST-STATUS" property, no action
1638 may have been performed.
1640 The "Organizer" of a poll may receive the "REPLY" method from a CU
1641 not in the original "REQUEST". For example, a "REPLY" may be
1642 received from a "Delegate" to a poll. In addition, the "REPLY"
1643 method may be received from an unknown CU (a "Party Crasher"). This
1644 uninvited "Voter" may be accepted, or the "Organizer" may cancel the
1645 poll for the uninvited "Voter" by sending a "CANCEL" method to the
1646 uninvited "Voter".
1648 A "Voter" MAY include a message to the "Organizer" using the
1649 "COMMENT" property. For example, if the user indicates a low
1650 interest and wants to let the "Organizer" know why, the reason can be
1651 expressed in the "COMMENT" property value.
1653 The "Organizer" may also receive a "REPLY" from one CU on behalf of
1654 another. Like the scenario enumerated above for the "Organizer",
1655 "Voters" may have another CU respond on their behalf. This is done
1656 using the "SENT-BY" parameter.
1658 The optional properties listed in the table below (those listed as
1659 "0+" or "0 or 1") MUST NOT be changed from those of the original
1660 request. (But see comments on VFREEBUSY and VAVAILABILITY)
1662 This method type is an iCalendar object that conforms to the
1663 following property constraints:
1665 +=================+==========+=====================================+
1666 | Component/ | Presence | Comment |
1667 | Property | | |
1668 +=================+==========+=====================================+
1669 | METHOD | 1 | MUST be REPLY. |
1670 +-----------------+----------+-------------------------------------+
1671 | VPOLL | 1+ | All components MUST have the same |
1672 +-----------------+----------+-------------------------------------+
1673 | | | UID. |
1674 +-----------------+----------+-------------------------------------+
1675 | PARTICIPANT | 1 | Identifies the Voter replying. |
1676 +-----------------+----------+-------------------------------------+
1677 | DTSTAMP | 1 | |
1678 +-----------------+----------+-------------------------------------+
1679 | ORGANIZER | 1 | |
1680 +-----------------+----------+-------------------------------------+
1681 | UID | 1 | MUST be the UID of the original |
1682 +-----------------+----------+-------------------------------------+
1683 | | | REQUEST. |
1684 +-----------------+----------+-------------------------------------+
1685 | SEQUENCE | 0 or 1 | If non-zero, MUST be the sequence |
1686 | | | number of the original REQUEST. |
1687 | | | MAY be present if 0. |
1688 +-----------------+----------+-------------------------------------+
1689 | ACCEPT-RESPONSE | 0 or 1 | |
1690 +-----------------+----------+-------------------------------------+
1691 | ATTACH | 0+ | |
1692 +-----------------+----------+-------------------------------------+
1693 | CATEGORIES | 0+ | |
1694 +-----------------+----------+-------------------------------------+
1695 | CLASS | 0 or 1 | |
1696 +-----------------+----------+-------------------------------------+
1697 | COMMENT | 0+ | |
1698 +-----------------+----------+-------------------------------------+
1699 | COMPLETED | 0 or 1 | |
1700 +-----------------+----------+-------------------------------------+
1701 | CONTACT | 0+ | |
1702 +-----------------+----------+-------------------------------------+
1703 | CREATED | 0 or 1 | |
1704 +-----------------+----------+-------------------------------------+
1705 | DESCRIPTION | 0 or 1 | |
1706 +-----------------+----------+-------------------------------------+
1707 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1708 | | | present. |
1709 +-----------------+----------+-------------------------------------+
1710 | DTSTART | 0 or 1 | |
1711 +-----------------+----------+-------------------------------------+
1712 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1713 | | | present. |
1714 +-----------------+----------+-------------------------------------+
1715 | GEO | 0 or 1 | |
1716 +-----------------+----------+-------------------------------------+
1717 | LAST-MODIFIED | 0 or 1 | |
1718 +-----------------+----------+-------------------------------------+
1719 | LOCATION | 0 or 1 | |
1720 +-----------------+----------+-------------------------------------+
1721 | POLL-ITEM-ID | 1+ | One per item being voted on. |
1722 +-----------------+----------+-------------------------------------+
1723 | POLL-MODE | 0 | |
1724 +-----------------+----------+-------------------------------------+
1725 | POLL-PROPERTIES | 0 | |
1726 +-----------------+----------+-------------------------------------+
1727 | PRIORITY | 0 or 1 | |
1728 +-----------------+----------+-------------------------------------+
1729 | RELATED-TO | 0+ | |
1730 +-----------------+----------+-------------------------------------+
1731 | RESOURCES | 0+ | |
1732 +-----------------+----------+-------------------------------------+
1733 | REQUEST-STATUS | 0+ | |
1734 +-----------------+----------+-------------------------------------+
1735 | STATUS | 0 or 1 | |
1736 +-----------------+----------+-------------------------------------+
1737 | SUMMARY | 0 or 1 | |
1738 +-----------------+----------+-------------------------------------+
1739 | TRANSP | 0 or 1 | |
1740 +-----------------+----------+-------------------------------------+
1741 | URL | 0 or 1 | |
1742 +-----------------+----------+-------------------------------------+
1743 | IANA-PROPERTY | 0+ | |
1744 +-----------------+----------+-------------------------------------+
1745 | X-PROPERTY | 0+ | |
1746 +-----------------+----------+-------------------------------------+
1747 | VALARM | 0 | |
1748 +-----------------+----------+-------------------------------------+
1749 | VTIMEZONE | 0 or 1 | MUST be present if any date/time |
1750 | | | refers to a timezone. |
1751 +-----------------+----------+-------------------------------------+
1752 | IANA-COMPONENT | 0+ | |
1753 +-----------------+----------+-------------------------------------+
1754 | X-COMPONENT | 0+ | |
1755 +-----------------+----------+-------------------------------------+
1756 | VEVENT | 0 | |
1757 +-----------------+----------+-------------------------------------+
1758 | VFREEBUSY | 0 or 1 | A voter may respond with a |
1759 | | | VFREEBUSY component indicating that |
1760 | | | the ORGANIZER may select some other |
1761 | | | time which is not marked as busy. |
1762 +-----------------+----------+-------------------------------------+
1763 | VAVAILABILITY | 0 | A voter may respond with a |
1764 | | | VAVAILABILITY component indicating |
1765 | | | that the ORGANIZER may select some |
1766 | | | other time which is shown as |
1767 | | | available. |
1768 +-----------------+----------+-------------------------------------+
1769 | VJOURNAL | 0 | |
1770 +-----------------+----------+-------------------------------------+
1771 | VTODO | 0 | |
1772 +-----------------+----------+-------------------------------------+
1774 Table 7: Constraints for a METHOD:REPLY of a VPOLL
1776 7.3.5. Method: CANCEL
1778 The "CANCEL" method in a "VPOLL" calendar component is used to send a
1779 cancellation notice of an existing poll request to the affected
1780 "Voters". The message is sent by the "Organizer" of the poll.
1782 The "Organizer" MUST send a "CANCEL" message to each "Voter" affected
1783 by the cancellation. This can be done using a single "CANCEL"
1784 message for all "Voters" or by using multiple messages with different
1785 subsets of the affected "Voters" in each.
1787 When a "VPOLL" is cancelled, the "SEQUENCE" property value MUST be
1788 incremented as described in Section 7.2.3.
1790 Once a CANCEL message has been sent to all voters no further voting
1791 may take place. The poll is considered closed.
1793 This method type is an iCalendar object that conforms to the
1794 following property constraints:
1796 +=================+==========+==================================+
1797 | Component/ | Presence | Comment |
1798 | Property | | |
1799 +=================+==========+==================================+
1800 | METHOD | 1 | MUST be CANCEL. |
1801 +-----------------+----------+----------------------------------+
1802 | VPOLL | 1+ | All must have the same UID. |
1803 +-----------------+----------+----------------------------------+
1804 | PARTICIPANT | 0+ | MUST include some or all Voters |
1805 | | | being removed from the poll. |
1806 | | | MUST include some or all Voters |
1807 | | | if the entire poll is cancelled. |
1808 +-----------------+----------+----------------------------------+
1809 | UID | 1 | MUST be the UID of the original |
1810 | | | REQUEST. |
1811 +-----------------+----------+----------------------------------+
1812 | DTSTAMP | 1 | |
1813 +-----------------+----------+----------------------------------+
1814 | ORGANIZER | 1 | |
1815 +-----------------+----------+----------------------------------+
1816 | SEQUENCE | 1 | |
1817 +-----------------+----------+----------------------------------+
1818 | ATTACH | 0+ | |
1819 +-----------------+----------+----------------------------------+
1820 | ACCEPT-RESPONSE | 0 | |
1821 +-----------------+----------+----------------------------------+
1822 | COMMENT | 0+ | |
1823 +-----------------+----------+----------------------------------+
1824 | COMPLETED | 0 or 1 | |
1825 +-----------------+----------+----------------------------------+
1826 | CATEGORIES | 0+ | |
1827 +-----------------+----------+----------------------------------+
1828 | CLASS | 0 or 1 | |
1829 +-----------------+----------+----------------------------------+
1830 | CONTACT | 0+ | |
1831 +-----------------+----------+----------------------------------+
1832 | CREATED | 0 or 1 | |
1833 +-----------------+----------+----------------------------------+
1834 | DESCRIPTION | 0 or 1 | |
1835 +-----------------+----------+----------------------------------+
1836 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
1837 | | | present. |
1838 +-----------------+----------+----------------------------------+
1839 | DTSTART | 0 or 1 | |
1840 +-----------------+----------+----------------------------------+
1841 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
1842 | | | present. |
1843 +-----------------+----------+----------------------------------+
1844 | GEO | 0 or 1 | |
1845 +-----------------+----------+----------------------------------+
1846 | LAST-MODIFIED | 0 or 1 | |
1847 +-----------------+----------+----------------------------------+
1848 | LOCATION | 0 or 1 | |
1849 +-----------------+----------+----------------------------------+
1850 | POLL-ITEM-ID | 0 | |
1851 +-----------------+----------+----------------------------------+
1852 | POLL-MODE | 0 | |
1853 +-----------------+----------+----------------------------------+
1854 | POLL-PROPERTIES | 0 | |
1855 +-----------------+----------+----------------------------------+
1856 | PRIORITY | 0 or 1 | |
1857 +-----------------+----------+----------------------------------+
1858 | RELATED-TO | 0+ | |
1859 +-----------------+----------+----------------------------------+
1860 | RESOURCES | 0+ | |
1861 +-----------------+----------+----------------------------------+
1862 | STATUS | 0 or 1 | MUST be set to CANCELLED to |
1863 | | | cancel the entire event. If |
1864 | | | uninviting specific Attendees, |
1865 | | | then MUST NOT be included. |
1866 +-----------------+----------+----------------------------------+
1867 | SUMMARY | 0 or 1 | |
1868 +-----------------+----------+----------------------------------+
1869 | TRANSP | 0 or 1 | |
1870 +-----------------+----------+----------------------------------+
1871 | URL | 0 or 1 | |
1872 +-----------------+----------+----------------------------------+
1873 | IANA-PROPERTY | 0+ | |
1874 +-----------------+----------+----------------------------------+
1875 | X-PROPERTY | 0+ | |
1876 +-----------------+----------+----------------------------------+
1877 | REQUEST-STATUS | 0 | |
1878 +-----------------+----------+----------------------------------+
1879 | VALARM | 0 | |
1880 +-----------------+----------+----------------------------------+
1881 | VTIMEZONE | 0+ | MUST be present if any date/time |
1882 | | | refers to a timezone. |
1883 +-----------------+----------+----------------------------------+
1884 | IANA-COMPONENT | 0+ | |
1885 +-----------------+----------+----------------------------------+
1886 | X-COMPONENT | 0+ | |
1887 +-----------------+----------+----------------------------------+
1888 | VTODO | 0 | |
1889 +-----------------+----------+----------------------------------+
1890 | VJOURNAL | 0 | |
1891 +-----------------+----------+----------------------------------+
1892 | VEVENT | 0 | |
1893 +-----------------+----------+----------------------------------+
1894 | VFREEBUSY | 0 | |
1895 +-----------------+----------+----------------------------------+
1897 Table 8: Constraints for a METHOD:CANCEL of a VPOLL
1899 7.3.6. Method: REFRESH
1901 The "REFRESH" method in a "VPOLL" calendar component is used by
1902 "Voters" of an existing event to request an updated description from
1903 the poll "Organizer". The "REFRESH" method must specify the "UID"
1904 property of the poll to update. The "Organizer" responds with the
1905 latest description and version of the poll.
1907 This method type is an iCalendar object that conforms to the
1908 following property constraints:
1910 +====================+==========+============================+
1911 | Component/Property | Presence | Comment |
1912 +====================+==========+============================+
1913 | METHOD | 1 | MUST be REFRESH. |
1914 +--------------------+----------+----------------------------+
1915 | VPOLL | 1 | |
1916 +--------------------+----------+----------------------------+
1917 | PARTICIPANT | 1 | MUST identify the |
1918 | | | requester as a voter. |
1919 +--------------------+----------+----------------------------+
1920 | DTSTAMP | 1 | |
1921 +--------------------+----------+----------------------------+
1922 | ORGANIZER | 1 | |
1923 +--------------------+----------+----------------------------+
1924 | UID | 1 | MUST be the UID associated |
1925 | | | with original REQUEST. |
1926 +--------------------+----------+----------------------------+
1927 | COMMENT | 0+ | |
1928 +--------------------+----------+----------------------------+
1929 | COMPLETED | 0 | |
1930 +--------------------+----------+----------------------------+
1931 | IANA-PROPERTY | 0+ | |
1932 +--------------------+----------+----------------------------+
1933 | X-PROPERTY | 0+ | |
1934 +--------------------+----------+----------------------------+
1935 | ACCEPT-RESPONSE | 0 | |
1936 +--------------------+----------+----------------------------+
1937 | ATTACH | 0 | |
1938 +--------------------+----------+----------------------------+
1939 | CATEGORIES | 0 | |
1940 +--------------------+----------+----------------------------+
1941 | CLASS | 0 | |
1942 +--------------------+----------+----------------------------+
1943 | CONTACT | 0 | |
1944 +--------------------+----------+----------------------------+
1945 | CREATED | 0 | |
1946 +--------------------+----------+----------------------------+
1947 | DESCRIPTION | 0 | |
1948 +--------------------+----------+----------------------------+
1949 | DTEND | 0 | |
1950 +--------------------+----------+----------------------------+
1951 | DTSTART | 0 | |
1952 +--------------------+----------+----------------------------+
1953 | DURATION | 0 | |
1954 +--------------------+----------+----------------------------+
1955 | GEO | 0 | |
1956 +--------------------+----------+----------------------------+
1957 | LAST-MODIFIED | 0 | |
1958 +--------------------+----------+----------------------------+
1959 | LOCATION | 0 | |
1960 +--------------------+----------+----------------------------+
1961 | POLL-ITEM-ID | 0 | |
1962 +--------------------+----------+----------------------------+
1963 | POLL-MODE | 0 | |
1964 +--------------------+----------+----------------------------+
1965 | POLL-PROPERTIES | 0 | |
1966 +--------------------+----------+----------------------------+
1967 | PRIORITY | 0 | |
1968 +--------------------+----------+----------------------------+
1969 | RELATED-TO | 0 | |
1970 +--------------------+----------+----------------------------+
1971 | REQUEST-STATUS | 0 | |
1972 +--------------------+----------+----------------------------+
1973 | RESOURCES | 0 | |
1974 +--------------------+----------+----------------------------+
1975 | SEQUENCE | 0 | |
1976 +--------------------+----------+----------------------------+
1977 | STATUS | 0 | |
1978 +--------------------+----------+----------------------------+
1979 | SUMMARY | 0 | |
1980 +--------------------+----------+----------------------------+
1981 | URL | 0 | |
1982 +--------------------+----------+----------------------------+
1983 | VALARM | 0 | |
1984 +--------------------+----------+----------------------------+
1985 | VTIMEZONE | 0+ | |
1986 +--------------------+----------+----------------------------+
1987 | IANA-COMPONENT | 0+ | |
1988 +--------------------+----------+----------------------------+
1989 | X-COMPONENT | 0+ | |
1990 +--------------------+----------+----------------------------+
1991 | VTODO | 0 | |
1992 +--------------------+----------+----------------------------+
1993 | VJOURNAL | 0 | |
1994 +--------------------+----------+----------------------------+
1995 | VEVENT | 0 | |
1996 +--------------------+----------+----------------------------+
1997 | VFREEBUSY | 0 | |
1998 +--------------------+----------+----------------------------+
2000 Table 9: Constraints for a METHOD:REFRESH of a VPOLL
2002 7.3.7. Method: POLLSTATUS
2004 The "POLLSTATUS" method in a "VPOLL" calendar component is used to
2005 inform recipients of the current status of the poll in a compact
2006 manner. The "Organizer" MUST be present in the confirmed poll
2007 component. All "Voters" MUST be present. The selected component(s)
2008 according to the poll mode SHOULD NOT be present in the poll
2009 component. Clients receiving this message may store the confirmed
2010 items in their calendars.
2012 This method type is an iCalendar object that conforms to the
2013 following property constraints:
2015 +=================+==========+=====================================+
2016 | Component/ | Presence | Comment |
2017 | Property | | |
2018 +=================+==========+=====================================+
2019 | METHOD | 1 | MUST equal POLLSTATUS. |
2020 +-----------------+----------+-------------------------------------+
2021 | VPOLL | 1+ | |
2022 +-----------------+----------+-------------------------------------+
2023 | PARTICIPANT | 1+ | The voters containing their current |
2024 | | | vote |
2025 +-----------------+----------+-------------------------------------+
2026 | COMPLETED | 0 or 1 | Only present for a completed poll |
2027 +-----------------+----------+-------------------------------------+
2028 | DTSTAMP | 1 | |
2029 +-----------------+----------+-------------------------------------+
2030 | DTSTART | 0 or 1 | |
2031 +-----------------+----------+-------------------------------------+
2032 | ORGANIZER | 1 | |
2033 +-----------------+----------+-------------------------------------+
2034 | SUMMARY | 1 | Can be null. |
2035 +-----------------+----------+-------------------------------------+
2036 | UID | 1 | |
2037 +-----------------+----------+-------------------------------------+
2038 | SEQUENCE | 0 or 1 | MUST be present if value is greater |
2039 | | | than 0; MAY be present if 0. |
2040 +-----------------+----------+-------------------------------------+
2041 | ACCEPT-RESPONSE | 0 | |
2042 +-----------------+----------+-------------------------------------+
2043 | ATTACH | 0 | |
2044 +-----------------+----------+-------------------------------------+
2045 | CATEGORIES | 0 | |
2046 +-----------------+----------+-------------------------------------+
2047 | CLASS | 0 | |
2048 +-----------------+----------+-------------------------------------+
2049 | COMMENT | 0+ | |
2050 +-----------------+----------+-------------------------------------+
2051 | CONTACT | 0 | |
2052 +-----------------+----------+-------------------------------------+
2053 | CREATED | 0 or 1 | |
2054 +-----------------+----------+-------------------------------------+
2055 | DESCRIPTION | 0 or 1 | Can be null. |
2056 +-----------------+----------+-------------------------------------+
2057 | DTEND | 0 or 1 | If present, DURATION MUST NOT be |
2058 | | | present. |
2059 +-----------------+----------+-------------------------------------+
2060 | DURATION | 0 or 1 | If present, DTEND MUST NOT be |
2061 | | | present. |
2062 +-----------------+----------+-------------------------------------+
2063 | LAST-MODIFIED | 0 or 1 | |
2064 +-----------------+----------+-------------------------------------+
2065 | POLL-ITEM-ID | 0 | |
2066 +-----------------+----------+-------------------------------------+
2067 | POLL-MODE | 0 or 1 | |
2068 +-----------------+----------+-------------------------------------+
2069 | POLL-PROPERTIES | 0 | |
2070 +-----------------+----------+-------------------------------------+
2071 | PRIORITY | 0 or 1 | |
2072 +-----------------+----------+-------------------------------------+
2073 | RELATED-TO | 0+ | |
2074 +-----------------+----------+-------------------------------------+
2075 | RESOURCES | 0+ | |
2076 +-----------------+----------+-------------------------------------+
2077 | STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED/ |
2078 | | | CANCELLED. |
2079 +-----------------+----------+-------------------------------------+
2080 | URL | 0 or 1 | |
2081 +-----------------+----------+-------------------------------------+
2082 | IANA-PROPERTY | 0+ | |
2083 +-----------------+----------+-------------------------------------+
2084 | X-PROPERTY | 0+ | |
2085 +-----------------+----------+-------------------------------------+
2086 | REQUEST-STATUS | 0 | |
2087 +-----------------+----------+-------------------------------------+
2088 | VALARM | 0+ | |
2089 +-----------------+----------+-------------------------------------+
2090 | VEVENT | 0 | All candidate components SHOULD NOT |
2091 | | | be present. |
2092 +-----------------+----------+-------------------------------------+
2093 | VFREEBUSY | 0 | |
2094 +-----------------+----------+-------------------------------------+
2095 | VJOURNAL | 0 | All candidate components SHOULD NOT |
2096 | | | be present. |
2097 +-----------------+----------+-------------------------------------+
2098 | VTODO | 0 | All candidate components SHOULD NOT |
2099 | | | be present. |
2100 +-----------------+----------+-------------------------------------+
2101 | VTIMEZONE | 0+ | MUST be present if any date/time |
2102 | | | refers to a timezone. |
2103 +-----------------+----------+-------------------------------------+
2104 | IANA-COMPONENT | 0+ | |
2105 +-----------------+----------+-------------------------------------+
2106 | X-COMPONENT | 0+ | |
2107 +-----------------+----------+-------------------------------------+
2109 Table 10: Constraints for a METHOD:POLLSTATUS of a VPOLL
2111 8. CalDAV Extensions
2113 This specification extends [RFC4791] in that it defines a new
2114 component and new iCalendar properties to be supported and requires
2115 extra definitions related to time-ranges and reports.
2117 Additionally, it extends [RFC6638] as it a VPOLL component is a
2118 schedulable entity.
2120 8.1. Calendar Collection Properties
2122 This section defines new CalDAV properties for calendar collections.
2124 8.1.1. CALDAV:supported-vpoll-component-sets
2126 Name supported-vpoll-component-sets
2128 Namespace urn:ietf:params:xml:ns:caldav
2129 Purpose Specifies the calendar component types (e.g., VEVENT, VTODO,
2130 etc.) and combination of types that may be included in a VPOLL
2131 component.
2133 Conformance This property MAY be defined on any calendar collection.
2134 If defined, it MUST be protected and SHOULD NOT be returned by a
2135 PROPFIND DAV:allprop request (as defined in Section 12.14.1 of
2136 [RFC2518]).
2138 Description The CALDAV:supported-vpoll-component-sets property is
2139 used to specify restrictions on the calendar component types that
2140 VPOLL components may contain in a calendar collection.
2142 It also specifies the combination of allowed component types.
2144 Any attempt by the client to store VPOLL components with component
2145 types or combinations of types not listed in this property, if it
2146 exists, MUST result in an error, with the CALDAV:supported-vpoll-
2147 component-sets precondition Section 8.2 being violated. Since
2148 this property is protected, it cannot be changed by clients using
2149 a PROPPATCH request. However, clients can initialize the value of
2150 this property when creating a new calendar collection with
2151 MKCALENDAR. In the absence of this property, the server MUST
2152 accept all component types, and the client can assume that all
2153 component types are accepted.
2155 Definition
2157
2160
2161
2164
2165
2166
2167
2168
2169
2171
2172
2173
2174
2175
2177
2178
2179
2180
2182
2183
2184
2185
2186
2188 8.1.2. CALDAV:vpoll-max-items
2190 Name vpoll-max-items
2192 Namespace urn:ietf:params:xml:ns:caldav
2194 Purpose Provides a numeric value indicating the maximum number of
2195 items that may be contained in any instance of a VPOLL calendar
2196 object resource stored in the calendar collection.
2198 Conformance This property MAY be defined on any calendar collection.
2199 If defined, it MUST be protected and SHOULD NOT be returned by a
2200 PROPFIND DAV:allprop request (as defined in Section 12.14.1 of
2201 [RFC2518]).
2203 Description The CALDAV:vpoll-max-items is used to specify a numeric
2204 value that indicates the maximum number of iCalendar components in
2205 any one instance of a VPOLL calendar object resource stored in a
2206 calendar collection. Any attempt to store a calendar object
2207 resource with more components per instance than this value MUST
2208 result in an error, with the CALDAV: vpoll-max-items precondition
2209 Section 8.2 being violated. In the absence of this property, the
2210 client can assume that the server can handle any number of items
2211 in a VPOLL calendar component.
2213 Definition
2215
2216 PCDATA value: a numeric value (integer greater than zero)
2218 25
2221 8.1.3. CALDAV:vpoll-max-active
2223 Name vpoll-max-active
2225 Namespace urn:ietf:params:xml:ns:caldav
2227 Purpose Provides a numeric value indicating the maximum number of
2228 active vpolls at any one time.
2230 Conformance This property MAY be defined on any calendar collection.
2231 If defined, it MUST be protected and SHOULD NOT be returned by a
2232 PROPFIND DAV:allprop request (as defined in Section 12.14.1 of
2233 [RFC2518]).
2235 Description The CALDAV:vpoll-max-active is used to specify a numeric
2236 value that indicates the maximum number of active VPOLLs at any
2237 one time. Any attempt to store a new active VPOLL calendar object
2238 resource which results in exceeding this limit MUST result in an
2239 error, with the CALDAV:vpoll-max-active precondition Section 8.2
2240 being violated. In the absence of this property, the client can
2241 assume that the server can handle any number of active VPOLLs.
2243 Definition
2245
2246 PCDATA value: a numeric value (integer greater than zero)
2248 25
2251 8.1.4. CALDAV:vpoll-max-voters
2253 Name vpoll-max-voters
2255 Namespace urn:ietf:params:xml:ns:caldav
2256 Purpose Provides a numeric value indicating the maximum number of
2257 voters for any instance of a VPOLL calendar object resource stored
2258 in the calendar collection.
2260 Conformance This property MAY be defined on any calendar collection.
2261 If defined, it MUST be protected and SHOULD NOT be returned by a
2262 PROPFIND DAV:allprop request (as defined in Section 12.14.1 of
2263 [RFC2518]).
2265 Description The CALDAV:vpoll-max-voters is used to specify a numeric
2266 value that indicates the maximum number of voters for any one
2267 instance of a VPOLL calendar object resource stored in a calendar
2268 collection. Any attempt to store a calendar object resource with
2269 more voters per instance than this value MUST result in an error,
2270 with the CALDAV: vpoll-max-voters precondition Section 8.2 being
2271 violated. In the absence of this property, the client can assume
2272 that the server can handle any number of voters in a VPOLL
2273 calendar component.
2275 Definition
2277
2278 PCDATA value: a numeric value (integer greater than zero)
2280 25
2283 8.1.5. CalDAV:even-more-properties
2285 8.1.6. Extensions to CalDAV scheduling
2287 This specification extends [RFC6638].
2289 Each section of Appendix A "Scheduling Privileges Summary" is
2290 extended to include VPOLL.
2292 Any reference to the ATTENDEE property should be read to include the
2293 CALENDAR-ADDRESS property contained in the PARTICIPANT compoents.
2294 That is, for scheduling purposes the CALENDAR-ADDRESS property is
2295 handled in exactly the same manner as the ATTENDEE property.
2297 8.2. Additional Preconditions for PUT, COPY, and MOVE
2299 This specification creates additional Preconditions for PUT, COPY,
2300 and MOVE methods. These preconditions apply when a PUT operation of
2301 a VPOLL calendar object resource into a calendar collection occurs,
2302 or when a COPY or MOVE operation of a calendar object resource into a
2303 calendar collection occurs, or when a COPY or MOVE operation occurs
2304 on a calendar collection.
2306 The new preconditions are:
2308 (CALDAV:supported-vpoll-component-sets) The VPOLL resource submitted
2309 in the PUT request, or targeted by a COPY or MOVE request, MUST
2310 contain a type or combination of calendar component that is
2311 supported in the targeted calendar collection;
2313 (CALDAV:vpoll-max-items) The VPOLL resource submitted in the PUT
2314 request, or targeted by a COPY or MOVE request, MUST have a number
2315 of sub-components (excluding VTIMEZONE) less than or equal to the
2316 value of the CALDAV:vpoll-max-items property value Section 8.1.2
2317 on the calendar collection where the resource will be stored;
2319 (CALDAV:vpoll-max-active) The PUT request, or COPY or MOVE request,
2320 MUST not result in the number of active VPOLLs being greater than
2321 the value of the CALDAV:vpoll-max-active property value
2322 Section 8.1.3 on the calendar collection where the resource will
2323 be stored;
2325 (CALDAV:vpoll-max-voters) The VPOLL resource submitted in the PUT
2326 request, or targeted by a COPY or MOVE request, MUST have a number
2327 of voters represented by PARTICIPANT components less than or equal
2328 to the value of the CALDAV:vpoll-max-voters property value
2329 Section 8.1.4 on the calendar collection where the resource will
2330 be stored;
2332 8.3. CalDAV:calendar-query Report
2334 This allows the retrieval of VPOLLs and their included components.
2335 The query specification allows queries to be directed at the
2336 contained sub-components. For VPOLL queries this feature is
2337 disallowed. Time-range queries can only target the vpoll component
2338 itself.
2340 8.3.1. Example: Partial Retrieval of VPOLL
2342 In this example, the client requests the server to return specific
2343 components and properties of the VPOLL components that overlap the
2344 time range from December 4, 2012, at 00:00:00 A.M. UTC to December
2345 5, 2012, at 00:00:00 A.M. UTC. In addition, the DAV:getetag
2346 property is also requested and returned as part of the response.
2347 Note that due to the CALDAV: calendar-data element restrictions, the
2348 DTSTAMP property in VPOLL components has not been returned, and the
2349 only property returned in the VCALENDAR object is VERSION.
2351 >> Request <<
2353 REPORT /cyrus/work/ HTTP/1.1
2354 Host: cal.example.com
2355 Depth: 1
2356 Content-Type: application/xml; charset="utf-8"
2357 Content-Length: xxxx
2359
2360
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2375
2376
2377
2378
2379
2380
2381
2383
2384
2385
2386
2387 >> Response <<
2389 HTTP/1.1 207 Multi-Status
2390 Date: Sat, 11 Nov 2012 09:32:12 GMT
2391 Content-Type: application/xml; charset="utf-8"
2392 Content-Length: xxxx
2394
2395
2397
2398 http://cal.example.com/cyrus/work/poll2.ics
2399
2400
2401 "fffff-abcd2"
2402 BEGIN:VCALENDAR
2403 VERSION:2.0
2404 BEGIN:VPOLL
2405 DTSTART;TZID=US/Eastern:20121202T120000
2406 DURATION:PT4D
2407 SUMMARY:Poll #2
2408 UID:00959BC664CA650E933C892C@example.com
2409 END:VPOLL
2410 END:VCALENDAR
2411
2412
2413 HTTP/1.1 200 OK
2414
2415
2416
2417 http://cal.example.com/cyrus/work/poll3.ics
2418
2419
2420 "fffff-abcd3"
2421 BEGIN:VCALENDAR
2423 VERSION:2.0
2424 PRODID:-//Example Corp.//CalDAV Client//EN
2425 BEGIN:VPOLL
2426 DTSTART;TZID=US/Eastern:20121204T100000
2427 DURATION:PT4D
2428 SUMMARY:Poll #3
2429 UID:DC6C50A017428C5216A2F1CD@example.com
2430 END:VPOLL
2431 END:VCALENDAR
2432
2433
2434 HTTP/1.1 200 OK
2436
2437
2438
2440 8.4. CalDAV time ranges
2442 "CALDAV:time-range XML Element" in Section 9.9 of [RFC4791] describes
2443 how to specify time ranges to limit the set of calendar components
2444 returned by the server. This specification extends [RFC4791] to
2445 describe the meaning of time ranges for VPOLL
2447 A VPOLL component is said to overlap a given time range if the
2448 condition for the corresponding component state specified in the
2449 table below is satisfied. The conditions depend on the presence of
2450 the DTSTART, DURATION, DTEND, COMPLETED and CREATED properties in the
2451 VPOLL component. Note that, as specified above, the DTEND value MUST
2452 be a DATE-TIME value equal to or after the DTSTART value if
2453 specified.
2455 +-------------------------------------------------------------------+
2456 | VPOLL has the DTSTART property? |
2457 | +---------------------------------------------------------------+
2458 | | VPOLL has the DURATION property? |
2459 | | +-----------------------------------------------------------+
2460 | | | VPOLL has the DTEND property? |
2461 | | | +-------------------------------------------------------+
2462 | | | | VPOLL has the COMPLETED property? |
2463 | | | | +---------------------------------------------------+
2464 | | | | | VPOLL has the CREATED property? |
2465 | | | | | +-----------------------------------------------+
2466 | | | | | | Condition to evaluate |
2467 +---+---+---+---+---+-----------------------------------------------+
2468 | Y | Y | N | * | * | (start <= DTSTART+DURATION) AND |
2469 | | | | | | ((end > DTSTART) OR |
2470 | | | | | | (end >= DTSTART+DURATION)) |
2471 +---+---+---+---+---+-----------------------------------------------+
2472 | Y | N | Y | * | * | ((start < DTEND) OR (start <= DTSTART)) |
2473 | | | | | | AND |
2474 | | | | | | ((end > DTSTART) OR (end >= DTEND)) |
2475 +---+---+---+---+---+-----------------------------------------------+
2476 | Y | N | N | * | * | (start <= DTSTART) AND (end > DTSTART) |
2477 +---+---+---+---+---+-----------------------------------------------+
2478 | N | N | Y | * | * | (start < DTEND) AND (end >= DTEND) |
2479 +---+---+---+---+---+-----------------------------------------------+
2480 | N | N | N | Y | Y | ((start <= CREATED) OR (start <= COMPLETED))|
2481 | | | | | | AND |
2482 | | | | | | ((end >= CREATED) OR (end >= COMPLETED))|
2483 +---+---+---+---+---+-----------------------------------------------+
2484 | N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) |
2485 +---+---+---+---+---+-----------------------------------------------+
2486 | N | N | N | N | Y | (end > CREATED) |
2487 +---+---+---+---+---+-----------------------------------------------+
2488 | N | N | N | N | N | TRUE |
2489 +---+---+---+---+---+-----------------------------------------------+
2491 9. Security Considerations
2493 Applications using these property need to be aware of the risks
2494 entailed in using the URIs provided as values. See [RFC3986] for a
2495 discussion of the security considerations relating to URIs.
2497 10. IANA Considerations
2499 10.1. Parameter Registrations
2501 This document defines the following new iCalendar property parameters
2502 to be added to the registry defined in Section 8.2.4 of [RFC5545]:
2504 +====================+=========+===============+
2505 | Property Parameter | Status | Reference |
2506 +====================+=========+===============+
2507 | REQUIRED | Current | Section 5.4.1 |
2508 +--------------------+---------+---------------+
2509 | STAY-INFORMED | Current | Section 5.4.2 |
2510 +--------------------+---------+---------------+
2512 Table 11
2514 10.2. Property Registrations
2516 This document defines the following new iCalendar properties to be
2517 added to the registry defined in Section 8.2.3 of [RFC5545]:
2519 +=================+=========+===============+
2520 | Property | Status | Reference |
2521 +=================+=========+===============+
2522 | ACCEPT-RESPONSE | Current | Section 5.5.7 |
2523 +-----------------+---------+---------------+
2524 | POLL-ITEM-ID | Current | Section 5.5.3 |
2525 +-----------------+---------+---------------+
2526 | POLL-MODE | Current | Section 5.5.4 |
2527 +-----------------+---------+---------------+
2528 | POLL-PROPERTIES | Current | Section 5.5.5 |
2529 +-----------------+---------+---------------+
2530 | POLL-WINNER | Current | Section 5.5.6 |
2531 +-----------------+---------+---------------+
2532 | RESPONSE | Current | Section 5.5.8 |
2533 +-----------------+---------+---------------+
2535 Table 12
2537 10.3. POLL-MODE Registration Template
2539 A poll mode is defined by completing the following template.
2541 Poll mode name The name of the poll mode.
2543 Purpose The purpose of the poll mode. Give a short but clear
2544 description.
2546 Reference A reference to the RFC in which the poll mode is defined
2548 10.4. POLL-MODE Registrations
2550 This document defines the following registered poll modes.
2552 +===========+=======================================+===========+
2553 | Poll mode | Purpose | Reference |
2554 | name | | |
2555 +===========+=======================================+===========+
2556 | BASIC | To provide simple voting for a single | Current |
2557 | | outcome from a number of candidates. | |
2558 +-----------+---------------------------------------+-----------+
2560 Table 13
2562 11. Normative References
2564 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
2565 Requirement Levels", RFC 2119, RFC 2119,
2566 DOI 10.17487/RFC2119, March 1997,
2567 .
2569 [RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S., and D.
2570 Jensen, "HTTP Extensions for Distributed Authoring -
2571 WEBDAV", RFC 2518, RFC 2518, DOI 10.17487/RFC2518,
2572 February 1999, .
2574 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
2575 Resource Identifier (URI): Generic Syntax", RFC 3986,
2576 RFC 3986, DOI 10.17487/RFC3986, January 2005,
2577 .
2579 [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
2580 "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
2581 RFC 4791, DOI 10.17487/RFC4791, March 2007,
2582 .
2584 [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
2585 Specifications: ABNF", RFC 5234, RFC 5234,
2586 DOI 10.17487/RFC5234, January 2008,
2587 .
2589 [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
2590 Scheduling Core Object Specification (iCalendar)", RFC
2591 5545, RFC 5545, DOI 10.17487/RFC5545, September 2009,
2592 .
2594 [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent
2595 Interoperability Protocol (iTIP)", RFC 5546, RFC 5546,
2596 DOI 10.17487/RFC5546, December 2009,
2597 .
2599 [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based
2600 Interoperability Protocol (iMIP)", RFC 6047, RFC 6047,
2601 DOI 10.17487/RFC6047, December 2010,
2602 .
2604 [RFC6638] Daboo, C. and B. Desruisseaux, "Scheduling Extensions to
2605 CalDAV", RFC 6638, RFC 6638, DOI 10.17487/RFC6638, June
2606 2012, .
2608 [RFC9073] Douglass, M., "Event Publishing Extensions to iCalendar",
2609 RFC 9073, RFC 9073, DOI 10.17487/RFC9073, August 2021,
2610 .
2612 Appendix A. Open issues
2614 public-comment: Not documented and was a parameter on something.
2615 Really sounds like a PARTICIPANT or VOTE property
2617 Notifications: Need to do a section on what Notifications to support.
2618 A. VPOLL is about to end and you haven't voted on it yet. Instead
2619 reuse VALARMS to notify the user?
2621 Future: Restarting a confirmed/completed VPOLL What to do with
2622 changes to STATUS:CONFIRMED? Allow them or not? What do to that
2623 poll had a winning event or todo. Stress VPOLL UID MUST be unique
2624 Changing status back from CONFIRMED MUST adjust status of any events
2625 booked as a result of confirmation. MUST winning event be cancelled
2626 for POLL-MODE basic? No - voter has indicated now unable to attend -
2627 want to revote
2629 Future: Voting on a confirmed/completed VPOLL Can a voter vote after
2630 completion? May be unable to attend and wants to indicate. Requires
2631 retention of VPOLL retention period Removed status
2633 ORGANIZER/ATTENDEE validity Can a user create a poll with scheduled
2634 events where that user's isn't the organizer of the poll? So is
2635 there a requirement that the account that poll is on is able to
2636 create each one of the resources in the poll? i.e. I can't create a
2637 poll with a set of events where I am just the attendee of the events.
2638 Are there any other restrictions for components in a VPOLL? Add to
2639 security consideration
2641 Update to existing event after poll confirm When voting on existing
2642 event - winning properties ONLY are merged in to the real event.
2644 Need to write down what isn't valid in a VPOLL
2645 a. Can't change POLL-MODE
2646 Guide for ATTENDEE roles chair, NON-PARTICIPANT etc
2648 ? - some iTip notes On confirm - send itip if appropriate (PUBLISH) -
2649 all non-participating - shared - feeds Organizer can specify where
2650 result is? Confirm can specify that itip is sent - ITIP / NONE -
2651 parameter ? on POLL-WINNER
2653 Need to add example of freebusy in response
2655 BEGIN:VCALENDAR
2656 VERSION:2.0
2657 PRODID:-//BedeworkCaldavTest//BedeworkCaldavTest
2658 METHOD: REPLY
2659 BEGIN:VPOLL
2660 ORGANIZER:mailto:douglm@mysite.edu
2661 BEGIN:PARTICIPANT
2662 PARTICIPANT-TYPE: VOTER
2663 CALENDAR-ADDRESS:mailto:eric@example.com
2664 UID:sched01-1234567890
2665 DTSTAMP:20120101T010000Z
2666 SEQUENCE:0
2667 SUMMARY:What to do this week
2668 BEGIN:VFREEBUSY
2669 .......
2670 END:VFREEBUSY
2671 END:PARTICIPANT
2672 END:VPOLL
2673 END:VCALENDAR
2675 Appendix B. Change log
2677 Calext V01: 2019-10-17 MD Replace VVOTER and VOTER with PARTICIPANT.
2679 Calext V00: 2019-05-17 MD First calext version. Moved source to
2680 metanorma. No changes to specification.
2682 V03: 2014-10-28 MD
2683 * Add VVOTER and VOTE components.
2685 * Add RESPONSE property.
2687 * Remove RESPONSE parameter from VOTER.
2689 V03: 2014-05-12 MD
2690 * Add reply-url property and required parameter.
2692 * Fix ACCEPT-RESPONSE definition.
2694 V02: 2014-05-12 MD
2695 * Typos fixed, clarifications made.
2697 * Removed spurious COMMENT param. Switched some to PUBLIC-
2698 COMMENT
2700 * Changed STAY-INFORMED to remove boolean value type and state
2701 explicit TRUE/FALSE values.
2703 * iTip: Allow VPOLL DTSTART to be optional and allow
2704 VAVAILABILITY as subcomponent
2706 * iTip: fix broken table cells
2708 * Add POLL-PROPERTIES, POLL-WINNER to 5545 extensions table
2710 * Added Caldav scheduling section
2712 V01: 2013-08-07 MD
2713 * Removed method CONFIRM
2715 * Removed pollitemid from VPOLL abnf. Added text for pollwinner
2717 * Added POLL-WINNER and verbiage
2719 * Added STATUS values
2721 * Added RELTYPE=POLL
2723 * Added supported-vpoll-component-sets
2725 * Added CalDAV related parameters to VOTER
2727 * Removed bad CalDAV query example. State that queries cannot
2728 target the sub-components.
2730 Initial version: 2012-11-02 MD
2732 Authors' Addresses
2734 Eric York
2735 Email: eric.york@gmail.com
2737 Michael Douglass
2738 Email: mdouglass@bedework.com