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