idnits 2.17.1 draft-ietf-calext-vpoll-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == There is 1 instance of lines with non-ascii characters in the document. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 2120 has weird spacing: '... Name suppo...' == Line 2122 has weird spacing: '...mespace urn:i...' == Line 2183 has weird spacing: '... Name vpoll...' == Line 2185 has weird spacing: '...mespace urn:i...' == Line 2215 has weird spacing: '... Name vpoll...' == (1 more instance...) == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: (CALDAV:vpoll-max-active) The PUT request, or COPY or MOVE request, MUST not result in the number of active VPOLLs being greater than the value of the "CALDAV:vpoll-max-active" property value Section 8.1.3 on the calendar collection where the resource will be stored; -- The document date (26 July 2021) is 995 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) -- No information found for draft-ietf-calext-eventpub-extensions - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'I-D.ietf-calext-eventpub-extensions' Summary: 1 error (**), 0 flaws (~~), 9 warnings (==), 3 comments (--). 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: 27 January 2022 26 July 2021 7 VPOLL: Consensus Scheduling Component for iCalendar 8 draft-ietf-calext-vpoll-02 10 Abstract 12 This specification introduces a new iCalendar component which allows 13 for consensus scheduling, that is, voting on a number of alternative 14 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 27 January 2022. 33 Copyright Notice 35 Copyright (c) 2021 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 Simplified BSD License text 44 as described in Section 4.e of the Trust Legal Provisions and are 45 provided without warranty as described in the Simplified 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 . . . . . . . . . . . . . . . . . . . . . . 4 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 . . . . . . . . . . . . . . . 51 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 Additionally the following terms are used: 176 3.1. consensus scheduling 178 The process whereby users come to some agreement on meeting or task 179 alternatives and then book that meeting or task. 181 3.2. active Vpoll 183 A VPoll may have a DTSTART, DTEND and DURATION which may define the 184 start and end of the active voting period 186 3.3. voter 188 A participant who votes on the alternatives. A voter need not be an 189 attendee of any of the alternatives presented. 191 4. Simple Consensus Scheduling 193 This specification defines components and properties which can be 194 used for simple consensus scheduling but also have the generality to 195 handle more complex cases. To provide an easy (and for many a 196 sufficient) introduction to consensus scheduling and VPOLL we will 197 outline the flow of information for the simple case of voting on a 198 number of meeting alternatives which differ only in time of the 199 meeting. In addition the voters will all be potential attendees. 201 This specification not only defines data structures but adds new iTip 202 methods, one used when consensus has been reached and one to 203 distribute the current status of the poll. 205 This document will show how a VPOLL object is used to inform voters 206 of the state of a simple vote on some alternatives. 208 4.1. The VPOLL Component: An Overview 210 The VPOLL component acts as a wrapper for a number of alternatives to 211 be voted on, together with some properties and a new component used 212 to maintain the state of the voting. For our simple example the 213 following VPOLL properties and sub-components are either required or 214 appropriate: 216 DTSTAMP The usual [RFC5545] property. 218 SEQUENCE The usual [RFC5545] property. See below for SEQUENCE 219 behavior. 221 UID The usual [RFC5545] property. 223 ORGANIZER The usual [RFC5545] property. In general this need not be 224 an organizer of any of the alternatives. In this simple outline 225 we assume it is the same. 227 SUMMARY The usual [RFC5545] property. This optional but recommended 228 property provides the a short title to the poll. 230 DESCRIPTION The usual [RFC5545] property. This optional property 231 provides more details. 233 DTEND The usual [RFC5545] property. This optional property provides 234 a poll closing time and date after which the VPOLL is no longer 235 active. 237 POLL-MODE A new property which defines how the votes are used to 238 obtain a result. For our use case it will take the value "BASIC" 239 meaning one event will be chosen from the alternatives. 241 POLL-COMPLETION A new property which defines who (server or client) 242 chooses and/or submits the winning choice. In our example the 243 value is "SERVER-SUBMIT" which means the client chooses the winner 244 but the server will submit the winning choice. 246 POLL-PROPERTIES A new property which defines which icalendar 247 properties are being voted on. For our use case it will take the 248 value "DTSTART, LOCATION" meaning only those properties are 249 significant for voting. Other properties in the events may differ 250 but are not considered significant for the voting process. 252 PARTICIPANT There is one of these components for each voter with the 253 PARTICIPANT-TYPE set to "VOTER". The CALENDAR-ADDRESS property 254 identifies the voter and this component will contain one VOTE 255 component for each item being voted on. 257 VOTE A new component. There is one of these for each voter and 258 choice. It usually contains at least a POLL-ITEM-ID property to 259 identify the choice and a RESPONSE property to provide a vote. 260 For more complex poll modes it may contain other information such 261 as cost or estimated duration. 263 VEVENT In our simple use case there will be multiple VEVENT sub- 264 components defining the alternatives. Each will have a different 265 date and or time for the meeting. 267 EXAMPLE 269 VPOLL with 3 voters and 3 alternative meetings: 271 BEGIN:VCALENDAR 272 VERSION:2.0 273 PRODID:-//Example//Example 274 METHOD:REQUEST 275 BEGIN:VPOLL 276 POLL-MODE:BASIC 277 POLL-COMPLETION:SERVER-SUBMIT 278 POLL-PROPERTIES:DTSTART,LOCATION 279 ORGANIZER:mailto:mike@example.com 280 UID:sched01-1234567890 281 DTSTAMP:20120101T000000Z 282 SUMMARY:What to do this week 283 DTEND:20120101T000000Z 284 BEGIN:PARTICIPANT 285 PARTICIPANT-TYPE: VOTER 286 CALENDAR-ADDRESS:mailto:cyrus@example.com 287 END:PARTICIPANT 288 BEGIN:PARTICIPANT 289 PARTICIPANT-TYPE: VOTER 290 CALENDAR-ADDRESS:mailto:eric@example.com 291 END:PARTICIPANT 292 BEGIN:PARTICIPANT 293 PARTICIPANT-TYPE: VOTER 294 CALENDAR-ADDRESS:mailto:mike@example.com 295 END:PARTICIPANT 296 BEGIN:VEVENT.......(with a poll-item-id=1) 297 END:VEVENT 298 BEGIN:VEVENT.......(with a poll-item-id=2) 299 END:VEVENT 300 BEGIN:VEVENT.......(with a poll-item-id=3) 301 END:VEVENT 302 END:VPOLL 303 END:VCALENDAR 305 As can be seen in the example above, there is an iTip METHOD property 306 with the value REQUEST. The VPOLL object will be distributed to all 307 the voters, either through iMip or through some VPOLL enabled 308 service. 310 4.2. The VPOLL Alternative Choices: An Overview 312 Within the VPOLL component we have the alternatives to vote on. In 313 many respects these are standard [RFC5545] components. For our 314 simple use case they are all VEVENT components. In addition to the 315 usual [RFC5545] properties some extra properties are used for a 316 VPOLL. 318 POLL-ITEM-ID This provides a unique reference to the sub-component 319 within the VPOLL. It's value SHOULD be a small integer. 321 4.3. VPOLL responses 323 Upon receipt of a VPOLL REQUEST the voter will reply with a VPOLL 324 component containing their vote. In our simple case it will have the 325 following properties and components: 327 DTSTAMP The usual [RFC5545] property. 329 SEQUENCE The usual [RFC5545] property. See below for SEQUENCE 330 behavior. 332 UID Same as the request. 334 ORGANIZER Same as the request. 336 SUMMARY Same as the request. 338 PARTICIPANT One only with a CALENDAR-ADDRESS identifying the voter 339 replying. 341 VOTE One per item being voted on. 343 POLL-ITEM-ID One inside each VOTE component to identify the choice. 345 RESPONSE One inside each VOTE component to specify the vote. 347 Note that a voter can send a number of REPLYs for each REQUEST sent 348 by the organizer. Each REPLY completely replaces the voting record 349 for that voter for all components being voted on. In our example, if 350 Eric responds and votes for items 1 and 2 and then responds again 351 with a vote for only item 3, the final outcome is one vote on item 3. 353 NOTE This is poll-mode specific behavior? 355 EXAMPLE 357 REPLY VPOLL from Cyrus: 359 BEGIN:VCALENDAR 360 VERSION:2.0 361 PRODID:-//Example//Example 362 METHOD: REPLY 363 BEGIN:VPOLL 364 ORGANIZER:mailto:mike@example.com 365 UID:sched01-1234567890 366 DTSTAMP:20120101T010000Z 367 SUMMARY:What to do this week 368 BEGIN:PARTICIPANT 369 PARTICIPANT-TYPE: VOTER 370 CALENDAR-ADDRESS:mailto:cyrus@example.com 371 BEGIN:VOTE 372 POLL-ITEM-ID:1 373 RESPONSE:50 374 COMMENT:Work on iTIP 375 END:VOTE 376 BEGIN:VOTE 377 POLL-ITEM-ID:2 378 RESPONSE:100 379 COMMENT:Work on WebDAV 380 END:VOTE 381 BEGIN:VOTE 382 POLL-ITEM-ID:3 383 RESPONSE:0 384 END:VOTE 385 END:PARTICIPANT 386 END:VPOLL 387 END:VCALENDAR 389 4.4. VPOLL updates 391 When the organizer receives a response from one or more voters the 392 current state of the poll is sent to all voters. The new iTip method 393 POLLSTATUS is used. The VPOLL can contain a reduced set of 394 properties but MUST contain DTSTAMP, SEQUENCE (if not 0), UID, 395 ORGANIZER and one or more PARTICIPANT components each populated with 396 zero or more VOTE components. 398 EXAMPLE 399 BEGIN:VCALENDAR 400 VERSION:2.0 401 PRODID:-//Example//Example 402 METHOD: POLLSTATUS 403 BEGIN:VPOLL 404 ORGANIZER:mailto:mike@example.com 405 UID:sched01-1234567890 406 DTSTAMP:20120101T020000Z 407 SEQUENCE:0 408 SUMMARY:What to do this week 409 BEGIN:PARTICIPANT 410 PARTICIPANT-TYPE: VOTER 411 CALENDAR-ADDRESS:mailto:cyrus@example.com 412 BEGIN: VOTE 413 POLL-ITEM-ID:1 414 RESPONSE:50 415 COMMENT:Work on iTIP 416 END:VOTE 417 BEGIN:VOTE 418 POLL-ITEM-ID:2 419 RESPONSE:100 420 COMMENT:Work on WebDAV 421 END:VOTE 422 BEGIN:VOTE 423 POLL-ITEM-ID:3 424 RESPONSE:0 425 END:VOTE 426 END:PARTICIPANT 427 BEGIN:PARTICIPANT 428 PARTICIPANT-TYPE: VOTER 429 CALENDAR-ADDRESS:mailto:eric@example.com 430 BEGIN:VOTE 431 POLL-ITEM-ID:1 432 RESPONSE:100 433 END:VOTE 434 BEGIN:VOTE 435 POLL-ITEM-ID:2 436 RESPONSE:100 437 END:VOTE 438 BEGIN:VOTE 439 POLL-ITEM-ID:3 440 RESPONSE:0 441 END:VOTE 442 END:PARTICIPANT 443 END:VPOLL 444 END:VCALENDAR 446 4.5. VPOLL Completion 448 After a number of REPLY messages have been received the poll will be 449 considered complete. If there is a DTEND on the poll the system may 450 automatically close the poll, or the organizer may, at any time, 451 consider the poll complete. A VPOLL can be completed (and 452 effectively closed for voting) by sending an iTip REQUEST message 453 with the VPOLL STATUS property set to COMPLETED. 455 The poll winner is confirmed by sending a final iTip REQUEST message 456 with the VPOLL STATUS property set to CONFIRMED. In this case the 457 VPOLL component contains all the events being voted on along with a 458 POLL-WINNER property to identify the winning event. As the POLL- 459 COMPLETION property is set to SERVER-SUBMIT the server will submit 460 the winning choice and when it has done so set the STATUS to 461 "SUBMITTED". 463 EXAMPLE 465 VPOLL confirmation: 467 BEGIN:VCALENDAR 468 VERSION:2.0 469 PRODID:-//Example//Example 470 METHOD: REQUEST 471 BEGIN:VPOLL 472 ORGANIZER:mailto:douglm@example.com 473 UID:sched01-1234567890 474 DTSTAMP:20120101T030000Z 475 COMPLETED:20120101T030000Z 476 POLL-COMPLETION:SERVER-SUBMIT 477 SEQUENCE:0 478 SUMMARY:What to do this week 479 STATUS:CONFIRMED 480 POLL-WINNER:3 481 BEGIN:VEVENT.......(with a poll-item-id=1) 482 END:VEVENT 483 BEGIN:VEVENT.......(with a poll-item-id=2) 484 END:VEVENT 485 BEGIN:VEVENT.......(with a poll-item-id=3) 486 END:VEVENT 487 END:VPOLL 488 END:VCALENDAR 490 4.6. Other Responses 492 A voter being asked to choose between a number of ORGANIZER supplied 493 alternatives may find none of them acceptable or may simply not care. 495 An alternative response, which may be disallowed by the ORGANIZER, is 496 to send back the respondees availability or freebusy or even one or 497 more new, alternative choices. 499 This is accomplished by responding with a VOTE component which has no 500 POLL-ITEM-ID property. In this case it MUST contain some alternative 501 information. What form this takes depends on the poll mode in 502 effect. 504 5. iCalendar Extensions 506 5.1. Updated Participant Type Value 508 Participant type property values are defined in section 11.2.1. of 509 [I-D.ietf-calext-eventpub-extensions]. This specification updates 510 that type to include the new participant type VOTER to provide 511 information about the voter and to contain their votes. 513 Format Definition This property parameter is redefined by the 514 following notation: 516 partvalue /= "VOTER" 518 Description The new property value indicates that the associated 519 PARTICIPANT component identifies a voter in a VPOLL. 521 5.2. Updated Relation Type Value 523 Relationship parameter type values are defined in section 3.2.15. of 524 [RFC5545]. This specification updates that type to include the new 525 relationship value POLL to provide a link to the VPOLL component in 526 which the current component appears. 528 Format Definition This property parameter is redefined by the 529 following notation: 531 reltypeparam /= "RELTYPE" "=" "POLL" 532 ; Property value is a VPOLL uid 534 Description This parameter can be specified on a property that 535 references another related calendar component. The new parameter 536 value indicates that the associated property references a VPOLL 537 component which contains the current component. 539 5.3. Updated Status Value 541 Status property values are defined in section 3.8.1.11. of [RFC5545]. 542 This specification updates that type to define valid VPOLL status 543 values. 545 Format Definition This property parameter is redefined by the 546 following notation: 548 statvalue /= statvalue-poll 549 ; Status values for "VPOLL". 550 statvalue-poll = "IN-PROCESS" 551 / "COMPLETED" ; Poll has closed, 552 ; nothing has been chosen yet 553 / "CONFIRMED" ; Poll has closed and 554 ; winning items confirmed 555 / "SUBMITTED" ; The winning item has been 556 ; submitted 557 / "CANCELLED" 559 Description These values allow clients and servers to handle the 560 choosing and submission of winning choices. 562 If the client is choosing and the server submitting then the 563 client should set the POLL-WINNER property, set the status to 564 CONFIRMED and save the poll. When the server submits the winning 565 choice it will set the status to SUBMITTED. 567 Figure 1 569 5.4. New Property Parameters 571 5.4.1. Required 573 Parameter name REQUIRED 575 Purpose To specify whether the associated property is required in 576 the current context. 578 Format Definition This parameter is defined by the following 579 notation: 581 requirededparam = "REQUIRED" "=" ("TRUE" / "FALSE") 582 ; Default is FALSE 584 Description This parameter MAY be specified on REPLY-URL and, if the 585 value is TRUE, indicates the organizer requires all replies to be 586 made via the specified service rather than iTip replies. 588 5.4.2. Stay-Informed 590 Parameter name STAY-INFORMED 592 Purpose To specify the voter also wants to be added as an ATTENDEE 593 when the poll is confirmed. 595 Format Definition This parameter is defined by the following 596 notation: 598 stayinformedparam = "STAY-INFORMED" "=" ("TRUE" / "FALSE") 599 ; Default is FALSE 601 Description This parameter MAY be specified on the CALENDAR-ADDRESS 602 property in the PARTICIPANT component and, if the value is TRUE, 603 indicates the voter wishes to be added to the final choice as a 604 non participant. 606 5.5. New Properties 608 5.5.1. Accept-Response 610 Property name ACCEPT-RESPONSE 612 Purpose This property is used in VPOLL to indicate the types of 613 component that may be supplied in a response. 615 Property Parameters Non-standard or iana parameters can be specified 616 on this property. 618 Conformance This property MAY be specified in a VPOLL component. 620 Description When used in a VPOLL this property indicates what 621 allowable component types may be returned in a reply. Typically 622 this would allow a voter to respond with their freebusy or 623 availability rather than choosing one of the presented 624 alternatives. 626 If this property is not present voters are only allowed to respond 627 to the choices in the request. 629 Format Definition This property is defined by the following 630 notation: 632 acceptresponse = "ACCEPT-RESPONSE" acceptresponseparams ":" 633 iana-token ("," iana-token) CRLF 635 acceptresponseparams = *(";" other-param) 637 5.5.2. Poll-Completion 639 Property name POLL-COMPLETION 641 Purpose This property is used in VPOLL to indicate whether the 642 client or server is responsible for choosing and/or submitting the 643 winner(s). 645 Description When a VPOLL is stored on a server which is capable of 646 handling choosing and submission of winning choices a value of 647 SERVER indicates that the server should close the poll, choose the 648 winner and submit whenever it is appropriate to do so. 650 For example, in BASIC poll-mode, reaching the DTEND of the poll 651 could trigger this server side action. 653 Server initiated submission requires that the submitted choice 654 MUST be a valid calendaring component. 656 POLL-COMPLETION=SERVER-SUBMIT allows the client to set the poll- 657 winner, set the status to CONFIRMED and then store the poll on the 658 server. The server will then submit the winning choice and set 659 the status to SUBMITTED. 661 Format Definition This property is defined by the following 662 notation: 664 poll-completion = "POLL-COMPLETION" pcparam ":" pcvalue CRLF 666 pcparam = *(";" other-param) 668 pcvalue = "SERVER" ; The server is responsible for both choosing and 669 ; submitting the winner(s) 670 / "SERVER-SUBMIT" ; The server is responsible for 671 ; submitting the winner(s). The client chooses. 672 / "SERVER-CHOICE" ; The server is responsible for 673 ; choosing the winner(s). The client will submit. 674 / "CLIENT" ; The client is responsible for both choosing and 675 ; submitting the winner(s) 676 / iana-token 677 / x-name 678 ;Default is CLIENT 680 Example The following is an example of this property: 682 POLL-COMPLETION: SERVER-SUBMIT 684 5.5.3. Poll-Item-Id 686 Property name POLL-ITEM-ID 688 Purpose This property is used in VPOLL child components as an 689 identifier. 691 Value type INTEGER 693 Property Parameters Non-standard parameters can be specified on this 694 property. 696 Conformance This property MUST be specified in a VOTE component and 697 in VPOLL choice items. 699 Description In a METHOD:REQUEST each choice component MUST have a 700 POLL-ITEM-ID property. Each set of components with the same POLL- 701 ITEM-ID value represents one overall set of items to be voted on. 703 POLL-ITEM-ID SHOULD be a unique small integer for each component 704 or set of components. If it remains the same between REQUESTs 705 then the previous response for that component MAY be re-used. To 706 force a re-vote on a component due to a significant change, the 707 POLL-ITEM-ID MUST change. 709 Format Definition This property is defined by the following 710 notation: 712 pollitemid = "POLL-ITEM-ID" pollitemdparams ":" 713 integer CRLF 715 pollitemidparams = *( 716 (";" other-param) 717 ) 719 5.5.4. Poll-Mode 721 Property name POLL-MODE 723 Purpose This property is used in VPOLL to indicate what voting mode 724 is to be applied. 726 Property Parameters Non-standard or iana parameters can be specified 727 on this property. 729 Conformance This property MAY be specified in a VPOLL component or 730 its sub-components. 732 Description The poll mode defines how the votes are applied to 733 obtain a result. BASIC mode, the default, means that the voters 734 are selecting one component (or group of components) with a given 735 POLL=ITEM-ID. 737 Other polling modes may be defined in updates to this 738 specification. These may allow for such modes as ranking or task 739 assignment. 741 Format Definition This property is defined by the following 742 notation: 744 pollmode = "POLL-MODE" pollmodeparams ":" 745 ("BASIC" / iana-token / other-token) CRLF 747 pollmodeparams = *(";" other-param) 749 5.5.5. Poll-properties 751 Property name POLL-PROPERTIES 753 Purpose This property is used in VPOLL to define which icalendar 754 properties are being voted on. 756 Property Parameters Non-standard or iana parameters can be specified 757 on this property. 759 Conformance This property MAY be specified in a VPOLL component. 761 Description This property defines which icalendar properties are 762 significant in the voting process. It may not be clear to voters 763 which properties are varying in a significant manner. Clients may 764 use this property to highlight those listed properties. 766 Format Definition This property is defined by the following 767 notation: 769 pollproperties = "POLL-PROPERTIES" pollpropparams ":" 770 text *("," text) CRLF 772 pollpropparams = *(";" other-param) 774 5.5.6. Poll-Winner 776 Property name POLL-WINNER 778 Purpose This property is used in a basic mode VPOLL to indicate 779 which of the VPOLL sub-components won. 781 Value type INTEGER 783 Property Parameters Non-standard parameters can be specified on this 784 property. 786 Conformance This property MAY be specified in a VPOLL component. 788 Description For poll confirmation each child component MUST have a 789 POLL-ITEM-ID property. For basic mode the VPOLL component SHOULD 790 have a POLL-WINNER property which MUST correspond to one of the 791 POLL-ITEM-ID properties and indicates which sub-component was the 792 winner. 794 Format Definition This property is defined by the following 795 notation: 797 pollwinner = "POLL-WINNER" pollwinnerparams ":" 798 integer CRLF 800 pollwinnerparams = *(";" other-param) 802 ; Used with a STATUS:CONFIRMED VPOLL to indicate which 803 ; components have been confirmed 805 5.5.7. Reply-URL 807 Property name REPLY-URL 809 Purpose This property may be used in scheduling messages to indicate 810 additional reply methods, for example a web-service. 812 Value type URI 814 Property Parameters Non-standard, required or iana parameters can be 815 specified on this property. 817 Conformance This property MAY be specified in a VPOLL component. 819 Description When used in a scheduling message this property 820 indicates additional or required services that can be used to 821 reply. Typically this would be a web service of some form. 823 Format Definition This property is defined by the following 824 notation: 826 reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF 828 reply-urlparams = *( 829 (";" requiredparam) / 830 (";" other-param) 831 ) 833 5.5.8. Response 835 Property name RESPONSE 837 Purpose To specify a response vote. 839 Value type INTEGER 841 Format Definition This property is defined by the following 842 notation: 844 response = "RESPONSE" response-params ":" integer CRLF 845 ; integer value 0..100 847 responseparams = *(";" other-param) 849 Description This parameter can be specified on the POLL-ITEM-ID 850 property to provide the value of the voters response. This 851 parameter allows for fine grained responses which are appropriate 852 to some applications. For the case of individuals voting for a 853 choice of events, client applications SHOULD conform to the 854 following convention: 856 * 0 - 39 A "NO vote" 858 * 40 - 79 A "MAYBE" vote 860 * 80 - 89 A "YES - but not preferred vote" 862 * 90-100 A "YES" vote. 864 Clients MUST preserve the response value when there is no 865 change from the user even if they have a UI with fixed states 866 (e.g. yes/no/maybe). 868 5.6. New Components 870 5.6.1. VPOLL Component 872 Component name VPOLL 873 Purpose This component provides a mechanism by which voters can vote 874 on provided choices. 876 Format Definition This property is defined by the following 877 notation: 879 pollc = "BEGIN" ":" "VPOLL" CRLF 880 pollprop 881 *participantc *eventc *todoc *journalc *freebusyc 882 *availabilityc *alarmc *iana-comp *x-comp 883 "END" ":" "VPOLL" CRLF 885 pollprop = *( 886 ; 887 ; The following are REQUIRED, 888 ; but MUST NOT occur more than once. 889 ; 890 dtstamp / uid / organizer / 891 ; 892 ; The following are OPTIONAL, 893 ; but MUST NOT occur more than once. 894 ; 895 acceptresponse / class / created / completed / 896 description / dtstart / last-mod / pollmode / 897 pollproperties / priority / seq / status / 898 summary / url / 899 ; 900 ; Either 'dtend' or 'duration' MAY appear in 901 ; a 'pollprop', but 'dtend' and 'duration' 902 ; MUST NOT occur in the same 'pollprop'. 903 ; 'duration' MUST only occur when 'dtstart' 904 ; is present 905 ; 906 dtend / duration / 907 ; 908 ; The following are OPTIONAL, 909 ; and MAY occur more than once. 910 ; 911 attach / categories / comment / 912 contact / rstatus / related / 913 resources / x-prop / iana-prop 914 ; 915 ; The following is OPTIONAL, it SHOULD appear 916 ; once for the confirmation of a BASIC mode 917 ; VPOLL. Other modes may define differing 918 ; requirements. 919 ; 920 pollwinner / 921 ; 922 ) 924 Description This component provides a mechanism by which voters can 925 vote on provided choices. The outcome depends upon the POLL-MODE 926 in effect. 928 The PARTICIPANT components in VPOLL requests provide information 929 on each recipient who will be voting - both their identity through 930 the CALENDAR-ADDRESS property and their votes through the VOTE 931 components. 933 If specified, the "DTSTART" property defines the start or opening 934 of the poll active period. If absent the poll is presumed to have 935 started when created. 937 If "DTSTART" is present "DURATION" MAY be specified and indicates 938 the duration, and hence the ending, of the poll. The value of the 939 property MUST be a positive duration. 941 "DTEND" MAY be specified with or without "DTSTART" and indicates 942 the ending of the poll. If DTEND is specified it MUST be later 943 than the DTSTART or CREATED property. 945 If one or more VALARM components are included in the VPOLL they 946 are not components to be voted on and MUST NOT contain a POLL- 947 ITEM-ID property. VALARM sub-components may be used to provide 948 warnings to the user when polls are due to start or end. 950 5.6.2. VOTE Component 952 Component name VOTE 954 Purpose This component provides a mechanism by which voters can vote 955 on provided choices. 957 Conformance This component may be specified zero or more times in a 958 PARTICIPANT component which identifies the voter. 960 Format Definition This property is defined by the following 961 notation: 963 votec = "BEGIN" ":" "VOTE" CRLF 964 voteprop 965 *eventc *todoc *journalc *freebusyc 966 *availabilityc *alarmc *iana-comp *x-comp 967 "END" ":" "VOTE" CRLF 969 voteprop = *( 970 ; 971 ; The following are REQUIRED, 972 ; but MUST NOT occur more than once. 973 ; 974 pollitemid / response / 975 ; 976 ; The following are OPTIONAL, 977 ; and MAY occur more than once. 978 ; 979 comment / x-prop / iana-prop 980 ; 981 ) 983 Description This component appears inside the PARTICIPANT component 984 with a PARTICIPANT-TYPE of VOTER to identify the voter. This 985 component contains that participants responses. 987 The required and optional properties and their meanings will 988 depend upon the POLL-MODE in effect. 990 For any POLL-MODE, POLL-ITEM-ID is used to associate the 991 information to a choice supplied by the organizer. This means 992 that each VOTE component only provides information about that 993 choice. 995 If allowed by the POLL-MODE a VOTE component without a POLL-ITEM- 996 ID may be provided in a REPLY to indicate a possible new choice or 997 to provide information to the ORGANIZER - such as the respondees 998 availability. 1000 6. Poll Modes 1002 The VPOLL component is intended to allow for various forms of 1003 polling. The particular form in efffect is indicated by the POLL- 1004 MODE property. 1006 New poll modes can be registered by including a completed POLL-MODE 1007 Registration Template (see Section 10.3) in a published RFC. 1009 6.1. POLL-MODE:BASIC 1011 BASIC poll mode is the form of voting in which one possible outcome 1012 is chosen from a set of possibilities. Usually this will be 1013 represented as a number of possible event objects one of which will 1014 be selected. 1016 6.1.1. Property restrictions 1018 This poll mode has the following property requirements: 1020 POLL-ITEM-ID Each contained sub-component that is being voted upon 1021 MUST contain a POLL-ITEM_ID property which is unique within the 1022 context of the POLL. The value MUST NOT be reused when events are 1023 removed and/or added to the poll. 1025 POLL-WINNER On confirmation of the poll this property MUST be 1026 present and identifies the winning component. 1028 6.1.2. Outcome reporting 1030 To confirm the winner the POLL-WINNER property MUST be present and 1031 the STATUS MUST be set to CONFIRMED. 1033 When the winning VEVENT or VTODO is not a scheduled entity, that is, 1034 it has no ORGANIZER or ATTENDEES it MUST be assigned an ORGANIZER 1035 property and a list of non-participating ATTENDEEs. This allows the 1036 winning entity to be distributed to the participants through iTip or 1037 some other protocol. 1039 7. iTIP Extensions 1041 This specification introduces a number of extensions to [RFC5546]. 1042 In group scheduling the parties involved are organizer and attendees. 1043 In VPOLL the parties are organizer and voters. 1045 For many of the iTip processing rules the voters take the place of 1046 attendees. 1048 7.1. Methods 1050 There are some extensions to the behavior of iTip methods for a VPOLL 1051 object and two new methods are defined. 1053 +================+================================================+ 1054 | Method | Description | 1055 +================+================================================+ 1056 | PUBLISH | No changes (yet) | 1057 +----------------+------------------------------------------------+ 1058 | REQUEST | Each child component MUST have a POLL-ITEM-ID | 1059 | | property. Each set of components with the | 1060 | | same POLL-ITEM-ID value represents one overall | 1061 | | set of items to be voted on. | 1062 +----------------+------------------------------------------------+ 1063 | REPLY | There MUST be a single VPOLL component which | 1064 | | MUST have: either one or more POLL-ITEM-ID | 1065 | | properties with a RESPONSE param matching that | 1066 | | from a REQUEST or a VFREEBUSY or VAVAILABILITY | 1067 | | child component showing overall busy/available | 1068 | | time. The VPOLL MUST have one voter only. | 1069 +----------------+------------------------------------------------+ 1070 | ADD | Not supported for VPOLL. | 1071 +----------------+------------------------------------------------+ 1072 | CANCEL | There MUST be a single VPOLL component with | 1073 | | UID | 1074 +----------------+------------------------------------------------+ 1075 | | matching that of the poll being cancelled. | 1076 +----------------+------------------------------------------------+ 1077 | REFRESH | The organizer returns a METHOD:REQUEST with | 1078 | | the current full state, or a METHOD:CANCEL or | 1079 | | an error if no matching poll is found. | 1080 +----------------+------------------------------------------------+ 1081 | COUNTER | Not supported for VPOLL. | 1082 +----------------+------------------------------------------------+ 1083 | DECLINECOUNTER | Not supported for VPOLL. | 1084 +----------------+------------------------------------------------+ 1085 | POLLSTATUS | Used to send the current state of the poll to | 1086 | | all voters. The VPOLL can contain a reduced | 1087 | | set of properties but MUST contain DTSTAMP, | 1088 | | SEQUENCE (if not 0), UID, ORGANIZER and | 1089 | | PARTICIPANTS. | 1090 +----------------+------------------------------------------------+ 1092 Table 1 1094 The following table shows the above methods broken down by who can 1095 send them with VPOLL components. 1097 +============+================================================+ 1098 | Originator | Methods | 1099 +============+================================================+ 1100 | Organizer | CANCEL, PUBLISH, REQUEST, POLLSTATUS | 1101 +------------+------------------------------------------------+ 1102 | Voter | REPLY, REFRESH, REQUEST (only when delegating) | 1103 +------------+------------------------------------------------+ 1105 Table 2 1107 7.2. Interoperability Models 1109 Most of the standard iTip specification applies with respect to 1110 organizer and voters. 1112 7.2.1. Delegation 1114 TBD 1116 7.2.2. Acting on Behalf of Other Calendar Users 1118 TBD 1120 7.2.3. Component Revisions 1122 * Need to talk about what a change in SEQUENCE means 1124 * Sequence change forces a revote. 1126 * New voter - no sequence change 1128 * Add another poll set or change poll item ids or any change to a 1129 child 1131 * component - bump sequence 1133 7.2.4. Message Sequencing 1135 TBD 1137 7.3. Application Protocol Elements 1139 7.3.1. Methods for VPOLL Calendar Components 1141 This section defines the property set restrictions for the method 1142 types that are applicable to the "VPOLL" calendar component. Each 1143 method is defined using a table that clarifies the property 1144 constraints that define the particular method. 1146 The presence column uses the following values to assert whether a 1147 property is required or optional, and the number of times it may 1148 appear in the iCalendar object. 1150 +================+=================================================+ 1151 | Presence Value | Description | 1152 +================+=================================================+ 1153 | 1 | One instance MUST be present. | 1154 +----------------+-------------------------------------------------+ 1155 | 1+ | At least one instance MUST be present. | 1156 +----------------+-------------------------------------------------+ 1157 | 0 | Instances of this property MUST NOT be present. | 1158 +----------------+-------------------------------------------------+ 1159 | 0+ | Multiple instances MAY be present. | 1160 +----------------+-------------------------------------------------+ 1161 | 0 or 1 | Up to 1 instance of this property MAY be | 1162 | | present. | 1163 +----------------+-------------------------------------------------+ 1165 Table 3 1167 The following summarizes the methods that are defined for the "VPOLL" 1168 calendar component. 1170 +============+======================================================+ 1171 | Method | Description | 1172 +============+======================================================+ 1173 | PUBLISH | Post notification of an poll. Used primarily | 1174 | | as a method of advertising the existence of a | 1175 | | poll. | 1176 +------------+------------------------------------------------------+ 1177 | REQUEST | To make a request for a poll. This is an | 1178 | | explicit invitation to one or more voters. | 1179 | | Poll requests are also used to update, change | 1180 | | or confirm an existing poll. Clients that | 1181 | | cannot handle REQUEST MAY degrade the poll to | 1182 | | view it as a PUBLISH. REQUEST SHOULD NOT be | 1183 | | used just to set the status of the poll - | 1184 | | POLLSTATUS provides a more compact approach. | 1185 +------------+------------------------------------------------------+ 1186 | REPLY | Reply to a poll request. Voters may set | 1187 | | their RESPONSE parameter to supply the | 1188 | | current vote in the range 0 to 100. | 1189 +------------+------------------------------------------------------+ 1190 | CANCEL | Cancel a poll. | 1191 +------------+------------------------------------------------------+ 1192 | REFRESH | A request is sent to an Organizer by a Voter | 1193 | | asking for the latest version of a poll to be | 1194 | | resent to the requester. | 1195 +------------+------------------------------------------------------+ 1196 | POLLSTATUS | Used to send the current state of the poll to | 1197 | | all voters. The VPOLL can contain a reduced | 1198 | | set of properties but MUST contain DTSTAMP, | 1199 | | SEQUENCE (if not 0), UID, ORGANIZER and | 1200 | | PARTICIPANT. | 1201 +------------+------------------------------------------------------+ 1203 Table 4 1205 7.3.2. Method: PUBLISH 1207 The "PUBLISH" method in a "VPOLL" calendar component is an 1208 unsolicited posting of an iCalendar object. Any CU may add published 1209 components to their calendar. The "Organizer" MUST be present in a 1210 published iCalendar component. "Voters" MUST NOT be present. Its 1211 expected usage is for encapsulating an arbitrary poll as an iCalendar 1212 object. The "Organizer" may subsequently update (with another 1213 "PUBLISH" method) or cancel (with a "CANCEL" method) a previously 1214 published "VPOLL" calendar component. 1216 Note Not clear how useful this is but needs some work on 1217 transmitting the current vote without any voter identification. 1219 This method type is an iCalendar object that conforms to the 1220 following property constraints: 1222 +=================+==========+=====================================+ 1223 | Component/ | Presence | Comment | 1224 | Property | | | 1225 +=================+==========+=====================================+ 1226 | METHOD | 1 | MUST equal PUBLISH. | 1227 +-----------------+----------+-------------------------------------+ 1228 | VPOLL | 1+ | | 1229 +-----------------+----------+-------------------------------------+ 1230 | DTSTAMP | 1 | | 1231 +-----------------+----------+-------------------------------------+ 1232 | DTSTART | 0 or 1 | If present defines the start of the | 1233 | | | poll. Otherwise the poll starts | 1234 | | | when it is created and distributed. | 1235 +-----------------+----------+-------------------------------------+ 1236 | ORGANIZER | 1 | | 1237 +-----------------+----------+-------------------------------------+ 1238 | SUMMARY | 1 | Can be null. | 1239 +-----------------+----------+-------------------------------------+ 1240 | UID | 1 | | 1241 +-----------------+----------+-------------------------------------+ 1242 | SEQUENCE | 0 or 1 | MUST be present if value is greater | 1243 | | | than 0; MAY be present if 0. | 1244 +-----------------+----------+-------------------------------------+ 1245 | ACCEPT-RESPONSE | 0 or 1 | | 1246 +-----------------+----------+-------------------------------------+ 1247 | ATTACH | 0+ | | 1248 +-----------------+----------+-------------------------------------+ 1249 | CATEGORIES | 0+ | | 1250 +-----------------+----------+-------------------------------------+ 1251 | CLASS | 0 or 1 | | 1252 +-----------------+----------+-------------------------------------+ 1253 | COMMENT | 0+ | | 1254 +-----------------+----------+-------------------------------------+ 1255 | COMPLETED | 0 or 1 | | 1256 +-----------------+----------+-------------------------------------+ 1257 | CONTACT | 0 or 1 | | 1258 +-----------------+----------+-------------------------------------+ 1259 | CREATED | 0 or 1 | | 1260 +-----------------+----------+-------------------------------------+ 1261 | DESCRIPTION | 0 or 1 | Can be null. | 1262 +-----------------+----------+-------------------------------------+ 1263 | DTEND | 0 or 1 | If present, DURATION MUST NOT be | 1264 | | | present. | 1265 +-----------------+----------+-------------------------------------+ 1266 | DURATION | 0 or 1 | If present, DTEND MUST NOT be | 1267 | | | present. | 1268 +-----------------+----------+-------------------------------------+ 1269 | LAST-MODIFIED | 0 or 1 | | 1270 +-----------------+----------+-------------------------------------+ 1271 | POLL-ITEM-ID | 0 | | 1272 +-----------------+----------+-------------------------------------+ 1273 | POLL-MODE | 0 or 1 | | 1274 +-----------------+----------+-------------------------------------+ 1275 | POLL-PROPERTIES | 0 or 1 | | 1276 +-----------------+----------+-------------------------------------+ 1277 | PRIORITY | 0 or 1 | | 1278 +-----------------+----------+-------------------------------------+ 1279 | RELATED-TO | 0+ | | 1280 +-----------------+----------+-------------------------------------+ 1281 | RESOURCES | 0+ | | 1282 +-----------------+----------+-------------------------------------+ 1283 | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ | 1284 | | | CANCELLED. | 1285 +-----------------+----------+-------------------------------------+ 1286 | URL | 0 or 1 | | 1287 +-----------------+----------+-------------------------------------+ 1288 | IANA-PROPERTY | 0+ | | 1289 +-----------------+----------+-------------------------------------+ 1290 | X-PROPERTY | 0+ | | 1291 +-----------------+----------+-------------------------------------+ 1292 | PARTICIPANT | 0+ | Only PARTICIPANT components with | 1293 | | | PARTICIPANT-TYPE not equal to | 1294 | | | "VOTER" - that is, no voters | 1295 +-----------------+----------+-------------------------------------+ 1296 | REQUEST-STATUS | 0 | | 1297 +-----------------+----------+-------------------------------------+ 1298 | VALARM | 0+ | | 1299 +-----------------+----------+-------------------------------------+ 1300 | VEVENT | 0+ | Depending upon the poll mode in | 1301 | | | effect there MAY be candidate | 1302 | | | components included in the poll | 1303 | | | component. | 1304 +-----------------+----------+-------------------------------------+ 1305 | VFREEBUSY | 0 | | 1306 +-----------------+----------+-------------------------------------+ 1307 | VJOURNAL | 0+ | Depending upon the poll mode in | 1308 | | | effect there MAY be candidate | 1309 | | | components included in the poll | 1310 | | | component. | 1311 +-----------------+----------+-------------------------------------+ 1312 | VTODO | 0+ | Depending upon the poll mode in | 1313 | | | effect there MAY be candidate | 1314 | | | components included in the poll | 1315 | | | component. | 1316 +-----------------+----------+-------------------------------------+ 1317 | VTIMEZONE | 0+ | MUST be present if any date/time | 1318 | | | refers to a timezone. | 1319 +-----------------+----------+-------------------------------------+ 1320 | IANA-COMPONENT | 0+ | | 1321 +-----------------+----------+-------------------------------------+ 1322 | X-COMPONENT | 0+ | | 1323 +-----------------+----------+-------------------------------------+ 1325 Table 5: Constraints for a METHOD:PUBLISH of a VPOLL 1327 7.3.3. Method: REQUEST 1329 The "REQUEST" method in a "VPOLL" component provides the following 1330 scheduling functions: 1332 * Invite "Voters" to respond to the poll. 1334 * Change the items being voted upon. 1336 * Complete or confirm the poll. 1338 * Response to a "REFRESH" request. 1340 * Update the details of an existing vpoll. 1342 * Update the status of "Voters". 1344 * Forward a "VPOLL" to another uninvited CU. 1346 * For an existing "VPOLL" calendar component, delegate the role of 1347 "Voter" to another CU. 1349 * For an existing "VPOLL" calendar component, change the role of 1350 "Organizer" to another CU. 1352 The "Organizer" originates the "REQUEST". The recipients of the 1353 "REQUEST" method are the CUs voting in the poll, the "Voters". 1354 "Voters" use the "REPLY" method to convey votes to the "Organizer". 1356 The "UID" and "SEQUENCE" properties are used to distinguish the 1357 various uses of the "REQUEST" method. If the "UID" property value in 1358 the "REQUEST" is not found on the recipient's calendar, then the 1359 "REQUEST" is for a new "VPOLL" calendar component. If the "UID" 1360 property value is found on the recipient's calendar, then the 1361 "REQUEST" is for an update, or a reconfirmation of the "VPOLL" 1362 calendar component. 1364 For the "REQUEST" method only a single iCalendar object is permitted. 1366 This method type is an iCalendar object that conforms to the 1367 following property constraints: 1369 +=================+==========+=====================================+ 1370 | Component/ | Presence | Comment | 1371 | Property | | | 1372 +=================+==========+=====================================+ 1373 | METHOD | 1 | MUST be REQUEST. | 1374 +-----------------+----------+-------------------------------------+ 1375 | VPOLL | 1 | | 1376 +-----------------+----------+-------------------------------------+ 1377 | PARTICIPANT | 1+ | Identified as voters with the | 1378 | | | PARTICIPANT-TYPE=VOTER | 1379 +-----------------+----------+-------------------------------------+ 1380 | DTSTAMP | 1 | | 1381 +-----------------+----------+-------------------------------------+ 1382 | DTSTART | 0 or 1 | If present defines the start of the | 1383 | | | poll. Otherwise the poll starts | 1384 | | | when it is created and distributed. | 1385 +-----------------+----------+-------------------------------------+ 1386 | ORGANIZER | 1 | | 1387 +-----------------+----------+-------------------------------------+ 1388 | SEQUENCE | 0 or 1 | MUST be present if value is greater | 1389 | | | than 0; MAY be present if 0. | 1390 +-----------------+----------+-------------------------------------+ 1391 | SUMMARY | 1 | Can be null. | 1392 +-----------------+----------+-------------------------------------+ 1393 | UID | 1 | | 1394 +-----------------+----------+-------------------------------------+ 1395 | ACCEPT-RESPONSE | 0 or 1 | | 1396 +-----------------+----------+-------------------------------------+ 1397 | ATTACH | 0+ | | 1398 +-----------------+----------+-------------------------------------+ 1399 | CATEGORIES | 0+ | | 1400 +-----------------+----------+-------------------------------------+ 1401 | CLASS | 0 or 1 | | 1402 +-----------------+----------+-------------------------------------+ 1403 | COMMENT | 0+ | | 1404 +-----------------+----------+-------------------------------------+ 1405 | COMPLETED | 0 or 1 | | 1406 +-----------------+----------+-------------------------------------+ 1407 | CONTACT | 0+ | | 1408 +-----------------+----------+-------------------------------------+ 1409 | CREATED | 0 or 1 | | 1410 +-----------------+----------+-------------------------------------+ 1411 | DESCRIPTION | 0 or 1 | Can be null. | 1412 +-----------------+----------+-------------------------------------+ 1413 | DTEND | 0 or 1 | If present, DURATION MUST NOT be | 1414 | | | present. | 1415 +-----------------+----------+-------------------------------------+ 1416 | DURATION | 0 or 1 | If present, DTEND MUST NOT be | 1417 | | | present. | 1418 +-----------------+----------+-------------------------------------+ 1419 | GEO | 0 or 1 | | 1420 +-----------------+----------+-------------------------------------+ 1421 | LAST-MODIFIED | 0 or 1 | | 1422 +-----------------+----------+-------------------------------------+ 1423 | LOCATION | 0 or 1 | | 1424 +-----------------+----------+-------------------------------------+ 1425 | POLL-ITEM-ID | 0 | | 1426 +-----------------+----------+-------------------------------------+ 1427 | POLL-MODE | 0 or 1 | | 1428 +-----------------+----------+-------------------------------------+ 1429 | POLL-PROPERTIES | 0 or 1 | | 1430 +-----------------+----------+-------------------------------------+ 1431 | PRIORITY | 0 or 1 | | 1432 +-----------------+----------+-------------------------------------+ 1433 | RELATED-TO | 0+ | | 1434 +-----------------+----------+-------------------------------------+ 1435 | REQUEST-STATUS | 0 | | 1436 +-----------------+----------+-------------------------------------+ 1437 | RESOURCES | 0+ | | 1438 +-----------------+----------+-------------------------------------+ 1439 | STATUS | 0 or 1 | MAY be one of COMPLETED/CONFIRMED/ | 1440 | | | CANCELLED. | 1441 +-----------------+----------+-------------------------------------+ 1442 | TRANSP | 0 or 1 | | 1443 +-----------------+----------+-------------------------------------+ 1444 | URL | 0 or 1 | | 1445 +-----------------+----------+-------------------------------------+ 1446 | IANA-PROPERTY | 0+ | | 1447 +-----------------+----------+-------------------------------------+ 1448 | X-PROPERTY | 0+ | | 1449 +-----------------+----------+-------------------------------------+ 1450 | VALARM | 0+ | | 1451 +-----------------+----------+-------------------------------------+ 1452 | VTIMEZONE | 0+ | MUST be present if any date/time | 1453 | | | refers to a timezone. | 1454 +-----------------+----------+-------------------------------------+ 1455 | IANA-COMPONENT | 0+ | | 1456 +-----------------+----------+-------------------------------------+ 1457 | X-COMPONENT | 0+ | | 1458 +-----------------+----------+-------------------------------------+ 1459 | VEVENT | 0+ | Depending upon the poll mode in | 1460 | | | effect there MAY be candidate | 1461 | | | components included in the poll | 1462 | | | component. | 1463 +-----------------+----------+-------------------------------------+ 1464 | VFREEBUSY | 0 | | 1465 +-----------------+----------+-------------------------------------+ 1466 | VJOURNAL | 0+ | Depending upon the poll mode in | 1467 | | | effect there MAY be candidate | 1468 | | | components included in the poll | 1469 | | | component. | 1470 +-----------------+----------+-------------------------------------+ 1471 | VTODO | 0+ | Depending upon the poll mode in | 1472 | | | effect there MAY be candidate | 1473 | | | components included in the poll | 1474 | | | component. | 1475 +-----------------+----------+-------------------------------------+ 1477 Table 6: Constraints for a METHOD:REQUEST of a VPOLL 1479 7.3.3.1. Rescheduling a poll 1481 The "REQUEST" method may be used to reschedule a poll, that is force 1482 a revote. A rescheduled poll involves a change to the existing poll 1483 in terms of its time the components being voted on may have changed. 1484 If the recipient CUA of a "REQUEST" method finds that the "UID" 1485 property value already exists on the calendar but that the "SEQUENCE" 1486 (or "DTSTAMP") property value in the "REQUEST" method is greater than 1487 the value for the existing poll, then the "REQUEST" method describes 1488 a rescheduling of the poll. 1490 7.3.3.2. Updating or Reconfirmation of a Poll 1492 The "REQUEST" method may be used to update or reconfirm a poll. An 1493 update to an existing poll does not involve changes to the time or 1494 candidates, and might not involve a change to the location or 1495 description for the poll. If the recipient CUA of a "REQUEST" method 1496 finds that the "UID" property value already exists on the calendar 1497 and that the "SEQUENCE" property value in the "REQUEST" is the same 1498 as the value for the existing poll, then the "REQUEST" method 1500 describes an update of the poll details, but not a rescheduling of 1501 the POLL. 1503 The update "REQUEST" method is the appropriate response to a 1504 "REFRESH" method sent from a "Voter" to the "Organizer" of a poll. 1506 The "Organizer" of a poll may also send unsolicited "REQUEST" 1507 methods. The unsolicited "REQUEST" methods may be used to update the 1508 details of the poll without rescheduling it, to update the "RESPONSE" 1509 parameter of "Voters", or to reconfirm the poll. 1511 7.3.3.3. Confirmation of a Poll 1513 The "REQUEST" method may be used to confirm a poll, that is announce 1514 the winner in BASIC mode. The STATUS MUST be set to CONFIRMED and 1515 for BASIC mode a VPOLL POLL-WINNER property must be provided with the 1516 poll-id of the winning component. 1518 7.3.3.4. Closing a Poll 1520 The "REQUEST" method may be used to close a poll, that is indicate 1521 voting is completed. The STATUS MUST be set to COMPLETED. 1523 7.3.3.5. Delegating a Poll to Another CU 1525 Some calendar and scheduling systems allow "Voters" to delegate the 1526 vote to another "Calendar User". iTIP supports this concept using the 1527 following workflow. Any "Voter" may delegate their right to vote in 1528 a poll to another CU. The implication is that the delegate 1529 participates in lieu of the original "Voter", NOT in addition to the 1530 "Voter". The delegator MUST notify the "Organizer" of this action 1531 using the steps outlined below. Implementations may support or 1532 restrict delegation as they see fit. For instance, some 1533 implementations may restrict a delegate from delegating a "REQUEST" 1534 to another CU. 1536 The "Delegator" of a poll forwards the existing "REQUEST" to the 1537 "Delegate". The "REQUEST" method MUST include a "Voter" property 1538 with the calendar address of the "Delegate". The "Delegator" MUST 1539 also send a "REPLY" method to the "Organizer" with the "Delegator's" 1540 "Voter" property "DELEGATED-TO" parameter set to the calendar address 1541 of the "Delegate". Also, a new "Voter" property for the "Delegate" 1542 MUST be included and must specify the calendar user address set in 1543 the "DELEGATED-TO" parameter, as above. 1545 In response to the request, the "Delegate" MUST send a "REPLY" method 1546 to the "Organizer", and optionally to the "Delegator". The "REPLY" 1548 method SHOULD include the "Voter" property with the "DELEGATED-FROM" 1549 parameter value of the "Delegator's" calendar address. 1551 The "Delegator" may continue to receive updates to the poll even 1552 though they will not be attending. This is accomplished by the 1553 "Delegator" setting their "role" attribute to "NON-PARTICIPANT" in 1554 the "REPLY" to the "Organizer". 1556 7.3.3.6. Changing the Organizer 1558 The situation may arise where the "Organizer" of a "VPOLL" is no 1559 longer able to perform the "Organizer" role and abdicates without 1560 passing on the "Organizer" role to someone else. When this occurs, 1561 the "Voters" of the "VPOLL" may use out-of-band mechanisms to 1562 communicate the situation and agree upon a new "Organizer". The new 1563 "Organizer" should then send out a new "REQUEST" with a modified 1564 version of the "VPOLL" in which the "SEQUENCE" number has been 1565 incremented and the "ORGANIZER" property has been changed to the new 1566 "Organizer". 1568 7.3.3.7. Sending on Behalf of the Organizer 1570 There are a number of scenarios that support the need for a "Calendar 1571 User" to act on behalf of the "Organizer" without explicit role 1572 changing. This might be the case if the CU designated as "Organizer" 1573 is sick or unable to perform duties associated with that function. 1574 In these cases, iTIP supports the notion of one CU acting on behalf 1575 of another. Using the "SENT-BY" parameter, a "Calendar User" could 1576 send an updated "VPOLL" "REQUEST". In the case where one CU sends on 1577 behalf of another CU, the "Voter" responses are still directed back 1578 towards the CU designated as "Organizer". 1580 7.3.3.8. Forwarding to an Uninvited CU 1582 A "Voter" invited to a "VPOLL" calendar component may send the 1583 "VPOLL" calendar component to another new CU not previously 1584 associated with the "VPOLL" calendar component. The current "Voter" 1585 participating in the "VPOLL" calendar component does this by 1586 forwarding the original "REQUEST" method to the new CU. The new CU 1587 can send a "REPLY" to the "Organizer" of the "VPOLL" calendar 1588 component. The reply contains a "Voter" property for the new CU. 1590 The "Organizer" ultimately decides whether or not the new CU becomes 1591 part of the poll and is not obligated to do anything with a "REPLY" 1592 from a new (uninvited) CU. If the "Organizer" does not want the new 1593 CU to be part of the poll, the new "Voter" property is not added to 1594 the "VPOLL" calendar component. The "Organizer" MAY send the CU a 1595 "CANCEL" message to indicate that they will not be added to the poll. 1597 If the "Organizer" decides to add the new CU, the new "Voter" 1598 property is added to the "VPOLL" calendar component. Furthermore, 1599 the "Organizer" is free to change any "Voter" property parameter from 1600 the values supplied by the new CU to something the "Organizer" 1601 considers appropriate. The "Organizer" SHOULD send the new CU a 1602 "REQUEST" message to inform them that they have been added. 1604 When forwarding a "REQUEST" to another CU, the forwarding "Voter" 1605 MUST NOT make changes to the original message. 1607 7.3.3.9. Updating Voter Status 1609 The "Organizer" of an poll may also request updated status from one 1610 or more "Voters". The "Organizer" sends a "REQUEST" method to the 1611 "Voter" and sets the "RSVP=TRUE" property parameter on the 1612 PARTICIPANT CALENDAR-ADDRESS. The "SEQUENCE" property for the poll 1613 is not changed from its previous value. A recipient will determine 1614 that the only change in the "REQUEST" is that their "RSVP" property 1615 parameter indicates a request for updated status. The recipient 1616 SHOULD respond with a "REPLY" method indicating their current vote 1617 with respect to the "REQUEST". 1619 7.3.4. Method: REPLY 1621 The "REPLY" method in a "VPOLL" calendar component is used to respond 1622 (e.g., accept or decline) to a "REQUEST" or to reply to a delegation 1623 "REQUEST". When used to provide a delegation response, the 1624 "Delegator" SHOULD include the calendar address of the "Delegate" on 1625 the "DELEGATED-TO" property parameter of the "Delegator's" "CALENDAR- 1626 ADDRESS" property. The "Delegate" SHOULD include the calendar 1627 address of the "Delegator" on the "DELEGATED-FROM" property parameter 1628 of the "Delegate's" "CALENDAR-ADDRESS" property. 1630 The "REPLY" method is also used when processing of a "REQUEST" fails. 1631 Depending on the value of the "REQUEST-STATUS" property, no action 1632 may have been performed. 1634 The "Organizer" of a poll may receive the "REPLY" method from a CU 1635 not in the original "REQUEST". For example, a "REPLY" may be 1636 received from a "Delegate" to a poll. In addition, the "REPLY" 1637 method may be received from an unknown CU (a "Party Crasher"). This 1638 uninvited "Voter" may be accepted, or the "Organizer" may cancel the 1639 poll for the uninvited "Voter" by sending a "CANCEL" method to the 1640 uninvited "Voter". 1642 A "Voter" MAY include a message to the "Organizer" using the 1643 "COMMENT" property. For example, if the user indicates a low 1644 interest and wants to let the "Organizer" know why, the reason can be 1645 expressed in the "COMMENT" property value. 1647 The "Organizer" may also receive a "REPLY" from one CU on behalf of 1648 another. Like the scenario enumerated above for the "Organizer", 1649 "Voters" may have another CU respond on their behalf. This is done 1650 using the "SENT-BY" parameter. 1652 The optional properties listed in the table below (those listed as 1653 "0+" or "0 or 1") MUST NOT be changed from those of the original 1654 request. (But see comments on VFREEBUSY and VAVAILABILITY) 1656 This method type is an iCalendar object that conforms to the 1657 following property constraints: 1659 +=================+==========+=====================================+ 1660 | Component/ | Presence | Comment | 1661 | Property | | | 1662 +=================+==========+=====================================+ 1663 | METHOD | 1 | MUST be REPLY. | 1664 +-----------------+----------+-------------------------------------+ 1665 | VPOLL | 1+ | All components MUST have the same | 1666 +-----------------+----------+-------------------------------------+ 1667 | | | UID. | 1668 +-----------------+----------+-------------------------------------+ 1669 | PARTICIPANT | 1 | Identifies the Voter replying. | 1670 +-----------------+----------+-------------------------------------+ 1671 | DTSTAMP | 1 | | 1672 +-----------------+----------+-------------------------------------+ 1673 | ORGANIZER | 1 | | 1674 +-----------------+----------+-------------------------------------+ 1675 | UID | 1 | MUST be the UID of the original | 1676 +-----------------+----------+-------------------------------------+ 1677 | | | REQUEST. | 1678 +-----------------+----------+-------------------------------------+ 1679 | SEQUENCE | 0 or 1 | If non-zero, MUST be the sequence | 1680 | | | number of the original REQUEST. | 1681 | | | MAY be present if 0. | 1682 +-----------------+----------+-------------------------------------+ 1683 | ACCEPT-RESPONSE | 0 or 1 | | 1684 +-----------------+----------+-------------------------------------+ 1685 | ATTACH | 0+ | | 1686 +-----------------+----------+-------------------------------------+ 1687 | CATEGORIES | 0+ | | 1688 +-----------------+----------+-------------------------------------+ 1689 | CLASS | 0 or 1 | | 1690 +-----------------+----------+-------------------------------------+ 1691 | COMMENT | 0+ | | 1692 +-----------------+----------+-------------------------------------+ 1693 | COMPLETED | 0 or 1 | | 1694 +-----------------+----------+-------------------------------------+ 1695 | CONTACT | 0+ | | 1696 +-----------------+----------+-------------------------------------+ 1697 | CREATED | 0 or 1 | | 1698 +-----------------+----------+-------------------------------------+ 1699 | DESCRIPTION | 0 or 1 | | 1700 +-----------------+----------+-------------------------------------+ 1701 | DTEND | 0 or 1 | If present, DURATION MUST NOT be | 1702 | | | present. | 1703 +-----------------+----------+-------------------------------------+ 1704 | DTSTART | 0 or 1 | | 1705 +-----------------+----------+-------------------------------------+ 1706 | DURATION | 0 or 1 | If present, DTEND MUST NOT be | 1707 | | | present. | 1708 +-----------------+----------+-------------------------------------+ 1709 | GEO | 0 or 1 | | 1710 +-----------------+----------+-------------------------------------+ 1711 | LAST-MODIFIED | 0 or 1 | | 1712 +-----------------+----------+-------------------------------------+ 1713 | LOCATION | 0 or 1 | | 1714 +-----------------+----------+-------------------------------------+ 1715 | POLL-ITEM-ID | 1+ | One per item being voted on. | 1716 +-----------------+----------+-------------------------------------+ 1717 | POLL-MODE | 0 | | 1718 +-----------------+----------+-------------------------------------+ 1719 | POLL-PROPERTIES | 0 | | 1720 +-----------------+----------+-------------------------------------+ 1721 | PRIORITY | 0 or 1 | | 1722 +-----------------+----------+-------------------------------------+ 1723 | RELATED-TO | 0+ | | 1724 +-----------------+----------+-------------------------------------+ 1725 | RESOURCES | 0+ | | 1726 +-----------------+----------+-------------------------------------+ 1727 | REQUEST-STATUS | 0+ | | 1728 +-----------------+----------+-------------------------------------+ 1729 | STATUS | 0 or 1 | | 1730 +-----------------+----------+-------------------------------------+ 1731 | SUMMARY | 0 or 1 | | 1732 +-----------------+----------+-------------------------------------+ 1733 | TRANSP | 0 or 1 | | 1734 +-----------------+----------+-------------------------------------+ 1735 | URL | 0 or 1 | | 1736 +-----------------+----------+-------------------------------------+ 1737 | IANA-PROPERTY | 0+ | | 1738 +-----------------+----------+-------------------------------------+ 1739 | X-PROPERTY | 0+ | | 1740 +-----------------+----------+-------------------------------------+ 1741 | VALARM | 0 | | 1742 +-----------------+----------+-------------------------------------+ 1743 | VTIMEZONE | 0 or 1 | MUST be present if any date/time | 1744 | | | refers to a timezone. | 1745 +-----------------+----------+-------------------------------------+ 1746 | IANA-COMPONENT | 0+ | | 1747 +-----------------+----------+-------------------------------------+ 1748 | X-COMPONENT | 0+ | | 1749 +-----------------+----------+-------------------------------------+ 1750 | VEVENT | 0 | | 1751 +-----------------+----------+-------------------------------------+ 1752 | VFREEBUSY | 0 or 1 | A voter may respond with a | 1753 | | | VFREEBUSY component indicating that | 1754 | | | the ORGANIZER may select some other | 1755 | | | time which is not marked as busy. | 1756 +-----------------+----------+-------------------------------------+ 1757 | VAVAILABILITY | 0 | A voter may respond with a | 1758 | | | VAVAILABILITY component indicating | 1759 | | | that the ORGANIZER may select some | 1760 | | | other time which is shown as | 1761 | | | available. | 1762 +-----------------+----------+-------------------------------------+ 1763 | VJOURNAL | 0 | | 1764 +-----------------+----------+-------------------------------------+ 1765 | VTODO | 0 | | 1766 +-----------------+----------+-------------------------------------+ 1768 Table 7: Constraints for a METHOD:REPLY of a VPOLL 1770 7.3.5. Method: CANCEL 1772 The "CANCEL" method in a "VPOLL" calendar component is used to send a 1773 cancellation notice of an existing poll request to the affected 1774 "Voters". The message is sent by the "Organizer" of the poll. 1776 The "Organizer" MUST send a "CANCEL" message to each "Voter" affected 1777 by the cancellation. This can be done using a single "CANCEL" 1778 message for all "Voters" or by using multiple messages with different 1779 subsets of the affected "Voters" in each. 1781 When a "VPOLL" is cancelled, the "SEQUENCE" property value MUST be 1782 incremented as described in Section 7.2.3. 1784 Once a CANCEL message has been sent to all voters no further voting 1785 may take place. The poll is considered closed. 1787 This method type is an iCalendar object that conforms to the 1788 following property constraints: 1790 +=================+==========+==================================+ 1791 | Component/ | Presence | Comment | 1792 | Property | | | 1793 +=================+==========+==================================+ 1794 | METHOD | 1 | MUST be CANCEL. | 1795 +-----------------+----------+----------------------------------+ 1796 | VPOLL | 1+ | All must have the same UID. | 1797 +-----------------+----------+----------------------------------+ 1798 | PARTICIPANT | 0+ | MUST include some or all Voters | 1799 | | | being removed from the poll. | 1800 | | | MUST include some or all Voters | 1801 | | | if the entire poll is cancelled. | 1802 +-----------------+----------+----------------------------------+ 1803 | UID | 1 | MUST be the UID of the original | 1804 | | | REQUEST. | 1805 +-----------------+----------+----------------------------------+ 1806 | DTSTAMP | 1 | | 1807 +-----------------+----------+----------------------------------+ 1808 | ORGANIZER | 1 | | 1809 +-----------------+----------+----------------------------------+ 1810 | SEQUENCE | 1 | | 1811 +-----------------+----------+----------------------------------+ 1812 | ATTACH | 0+ | | 1813 +-----------------+----------+----------------------------------+ 1814 | ACCEPT-RESPONSE | 0 | | 1815 +-----------------+----------+----------------------------------+ 1816 | COMMENT | 0+ | | 1817 +-----------------+----------+----------------------------------+ 1818 | COMPLETED | 0 or 1 | | 1819 +-----------------+----------+----------------------------------+ 1820 | CATEGORIES | 0+ | | 1821 +-----------------+----------+----------------------------------+ 1822 | CLASS | 0 or 1 | | 1823 +-----------------+----------+----------------------------------+ 1824 | CONTACT | 0+ | | 1825 +-----------------+----------+----------------------------------+ 1826 | CREATED | 0 or 1 | | 1827 +-----------------+----------+----------------------------------+ 1828 | DESCRIPTION | 0 or 1 | | 1829 +-----------------+----------+----------------------------------+ 1830 | DTEND | 0 or 1 | If present, DURATION MUST NOT be | 1831 | | | present. | 1832 +-----------------+----------+----------------------------------+ 1833 | DTSTART | 0 or 1 | | 1834 +-----------------+----------+----------------------------------+ 1835 | DURATION | 0 or 1 | If present, DTEND MUST NOT be | 1836 | | | present. | 1837 +-----------------+----------+----------------------------------+ 1838 | GEO | 0 or 1 | | 1839 +-----------------+----------+----------------------------------+ 1840 | LAST-MODIFIED | 0 or 1 | | 1841 +-----------------+----------+----------------------------------+ 1842 | LOCATION | 0 or 1 | | 1843 +-----------------+----------+----------------------------------+ 1844 | POLL-ITEM-ID | 0 | | 1845 +-----------------+----------+----------------------------------+ 1846 | POLL-MODE | 0 | | 1847 +-----------------+----------+----------------------------------+ 1848 | POLL-PROPERTIES | 0 | | 1849 +-----------------+----------+----------------------------------+ 1850 | PRIORITY | 0 or 1 | | 1851 +-----------------+----------+----------------------------------+ 1852 | RELATED-TO | 0+ | | 1853 +-----------------+----------+----------------------------------+ 1854 | RESOURCES | 0+ | | 1855 +-----------------+----------+----------------------------------+ 1856 | STATUS | 0 or 1 | MUST be set to CANCELLED to | 1857 | | | cancel the entire event. If | 1858 | | | uninviting specific Attendees, | 1859 | | | then MUST NOT be included. | 1860 +-----------------+----------+----------------------------------+ 1861 | SUMMARY | 0 or 1 | | 1862 +-----------------+----------+----------------------------------+ 1863 | TRANSP | 0 or 1 | | 1864 +-----------------+----------+----------------------------------+ 1865 | URL | 0 or 1 | | 1866 +-----------------+----------+----------------------------------+ 1867 | IANA-PROPERTY | 0+ | | 1868 +-----------------+----------+----------------------------------+ 1869 | X-PROPERTY | 0+ | | 1870 +-----------------+----------+----------------------------------+ 1871 | REQUEST-STATUS | 0 | | 1872 +-----------------+----------+----------------------------------+ 1873 | VALARM | 0 | | 1874 +-----------------+----------+----------------------------------+ 1875 | VTIMEZONE | 0+ | MUST be present if any date/time | 1876 | | | refers to a timezone. | 1877 +-----------------+----------+----------------------------------+ 1878 | IANA-COMPONENT | 0+ | | 1879 +-----------------+----------+----------------------------------+ 1880 | X-COMPONENT | 0+ | | 1881 +-----------------+----------+----------------------------------+ 1882 | VTODO | 0 | | 1883 +-----------------+----------+----------------------------------+ 1884 | VJOURNAL | 0 | | 1885 +-----------------+----------+----------------------------------+ 1886 | VEVENT | 0 | | 1887 +-----------------+----------+----------------------------------+ 1888 | VFREEBUSY | 0 | | 1889 +-----------------+----------+----------------------------------+ 1891 Table 8: Constraints for a METHOD:CANCEL of a VPOLL 1893 7.3.6. Method: REFRESH 1895 The "REFRESH" method in a "VPOLL" calendar component is used by 1896 "Voters" of an existing event to request an updated description from 1897 the poll "Organizer". The "REFRESH" method must specify the "UID" 1898 property of the poll to update. The "Organizer" responds with the 1899 latest description and version of the poll. 1901 This method type is an iCalendar object that conforms to the 1902 following property constraints: 1904 +====================+==========+============================+ 1905 | Component/Property | Presence | Comment | 1906 +====================+==========+============================+ 1907 | METHOD | 1 | MUST be REFRESH. | 1908 +--------------------+----------+----------------------------+ 1909 | VPOLL | 1 | | 1910 +--------------------+----------+----------------------------+ 1911 | PARTICIPANT | 1 | MUST identify the | 1912 | | | requester as a voter. | 1913 +--------------------+----------+----------------------------+ 1914 | DTSTAMP | 1 | | 1915 +--------------------+----------+----------------------------+ 1916 | ORGANIZER | 1 | | 1917 +--------------------+----------+----------------------------+ 1918 | UID | 1 | MUST be the UID associated | 1919 | | | with original REQUEST. | 1920 +--------------------+----------+----------------------------+ 1921 | COMMENT | 0+ | | 1922 +--------------------+----------+----------------------------+ 1923 | COMPLETED | 0 | | 1924 +--------------------+----------+----------------------------+ 1925 | IANA-PROPERTY | 0+ | | 1926 +--------------------+----------+----------------------------+ 1927 | X-PROPERTY | 0+ | | 1928 +--------------------+----------+----------------------------+ 1929 | ACCEPT-RESPONSE | 0 | | 1930 +--------------------+----------+----------------------------+ 1931 | ATTACH | 0 | | 1932 +--------------------+----------+----------------------------+ 1933 | CATEGORIES | 0 | | 1934 +--------------------+----------+----------------------------+ 1935 | CLASS | 0 | | 1936 +--------------------+----------+----------------------------+ 1937 | CONTACT | 0 | | 1938 +--------------------+----------+----------------------------+ 1939 | CREATED | 0 | | 1940 +--------------------+----------+----------------------------+ 1941 | DESCRIPTION | 0 | | 1942 +--------------------+----------+----------------------------+ 1943 | DTEND | 0 | | 1944 +--------------------+----------+----------------------------+ 1945 | DTSTART | 0 | | 1946 +--------------------+----------+----------------------------+ 1947 | DURATION | 0 | | 1948 +--------------------+----------+----------------------------+ 1949 | GEO | 0 | | 1950 +--------------------+----------+----------------------------+ 1951 | LAST-MODIFIED | 0 | | 1952 +--------------------+----------+----------------------------+ 1953 | LOCATION | 0 | | 1954 +--------------------+----------+----------------------------+ 1955 | POLL-ITEM-ID | 0 | | 1956 +--------------------+----------+----------------------------+ 1957 | POLL-MODE | 0 | | 1958 +--------------------+----------+----------------------------+ 1959 | POLL-PROPERTIES | 0 | | 1960 +--------------------+----------+----------------------------+ 1961 | PRIORITY | 0 | | 1962 +--------------------+----------+----------------------------+ 1963 | RELATED-TO | 0 | | 1964 +--------------------+----------+----------------------------+ 1965 | REQUEST-STATUS | 0 | | 1966 +--------------------+----------+----------------------------+ 1967 | RESOURCES | 0 | | 1968 +--------------------+----------+----------------------------+ 1969 | SEQUENCE | 0 | | 1970 +--------------------+----------+----------------------------+ 1971 | STATUS | 0 | | 1972 +--------------------+----------+----------------------------+ 1973 | SUMMARY | 0 | | 1974 +--------------------+----------+----------------------------+ 1975 | URL | 0 | | 1976 +--------------------+----------+----------------------------+ 1977 | VALARM | 0 | | 1978 +--------------------+----------+----------------------------+ 1979 | VTIMEZONE | 0+ | | 1980 +--------------------+----------+----------------------------+ 1981 | IANA-COMPONENT | 0+ | | 1982 +--------------------+----------+----------------------------+ 1983 | X-COMPONENT | 0+ | | 1984 +--------------------+----------+----------------------------+ 1985 | VTODO | 0 | | 1986 +--------------------+----------+----------------------------+ 1987 | VJOURNAL | 0 | | 1988 +--------------------+----------+----------------------------+ 1989 | VEVENT | 0 | | 1990 +--------------------+----------+----------------------------+ 1991 | VFREEBUSY | 0 | | 1992 +--------------------+----------+----------------------------+ 1994 Table 9: Constraints for a METHOD:REFRESH of a VPOLL 1996 7.3.7. Method: POLLSTATUS 1998 The "POLLSTATUS" method in a "VPOLL" calendar component is used to 1999 inform recipients of the current status of the poll in a compact 2000 manner. The "Organizer" MUST be present in the confirmed poll 2001 component. All "Voters" MUST be present. The selected component(s) 2002 according to the poll mode SHOULD NOT be present in the poll 2003 component. Clients receiving this message may store the confirmed 2004 items in their calendars. 2006 This method type is an iCalendar object that conforms to the 2007 following property constraints: 2009 +=================+==========+=====================================+ 2010 | Component/ | Presence | Comment | 2011 | Property | | | 2012 +=================+==========+=====================================+ 2013 | METHOD | 1 | MUST equal POLLSTATUS. | 2014 +-----------------+----------+-------------------------------------+ 2015 | VPOLL | 1+ | | 2016 +-----------------+----------+-------------------------------------+ 2017 | PARTICIPANT | 1+ | The voters containing their current | 2018 | | | vote | 2019 +-----------------+----------+-------------------------------------+ 2020 | COMPLETED | 0 or 1 | Only present for a completed poll | 2021 +-----------------+----------+-------------------------------------+ 2022 | DTSTAMP | 1 | | 2023 +-----------------+----------+-------------------------------------+ 2024 | DTSTART | 0 or 1 | | 2025 +-----------------+----------+-------------------------------------+ 2026 | ORGANIZER | 1 | | 2027 +-----------------+----------+-------------------------------------+ 2028 | SUMMARY | 1 | Can be null. | 2029 +-----------------+----------+-------------------------------------+ 2030 | UID | 1 | | 2031 +-----------------+----------+-------------------------------------+ 2032 | SEQUENCE | 0 or 1 | MUST be present if value is greater | 2033 | | | than 0; MAY be present if 0. | 2034 +-----------------+----------+-------------------------------------+ 2035 | ACCEPT-RESPONSE | 0 | | 2036 +-----------------+----------+-------------------------------------+ 2037 | ATTACH | 0 | | 2038 +-----------------+----------+-------------------------------------+ 2039 | CATEGORIES | 0 | | 2040 +-----------------+----------+-------------------------------------+ 2041 | CLASS | 0 | | 2042 +-----------------+----------+-------------------------------------+ 2043 | COMMENT | 0+ | | 2044 +-----------------+----------+-------------------------------------+ 2045 | CONTACT | 0 | | 2046 +-----------------+----------+-------------------------------------+ 2047 | CREATED | 0 or 1 | | 2048 +-----------------+----------+-------------------------------------+ 2049 | DESCRIPTION | 0 or 1 | Can be null. | 2050 +-----------------+----------+-------------------------------------+ 2051 | DTEND | 0 or 1 | If present, DURATION MUST NOT be | 2052 | | | present. | 2053 +-----------------+----------+-------------------------------------+ 2054 | DURATION | 0 or 1 | If present, DTEND MUST NOT be | 2055 | | | present. | 2056 +-----------------+----------+-------------------------------------+ 2057 | LAST-MODIFIED | 0 or 1 | | 2058 +-----------------+----------+-------------------------------------+ 2059 | POLL-ITEM-ID | 0 | | 2060 +-----------------+----------+-------------------------------------+ 2061 | POLL-MODE | 0 or 1 | | 2062 +-----------------+----------+-------------------------------------+ 2063 | POLL-PROPERTIES | 0 | | 2064 +-----------------+----------+-------------------------------------+ 2065 | PRIORITY | 0 or 1 | | 2066 +-----------------+----------+-------------------------------------+ 2067 | RELATED-TO | 0+ | | 2068 +-----------------+----------+-------------------------------------+ 2069 | RESOURCES | 0+ | | 2070 +-----------------+----------+-------------------------------------+ 2071 | STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED/ | 2072 | | | CANCELLED. | 2073 +-----------------+----------+-------------------------------------+ 2074 | URL | 0 or 1 | | 2075 +-----------------+----------+-------------------------------------+ 2076 | IANA-PROPERTY | 0+ | | 2077 +-----------------+----------+-------------------------------------+ 2078 | X-PROPERTY | 0+ | | 2079 +-----------------+----------+-------------------------------------+ 2080 | REQUEST-STATUS | 0 | | 2081 +-----------------+----------+-------------------------------------+ 2082 | VALARM | 0+ | | 2083 +-----------------+----------+-------------------------------------+ 2084 | VEVENT | 0 | All candidate components SHOULD NOT | 2085 | | | be present. | 2086 +-----------------+----------+-------------------------------------+ 2087 | VFREEBUSY | 0 | | 2088 +-----------------+----------+-------------------------------------+ 2089 | VJOURNAL | 0 | All candidate components SHOULD NOT | 2090 | | | be present. | 2091 +-----------------+----------+-------------------------------------+ 2092 | VTODO | 0 | All candidate components SHOULD NOT | 2093 | | | be present. | 2094 +-----------------+----------+-------------------------------------+ 2095 | VTIMEZONE | 0+ | MUST be present if any date/time | 2096 | | | refers to a timezone. | 2097 +-----------------+----------+-------------------------------------+ 2098 | IANA-COMPONENT | 0+ | | 2099 +-----------------+----------+-------------------------------------+ 2100 | X-COMPONENT | 0+ | | 2101 +-----------------+----------+-------------------------------------+ 2103 Table 10: Constraints for a METHOD:POLLSTATUS of a VPOLL 2105 8. CalDAV Extensions 2107 This specification extends [RFC4791] in that it defines a new 2108 component and new iCalendar properties to be supported and requires 2109 extra definitions related to time-ranges and reports. 2111 Additionally, it extends [RFC6638] as it a VPOLL component is a 2112 schedulable entity. 2114 8.1. Calendar Collection Properties 2116 This section defines new CalDAV properties for calendar collections. 2118 8.1.1. CALDAV:supported-vpoll-component-sets 2120 Name supported-vpoll-component-sets 2122 Namespace urn:ietf:params:xml:ns:caldav 2123 Purpose Specifies the calendar component types (e.g., VEVENT, VTODO, 2124 etc.) and combination of types that may be included in a VPOLL 2125 component. 2127 Conformance This property MAY be defined on any calendar collection. 2128 If defined, it MUST be protected and SHOULD NOT be returned by a 2129 PROPFIND DAV:allprop request (as defined in [RFC2518]). 2131 Description The CALDAV:supported-vpoll-component-sets property is 2132 used to specify restrictions on the calendar component types that 2133 VPOLL components may contain in a calendar collection. 2135 It also specifies the combination of allowed component types. 2137 Any attempt by the client to store VPOLL components with component 2138 types or combinations of types not listed in this property, if it 2139 exists, MUST result in an error, with the "CALDAV:supported-vpoll- 2140 component-sets" precondition Section 8.2 being violated. Since 2141 this property is protected, it cannot be changed by clients using 2142 a PROPPATCH request. However, clients can initialize the value of 2143 this property when creating a new calendar collection with 2144 MKCALENDAR. In the absence of this property, the server MUST 2145 accept all component types, and the client can assume that all 2146 component types are accepted. 2148 Definition 2150 2153 2154 2157 2158 2159 2160 2161 2162 2164 2165 2166 2167 2168 2170 2171 2172 2173 2175 2176 2177 2178 2179 2181 8.1.2. CALDAV:vpoll-max-items 2183 Name vpoll-max-items 2185 Namespace urn:ietf:params:xml:ns:caldav 2187 Purpose Provides a numeric value indicating the maximum number of 2188 items that may be contained in any instance of a VPOLL calendar 2189 object resource stored in the calendar collection. 2191 Conformance This property MAY be defined on any calendar collection. 2192 If defined, it MUST be protected and SHOULD NOT be returned by a 2193 PROPFIND DAV:allprop request (as defined in [RFC2518]). 2195 Description The CALDAV:vpoll-max-items is used to specify a numeric 2196 value that indicates the maximum number of iCalendar components in 2197 any one instance of a VPOLL calendar object resource stored in a 2198 calendar collection. Any attempt to store a calendar object 2199 resource with more components per instance than this value MUST 2200 result in an error, with the CALDAV: vpoll-max-items precondition 2201 Section 8.2 being violated. In the absence of this property, the 2202 client can assume that the server can handle any number of items 2203 in a VPOLL calendar component. 2205 Definition 2207 2208 PCDATA value: a numeric value (integer greater than zero) 2210 25 2213 8.1.3. CALDAV:vpoll-max-active 2215 Name vpoll-max-active 2217 Namespace urn:ietf:params:xml:ns:caldav 2219 Purpose Provides a numeric value indicating the maximum number of 2220 active vpolls at any one time. 2222 Conformance This property MAY be defined on any calendar collection. 2223 If defined, it MUST be protected and SHOULD NOT be returned by a 2224 PROPFIND DAV:allprop request (as defined in [RFC2518]). 2226 Description The CALDAV:vpoll-max-active is used to specify a numeric 2227 value that indicates the maximum number of active VPOLLs at any 2228 one time. Any attempt to store a new active VPOLL calendar object 2229 resource which results in exceeding this limit MUST result in an 2230 error, with the "CALDAV:vpoll-max-active" precondition Section 8.2 2231 being violated. In the absence of this property, the client can 2232 assume that the server can handle any number of active VPOLLs. 2234 Definition 2236 2237 PCDATA value: a numeric value (integer greater than zero) 2239 25 2242 8.1.4. CALDAV:vpoll-max-voters 2244 Name "vpoll-max-voters" 2246 Namespace "urn:ietf:params:xml:ns:caldav" 2248 Purpose Provides a numeric value indicating the maximum number of 2249 voters for any instance of a VPOLL calendar object resource stored 2250 in the calendar collection. 2252 Conformance This property MAY be defined on any calendar collection. 2253 If defined, it MUST be protected and SHOULD NOT be returned by a 2254 PROPFIND "DAV:allprop" request (as defined in [RFC2518]). 2256 Description The "CALDAV:vpoll-max-voters" is used to specify a 2257 numeric value that indicates the maximum number of voters for any 2258 one instance of a VPOLL calendar object resource stored in a 2259 calendar collection. Any attempt to store a calendar object 2260 resource with more voters per instance than this value MUST result 2261 in an error, with the CALDAV: "vpoll-max-voters" precondition 2262 Section 8.2 being violated. In the absence of this property, the 2263 client can assume that the server can handle any number of voters 2264 in a VPOLL calendar component. 2266 Definition 2268 2269 PCDATA value: a numeric value (integer greater than zero) 2271 25 2274 8.1.5. CalDAV:even-more-properties 2276 8.1.6. Extensions to CalDAV scheduling 2278 This specification extends [RFC6638]. 2280 Each section of Appendix A "Scheduling Privileges Summary" is 2281 extended to include VPOLL. 2283 Any reference to the ATTENDEE property should be read to include the 2284 CALENDAR-ADDRESS property contained in the PARTICIPANT compoents. 2285 That is, for scheduling purposes the CALENDAR-ADDRESS property is 2286 handled in exactly the same manner as the ATTENDEE property. 2288 8.2. Additional Preconditions for PUT, COPY, and MOVE 2290 This specification creates additional Preconditions for PUT, COPY, 2291 and MOVE methods. These preconditions apply when a PUT operation of 2292 a VPOLL calendar object resource into a calendar collection occurs, 2293 or when a COPY or MOVE operation of a calendar object resource into a 2294 calendar collection occurs, or when a COPY or MOVE operation occurs 2295 on a calendar collection. 2297 The new preconditions are: 2299 (CALDAV:supported-vpoll-component-sets) The VPOLL resource submitted 2300 in the PUT request, or targeted by a COPY or MOVE request, MUST 2301 contain a type or combination of calendar component that is 2302 supported in the targeted calendar collection; 2304 (CALDAV:vpoll-max-items) The VPOLL resource submitted in the PUT 2305 request, or targeted by a COPY or MOVE request, MUST have a number 2306 of sub-components (excluding VTIMEZONE) less than or equal to the 2307 value of the "CALDAV:vpoll-max-items" property value Section 8.1.2 2308 on the calendar collection where the resource will be stored; 2310 (CALDAV:vpoll-max-active) The PUT request, or COPY or MOVE request, 2311 MUST not result in the number of active VPOLLs being greater than 2312 the value of the "CALDAV:vpoll-max-active" property value 2313 Section 8.1.3 on the calendar collection where the resource will 2314 be stored; 2316 (CALDAV:vpoll-max-voters) The VPOLL resource submitted in the PUT 2317 request, or targeted by a COPY or MOVE request, MUST have a number 2318 of voters represented by PARTICIPANT components less than or equal 2319 to the value of the "CALDAV:vpoll-max-voters" property value 2320 Section 8.1.4 on the calendar collection where the resource will 2321 be stored; 2323 8.3. CalDAV:calendar-query Report 2325 This allows the retrieval of VPOLLs and their included components. 2326 The query specification allows queries to be directed at the 2327 contained sub-components. For VPOLL queries this feature is 2328 disallowed. Time-range queries can only target the vpoll component 2329 itself. 2331 8.3.1. Example: Partial Retrieval of VPOLL 2333 In this example, the client requests the server to return specific 2334 components and properties of the VPOLL components that overlap the 2335 time range from December 4, 2012, at 00:00:00 A.M. UTC to December 2336 5, 2012, at 00:00:00 A.M. UTC. In addition, the "DAV:getetag" 2337 property is also requested and returned as part of the response. 2338 Note that due to the CALDAV: calendar-data element restrictions, the 2339 DTSTAMP property in VPOLL components has not been returned, and the 2340 only property returned in the VCALENDAR object is VERSION. 2342 >> Request << 2344 REPORT /cyrus/work/ HTTP/1.1 2345 Host: cal.example.com 2346 Depth: 1 2347 Content-Type: application/xml; charset="utf-8" 2348 Content-Length: xxxx 2350 2351 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2366 2367 2368 2369 2370 2371 2372 2374 2375 2376 2377 2378 >> Response << 2380 HTTP/1.1 207 Multi-Status 2381 Date: Sat, 11 Nov 2012 09:32:12 GMT 2382 Content-Type: application/xml; charset="utf-8" 2383 Content-Length: xxxx 2385 2386 2388 2389 http://cal.example.com/cyrus/work/poll2.ics 2390 2391 2392 "fffff-abcd2" 2393 BEGIN:VCALENDAR 2394 VERSION:2.0 2395 BEGIN:VPOLL 2396 DTSTART;TZID=US/Eastern:20121202T120000 2397 DURATION:PT4D 2398 SUMMARY:Poll #2 2399 UID:00959BC664CA650E933C892C@example.com 2400 END:VPOLL 2401 END:VCALENDAR 2402 2403 2404 HTTP/1.1 200 OK 2405 2406 2407 2408 http://cal.example.com/cyrus/work/poll3.ics 2409 2410 2411 "fffff-abcd3" 2412 BEGIN:VCALENDAR 2414 VERSION:2.0 2415 PRODID:-//Example Corp.//CalDAV Client//EN 2416 BEGIN:VPOLL 2417 DTSTART;TZID=US/Eastern:20121204T100000 2418 DURATION:PT4D 2419 SUMMARY:Poll #3 2420 UID:DC6C50A017428C5216A2F1CD@example.com 2421 END:VPOLL 2422 END:VCALENDAR 2423 2424 2425 HTTP/1.1 200 OK 2427 2428 2429 2431 8.4. CalDAV time ranges 2433 "CALDAV:time-range XML Element" in [RFC4791] describes how to specify 2434 time ranges to limit the set of calendar components returned by the 2435 server. This specification extends [RFC4791] to describe the meaning 2436 of time ranges for VPOLL 2438 A VPOLL component is said to overlap a given time range if the 2439 condition for the corresponding component state specified in the 2440 table below is satisfied. The conditions depend on the presence of 2441 the DTSTART, DURATION, DTEND, COMPLETED and CREATED properties in the 2442 VPOLL component. Note that, as specified above, the DTEND value MUST 2443 be a DATE-TIME value equal to or after the DTSTART value if 2444 specified. 2446 +-------------------------------------------------------------------+ 2447 | VPOLL has the DTSTART property? | 2448 | +---------------------------------------------------------------+ 2449 | | VPOLL has the DURATION property? | 2450 | | +-----------------------------------------------------------+ 2451 | | | VPOLL has the DTEND property? | 2452 | | | +-------------------------------------------------------+ 2453 | | | | VPOLL has the COMPLETED property? | 2454 | | | | +---------------------------------------------------+ 2455 | | | | | VPOLL has the CREATED property? | 2456 | | | | | +-----------------------------------------------+ 2457 | | | | | | Condition to evaluate | 2458 +---+---+---+---+---+-----------------------------------------------+ 2459 | Y | Y | N | * | * | (start <= DTSTART+DURATION) AND | 2460 | | | | | | ((end > DTSTART) OR | 2461 | | | | | | (end >= DTSTART+DURATION)) | 2462 +---+---+---+---+---+-----------------------------------------------+ 2463 | Y | N | Y | * | * | ((start < DTEND) OR (start <= DTSTART)) | 2464 | | | | | | AND | 2465 | | | | | | ((end > DTSTART) OR (end >= DTEND)) | 2466 +---+---+---+---+---+-----------------------------------------------+ 2467 | Y | N | N | * | * | (start <= DTSTART) AND (end > DTSTART) | 2468 +---+---+---+---+---+-----------------------------------------------+ 2469 | N | N | Y | * | * | (start < DTEND) AND (end >= DTEND) | 2470 +---+---+---+---+---+-----------------------------------------------+ 2471 | N | N | N | Y | Y | ((start <= CREATED) OR (start <= COMPLETED))| 2472 | | | | | | AND | 2473 | | | | | | ((end >= CREATED) OR (end >= COMPLETED))| 2474 +---+---+---+---+---+-----------------------------------------------+ 2475 | N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) | 2476 +---+---+---+---+---+-----------------------------------------------+ 2477 | N | N | N | N | Y | (end > CREATED) | 2478 +---+---+---+---+---+-----------------------------------------------+ 2479 | N | N | N | N | N | TRUE | 2480 +---+---+---+---+---+-----------------------------------------------+ 2482 9. Security Considerations 2484 Applications using these property need to be aware of the risks 2485 entailed in using the URIs provided as values. See [RFC3986] for a 2486 discussion of the security considerations relating to URIs. 2488 10. IANA Considerations 2490 10.1. Parameter Registrations 2492 This document defines the following new iCalendar property parameters 2493 to be added to the registry defined in [RFC5545]: 2495 +====================+=========+===============+ 2496 | Property Parameter | Status | Reference | 2497 +====================+=========+===============+ 2498 | REQUIRED | Current | Section 5.4.1 | 2499 +--------------------+---------+---------------+ 2500 | STAY-INFORMED | Current | Section 5.4.2 | 2501 +--------------------+---------+---------------+ 2503 Table 11 2505 10.2. Property Registrations 2507 This document defines the following new iCalendar properties to be 2508 added to the registry defined in [RFC5545]: 2510 +=================+=========+===============+ 2511 | Property | Status | Reference | 2512 +=================+=========+===============+ 2513 | ACCEPT-RESPONSE | Current | Section 5.5.7 | 2514 +-----------------+---------+---------------+ 2515 | POLL-ITEM-ID | Current | Section 5.5.3 | 2516 +-----------------+---------+---------------+ 2517 | POLL-MODE | Current | Section 5.5.4 | 2518 +-----------------+---------+---------------+ 2519 | POLL-PROPERTIES | Current | Section 5.5.5 | 2520 +-----------------+---------+---------------+ 2521 | POLL-WINNER | Current | Section 5.5.6 | 2522 +-----------------+---------+---------------+ 2523 | RESPONSE | Current | Section 5.5.8 | 2524 +-----------------+---------+---------------+ 2526 Table 12 2528 10.3. POLL-MODE Registration Template 2530 A poll mode is defined by completing the following template. 2532 Poll mode name The name of the poll mode. 2534 Purpose The purpose of the poll mode. Give a short but clear 2535 description. 2537 Reference A reference to the RFC in which the poll mode is defined 2539 10.4. POLL-MODE Registrations 2541 This document defines the following registered poll modes. 2543 +===========+=======================================+===========+ 2544 | Poll mode | Purpose | Reference | 2545 | name | | | 2546 +===========+=======================================+===========+ 2547 | BASIC | To provide simple voting for a single | Current | 2548 | | outcome from a number of candidates. | | 2549 +-----------+---------------------------------------+-----------+ 2551 Table 13 2553 11. Normative References 2555 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2556 Requirement Levels", RFC 2119, IETF RFC 2119, 2557 DOI 10.17487/RFC2119, March 1997, 2558 . 2560 [RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S., and D. 2561 Jensen, "HTTP Extensions for Distributed 2562 Authoring — WEBDAV", RFC 2518, IETF RFC 2518, 2563 DOI 10.17487/RFC2518, February 1999, 2564 . 2566 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 2567 Resource Identifier (URI): Generic Syntax", RFC 3986, 2568 IETF RFC 3986, DOI 10.17487/RFC3986, January 2005, 2569 . 2571 [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, 2572 "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, 2573 IETF RFC 4791, DOI 10.17487/RFC4791, March 2007, 2574 . 2576 [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and 2577 Scheduling Core Object Specification (iCalendar)", RFC 2578 5545, IETF RFC 5545, DOI 10.17487/RFC5545, September 2009, 2579 . 2581 [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent 2582 Interoperability Protocol (iTIP)", RFC 5546, IETF RFC 2583 5546, DOI 10.17487/RFC5546, December 2009, 2584 . 2586 [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based 2587 Interoperability Protocol (iMIP)", RFC 6047, IETF RFC 2588 6047, DOI 10.17487/RFC6047, December 2010, 2589 . 2591 [RFC6638] Daboo, C. and B. Desruisseaux, "Scheduling Extensions to 2592 CalDAV", RFC 6638, IETF RFC 6638, DOI 10.17487/RFC6638, 2593 June 2012, . 2595 [I-D.ietf-calext-eventpub-extensions] 2596 Douglass, M., "Event Publishing Extensions to iCalendar", 2597 I-D.ietf-calext-eventpub-extensions, IETF I-D.ietf-calext- 2598 eventpub-extensions, March 2021. 2600 Appendix A. Open issues 2602 public-comment: Not documented and was a parameter on something. 2603 Really sounds like a PARTICIPANT or VOTE property 2605 Notifications: Need to do a section on what Notifications to support. 2606 A. VPOLL is about to end and you haven't voted on it yet. Instead 2607 reuse VALARMS to notify the user? 2609 Future: Restarting a confirmed/completed VPOLL What to do with 2610 changes to STATUS:CONFIRMED? Allow them or not? What do to that 2611 poll had a winning event or todo. Stress VPOLL UID MUST be unique 2612 Changing status back from CONFIRMED MUST adjust status of any events 2613 booked as a result of confirmation. MUST winning event be cancelled 2614 for POLL-MODE basic? No - voter has indicated now unable to attend - 2615 want to revote 2617 Future: Voting on a confirmed/completed VPOLL Can a voter vote after 2618 completion? May be unable to attend and wants to indicate. Requires 2619 retention of VPOLL retention period Removed status 2621 ORGANIZER/ATTENDEE validity Can a user create a poll with scheduled 2622 events where that user's isn't the organizer of the poll? So is 2623 there a requirement that the account that poll is on is able to 2624 create each one of the resources in the poll? i.e. I can't create a 2625 poll with a set of events where I am just the attendee of the events. 2626 Are there any other restrictions for components in a VPOLL? Add to 2627 security consideration 2629 Update to existing event after poll confirm When voting on existing 2630 event - winning properties ONLY are merged in to the real event. 2632 Need to write down what isn't valid in a VPOLL a. Can't change POLL- 2633 MODE 2635 Guide for ATTENDEE roles chair, NON-PARTICIPANT etc 2636 ? - some iTip notes On confirm - send itip if appropriate (PUBLISH) - 2637 all non-participating - shared - feeds Organizer can specify where 2638 result is? Confirm can specify that itip is sent - ITIP / NONE - 2639 parameter ? on POLL-WINNER 2641 Need to add example of freebusy in response 2643 BEGIN:VCALENDAR 2644 VERSION:2.0 2645 PRODID:-//BedeworkCaldavTest//BedeworkCaldavTest 2646 METHOD: REPLY 2647 BEGIN:VPOLL 2648 ORGANIZER:mailto:douglm@mysite.edu 2649 BEGIN:PARTICIPANT 2650 PARTICIPANT-TYPE: VOTER 2651 CALENDAR-ADDRESS:mailto:eric@example.com 2652 UID:sched01-1234567890 2653 DTSTAMP:20120101T010000Z 2654 SEQUENCE:0 2655 SUMMARY:What to do this week 2656 BEGIN:VFREEBUSY 2657 ....... 2658 END:VFREEBUSY 2659 END:PARTICIPANT 2660 END:VPOLL 2661 END:VCALENDAR 2663 Appendix B. Change log 2665 Calext V01: 2019-10-17 MD Replace VVOTER and VOTER with PARTICIPANT. 2667 Calext V00: 2019-05-17 MD First calext version. Moved source to 2668 metanorma. No changes to specification. 2670 V03: 2014-10-28 MD 2671 * Add VVOTER and VOTE components. 2673 * Add RESPONSE property. 2675 * Remove RESPONSE parameter from VOTER. 2677 V03: 2014-05-12 MD 2678 * Add reply-url property and required parameter. 2680 * Fix ACCEPT-RESPONSE definition. 2682 V02: 2014-05-12 MD 2683 * Typos fixed, clarifications made. 2685 * Removed spurious COMMENT param. Switched some to PUBLIC- 2686 COMMENT 2688 * Changed STAY-INFORMED to remove boolean value type and state 2689 explicit TRUE/FALSE values. 2691 * iTip: Allow VPOLL DTSTART to be optional and allow 2692 VAVAILABILITY as subcomponent 2694 * iTip: fix broken table cells 2696 * Add POLL-PROPERTIES, POLL-WINNER to 5545 extensions table 2698 * Added Caldav scheduling section 2700 V01: 2013-08-07 MD 2701 * Removed method CONFIRM 2703 * Removed pollitemid from VPOLL abnf. Added text for pollwinner 2705 * Added POLL-WINNER and verbiage 2707 * Added STATUS values 2709 * Added RELTYPE=POLL 2711 * Added supported-vpoll-component-sets 2713 * Added CalDAV related parameters to VOTER 2715 * Removed bad CalDAV query example. State that queries cannot 2716 target the sub-components. 2718 Initial version: 2012-11-02 MD 2720 Authors' Addresses 2722 Eric York 2724 Email: eric.york@gmail.com 2726 Michael Douglass 2728 Email: mikeadouglass@gmail.com