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