<?xml version="1.0"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-calext-vpoll-05" category="std" ipr="trust200902" submissionType="IETF" xml:lang="en" version="3" >
  <front>
    <title abbrev="VPOLL">VPOLL: Consensus Scheduling Component for iCalendar</title>
    <seriesInfo value="draft-ietf-calext-vpoll-05" status="Standard" stream="IETF" name="Internet-Draft" asciiName="Internet-Draft"></seriesInfo>
    <seriesInfo name="" value="" status="full-standard"></seriesInfo>
    <author fullname="Eric York">
      <address>
        <postal></postal>
        <email>eric.york@gmail.com</email>
        <uri></uri>
      </address>
    </author>
    <author fullname="Michael Douglass">
      <address>
        <postal></postal>
        <email>mdouglass@bedework.com</email>
        <uri></uri>
      </address>
    </author>
    <area>Internet</area>
    <abstract anchor="_aa9248ea-b6ce-4395-b9c0-d411362698e7">

<t anchor="_a9a0ca3e-5e20-48e7-99e0-10068ed59799">This specification introduces a new RFC5545 iCalendar component which allows
for consensus scheduling, that is, voting on a number of alternative
meeting or task alternatives.</t>
</abstract>
  </front>
  <middle>
    <section anchor="acknowledgements"><name>Acknowledgements</name>

<t anchor="_5cc38a1f-b49f-4299-98d7-461b47bf88c5">The authors would like to thank the members of the Calendaring and Scheduling Consortium (CalConnect) for contributing their ideas and support, in particular Cyrus Daboo for his help with the specification and implementations.</t>
</section>
    <section anchor="_introduction"><name>Introduction</name><t anchor="_f94fdda3-9a2a-4a2b-b2bc-f5d8f9eaa313">The currently existing approach to agreeing on meeting times using
iTip <relref target="RFC5546" section="" relative=""></relref> and/or iMip <relref target="RFC6047" section="" relative=""></relref> has some significant failings.
There is no useful bargaining or suggestion mechanism in iTip, only
the ability for a potential attendee to accept or refuse or to
counter with a time of their own choosing.</t>
<t anchor="_93e1b592-be5a-47f2-9141-abd1b1d97fbc">Part of the problem is that for many potential attendees, their
freebusy is not an accurate representation of their availability.  In
fact, when trying to schedule conference calls across different
organizations, attendees may not be allowed to provide freebusy
information or availability as this may reveal something of the
organizations internal activities.</t>
<t anchor="_0e4bdbce-563a-410c-a414-deb9509259f4">A number of studies have shown that large amounts of time are spent
trying to come to an agreement - up to and beyond 20 working hours
per meeting.  Many organizers fall back on other approaches such as
phone calls and email to determine a suitable time.</t>
<t anchor="_a832ddaf-341c-4cdd-8afb-c2f3bffc18fd">Online services have appeared as a result and these allow
participants to vote on a number of alternatives without revealing or
using freebusy or availability.  When agreement is reached a
conventional scheduling message may be sent to the attendees.  This
approach appears to reach consensus fairly rapidly.  Peer pressure
may have some bearing on this as all voters are usually able to see
the current state of the voting and may adjust their own meeting
schedules to make themselves available for a popular choice.</t>
<t anchor="_39dd96b2-04f7-4d0f-b1f3-06d63ca68ced">The component and properties defined in this specification provide a
standardized structure for this process and allow calendar clients
and servers and web based services to interact.</t>
<t anchor="_c631be14-bd97-46ea-bc42-55af0c73f815">These structures also have uses beyond the relatively simple needs of
most meeting organizers.  The process of coming to consensus can also
be viewed as a bidding process.</t></section>
    <section anchor="terms"><name>Terms and definitions</name><t anchor="_8e697c77-e60a-4409-b33b-980f43fddefa">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and  "OPTIONAL" in this document are to be interpreted as described in <relref target="RFC2119" section="" relative=""></relref>.</t>
<t anchor="_fa733dc9-e237-4559-aa5c-2238db474b2c">The notation used in this memo to (re-)define iCalendar elements is
the ABNF notation of <relref target="RFC5234" section="" relative=""></relref> as used by <relref target="RFC5545" section="" relative=""></relref>.  Any syntax
elements shown below that are not explicitly defined in this
specification come from iCalendar <relref target="RFC5545" section="" relative=""></relref>.</t>
<t anchor="_35c1eb6a-cc3d-418e-b9f0-cd59e4f54201">Additionally the following terms are used:</t>
<section anchor="term-consensus-scheduling">
<name>consensus scheduling</name>
<t anchor="_17cb4d21-84f5-48ac-9bb0-ad3a6cbd4d69">The process whereby users come to some agreement on meeting
or task alternatives and then book that meeting or task.</t>
</section>
<section anchor="term-active-vpoll">
<name>active Vpoll</name>
<t anchor="_29bdb060-71f5-45d0-9d47-10b2d76b15b0">A VPoll may have a DTSTART, DTEND and DURATION which
may define the start and end of the active voting period</t>
</section>
<section anchor="term-voter">
<name>voter</name>
<t anchor="_f5da8fc5-5a4c-4e5c-87d6-34d1621e9dad">A participant who votes on the alternatives. A voter need not be an attendee of any of the alternatives presented.</t>
</section></section>
    <section anchor="simple-consensus-scheduling"><name>Simple Consensus Scheduling</name><t anchor="_80054410-b99e-40aa-af78-9457b66c4dcf">This specification defines components and properties which can be
used for simple consensus scheduling but also have the generality to
handle more complex cases.  To provide an easy (and for many a
sufficient) introduction to consensus scheduling and VPOLL we will
outline the flow of information for the simple case of voting on a
number of meeting alternatives which differ only in time of the meeting.  In
addition the voters will all be potential attendees.</t>
<t anchor="_616cd639-7cd2-434e-b6d9-1e4ecac8ef8c">This specification not only defines data structures but adds new
iTip methods, one used when consensus has been reached and one to
distribute the current status of the poll.</t>
<t anchor="_33c46e69-57ad-4f14-b739-01b4cc064bdc">This document will
show how a VPOLL object is used to inform voters of the state of a
simple vote on some alternatives.</t>
<section anchor="_the_vpoll_component_an_overview"><name>The VPOLL Component: An Overview</name><t anchor="_fd09d592-8384-44c5-a5f7-500bfb4b64d1">The VPOLL component acts as a wrapper for a number of alternatives to
be voted on, together with some properties and a new component used
to maintain the state of the voting.  For our simple example the
following VPOLL properties and sub-components are either required or
appropriate:</t>
<dl anchor="_1698fca0-09c3-4210-a70c-5642fa99c803"><dt>DTSTAMP</dt><dd>
<t anchor="_b1c719fe-8806-411a-95d9-35d84fcba5a9">The usual <relref target="RFC5545" section="" relative=""></relref> property.</t>
</dd><dt>SEQUENCE</dt><dd>
<t anchor="_9b05f5d5-b055-4531-809b-4f3419c1410e">The usual <relref target="RFC5545" section="" relative=""></relref> property.  See below for SEQUENCE
behavior.</t>
</dd><dt>UID</dt><dd>
<t anchor="_7e5ecc62-2a7e-4c96-a1de-4c2cd8b1ff9e">The usual <relref target="RFC5545" section="" relative=""></relref> property.</t>
</dd><dt>ORGANIZER</dt><dd>
<t anchor="_6773d486-452e-48aa-81ae-20366fbbb205">The usual <relref target="RFC5545" section="" relative=""></relref> property.  In general this need not
be an organizer of any of the alternatives.  In this simple
outline we assume it is the same.</t>
</dd><dt>SUMMARY</dt><dd>
<t anchor="_917d8716-9abc-4870-8687-6f457779154c">The usual <relref target="RFC5545" section="" relative=""></relref> property.  This optional but
recommended property provides the a short title to the poll.</t>
</dd><dt>DESCRIPTION</dt><dd>
<t anchor="_fdb0e771-c264-451f-b4d3-eb85a6366763">The usual <relref target="RFC5545" section="" relative=""></relref> property.  This optional property
provides more details.</t>
</dd><dt>DTEND</dt><dd>
<t anchor="_8842ebd3-2372-49e7-a3f5-310227e6823b">The usual <relref target="RFC5545" section="" relative=""></relref> property.  This optional property
provides a poll closing time and date after which the VPOLL is no
longer active.</t>
</dd><dt>POLL-MODE</dt><dd>
<t anchor="_b508e24b-18c9-4a7e-af04-0626a4f3d4bd">A new property which defines how the votes are used to
obtain a result.  For our use case it will take the value "BASIC"
meaning one event will be chosen from the alternatives.</t>
</dd><dt>POLL-COMPLETION</dt><dd>
<t anchor="_ef8ded3a-c052-46c1-bc9d-ffc5ac3f2eb4">A new property which defines who (server or client)
chooses and/or submits the winning choice.  In our example the
value is "SERVER-SUBMIT" which means the client chooses the winner
but the server will submit the winning choice.</t>
</dd><dt>POLL-PROPERTIES</dt><dd>
<t anchor="_e38bfaed-7998-45aa-8416-f5ead5befcf5">A new property which defines which icalendar
properties are being voted on.  For our use case it will take the
value "DTSTART, LOCATION" meaning only those properties are
significant for voting.  Other properties in the events may differ
but are not considered significant for the voting process.</t>
</dd><dt>PARTICIPANT</dt><dd>
<t anchor="_f6ab2606-7e55-4c5b-a512-52f876b8ed1d">There is one of these components for each voter with
the PARTICIPANT-TYPE set to "VOTER". The
CALENDAR-ADDRESS property identifies the voter and this component
will contain one VOTE component for each item being voted on.</t>
</dd><dt>VOTE</dt><dd>
<t anchor="_80bb44dd-47a1-4bc3-aeb8-df98072e75d7">A new component.  There is one of these for each voter and
choice.  It usually contains at least a POLL-ITEM-ID property to
identify the choice and a RESPONSE property to provide a vote.
For more complex poll modes it may contain other information such
as cost or estimated duration.</t>
</dd><dt>VEVENT</dt><dd>
<t anchor="_55218449-f24e-46dd-92c5-4a8ad2e842c9">In our simple use case there will be multiple VEVENT sub-
components defining the alternatives.  Each will have a different
date and or time for the meeting.</t>
</dd></dl>
<t anchor="_ad831bef-4464-46c5-a5d9-c14b423be85e" keepWithNext="true">EXAMPLE</t><t anchor="_654a7db0-bfb9-42f0-ba3d-5ca92072f095">VPOLL with 3 voters and 3 alternative meetings:</t><sourcecode anchor="_b1a78dbd-29ff-46eb-8a18-09051cf7a9be"><![CDATA[BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example//Example
METHOD:REQUEST
BEGIN:VPOLL
POLL-MODE:BASIC
POLL-COMPLETION:SERVER-SUBMIT
POLL-PROPERTIES:DTSTART,LOCATION
ORGANIZER:mailto:mike@example.com
UID:sched01-1234567890
DTSTAMP:20120101T000000Z
SUMMARY:What to do this week
DTEND:20120101T000000Z
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:cyrus@example.com
END:PARTICIPANT
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:eric@example.com
END:PARTICIPANT
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:mike@example.com
END:PARTICIPANT
BEGIN:VEVENT.......(with a poll-item-id=1)
END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=2)
END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=3)
END:VEVENT
END:VPOLL
END:VCALENDAR]]></sourcecode>
<t anchor="_cb8f125a-6b05-45f4-a48a-0e671e102848">As can be seen in the example above, there is an iTip METHOD property
with the value REQUEST.  The VPOLL object will be distributed to all
the voters, either through iMip or through some VPOLL enabled
service.</t></section>
<section anchor="_the_vpoll_alternative_choices_an_overview"><name>The VPOLL Alternative Choices: An Overview</name><t anchor="_e86fbf2b-e468-4709-829d-698b4a901770">Within the VPOLL component we have the alternatives to vote on.  In
many respects these are standard <relref target="RFC5545" section="" relative=""></relref> components.  For our
simple use case they are all VEVENT components.  In addition to the
usual <relref target="RFC5545" section="" relative=""></relref> properties some extra properties are used for a
VPOLL.</t>
<dl anchor="_7cb3dff6-3b33-42fa-aa9c-f67b64183dce"><dt>POLL-ITEM-ID</dt><dd>
<t anchor="_2c42287c-ed03-4bf6-8742-84f890d018bd">This provides a unique reference to the sub-component
within the VPOLL.  It's value SHOULD be a small integer.</t>
</dd></dl></section>
<section anchor="_vpoll_responses"><name>VPOLL responses</name><t anchor="_441a08d3-6493-4aa7-89f3-af36f5984e89">Upon receipt of a VPOLL REQUEST the voter will reply with a VPOLL
component containing their vote.  In our simple case it will have the
following properties and components:</t>
<dl anchor="_df08646a-3c4e-4eca-8f10-5a381fb938dd"><dt>DTSTAMP</dt><dd>
<t anchor="_1eb1637d-7614-45cf-965c-2e5f63fc4d37">The usual <relref target="RFC5545" section="" relative=""></relref> property.</t>
</dd><dt>SEQUENCE</dt><dd>
<t anchor="_16db9846-cd89-4081-821b-f019f9d6a6d0">The usual <relref target="RFC5545" section="" relative=""></relref> property.  See below for SEQUENCE
behavior.</t>
</dd><dt>UID</dt><dd>
<t anchor="_796daaec-8a24-4e21-b30a-5df955db4af0">Same as the request.</t>
</dd><dt>ORGANIZER</dt><dd>
<t anchor="_2335e488-116a-4cc8-991c-620b75b3152f">Same as the request.</t>
</dd><dt>SUMMARY</dt><dd>
<t anchor="_51aa26cd-fb06-4a11-a575-34eb460e47be">Same as the request.</t>
</dd><dt>PARTICIPANT</dt><dd>
<t anchor="_6fbeec77-b735-41bf-8ff4-f51c9bb20980">One only with a CALENDAR-ADDRESS identifying the voter replying.</t>
</dd><dt>VOTE</dt><dd>
<t anchor="_0dd727bc-eb93-45d6-a49e-645dce61e768">One per item being voted on.</t>
</dd><dt>POLL-ITEM-ID</dt><dd>
<t anchor="_524adf14-1627-45a8-987f-7598130ab6a8">One inside each VOTE component to identify the choice.</t>
</dd><dt>RESPONSE</dt><dd>
<t anchor="_15e47e42-1270-46bd-ac23-6f2aaae3a45b">One inside each VOTE component to specify the vote.</t>
</dd></dl>
<t anchor="_c1e0774f-16c9-4e2f-834d-6bacb0f1a32c">Note that a voter can send a number of REPLYs for each REQUEST sent
by the organizer.  in BASIC mode each REPLY completely replaces the voting record
for that voter for all components being voted on.  In our example, if
Eric responds and votes for items 1 and 2 and then responds again
with a vote for only item 3, the final outcome is one vote on item 3.</t>
<dl anchor="_77f9665c-7c2e-4019-a80e-a7e741ac2dd4"><dt>NOTE</dt><dd>
<t anchor="_1cd6bfd4-0f6f-45c6-af90-dbedfd64a826">This is poll-mode specific behavior.</t>
</dd></dl>
<t anchor="_803102bf-295b-4069-a18c-5c87283c9a64" keepWithNext="true">EXAMPLE</t><t anchor="_d43adecf-1c49-4cac-b068-692d24b2e4a3">REPLY VPOLL from Cyrus:</t><sourcecode anchor="_84996c71-69a0-4859-bb0e-5363b6a4e45f"><![CDATA[BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example//Example
METHOD: REPLY
BEGIN:VPOLL
ORGANIZER:mailto:mike@example.com
UID:sched01-1234567890
DTSTAMP:20120101T010000Z
SUMMARY:What to do this week
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:cyrus@example.com
BEGIN:VOTE
POLL-ITEM-ID:1
RESPONSE:50
COMMENT:Work on iTIP
END:VOTE
BEGIN:VOTE
POLL-ITEM-ID:2
RESPONSE:100
COMMENT:Work on WebDAV
END:VOTE
BEGIN:VOTE
POLL-ITEM-ID:3
RESPONSE:0
END:VOTE
END:PARTICIPANT
END:VPOLL
END:VCALENDAR]]></sourcecode></section>
<section anchor="_vpoll_updates"><name>VPOLL updates</name><t anchor="_f39d048a-f145-494e-becf-994a527fb1a0">When the organizer receives a response from one or more voters the
current state of the poll is sent to all voters.  The new iTip method
POLLSTATUS is used.  The VPOLL can contain a reduced set of
properties but MUST contain DTSTAMP, SEQUENCE (if not 0), UID,
ORGANIZER and one or more PARTICIPANT components each populated with zero or more VOTE components.</t>
<t anchor="_5b7fafa2-ad84-4b53-b4c2-cb1ff6cacfe4" keepWithNext="true">EXAMPLE</t><sourcecode anchor="_54295384-1e3c-4d8c-8f35-2c7fee454a44"><![CDATA[BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example//Example
METHOD: POLLSTATUS
BEGIN:VPOLL
ORGANIZER:mailto:mike@example.com
UID:sched01-1234567890
DTSTAMP:20120101T020000Z
SEQUENCE:0
SUMMARY:What to do this week
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:cyrus@example.com
BEGIN: VOTE
POLL-ITEM-ID:1
RESPONSE:50
COMMENT:Work on iTIP
END:VOTE
BEGIN:VOTE
POLL-ITEM-ID:2
RESPONSE:100
COMMENT:Work on WebDAV
END:VOTE
BEGIN:VOTE
POLL-ITEM-ID:3
RESPONSE:0
END:VOTE
END:PARTICIPANT
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:eric@example.com
BEGIN:VOTE
POLL-ITEM-ID:1
RESPONSE:100
END:VOTE
BEGIN:VOTE
POLL-ITEM-ID:2
RESPONSE:100
END:VOTE
BEGIN:VOTE
POLL-ITEM-ID:3
RESPONSE:0
END:VOTE
END:PARTICIPANT
END:VPOLL
END:VCALENDAR]]></sourcecode></section>
<section anchor="_vpoll_completion"><name>VPOLL Completion</name><t anchor="_e0ec1c6d-3f76-466c-8392-88041d37a00f">After a number of REPLY messages have been received the poll will be
considered complete.  If there is a DTEND on the poll the system may
automatically close the poll, or the organizer may, at any time,
consider the poll complete.  A VPOLL can be completed (and
effectively closed for voting) by sending an iTip REQUEST message
with the VPOLL STATUS property set to COMPLETED.</t>
<t anchor="_60be3444-2543-409d-8bbc-e179afd13fc3">The poll winner is confirmed by sending a final iTip REQUEST message
with the VPOLL STATUS property set to CONFIRMED.  In this case the
VPOLL component contains all the events being voted on along with a
POLL-WINNER property to identify the winning event.  As the POLL-
COMPLETION property is set to SERVER-SUBMIT the server will submit
the winning choice and when it has done so set the STATUS to
"SUBMITTED".</t>
<t anchor="_e567cb08-e0ee-41af-b077-72d426294693" keepWithNext="true">EXAMPLE</t><t anchor="_817bad1e-cbd2-401b-85ea-806864f3363b">VPOLL confirmation:</t><sourcecode anchor="_1f7f1324-1cac-4684-972c-f376dd0cd65d"><![CDATA[BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example//Example
METHOD: REQUEST
BEGIN:VPOLL
ORGANIZER:mailto:douglm@example.com
UID:sched01-1234567890
DTSTAMP:20120101T030000Z
COMPLETED:20120101T030000Z
POLL-COMPLETION:SERVER-SUBMIT
SEQUENCE:0
SUMMARY:What to do this week
STATUS:CONFIRMED
POLL-WINNER:3
BEGIN:VEVENT.......(with a poll-item-id=1)
END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=2)
END:VEVENT
BEGIN:VEVENT.......(with a poll-item-id=3)
END:VEVENT
END:VPOLL
END:VCALENDAR]]></sourcecode></section>
<section anchor="_other_responses"><name>Other Responses</name><t anchor="_d47c83a1-4332-4be1-b248-29c6a42249b2">A voter being asked to choose between a number of ORGANIZER supplied
alternatives may find none of them acceptable or may simply not care.</t>
<t anchor="_55e64b0b-ed3f-41b4-8c02-4187bd64114d">An alternative response, which may be disallowed by the ORGANIZER, is
to send back the respondees availability or freebusy or even one or
more new, alternative choices.</t>
<t anchor="_f5052254-a38e-4f01-ac0b-a9a773432d9e">This is accomplished by responding with a VOTE component which has no
POLL-ITEM-ID property.  In this case it MUST contain some alternative
information.  What form this takes depends on the poll mode in
effect.</t></section></section>
    <section anchor="icalendar-extensions"><name>iCalendar Extensions</name><section anchor="_updated_participant_type_value"><name>Updated Participant Type Value</name><t anchor="_157c6128-4a58-492d-9109-41ff5851c10d">Participant type property values are defined in section 11.2.1. of
<relref target="RFC9073" section="" relative=""></relref>.  This specification updates that type to include the new
participant type VOTER to provide information about the voter and to contain their votes.</t>
<dl anchor="_cc488ead-ee8d-4f53-b156-d919f0d8b091"><dt>Format Definition</dt><dd>
<t anchor="_b2ee6cbb-79b2-440a-9909-6faa94897b2b">This property parameter is redefined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_2bda03f3-5ecd-4dc1-a758-b06f5853e67b" type="abnf"><![CDATA[partvalue       /= "VOTER"]]></sourcecode>

<dl anchor="_2d33e821-47c7-4e0e-99d1-03358ca84c98"><dt>Description</dt><dd>
<t anchor="_b0ef5657-1e3d-4566-bac7-39a81c266888">The new property value indicates that the associated PARTICIPANT component identifies a voter in a VPOLL.</t>
</dd></dl></section>
<section anchor="_updated_relation_type_value"><name>Updated Relation Type Value</name><t anchor="_62bb7ebe-dba0-4d92-b685-49605bf9f3e5">Relationship parameter type values are defined in section 3.2.15. of
<relref target="RFC5545" section="" relative=""></relref>.  This specification updates that type to include the new
relationship value POLL to provide a link to the VPOLL component in
which the current component appears.</t>
<dl anchor="_cbb70c61-a82d-4016-986c-f1ff6495b73c"><dt>Format Definition</dt><dd>
<t anchor="_d7692ac8-e27a-413c-a8c7-c61847b6e507">This property parameter is redefined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_a8d4aacc-51ca-4f66-b8c9-a58b12d65a10" type="abnf"><![CDATA[reltypeparam       /= "RELTYPE" "=" "POLL"
; Property value is a VPOLL uid]]></sourcecode>

<dl anchor="_233831ce-05bf-4c19-9728-c4c471d74a87"><dt>Description</dt><dd>
<t anchor="_c5c004f7-c0e8-46ab-bd3a-5a551ddaf077">This parameter can be specified on a property that
references another related calendar component.  The new parameter
value indicates that the associated property references a VPOLL
component which contains the current component.</t>
</dd></dl></section>
<section anchor="_updated_status_value"><name>Updated Status Value</name><t anchor="_31fa5727-8323-415f-9fcf-2fe088ed4cf7">Status property values are defined in section 3.8.1.11. of <relref target="RFC5545" section="" relative=""></relref>.
This specification updates that type to define valid VPOLL status
values.</t>
<dl anchor="_a72e9c75-a81f-4085-a421-b8a46c1622fd"><dt>Format Definition</dt><dd>
<t anchor="_df70d2aa-96b0-4f7c-a968-82fecd4b0a83">This property parameter is redefined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_8dc904ed-9a24-476b-abe8-22331fdf1402" type="abnf"><![CDATA[statvalue /= statvalue-poll
   ; Status values for "VPOLL".
statvalue-poll = "IN-PROCESS"
          / "COMPLETED"  ; Poll has closed,
                         ; nothing has been chosen yet
          / "CONFIRMED"  ; Poll has closed and
                         ; winning items confirmed
          / "SUBMITTED"  ; The winning item has been
                         ; submitted
          / "CANCELLED"]]></sourcecode>

<dl anchor="_418c3dec-b5af-4270-a2ad-2cf3198676c7"><dt>Description</dt><dd>
<t anchor="_843b330c-28a3-462c-acab-dfbeeefb0a2a">These values allow clients and servers to handle the
choosing and submission of winning choices.</t>
<figure anchor="_cf831a40-0b65-4d99-94ef-ff97eac6e4d5">

<artwork anchor="_1356ce0e-f738-4bb9-891d-a3b1be7a6f37" type="ascii-art"><![CDATA[If the client is choosing and the server submitting then the
client should set the POLL-WINNER property, set the status to
CONFIRMED and save the poll.  When the server submits the winning
choice it will set the status to SUBMITTED.]]></artwork></figure>
</dd></dl></section>
<section anchor="_new_property_parameters"><name>New Property Parameters</name><section anchor="new-prop-para-required"><name>Required</name><dl anchor="_f8bdcf00-15bb-491d-aa09-546755c2f20f"><dt>Parameter name</dt><dd>
<t anchor="_3c519297-1d76-4ebb-8c9a-dc3a830ff487">REQUIRED</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_625f52ed-eeee-4541-9faa-32d056e48c75">To specify whether the associated property is required in
the current context.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_d73e27fd-27c2-4bcb-80df-7fa930e3ba95">This parameter is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_772167f9-a899-479c-919d-245c561e6ff8" type="abnf"><![CDATA[requirededparam = "REQUIRED"  "=" ("TRUE" / "FALSE")
  ; Default is FALSE]]></sourcecode>

<dl anchor="_a6c24382-f7e6-44f4-a403-ed1e0c746151"><dt>Description</dt><dd>
<t anchor="_60cf1e3d-55f6-4a4a-82f6-f5a834719105">This parameter MAY be specified on REPLY-URL and, if
the value is TRUE, indicates the organizer requires all replies to
be made via the specified service rather than iTip replies.</t>
</dd></dl></section>
<section anchor="new-prop-para-stay-informed"><name>Stay-Informed</name><dl anchor="_cb89371f-63fc-4c75-b7c2-b87bec51715b"><dt>Parameter name</dt><dd>
<t anchor="_4ba73b4b-b95a-4cff-99f1-7136c272c235">STAY-INFORMED</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_d6cbbd13-a99a-47ff-a286-65ccec1a86ac">To specify the voter also wants to be added as an ATTENDEE
when the poll is confirmed.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_5b19d342-4447-42be-abc9-523a48d85a72">This parameter is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_3d7c83ea-0b01-4603-9563-0d1ee0099f9e" type="abnf"><![CDATA[stayinformedparam = "STAY-INFORMED"  "=" ("TRUE" / "FALSE")
                  ; Default is FALSE]]></sourcecode>

<dl anchor="_60891e1c-8dc9-467c-a889-e86b1d47ebdb"><dt>Description</dt><dd>
<t anchor="_985eac5d-323f-4563-b425-1e43e3135ac6">This parameter MAY be specified on the CALENDAR-ADDRESS
property in the PARTICIPANT component and, if the
value is TRUE, indicates the voter wishes to be added to the final
choice as a non participant.</t>
</dd></dl></section></section>
<section anchor="_new_properties"><name>New Properties</name><section anchor="new-prop-accept-response"><name>Accept-Response</name><dl anchor="_b0a2e1bd-d9ac-40f8-8a3a-1a606a3f5762"><dt>Property name</dt><dd>
<t anchor="_86ef66ee-f7f6-4090-b057-8e734a16a592">ACCEPT-RESPONSE</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_f10a9959-459a-4ef2-b284-51772ca4bb34">This property is used in VPOLL to indicate the types of
component that may be supplied in a response.</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_6ff5fdd8-0ddc-4b77-bb9a-c075472169b5">Non-standard or iana parameters can be
specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_3e5d705d-0218-46d3-989b-5154789dba60">This property MAY be specified in a VPOLL component.</t>
</dd><dt>Description</dt><dd>
<t anchor="_15b87b8e-7cef-4a1c-a861-288c1e2239a2">When used in a VPOLL this property indicates what
allowable component types may be returned in a reply.  Typically
this would allow a voter to respond with their freebusy or
availability rather than choosing one of the presented
alternatives.<br /></t>
<t anchor="_39c758a2-c1e1-45fb-8b33-5811c1e5248b">If this property is not present voters are only allowed to respond
to the choices in the request.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_83373e92-55b3-4bbd-b528-f4e173ab78ae">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_a0ecb6fb-c221-4e33-9914-934bcfe1f9c9" type="abnf"><![CDATA[acceptresponse = "ACCEPT-RESPONSE" acceptresponseparams ":"
                    iana-token ("," iana-token) CRLF

acceptresponseparams = *(";" other-param)]]></sourcecode>
</section>
<section anchor="new-prop-poll-completion"><name>Poll-Completion</name><dl anchor="_de398e0c-198a-4d0b-b24b-001bf8e54de6"><dt>Property name</dt><dd>
<t anchor="_93320e16-903f-43eb-bec7-a0ea148bab6b">POLL-COMPLETION</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_30fb5b47-fb35-4c7a-b856-e2df06a3ed62">This property is used in VPOLL to indicate whether the
client or server is responsible for choosing and/or submitting the
winner(s).</t>
</dd><dt>Description</dt><dd><t anchor="_e9450314-6a78-4c49-919f-ccb45262f2a6">When a VPOLL is stored on a server which is capable of
handling choosing and submission of winning choices a value of
SERVER indicates that the server should close the poll, choose the
winner and submit whenever it is appropriate to do so.<br /></t><t anchor="_70d37da0-9990-4c5d-81e6-178f896bc4fa">For example, in BASIC poll-mode, reaching the DTEND of the poll
could trigger this server side action.</t>
<t anchor="_9beb1dde-9569-4032-97ed-b6721ff1f076">Server initiated submission requires that the submitted choice
MUST be a valid calendaring component.</t>
<t anchor="_f02571f6-c587-4b28-8806-8a551185f2e2">POLL-COMPLETION=SERVER-SUBMIT allows the client to set the poll-
winner, set the status to CONFIRMED and then store the poll on the
server.  The server will then submit the winning choice and set
the status to SUBMITTED.</t></dd><dt>Format Definition</dt><dd>
<t anchor="_cc8f8123-d44a-4c4a-98cd-b3e036fccae6">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_1d4e16ba-2151-4112-b3f5-48bdfd631088" type="abnf"><![CDATA[poll-completion = "POLL-COMPLETION" pcparam ":" pcvalue CRLF

pcparam = *(";" other-param)

pcvalue = "SERVER"  ; The server is responsible for both choosing and
                   ; submitting the winner(s)
        / "SERVER-SUBMIT" ; The server is responsible for
                   ; submitting the winner(s). The client chooses.
        / "SERVER-CHOICE"  ; The server is responsible for
                   ; choosing the winner(s). The client will submit.
        / "CLIENT" ; The client is responsible for both choosing and
                   ; submitting the winner(s)
        / iana-token
        / x-name
        ;Default is CLIENT]]></sourcecode>

<dl anchor="_d2f6c3dc-ff3a-413c-88c1-0a921026183b"><dt>Example</dt><dd>
<t anchor="_1c0c54ef-a904-498d-a999-aa14935543fc">The following is an example of this property:</t>
</dd></dl>
<sourcecode anchor="_0d92bf5e-5004-4d44-8160-53bb34fc0d83"><![CDATA[POLL-COMPLETION: SERVER-SUBMIT]]></sourcecode>
</section>
<section anchor="new-prop-poll-item-id"><name>Poll-Item-Id</name><dl anchor="_d5b95428-9e65-4670-8e27-5b0af373eb4b"><dt>Property name</dt><dd>
<t anchor="_54f5ce1e-e50d-4aea-b21e-cd96170bb44f">POLL-ITEM-ID</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_ddcd195e-edba-4e45-a553-596de9ec8561">This property is used in VPOLL child components as an
identifier.</t>
</dd><dt>Value type</dt><dd>
<t anchor="_e1928ea1-a5d6-44e3-9e6f-a805b08e8889">INTEGER</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_6ff0558d-8027-4f36-a5f1-19e214aaaf26">Non-standard parameters can be specified on
this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_5999a603-1d55-4a4b-ad36-f95e9638b0af">This property MUST be specified in a VOTE component and
in VPOLL choice items.</t>
</dd><dt>Description</dt><dd>
<t anchor="_f2ba3a81-a46c-43cf-a31a-0e05422b9a75">In a METHOD:REQUEST each choice component MUST have a
POLL-ITEM-ID property.  Each set of components with the same POLL-
ITEM-ID value represents one overall set of items to be voted on.<br /></t>
<t anchor="_39d345d9-eb26-45b7-b998-b0c6650a2618">POLL-ITEM-ID SHOULD be a unique small integer for each component
or set of components.  If it remains the same between REQUESTs
then the previous response for that component MAY be re-used.  To
force a re-vote on a component due to a significant change, the
POLL-ITEM-ID MUST change.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_684f7f65-0319-41f7-9315-6b17fb37faf4">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_428f7931-0d83-4029-bebf-9af5c3b5c48c" type="abnf"><![CDATA[pollitemid = "POLL-ITEM-ID" pollitemdparams ":"
                  integer CRLF

pollitemidparams = *(
                   (";" other-param)
            )]]></sourcecode>
</section>
<section anchor="new-prop-poll-mode"><name>Poll-Mode</name><dl anchor="_78857304-27c6-4079-864c-2eb909d522bc"><dt>Property name</dt><dd>
<t anchor="_7343023a-a5bc-4c1a-846e-7aad3f5db273">POLL-MODE</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_8db760d9-cc82-402a-802c-7f7d2c04ea06">This property is used in VPOLL to indicate what voting mode
is to be applied.</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_be3bba2f-d50a-4644-9b84-3e2db83fcf1a">Non-standard or iana parameters can be
specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_d65ded4d-2e22-4228-9b78-99f4844656e5">This property MAY be specified in a VPOLL component or
its sub-components.</t>
</dd><dt>Description</dt><dd>
<t anchor="_b3be5adb-2e49-4760-b27c-660a0b0a587c">The poll mode defines how the votes are applied to
obtain a result.  BASIC mode, the default, means that the voters
are selecting one component (or group of components) with a given
POLL=ITEM-ID.<br /></t>
<t anchor="_662b1107-f731-43b9-bec8-062f19f768a0">Other polling modes may be defined in updates to this
specification.  These may allow for such modes as ranking or task
assignment.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_6670c42f-c459-48c0-9a55-29089ca2b6be">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_10269e90-1d53-4916-b33b-9ae43bb67f0e" type="abnf"><![CDATA[pollmode = "POLL-MODE" pollmodeparams ":"
             ("BASIC" / iana-token / other-token) CRLF

pollmodeparams = *(";" other-param)]]></sourcecode>
</section>
<section anchor="new-prop-poll-properties"><name>Poll-properties</name><dl anchor="_71a8d9ea-9c1b-4e1d-949e-6ae9c53605bb"><dt>Property name</dt><dd>
<t anchor="_c9875c7b-2d05-48dc-9c76-7c5bab91dd3b">POLL-PROPERTIES</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_5aa3dfc7-c15f-4f1c-b8c6-85803685bd83">This property is used in VPOLL to define which icalendar
properties are being voted on.</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_5b0e197a-03b3-449b-b800-e0fa28575078">Non-standard or iana parameters can be
specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_4c6c859a-c3d0-4c79-82b1-c0799e891d14">This property MAY be specified in a VPOLL component.</t>
</dd><dt>Description</dt><dd>
<t anchor="_ff5cceaf-0518-4f4d-a1a1-a7cb914ba733">This property defines which icalendar properties are
significant in the voting process.  It may not be clear to voters
which properties are varying in a significant manner.  Clients may
use this property to highlight those listed properties.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_3ba08a8b-7bea-4301-8cf9-5d4f389ee5c9">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_80fa86a1-c507-4119-9a8c-2fb126849ae5" type="abnf"><![CDATA[pollproperties = "POLL-PROPERTIES" pollpropparams ":"
             text *("," text) CRLF

pollpropparams = *(";" other-param)]]></sourcecode>
</section>
<section anchor="new-prop-poll-winner"><name>Poll-Winner</name><dl anchor="_2ad91d42-8f86-4c90-8697-e46082a57538"><dt>Property name</dt><dd>
<t anchor="_4ff5d992-2eb6-4cc1-8606-6f1fc0f57d13">POLL-WINNER</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_31696ad8-d42a-4fe9-a1f5-34faea72ba41">This property is used in a basic mode VPOLL to indicate
which of the VPOLL sub-components won.</t>
</dd><dt>Value type</dt><dd>
<t anchor="_a068b13e-d008-48cf-8005-d9813658f6ab">INTEGER</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_9ad0660a-a42f-4695-9616-aab668efa02a">Non-standard parameters can be specified on
this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_e7cbca74-a357-4a32-a5bf-9bbf6e1c6b64">This property MAY be specified in a VPOLL component.</t>
</dd><dt>Description</dt><dd>
<t anchor="_4624e3d5-6aa9-414b-8b73-f5f7d8b6066b">For poll confirmation each child component MUST have a
POLL-ITEM-ID property.  For basic mode the VPOLL component SHOULD
have a POLL-WINNER property which MUST correspond to one of the
POLL-ITEM-ID properties and indicates which sub-component was the
winner.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_3818df4d-0ee1-4819-95b8-6ac5c7780af2">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_489fbdb6-0077-4012-ba4e-42c0911b9fe3" type="abnf"><![CDATA[pollwinner = "POLL-WINNER" pollwinnerparams ":"
                 integer CRLF

pollwinnerparams = *(";" other-param)

       ; Used with a STATUS:CONFIRMED VPOLL to indicate which
       ; components have been confirmed]]></sourcecode>
</section>
<section anchor="new-prop-reply-url"><name>Reply-URL</name><dl anchor="_e54d4d54-9ba4-4732-9940-056b097f4c16"><dt>Property name</dt><dd>
<t anchor="_68e6982b-4c78-4923-9370-d472b9e8cf39">REPLY-URL</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_9cb9135c-4ce4-486c-9d36-a3ae32e7efe2">This property may be used in scheduling messages to
indicate additional reply methods, for example a web-service.</t>
</dd><dt>Value type</dt><dd>
<t anchor="_f98aa203-1706-415f-a3a1-85043eda9f8c">URI</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_04683fbc-0426-4a00-9a1f-78f2b4889f46">Non-standard, required or iana parameters can
be specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_f07e2776-746c-484d-a7c1-ffc39768fe6d">This property MAY be specified in a VPOLL component.</t>
</dd><dt>Description</dt><dd>
<t anchor="_4ad7d353-cdde-4870-9356-14e6da77d165">When used in a scheduling message this property
indicates additional or required services that can be used to
reply.  Typically this would be a web service of some form.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_009a8ebf-253d-4390-a7b0-ab7c8834bf3a">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_1599ad46-8a22-4525-8cd8-4efb82d12109" type="abnf"><![CDATA[reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF

reply-urlparams = *(
                  (";" requiredparam) /
                  (";" other-param)
                  )]]></sourcecode>
</section>
<section anchor="new-prop-response"><name>Response</name><dl anchor="_ca97e3d6-daad-47d3-8a97-911aad1e8475"><dt>Property name</dt><dd>
<t anchor="_182532e4-2fdc-4354-a69c-27da66b3c118">RESPONSE</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_eb74cf6a-51b2-474f-b9dc-d914dfe90ad1">To specify a response vote.</t>
</dd><dt>Value type</dt><dd>
<t anchor="_aaa7c274-0ca4-46c8-9494-996787f87351">INTEGER</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_2f0bdc39-d4ff-47e4-ba20-1404aa215d7b">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_996b027c-1e5d-4f5d-847e-d007295d8a69" type="abnf"><![CDATA[response = "RESPONSE" response-params ":" integer CRLF
                 ; integer value 0..100

responseparams = *(";" other-param)]]></sourcecode>

<dl anchor="_de6c063c-d472-4d3f-8cf4-1c738f524b3d"><dt>Description</dt><dd>
<t anchor="_628abcb2-ae2c-4ba4-8678-7eed18fe3b6f">This parameter can be specified on the POLL-ITEM-ID
property to provide the value of the voters response.  This
parameter allows for fine grained responses which are appropriate
to some applications.  For the case of individuals voting for a
choice of events, client applications SHOULD conform to the
following convention:<br /></t>
<ul anchor="_27429ea2-e4c8-40a2-ab05-6772a409fd68">
<li>0 - 39 A "NO vote"</li>
<li>40 - 79 A "MAYBE" vote</li>
<li>80 - 89 A "YES - but not preferred vote"</li>
<li>
<t anchor="_8685b022-336c-472e-b3ce-e12db2c28039">90-100 A "YES" vote.</t>
<t anchor="_654bb69e-9a55-4bba-b59a-b9d0e6a99d83">Clients MUST preserve the response value when there is no change
from the user even if they have a UI with fixed states (e.g.
yes/no/maybe).</t>
</li>
</ul>
</dd></dl></section></section>
<section anchor="_new_components"><name>New Components</name><section anchor="component-vpoll"><name>VPOLL Component</name><dl anchor="_e81b8101-3acf-4bcb-b135-86e220937940"><dt>Component name</dt><dd>
<t anchor="_0ee9bb39-fd20-4724-a0df-2744aefef754">VPOLL</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_c58ac84e-c06f-402d-8c69-10767cd0511b">This component provides a mechanism by which voters can
vote on provided choices.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_cb4c9eaf-f456-44d9-a266-c394693f4e84">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_8832a6c1-aab0-4333-b3ea-de0e94771508" type="abnf"><![CDATA[pollc    = "BEGIN" ":" "VPOLL" CRLF
            pollprop
            *participantc *eventc *todoc *journalc *freebusyc
            *availabilityc *alarmc *iana-comp *x-comp
            "END" ":" "VPOLL" CRLF

pollprop = *(
          ;
          ; The following are REQUIRED,
          ; but MUST NOT occur more than once.
          ;
          dtstamp / uid / organizer /
          ;
          ; The following are OPTIONAL,
          ; but MUST NOT occur more than once.
          ;
          acceptresponse / class / created / completed /
          description / dtstart / last-mod / pollmode /
          pollproperties / priority / seq / status /
          summary / url /
          ;
          ; Either 'dtend' or 'duration' MAY appear in
          ; a 'pollprop', but 'dtend' and 'duration'
          ; MUST NOT occur in the same 'pollprop'.
          ; 'duration' MUST only occur when 'dtstart'
          ; is present
          ;
          dtend / duration /
          ;
          ; The following are OPTIONAL,
          ; and MAY occur more than once.
          ;
          attach / categories / comment /
          contact / rstatus / related /
          resources / x-prop / iana-prop
          ;
          ; The following is OPTIONAL, it SHOULD appear
          ; once for the confirmation of a BASIC mode
          ; VPOLL. Other modes may define differing
          ; requirements.
          ;
          pollwinner /
          ;
          )]]></sourcecode>

<dl anchor="_e10e0cd9-479b-46a5-9e5b-e8036ad83a60"><dt>Description</dt><dd><t anchor="_cc5a281b-c06c-454c-954b-0c219a10910d">This component provides a mechanism by which voters can
vote on provided choices.  The outcome depends upon the POLL-MODE
in effect.<br /></t><t anchor="_a8a0bf4a-9cd1-4c9d-aff7-303dd3585b2e">The PARTICIPANT components in VPOLL requests provide information on
each recipient who will be voting - both their identity through
the CALENDAR-ADDRESS property and their votes through the VOTE components.<br /></t>
<t anchor="_30de5139-34c0-495c-b621-376de4962f5d">If specified, the "DTSTART" property defines the start or opening
of the poll active period.  If absent the poll is presumed to have
started when created.<br /></t>
<t anchor="_2b37b310-d691-458b-92a1-76327f0df613">If "DTSTART" is present "DURATION" MAY be specified and indicates
the duration, and hence the ending, of the poll.  The value of the
property MUST be a positive duration.<br /></t>
<t anchor="_ffefb11b-ee32-4411-868c-8e98822b5838">"DTEND" MAY be specified with or without "DTSTART" and indicates
the ending of the poll.  If DTEND is specified it MUST be later
than the DTSTART or CREATED property.<br /></t>
<t anchor="_f194eb88-5b9c-43da-a20e-e37d5e667a68">If one or more VALARM components are included in the VPOLL they
are not components to be voted on and MUST NOT contain a POLL-
ITEM-ID property.  VALARM sub-components may be used to provide
warnings to the user when polls are due to start or end.</t></dd></dl></section>
<section anchor="_vote_component"><name>VOTE Component</name><dl anchor="_5af75256-e656-4e48-a6cc-85b7592526c8"><dt>Component name</dt><dd>
<t anchor="_0f0c6927-f35d-4de2-8b51-0fa5418bdc12">VOTE</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_7fdf5e13-5740-4506-b513-26ec6c474135">This component provides a mechanism by which voters can
vote on provided choices.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_ad105643-90ad-4f0e-a0a5-94bfce866158">This component may be specified zero or more times in a PARTICIPANT component which identifies the voter.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_39a0f405-afd5-4178-b205-58c3e5c5075a">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_fb6e5790-1339-42a6-8418-4ca4c8e2a441" type="abnf"><![CDATA[votec     = "BEGIN" ":" "VOTE" CRLF
            voteprop
            *eventc *todoc *journalc *freebusyc
            *availabilityc *alarmc *iana-comp *x-comp
            "END" ":" "VOTE" CRLF

voteprop = *(
           ;
           ; The following are REQUIRED,
           ; but MUST NOT occur more than once.
           ;
           pollitemid / response /
           ;
           ; The following are OPTIONAL,
           ; and MAY occur more than once.
           ;
           comment / x-prop / iana-prop
           ;
           )]]></sourcecode>

<dl anchor="_76464225-86e3-47ab-83a5-0d1e02f94fcb"><dt>Description</dt><dd><t anchor="_ddb96c39-ddd1-402e-b240-1adcf5a5532f">This component appears inside the PARTICIPANT component
with a PARTICIPANT-TYPE of VOTER to identify the voter. This component
contains that participants responses.<br /></t><t anchor="_d1779cb8-f71b-4ebb-a106-a8ac41fd6409">The required and optional properties and their meanings will depend
upon the POLL-MODE in effect.<br /></t>
<t anchor="_202ad03c-83e2-46f8-8928-803c647db9ae">For any POLL-MODE, POLL-ITEM-ID is used to associate the
information to a choice supplied by the organizer. This means that each VOTE component only provides information about that choice.<br /></t>
<t anchor="_ddf376d9-d0d7-47c9-84f2-842e38662c84">If allowed by the POLL-MODE a VOTE component without a POLL-ITEM-
ID may be provided in a REPLY to indicate a possible new choice or
to provide information to the ORGANIZER - such as the respondees
availability.</t></dd></dl></section></section></section>
    <section anchor="poll-modes"><name>Poll Modes</name><t anchor="_5a006c13-3e05-4b60-b271-2e516726fffa">The VPOLL component is intended to allow for various forms of
polling.  The particular form in efffect is indicated by the POLL-
MODE property.</t>
<t anchor="_377706d1-3b24-432d-ac08-a514c624e89f">New poll modes can be registered by including a completed POLL-MODE
Registration Template (see <xref target="poll-registration-template"></xref>) in a published RFC.</t>
<section anchor="_poll_modebasic"><name>POLL-MODE:BASIC</name><t anchor="_c2fb25a2-8564-4f9c-aa7a-50624fd3510e">BASIC poll mode is the form of voting in which one possible outcome
is chosen from a set of possibilities.  Usually this will be
represented as a number of possible event objects one of which will
be selected.</t>
<section anchor="_property_restrictions"><name>Property restrictions</name><t anchor="_257fc702-9cf5-4cc6-86bd-1694a09e1da6">This poll mode has the following property requirements:</t>
<dl anchor="_524c7d7b-6f7c-4bdd-a834-55fbe5488ace"><dt>POLL-ITEM-ID</dt><dd>
<t anchor="_c9117303-616d-4412-b01e-ea0110e5173f">Each contained sub-component that is being voted upon
MUST contain a POLL-ITEM_ID property which is unique within the
context of the POLL.  The value MUST NOT be reused when events are
removed and/or added to the poll.</t>
</dd><dt>POLL-WINNER</dt><dd>
<t anchor="_af0f4a57-635b-458e-813e-847e03140ad6">On confirmation of the poll this property MUST be
present and identifies the winning component.</t>
</dd></dl></section>
<section anchor="_outcome_reporting"><name>Outcome reporting</name><t anchor="_57cbf800-e05c-41ee-b8ce-f6a06e4c4221">To confirm the winner the POLL-WINNER property MUST be present and
the STATUS MUST be set to CONFIRMED.</t>
<t anchor="_53dd5834-f302-471c-a9ad-24813b61e6c3">When the winning VEVENT or VTODO is not a scheduled entity, that is,
it has no ORGANIZER or ATTENDEES it MUST be assigned an ORGANIZER
property and a list of non-participating ATTENDEEs.  This allows the
winning entity to be distributed to the participants through iTip or
some other protocol.</t></section></section></section>
    <section anchor="itip-extensions"><name>iTIP Extensions</name><t anchor="_5dded359-afd8-4d5f-bd21-c787d5261151">This specification introduces a number of extensions to <relref target="RFC5546" section="" relative=""></relref>.
In group scheduling the parties involved are organizer and attendees.
In VPOLL the parties are organizer and voters.</t>
<t anchor="_9b8ae45a-2222-4bf7-ba27-aaea1932f839">For many of the iTip processing rules the voters take the place of
attendees.</t>
<section anchor="_methods"><name>Methods</name><t anchor="_bf5a1e62-bc18-42dd-81b4-74aad66e3e55">There are some extensions to the behavior of iTip methods for a VPOLL
object and two new methods are defined.</t>
<table anchor="_d7ae074d-ea72-473a-abc3-13498ec60c17"><thead><tr><th align="left">Method</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">
<t anchor="_a61bbae4-efad-4a4d-9afd-69ebb6c8122e">PUBLISH</t>
</td><td align="left">
<t anchor="_290be4b4-368e-40de-9daf-c2f5610189d0">No changes (yet)</t>
</td></tr><tr><td align="left">
<t anchor="_d8c08ff9-3790-4365-8345-5db38ef46954">REQUEST</t>
</td><td align="left">
<t anchor="_8db05c46-4ff7-4d88-81c5-8455f5141720">Each child component MUST have a POLL-ITEM-ID
property.  Each set of components with the same
POLL-ITEM-ID value represents one overall set of
items to be voted on.</t>
</td></tr><tr><td align="left">
<t anchor="_f2ed5eb8-8715-4b6f-ad3c-ef6d21d14e49">REPLY</t>
</td><td align="left">
<t anchor="_206801e7-9c1f-4c28-ba0a-848bcb620fda">There MUST be a single VPOLL component which
MUST have: either one or more POLL-ITEM-ID
properties with a RESPONSE param matching that
from a REQUEST or a VFREEBUSY or VAVAILABILITY
child component showing overall busy/available
time. The VPOLL MUST have one voter only.</t>
</td></tr><tr><td align="left">
<t anchor="_057cf5b5-52e4-4eb0-86dc-fa88c7cee7a2">ADD</t>
</td><td align="left">
<t anchor="_1c4728d8-517b-48c3-b599-a8278db3c446">Not supported for VPOLL.</t>
</td></tr><tr><td align="left">
<t anchor="_67441350-fb75-4f73-b73b-57f65ffa1ada">CANCEL</t>
</td><td align="left">
<t anchor="_23633c57-26a6-4358-a08f-8fad21bf61d7">There MUST be a single VPOLL component with UID
matching that of the poll being cancelled.</t>
</td></tr><tr><td align="left">
<t anchor="_8f6ba88c-517f-4a6c-a05b-be9e53f06269">REFRESH</t>
</td><td align="left">
<t anchor="_fe16c77d-24f3-4b87-b434-7b8d4d7993cf">The organizer returns a METHOD:REQUEST with the
current full state, or a METHOD:CANCEL or an
error if no matching poll is found.</t>
</td></tr><tr><td align="left">
<t anchor="_6207f821-fa1f-44bf-937b-bf7ebab1196e">COUNTER</t>
</td><td align="left">
<t anchor="_723875f1-324a-4cc2-8c08-bbbcb26e6349">Not supported for VPOLL.</t>
</td></tr><tr><td align="left">
<t anchor="_e58b277b-392d-45f7-9acf-3ac6822516ac">DECLINECOUNTER</t>
</td><td align="left">
<t anchor="_a0fcb18d-399a-4fb4-9bad-dbaa04bdf224">Not supported for VPOLL.</t>
</td></tr><tr><td align="left">
<t anchor="_a84a7827-a9a5-4705-8861-5f5b1556a7f3">POLLSTATUS</t>
</td><td align="left">
<t anchor="_700088ce-2125-45e0-a1b7-fcf106652879">Used to send the current state of the poll to
all voters. The VPOLL can contain a reduced set
of properties but MUST contain DTSTAMP, SEQUENCE
(if not 0), UID, ORGANIZER and PARTICIPANTS.</t>
</td></tr></tbody></table>
<t anchor="_17584b00-c1c2-4187-8c0a-c21a6093c7df">The following table shows the above methods broken down by who can
send them with VPOLL components.</t>
<table anchor="_872f390a-66e6-48b4-8a9c-f9673eda6d7d"><thead><tr><th align="left">Originator</th><th align="left">Methods</th></tr></thead><tbody><tr><td align="left">
<t anchor="_22e184f7-fd2a-48cd-af4c-ca5d11294cb3">Organizer</t>
</td><td align="left">
<t anchor="_baee13eb-3bb5-4786-b82a-f312a3b15235">CANCEL, PUBLISH, REQUEST, POLLSTATUS</t>
</td></tr><tr><td align="left">
<t anchor="_653eb41a-f710-43ae-981d-73e294196178">Voter</t>
</td><td align="left">
<t anchor="_5a750b13-a4e1-4823-9c1c-0276c9405bd4">REPLY, REFRESH, REQUEST (only when delegating)</t>
</td></tr></tbody></table></section>
<section anchor="_interoperability_models"><name>Interoperability Models</name><t anchor="_5f614084-2d78-4c75-be4c-894f9eaca3d3">Most of the standard iTip specification applies with respect to
organizer and voters.</t>
<section anchor="_delegation"><name>Delegation</name>

<t anchor="_ec2d92a4-6ea3-4ac5-aced-d357c5d77874">TBD</t>
</section>
<section anchor="_acting_on_behalf_of_other_calendar_users"><name>Acting on Behalf of Other Calendar Users</name>

<t anchor="_0e163091-4edf-4d50-8d56-33751bb97e75">TBD</t>
</section>
<section anchor="component-revisions"><name>Component Revisions</name>

<ul anchor="_2aa2b4ec-8c83-4d77-bb1f-1ac3d955673c">
<li>Need to talk about what a change in SEQUENCE means</li>
<li>Sequence change forces a revote.</li>
<li>New voter - no sequence change</li>
<li>Add another poll set or change poll item ids or any change to a child</li>
<li>component - bump sequence</li>
</ul>
</section>
<section anchor="_message_sequencing"><name>Message Sequencing</name>

<t anchor="_3649fda2-2105-4d9c-8aaf-53ef0e377af0">TBD</t>
</section></section>
<section anchor="_application_protocol_elements"><name>Application Protocol Elements</name><section anchor="_methods_for_vpoll_calendar_components"><name>Methods for VPOLL Calendar Components</name><t anchor="_9b72df8e-caea-43db-9bc6-880595ea27b2">This section defines the property set restrictions for the method
types that are applicable to the "VPOLL" calendar component.  Each
method is defined using a table that clarifies the property
constraints that define the particular method.</t>
<t anchor="_972099db-c4d1-4bf8-8915-0f2f803a864b">The presence column uses the following values to assert whether a
property is required or optional, and the number of times it may
appear in the iCalendar object.</t>
<table anchor="_039c5dd6-f239-48f4-996f-d00f6bda7346"><thead><tr><th align="left">Presence Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">
<t anchor="_b0219db8-ff84-4213-b67e-664ea822431f">1</t>
</td><td align="left">
<t anchor="_cbb1e45e-291e-4600-ae81-e8c0f3ef461d">One instance MUST be present.</t>
</td></tr><tr><td align="left">
<t anchor="_89ab16a2-7a96-4ec7-842b-04e8b4c172bd">1+</t>
</td><td align="left">
<t anchor="_87a63d13-7e60-4301-804a-79da668ad452">At least one instance MUST be present.</t>
</td></tr><tr><td align="left">
<t anchor="_a746dde2-13a5-4e52-b910-44cd14a8210b">0</t>
</td><td align="left">
<t anchor="_84b59240-9b64-4d7a-b074-08dbd28996f0">Instances of this property MUST NOT be present.</t>
</td></tr><tr><td align="left">
<t anchor="_23214e67-74eb-48c3-863d-50301798e335">0+</t>
</td><td align="left">
<t anchor="_08be38c2-9302-443c-bdd7-82de0a06ca55">Multiple instances MAY be present.</t>
</td></tr><tr><td align="left">
<t anchor="_b60a4d7d-b46d-4059-86ce-8422ec513a73">0 or 1</t>
</td><td align="left">
<t anchor="_7f0333fd-746b-4000-b04d-1850f07c6193">Up to 1 instance of this property MAY be present.</t>
</td></tr></tbody></table>
<t anchor="_3acc99f1-753b-4b7f-abad-122fbb4dc2d4">The following summarizes the methods that are defined for the "VPOLL"
calendar component.</t>
<table anchor="_5ba4f7bb-eb21-4eba-91c2-1c695fa44f9a"><thead><tr><th align="left">Method</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">
<t anchor="_3680ef58-99d3-4fc7-86ca-cde69f2d83a5">PUBLISH</t>
</td><td align="left">
<t anchor="_b543e7b6-4bf9-4b78-8084-d6172a24efa6">Post notification of an poll. Used primarily as a
method of advertising the existence of a poll.</t>
</td></tr><tr><td align="left">
<t anchor="_34a73e49-87aa-42cc-a4d9-b278bbf408a5">REQUEST</t>
</td><td align="left">
<t anchor="_bdfeefa3-feaa-431c-a38d-a5ff39acfcbd">To make a request for a poll. This is an explicit
invitation to one or more voters. Poll requests are
also used to update, change or confirm an existing
poll. Clients that cannot handle REQUEST MAY degrade
the poll to view it as a PUBLISH. REQUEST SHOULD NOT
be used just to set the status of the poll -
POLLSTATUS provides a more compact approach.</t>
</td></tr><tr><td align="left">
<t anchor="_651c06be-e23f-4364-a674-204d247a78d7">REPLY</t>
</td><td align="left">
<t anchor="_41544136-1866-430b-95c3-012cd8c2ce6b">Reply to a poll request. Voters may set their
RESPONSE parameter to supply the current vote in the
range 0 to 100.</t>
</td></tr><tr><td align="left">
<t anchor="_5e3e6652-f7c4-4503-9546-ab794b7939e2">CANCEL</t>
</td><td align="left">
<t anchor="_5d8f9728-e899-4e5a-8a33-56b1ee8b0785">Cancel a poll.</t>
</td></tr><tr><td align="left">
<t anchor="_79bcd28a-ee20-4fce-b8b7-94466214e75a">REFRESH</t>
</td><td align="left">
<t anchor="_21fd5f7b-b34d-47b9-bcc3-f3a4ef4ddfed">A request is sent to an Organizer by a Voter asking
for the latest version of a poll to be resent to the
requester.</t>
</td></tr><tr><td align="left">
<t anchor="_30f90541-bbf5-4f98-9a29-36e801e0f7df">POLLSTATUS</t>
</td><td align="left">
<t anchor="_24f0ff6f-6108-4cf5-81a8-6db1cffb9cc5">Used to send the current state of the poll to all
voters. The VPOLL can contain a reduced set of
properties but MUST contain DTSTAMP, SEQUENCE (if
not 0), UID, ORGANIZER and PARTICIPANT.</t>
</td></tr></tbody></table></section>
<section anchor="_method_publish"><name>Method: PUBLISH</name><t anchor="_4f132323-cefd-4dd2-b27e-3e96d69ca51c">The "PUBLISH" method in a "VPOLL" calendar component is an
unsolicited posting of an iCalendar object.  Any CU may add published
components to their calendar.  The "Organizer" MUST be present in a
published iCalendar component.  "Voters" MUST NOT be present.  Its
expected usage is for encapsulating an arbitrary poll as an iCalendar
object.  The "Organizer" may subsequently update (with another
"PUBLISH" method) or cancel (with a "CANCEL" method) a previously
published "VPOLL" calendar component.</t>
<dl anchor="_59c263bc-d677-4a9c-90c1-d4c5f2e65e35"><dt>Note</dt><dd>
<t anchor="_5ecca8c4-9828-448f-a571-792193fb7558">Not clear how useful this is but needs some work on transmitting the
current vote without any voter identification.</t>
</dd></dl>
<t anchor="_80100551-2bdd-436c-b2d7-c05cd48b365f">This method type has a "METHOD" property with the value "PUBLISH"
and one or more complete VPOLL objects that conform to the
property constraints defined in section <xref target="component-vpoll"></xref>.</t></section>
<section anchor="_method_request"><name>Method: REQUEST</name><t anchor="_8662e278-9a6e-4849-831d-70c7085d9af3">The "REQUEST" method in a "VPOLL" component provides the following
scheduling functions:</t>
<ul anchor="_4261beec-c8b1-48aa-99be-e4914ffac6ad">
<li>Invite "Voters" to respond to the poll.</li>
<li>Change the items being voted upon.</li>
<li>Complete or confirm the poll.</li>
<li>Response to a "REFRESH" request.</li>
<li>Update the details of an existing vpoll.</li>
<li>Update the status of "Voters".</li>
<li>Forward a "VPOLL" to another uninvited CU.</li>
<li>For an existing "VPOLL" calendar component, delegate the role of
"Voter" to another CU.</li>
<li>For an existing "VPOLL" calendar component, change the role of
"Organizer" to another CU.</li>
</ul>
<t anchor="_52c693e2-6680-44a0-9083-09d27d56767f">The "Organizer" originates the "REQUEST".  The recipients of the
"REQUEST" method are the CUs voting in the poll, the "Voters".
"Voters" use the "REPLY" method to convey votes to the "Organizer".</t>
<t anchor="_c4a3b94b-ee7d-4008-8a2f-641ffb18bf96">The "UID" and "SEQUENCE" properties are used to distinguish the
various uses of the "REQUEST" method.  If the "UID" property value in
the "REQUEST" is not found on the recipient's calendar, then the
"REQUEST" is for a new "VPOLL" calendar component.  If the "UID"
property value is found on the recipient's calendar, then the
"REQUEST" is for an update, or a reconfirmation of the "VPOLL"
calendar component.</t>
<t anchor="_4c29c151-6ed6-4c37-a3c2-56d434b1fff8">For the "REQUEST" method only a single iCalendar object is permitted.</t>
<t anchor="_8f33926d-e84d-41fd-be69-23783d839768">This method type has a "METHOD" property with the value "REQUEST"
and a single complete VPOLL object that conforms to the
property constraints defined in section <xref target="component-vpoll"></xref>.</t>
<section anchor="_rescheduling_a_poll"><name>Rescheduling a poll</name>

<t anchor="_ae6d92fb-9a8d-478b-b8b1-e91cc3bb0962">The "REQUEST" method may be used to reschedule a poll, that is force
a revote.  A rescheduled poll involves a change to the existing poll
in terms of its time the components being voted on may have changed.
If the recipient CUA of a "REQUEST" method finds that the "UID"
property value already exists on the calendar but that the "SEQUENCE"
(or "DTSTAMP") property value in the "REQUEST" method is greater than
the value for the existing poll, then the "REQUEST" method describes
a rescheduling of the poll.</t>
</section>
<section anchor="_updating_or_reconfirmation_of_a_poll"><name>Updating or Reconfirmation of a Poll</name><t anchor="_4f4b27cd-6fd9-4a97-84e6-68a47cce5a2d">The "REQUEST" method may be used to update or reconfirm a poll.  An
update to an existing poll does not involve changes to the time or
candidates, and might not involve a change to the location or
description for the poll.  If the recipient CUA of a "REQUEST" method
finds that the "UID" property value already exists on the calendar
and that the "SEQUENCE" property value in the "REQUEST" is the same
as the value for the existing poll, then the "REQUEST" method
describes an update of the poll details, but not a rescheduling of
the POLL.</t>
<t anchor="_b9bf0154-4ba6-4444-b919-1ecd0fc4fdc2">The update "REQUEST" method is the appropriate response to a
"REFRESH" method sent from a "Voter" to the "Organizer" of a poll.</t>
<t anchor="_fd3b95da-804e-4ffe-8cf4-cd0740a31ab8">The "Organizer" of a poll may also send unsolicited "REQUEST"
methods.  The unsolicited "REQUEST" methods may be used to update the
details of the poll without rescheduling it, to update the "RESPONSE"
parameter of "Voters", or to reconfirm the poll.</t></section>
<section anchor="_confirmation_of_a_poll"><name>Confirmation of a Poll</name>

<t anchor="_14b570a0-fac4-4b88-bc62-1f84b9647239">The "REQUEST" method may be used to confirm a poll, that is announce
the winner in BASIC mode.  The STATUS MUST be set to CONFIRMED and
for BASIC mode a VPOLL POLL-WINNER property must be provided with the
poll-id of the winning component.</t>
</section>
<section anchor="_closing_a_poll"><name>Closing a Poll</name>

<t anchor="_3301dc57-9734-4f36-a96d-02e11762125b">The "REQUEST" method may be used to close a poll, that is indicate
voting is completed.  The STATUS MUST be set to COMPLETED.</t>
</section>
<section anchor="_delegating_a_poll_to_another_cu"><name>Delegating a Poll to Another CU</name><t anchor="_ce21ad8b-d8e5-43cd-9615-930367922986">Some calendar and scheduling systems allow "Voters" to delegate the
vote to another "Calendar User". iTIP supports this concept using the
following workflow.  Any "Voter" may delegate their right to vote in
a poll to another CU.  The implication is that the delegate
participates in lieu of the original "Voter", NOT in addition to the
"Voter".  The delegator MUST notify the "Organizer" of this action
using the steps outlined below.  Implementations may support or
restrict delegation as they see fit.  For instance, some
implementations may restrict a delegate from delegating a "REQUEST"
to another CU.</t>
<t anchor="_448f043b-c64b-45f7-bfcd-9ab2b4ae088b">The "Delegator" of a poll forwards the existing "REQUEST" to the
"Delegate".  The "REQUEST" method MUST include a "Voter" property
with the calendar address of the "Delegate".  The "Delegator" MUST
also send a "REPLY" method to the "Organizer" with the "Delegator's"
"Voter" property "DELEGATED-TO" parameter set to the calendar address
of the "Delegate".  Also, a new "Voter" property for the "Delegate"
MUST be included and must specify the calendar user address set in
the "DELEGATED-TO" parameter, as above.</t>
<t anchor="_9fbb8151-1107-406e-95aa-cdca77e15fae">In response to the request, the "Delegate" MUST send a "REPLY" method
to the "Organizer", and optionally to the "Delegator".  The "REPLY"</t>
<t anchor="_108ccb0a-36d1-475e-a0d4-c5a56d938123">method SHOULD include the "Voter" property with the "DELEGATED-FROM"
parameter value of the "Delegator's" calendar address.</t>
<t anchor="_a957bb54-3603-4d85-babc-b11199ad580c">The "Delegator" may continue to receive updates to the poll even
though they will not be attending.  This is accomplished by the
"Delegator" setting their "role" attribute to "NON-PARTICIPANT" in
the "REPLY" to the "Organizer".</t></section>
<section anchor="_changing_the_organizer"><name>Changing the Organizer</name>

<t anchor="_1730abca-9ee3-4343-804c-969fdd2e367d">The situation may arise where the "Organizer" of a "VPOLL" is no
longer able to perform the "Organizer" role and abdicates without
passing on the "Organizer" role to someone else.  When this occurs,
the "Voters" of the "VPOLL" may use out-of-band mechanisms to
communicate the situation and agree upon a new "Organizer".  The new
"Organizer" should then send out a new "REQUEST" with a modified
version of the "VPOLL" in which the "SEQUENCE" number has been
incremented and the "ORGANIZER" property has been changed to the new
"Organizer".</t>
</section>
<section anchor="_sending_on_behalf_of_the_organizer"><name>Sending on Behalf of the Organizer</name>

<t anchor="_a86116ec-b5fa-489b-9365-f2c5dc3fc797">There are a number of scenarios that support the need for a "Calendar
User" to act on behalf of the "Organizer" without explicit role
changing.  This might be the case if the CU designated as "Organizer"
is sick or unable to perform duties associated with that function.
In these cases, iTIP supports the notion of one CU acting on behalf
of another.  Using the "SENT-BY" parameter, a "Calendar User" could
send an updated "VPOLL" "REQUEST".  In the case where one CU sends on
behalf of another CU, the "Voter" responses are still directed back
towards the CU designated as "Organizer".</t>
</section>
<section anchor="_forwarding_to_an_uninvited_cu"><name>Forwarding to an Uninvited CU</name><t anchor="_afd3a242-2b33-45a6-b095-a0a5cdfd2b57">A "Voter" invited to a "VPOLL" calendar component may send the
"VPOLL" calendar component to another new CU not previously
associated with the "VPOLL" calendar component.  The current "Voter"
participating in the "VPOLL" calendar component does this by
forwarding the original "REQUEST" method to the new CU.  The new CU
can send a "REPLY" to the "Organizer" of the "VPOLL" calendar
component.  The reply contains a "Voter" property for the new CU.</t>
<t anchor="_2851987e-9f17-4905-bdf6-b555637c130b">The "Organizer" ultimately decides whether or not the new CU becomes
part of the poll and is not obligated to do anything with a "REPLY"
from a new (uninvited) CU.  If the "Organizer" does not want the new
CU to be part of the poll, the new "Voter" property is not added to
the "VPOLL" calendar component.  The "Organizer" MAY send the CU a
"CANCEL" message to indicate that they will not be added to the poll.</t>
<t anchor="_4374c265-1e10-40e2-91a0-a730880e72a3">If the "Organizer" decides to add the new CU, the new "Voter"
property is added to the "VPOLL" calendar component.  Furthermore,
the "Organizer" is free to change any "Voter" property parameter from
the values supplied by the new CU to something the "Organizer"
considers appropriate.  The "Organizer" SHOULD send the new CU a
"REQUEST" message to inform them that they have been added.</t>
<t anchor="_65875067-92c4-4b52-b2e0-eed40345d9c8">When forwarding a "REQUEST" to another CU, the forwarding "Voter"
MUST NOT make changes to the original message.</t></section>
<section anchor="_updating_voter_status"><name>Updating Voter Status</name>

<t anchor="_e9e8c41f-6f5c-4dfe-8d46-5bd5652cfcb9">The "Organizer" of an poll may also request updated status from one
or more "Voters".  The "Organizer" sends a "REQUEST" method to the
"Voter" and sets the "RSVP=TRUE" property parameter on the PARTICIPANT CALENDAR-ADDRESS.  The
"SEQUENCE" property for the poll is not changed from its previous
value.  A recipient will determine that the only change in the
"REQUEST" is that their "RSVP" property parameter indicates a request
for updated status.  The recipient SHOULD respond with a "REPLY"
method indicating their current vote with respect to the "REQUEST".</t>
</section></section>
<section anchor="_method_reply"><name>Method: REPLY</name><t anchor="_b3d014c9-5937-434c-bbba-d65e3411c050">The "REPLY" method in a "VPOLL" calendar component is used to respond
(e.g., accept or decline) to a "REQUEST" or to reply to a delegation
"REQUEST".  When used to provide a delegation response, the
"Delegator" SHOULD include the calendar address of the "Delegate" on
the "DELEGATED-TO" property parameter of the "Delegator's" "CALENDAR-ADDRESS"
property.  The "Delegate" SHOULD include the calendar address of the
"Delegator" on the "DELEGATED-FROM" property parameter of the
"Delegate's" "CALENDAR-ADDRESS" property.</t>
<t anchor="_0ceffc35-ec0a-488d-a415-f217d33ba062">The "REPLY" method is also used when processing of a "REQUEST" fails.
Depending on the value of the "REQUEST-STATUS" property, no action
may have been performed.</t>
<t anchor="_4a9f6076-9482-4325-80b3-08286b63eeb1">The "Organizer" of a poll may receive the "REPLY" method from a CU
not in the original "REQUEST".  For example, a "REPLY" may be
received from a "Delegate" to a poll.  In addition, the "REPLY"
method may be received from an unknown CU (a "Party Crasher").  This
uninvited "Voter" may be accepted, or the "Organizer" may cancel the
poll for the uninvited "Voter" by sending a "CANCEL" method to the
uninvited "Voter".</t>
<t anchor="_0f41f2b5-bf33-40d4-9e62-ada5a9283ec5">A "Voter" MAY include a message to the "Organizer" using the
"COMMENT" property.  For example, if the user indicates a low
interest and wants to let the "Organizer" know why, the reason can be
expressed in the "COMMENT" property value.</t>
<t anchor="_d18f70f6-748d-4aee-a2ef-f26109fd32b7">The "Organizer" may also receive a "REPLY" from one CU on behalf of
another.  Like the scenario enumerated above for the "Organizer",
"Voters" may have another CU respond on their behalf.  This is done
using the "SENT-BY" parameter.</t>
<t anchor="_457fd146-d62f-4f13-9f88-0c5bc1087175">The optional properties listed in the table below (those listed as
"0+" or "0 or 1") MUST NOT be changed from those of the original
request.  (But see comments on VFREEBUSY and VAVAILABILITY)</t>
<t anchor="_32fc940d-52a2-4bff-9633-93d7cf129ea8">This method type has a "METHOD" property with the value "REPLY"
and a single VPOLL object. That object MUST contain the properties
shown below. All other properties or components SHOULD NOT be present and MUST be
ignored by the recipient if present.</t>
<table anchor="_e5e1181f-6674-404c-9d17-b34778d9f525"><name>Constraints for a METHOD:REPLY of a VPOLL</name><thead><tr><th align="left">Component/Property</th><th align="left">Presence</th><th align="left">Comment</th></tr></thead><tbody><tr><td align="left">
<t anchor="_c0562670-7c49-4f7a-93bf-98a56db11186">METHOD</t>
</td><td align="left">
<t anchor="_a9be3cb7-cde8-4efb-bda5-823d57269e9b">1</t>
</td><td align="left">
<t anchor="_5d99dd66-ddc0-45b0-99af-1cc38c89770b">MUST be REPLY.</t>
</td></tr><tr><td align="left">
<t anchor="_557a2b4f-66a1-44e7-ba85-54e2df769d51">VPOLL</t>
</td><td align="left">
<t anchor="_4d6789f9-c634-46f9-87a4-52590a9140b7">1+</t>
</td><td align="left">
<t anchor="_21e8194c-4097-47ab-b02f-ce0c7b9be757">All components MUST have the same</t>
</td></tr><tr><td align="left"></td><td align="left"></td><td align="left">
<t anchor="_1e0a4e0f-4627-4dbc-a7f6-fb34cdd28de0">UID.</t>
</td></tr><tr><td align="left">
<t anchor="_1b7eed88-e7a2-433f-a7f2-6d3c602af0ff">PARTICIPANT</t>
</td><td align="left">
<t anchor="_96e47f8c-1ef1-4db4-82c1-a9f978207fd2">1</t>
</td><td align="left">
<t anchor="_49ca3418-0273-4415-bb33-0b95e14750d9">Identifies the Voter replying.</t>
</td></tr><tr><td align="left">
<t anchor="_d98b6267-c2ca-4cb7-9957-ea389255a78b">DTSTAMP</t>
</td><td align="left">
<t anchor="_cb87125e-b487-4ade-9f28-7f0a4e079ba7">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_0fa9e748-02b0-40f8-a506-8d4cfd76fc2d">ORGANIZER</t>
</td><td align="left">
<t anchor="_65288796-c4ad-4074-bea5-fb678c76ce60">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_fb4f2846-1536-41df-a520-e068af733a17">UID</t>
</td><td align="left">
<t anchor="_0da4201e-45d5-49e0-8a78-b435dd153b54">1</t>
</td><td align="left">
<t anchor="_10469e7e-218b-48a7-abf2-5c525ccb4272">MUST be the UID of the original</t>
</td></tr><tr><td align="left"></td><td align="left"></td><td align="left">
<t anchor="_8fcc3a08-feb3-4d0b-ae02-490e72d14038">REQUEST.</t>
</td></tr><tr><td align="left">
<t anchor="_c624bdc7-965f-4d13-9976-d992fd0797ec">SEQUENCE</t>
</td><td align="left">
<t anchor="_980b15a8-5fb3-488c-abe9-4cb5fd120c80">0 or 1</t>
</td><td align="left">
<t anchor="_c3c1d4a0-2ddd-4514-8555-fff682e273c9">If non-zero, MUST be the sequence number of the original REQUEST. MAY be present if 0.</t>
</td></tr><tr><td align="left">
<t anchor="_c8b7f5f7-5b72-4a78-b1d2-6c6daf1b7af7">ACCEPT-RESPONSE</t>
</td><td align="left">
<t anchor="_d19e9ae8-da64-4a20-8f19-eada067b2fa7">0 or 1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_36383bab-cda5-45bb-8519-c9d36f8bce73">POLL-ITEM-ID</t>
</td><td align="left">
<t anchor="_dacf5ab9-f5a6-4559-8b9f-d2c94a877323">1+</t>
</td><td align="left">
<t anchor="_8c5b62fc-0503-408d-8886-3e4cebab487b">One per item being voted on.</t>
</td></tr><tr><td align="left">
<t anchor="_44807d48-b5d9-4839-86dc-9104a03cd4e4">VFREEBUSY</t>
</td><td align="left">
<t anchor="_e08c3695-e41d-4abb-b4a2-48d45eab2d22">0 or 1</t>
</td><td align="left">
<t anchor="_449724aa-67ab-4b5e-b34a-aa209ebff942">A voter may respond with a VFREEBUSY component indicating that the ORGANIZER may select some other time which is not marked as busy.</t>
</td></tr><tr><td align="left">
<t anchor="_bc936892-c6f1-4cb5-a216-e33c5696879c">VAVAILABILITY</t>
</td><td align="left">
<t anchor="_70c9fdf2-753f-46a4-ab6a-06d656fb6958">0</t>
</td><td align="left">
<t anchor="_b2b83483-dd03-43d6-a109-30614db304bd">A voter may respond with a VAVAILABILITY component indicating that the ORGANIZER may select some other time which is shown as available.</t>
</td></tr></tbody></table></section>
<section anchor="_method_cancel"><name>Method: CANCEL</name><t anchor="_dbeab4cc-dc19-4d01-88fb-d401ad7ee7eb">The "CANCEL" method in a "VPOLL" calendar component is used to send a
cancellation notice of an existing poll request to the affected
"Voters".  The message is sent by the "Organizer" of the poll.</t>
<t anchor="_1a8ef069-d484-434b-8725-2bfa8102a9ce">The "Organizer" MUST send a "CANCEL" message to each "Voter" affected
by the cancellation.  This can be done using a single "CANCEL"
message for all "Voters" or by using multiple messages with different
subsets of the affected "Voters" in each.</t>
<t anchor="_2103fc04-190b-4313-9a9c-bbc3d6b629a1">When a "VPOLL" is cancelled, the "SEQUENCE" property value MUST be
incremented as described in <xref target="component-revisions"></xref>.</t>
<t anchor="_81e19537-ca70-4321-ab98-7e81d8b456e7">Once a CANCEL message has been sent to all voters no further voting
may take place.  The poll is considered closed.</t>
<t anchor="_321e855d-c659-4e71-9ed0-076b26aa0d47">This method type has a "METHOD" property with the value "CANCEL"
and one or more VPOLL objects. Those objects MUST contain the properties
shown below. All other properties or components SHOULD NOT be present and MUST be
ignored by the recipient if present.</t>
<table anchor="_0adda922-70a0-4464-883b-e079657cae85"><name>Constraints for a METHOD:CANCEL of a VPOLL</name><thead><tr><th align="left">Component/Property</th><th align="left">Presence</th><th align="left">Comment</th></tr></thead><tbody><tr><td align="left">
<t anchor="_be6b4c5f-92e0-422b-8b1a-c2d0fe114d93">METHOD</t>
</td><td align="left">
<t anchor="_6c3139b8-9df0-409e-8725-a34d8deb2015">1</t>
</td><td align="left">
<t anchor="_720a8130-17e2-440e-823e-58c3a459e9a9">MUST be CANCEL.</t>
</td></tr><tr><td align="left">
<t anchor="_1fb0bc45-6e4a-4b0c-b2ed-ae4327d52dab">VPOLL</t>
</td><td align="left">
<t anchor="_60aa22a3-1603-454d-9338-605b23f4b6c9">1+</t>
</td><td align="left">
<t anchor="_147491f5-94d6-4830-a352-c747325fc3bf">All must have the same UID.</t>
</td></tr><tr><td align="left">
<t anchor="_ff4f3ad5-6d58-4a5a-87d2-1ea1d82c4b8a">PARTICIPANT</t>
</td><td align="left">
<t anchor="_a232ff6f-f84d-4032-bb34-9d6fde88c72f">0+</t>
</td><td align="left">
<t anchor="_a395d821-f0ac-4888-a3a3-5e6b27f10eb2">Any included participents are being removed from the poll. Otherwise the entire poll is cancelled.</t>
</td></tr><tr><td align="left">
<t anchor="_82c8130a-5755-4464-8273-c0eb9bc2fcab">UID</t>
</td><td align="left">
<t anchor="_bc14ce4b-4779-42cc-a324-09b5c410d03a">1</t>
</td><td align="left">
<t anchor="_02545854-122e-41f5-8530-c0737a8e0e95">MUST be the UID of the original REQUEST.</t>
</td></tr><tr><td align="left">
<t anchor="_2ee55de8-c621-4fb9-aa12-351ede2f2049">DTSTAMP</t>
</td><td align="left">
<t anchor="_1d00a3c3-ab67-4583-9fcc-8df92103389b">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_e9a1f7c7-a12d-48e9-a4c7-a4eae54b0bcd">ORGANIZER</t>
</td><td align="left">
<t anchor="_ee945101-291c-491c-884b-5f8bcc8b38f3">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_c4e5059e-697c-4bfd-9f06-4cbe8c6b3230">SEQUENCE</t>
</td><td align="left">
<t anchor="_7118d427-06f3-4971-bc85-d01563225486">1</t>
</td><td align="left"></td></tr></tbody></table></section>
<section anchor="_method_refresh"><name>Method: REFRESH</name><t anchor="_8f762eef-a483-4dc2-a2c9-f6463b61484e">The "REFRESH" method in a "VPOLL" calendar component is used by
"Voters" of an existing event to request an updated vpoll status from
the poll "Organizer". The "REFRESH" method MUST specify the "UID"
property of the poll to update.  The "Organizer" responds with a
METHOD=REQUEST giving the latest status and version of the poll.</t>
<t anchor="_c45a1f0f-c2ea-48af-96e8-7d3146107696">This method type has a "METHOD" property with the value "REFRESH"
and a single VPOLL object. That object MUST contain the properties
shown below and no others.</t>
<table anchor="_60a83148-9ed5-43b8-b289-4a7ce9cfcd3f"><name>Constraints for a METHOD:REFRESH of a VPOLL</name><thead><tr><th align="left">Component/Property</th><th align="left">Presence</th><th align="left">Comment</th></tr></thead><tbody><tr><td align="left">
<t anchor="_c05e8443-d1a6-4f34-9d33-132a0383ca79">METHOD</t>
</td><td align="left">
<t anchor="_686d5cbf-88ad-43f9-8ca1-48833af26176">1</t>
</td><td align="left">
<t anchor="_cc35c0bf-6d45-4759-8f24-36d1b062133d">MUST be REFRESH.</t>
</td></tr><tr><td align="left">
<t anchor="_5b66ec16-c6ff-4a60-9ec4-d853f1c5c40b">VPOLL</t>
</td><td align="left">
<t anchor="_b6b78732-b99b-41d7-9bb4-388aeab71452">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_ee0f6c96-9107-471d-9f80-e6e7f3083372">PARTICIPANT</t>
</td><td align="left">
<t anchor="_a92605fa-77b7-49b5-8780-a874259868c1">1</t>
</td><td align="left">
<t anchor="_2d9fc3cb-2c09-405b-9ca1-c7dd5b4d4e59">MUST identify the requester as a voter.</t>
</td></tr><tr><td align="left">
<t anchor="_41cbc475-f637-4e53-a4c7-a93c2a24f023">DTSTAMP</t>
</td><td align="left">
<t anchor="_fd9483da-c7b8-432d-9919-5b1d2de1e56f">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_a6adcd40-7c80-4457-97a8-c8db8c7f3a25">ORGANIZER</t>
</td><td align="left">
<t anchor="_31ddb283-631e-4a60-8960-b60f4c1d7be1">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_cef41409-775c-47d9-a7ba-36121ae32895">UID</t>
</td><td align="left">
<t anchor="_97d57224-f3f6-4827-875c-db9f3990dceb">1</t>
</td><td align="left">
<t anchor="_d3843535-1e3f-4762-a51e-7c520032cb12">MUST be the UID associated with original REQUEST.</t>
</td></tr></tbody></table></section>
<section anchor="_method_pollstatus"><name>Method: POLLSTATUS</name><t anchor="_268679df-0672-4c4c-a163-0d8ca85a72e9">The "POLLSTATUS" method in a "VPOLL" calendar component is used to
inform recipients of the current status of the poll in a compact
manner.  The "Organizer" MUST be present in the confirmed poll
component.  All "Voters" MUST be present.  The selected component(s)
according to the poll mode SHOULD NOT be present in the poll
component.  Clients receiving this message may store the confirmed
items in their calendars.</t>
<t anchor="_3becdf03-273f-42af-b28c-415ac1fc12b4">This method type has a "METHOD" property with the value "POLLSTATUS"
and one or more VPOLL objects. Those objects MUST contain the properties
shown below and no others.</t>
<t anchor="_53517259-bf29-45af-a1f8-54ddd8792ae0">This method type is an iCalendar object that conforms to the
following property constraints:</t>
<table anchor="_3f8ae10f-524e-4db3-9bb6-b6784173f56d"><name>Constraints for a METHOD:POLLSTATUS of a VPOLL</name><thead><tr><th align="left">Component/Property</th><th align="left">Presence</th><th align="left">Comment</th></tr></thead><tbody><tr><td align="left">
<t anchor="_ec052377-a2bf-486a-8a07-13894dc6d6e5">METHOD</t>
</td><td align="left">
<t anchor="_00d8c304-955c-4fca-9ca6-611c82fea577">1</t>
</td><td align="left">
<t anchor="_5fb5e9fd-9464-4943-971a-1f9852863847">MUST equal POLLSTATUS.</t>
</td></tr><tr><td align="left">
<t anchor="_08e4ffd1-2878-4d7f-bf68-cdf311847758">VPOLL</t>
</td><td align="left">
<t anchor="_9b253d94-c49c-45b5-86ca-7bd073bb74f2">1+</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_b7c0b7ce-d933-424d-a103-663c517b8974">PARTICIPANT</t>
</td><td align="left">
<t anchor="_7600e9c7-c83b-450e-8764-2bf33bc36a01">1+</t>
</td><td align="left">
<t anchor="_51ce1a0e-7065-4dc1-86ee-7a84c2267244">The voters containing their current vote</t>
</td></tr><tr><td align="left">
<t anchor="_daa89a97-4bb8-4913-bc51-2f75deec0749">COMPLETED</t>
</td><td align="left">
<t anchor="_a4ffa601-b555-4fc4-9b06-c5c2c8884007">0 or 1</t>
</td><td align="left">
<t anchor="_9d3fd6c9-fc71-429a-a4c5-f970b7b9dcd2">Only present for a completed poll</t>
</td></tr><tr><td align="left">
<t anchor="_8d8fa0dc-34f9-454d-aa4a-2b4f3ca8de1c">DTSTAMP</t>
</td><td align="left">
<t anchor="_a658d006-7d3e-4a9c-a9d8-be30fc20c89f">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_1bbcfacc-d94e-4843-8bef-67df319b3f0f">DTSTART</t>
</td><td align="left">
<t anchor="_b966917e-2c35-4df4-91e4-ed0647a59915">0 or 1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_c99f79a1-62d9-4b6e-be91-997300f63dea">ORGANIZER</t>
</td><td align="left">
<t anchor="_a4175a04-d2a7-43c1-b64c-e45597dcf796">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_dad3aa73-ada2-4ae5-96a5-3a123c515d57">SUMMARY</t>
</td><td align="left">
<t anchor="_a705535c-c03a-4118-9ef4-89e511f4e005">1</t>
</td><td align="left">
<t anchor="_58aa0ec9-7287-47e4-a57d-86b14f31e823">Can be null.</t>
</td></tr><tr><td align="left">
<t anchor="_fd3fedaf-e822-418f-a921-9e106512d87e">UID</t>
</td><td align="left">
<t anchor="_66d74d16-5290-46d8-a716-89f6ec7beb57">1</t>
</td><td align="left"></td></tr><tr><td align="left">
<t anchor="_71e42ead-0d5b-427b-acb8-2c46ea2ab037">SEQUENCE</t>
</td><td align="left">
<t anchor="_063440f9-58a6-47d8-bd30-f67622a036fc">0 or 1</t>
</td><td align="left">
<t anchor="_7b363244-9d64-4147-81cb-c64167b22bf9">MUST be present if value is greater than 0; MAY be present if 0.</t>
</td></tr></tbody></table></section></section></section>
    <section anchor="caldav-extensions"><name>CalDAV Extensions</name><t anchor="_d8c5a401-3066-4505-bbbc-980aba40f406">This specification extends <relref target="RFC4791" section="" relative=""></relref> in that it defines a new
component and new iCalendar properties to be supported and requires
extra definitions related to time-ranges and reports.</t>
<t anchor="_613f3f9f-e636-4012-a0a7-5a9231e6c36f">Additionally, it extends <relref target="RFC6638" section="" relative=""></relref> as it a VPOLL component is a
schedulable entity.</t>
<section anchor="_calendar_collection_properties"><name>Calendar Collection Properties</name><t anchor="_eb1fc52e-c080-40c9-8a91-bf0dd7327d63">This section defines new CalDAV properties for calendar collections.</t>
<section anchor="_caldavsupported_vpoll_component_sets"><name>CALDAV:supported-vpoll-component-sets</name><dl anchor="_ec1815f1-0308-4d9f-b97d-31de723fae08"><dt>Name</dt><dd>
<t anchor="_8ec23e5c-2617-4c7f-a682-9a674d1b1033">supported-vpoll-component-sets</t>
</dd><dt>Namespace</dt><dd>
<t anchor="_a500f3d5-0996-49d0-93d9-946a0c5ccfdf">urn:ietf:params:xml:ns:caldav</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_3779cc4e-5bf2-41d4-90b7-7b3b66d6ecdd">Specifies the calendar component types (e.g., VEVENT,
VTODO, etc.) and combination of types that may be included in a
VPOLL component.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_fdcb288f-eb8b-4c04-9391-470f60883fb2">This property MAY be defined on any calendar
collection.  If defined, it MUST be protected and SHOULD NOT be
returned by a PROPFIND DAV:allprop request (as defined in
<relref target="RFC2518" section="12.14.1" relative=""></relref>).</t>
</dd><dt>Description</dt><dd><t anchor="_9bd6baf5-d08f-47c5-b528-93ebd37352e0">The CALDAV:supported-vpoll-component-sets property is
used to specify restrictions on the calendar component types that
VPOLL components may contain in a calendar collection.<br /></t><t anchor="_5059fcd4-c5e0-4324-9822-b41298867c5b">It also specifies the combination of allowed component types.<br /></t>
<t anchor="_daf7d6ca-c035-48c7-8638-3731e726729e">Any attempt by the client to store VPOLL components with component
types or combinations of types not listed in this property, if it
exists, MUST result in an error, with the <tt>CALDAV:supported-vpoll-component-sets</tt>
precondition <xref target="caldav-additional-preconditions"></xref> being violated.  Since
this property is protected, it cannot be changed by clients using
a PROPPATCH request.  However, clients can initialize the value of
this property when creating a new calendar collection with
MKCALENDAR.  In the absence of this property, the server MUST
accept all component types, and the client can assume that all
component types are accepted.</t></dd><dt>Definition</dt><dd></dd></dl>
<sourcecode anchor="_91aa98c5-0ced-44bf-b0a6-a2a8f51629b0"><![CDATA[<!ELEMENT supported-vpoll-component-sets
     (supported-vpoll-component-set*) >

<!ELEMENT supported-vpoll-component-set (comp+)>]]></sourcecode>

<sourcecode anchor="_d25ed706-3f47-4e48-be50-930bf2b5d925" type="xml"><![CDATA[<C:supported-vpoll-component-sets
     xmlns:C="urn:ietf:params:xml:ns:caldav">

  <!-- VPOLLs with VEVENT, VFREEBUSY or VTODO -->
  <C:supported-vpoll-component-set>
    <C:comp name="VEVENT" />
    <C:comp name="VFREEBUSY" />
    <C:comp name="VTODO" />
  </C:supported-vpoll-component-set>

  <!-- VPOLLs with just VEVENT or VFREEBUSY -->
  <C:supported-vpoll-component-set>
    <C:comp name="VEVENT" />
    <C:comp name="VFREEBUSY" />
  </C:supported-vpoll-component-set>

  <!-- VPOLLs with just VEVENT -->
  <C:supported-vpoll-component-set>
    <C:comp name="VEVENT" />
  </C:supported-vpoll-component-set>

  <!-- VPOLLs with just VTODO -->
  <C:supported-vpoll-component-set>
    <C:comp name="VTODO" />
  </C:supported-vpoll-component-set>
</C:supported-vpoll-component-sets>]]></sourcecode>
</section>
<section anchor="vpoll-max-items"><name>CALDAV:vpoll-max-items</name><dl anchor="_79e6171b-bb86-4c20-9b7c-4254a264db11"><dt>Name</dt><dd>
<t anchor="_d62a0506-74f5-4063-bbc2-bb51afb3cdd9">vpoll-max-items</t>
</dd><dt>Namespace</dt><dd>
<t anchor="_5af878c2-37ec-4ee4-a11e-a47681cf7748">urn:ietf:params:xml:ns:caldav</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_f30bcd4a-165d-49c1-aa31-32ae91ee0acf">Provides a numeric value indicating the maximum number of
items that may be contained in any instance of a VPOLL calendar
object resource stored in the calendar collection.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_8d113ec3-14dc-4ada-89fb-ae828563689d">This property MAY be defined on any calendar
collection.  If defined, it MUST be protected and SHOULD NOT be
returned by a PROPFIND DAV:allprop request (as defined in
<relref target="RFC2518" section="12.14.1" relative=""></relref>).</t>
</dd><dt>Description</dt><dd>
<t anchor="_51f132d7-3626-4dea-b42a-83a38d34fb6e">The CALDAV:vpoll-max-items is used to specify a numeric
value that indicates the maximum number of iCalendar components in
any one instance of a VPOLL calendar object resource stored in a
calendar collection.  Any attempt to store a calendar object
resource with more components per instance than this value MUST
result in an error, with the CALDAV: vpoll-max-items precondition
<xref target="caldav-additional-preconditions"></xref> being violated.  In the absence of this property, the
client can assume that the server can handle any number of items
in a VPOLL calendar component.</t>
</dd><dt>Definition</dt><dd></dd></dl>
<sourcecode anchor="_db2a8475-d7e8-423d-93b2-c5ae75b10bbe"><![CDATA[<!ELEMENT vpoll-max-items (#PCDATA)>
PCDATA value: a numeric value (integer greater than zero)]]></sourcecode>

<sourcecode anchor="_c8583ad9-8151-4b87-a780-2166a66f436d" type="xml"><![CDATA[<C:vpoll-max-items xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:vpoll-max-items>]]></sourcecode>
</section>
<section anchor="vpoll-max-active"><name>CALDAV:vpoll-max-active</name><dl anchor="_b7ffa94f-599f-4370-a347-d91c724e1ad9"><dt>Name</dt><dd>
<t anchor="_a1066d0d-4ed8-47d0-b1ab-391b44643e15">vpoll-max-active</t>
</dd><dt>Namespace</dt><dd>
<t anchor="_77431e9c-6573-457b-a91d-52a4e9ccb3a2">urn:ietf:params:xml:ns:caldav</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_87c72dfb-d2dd-4b7b-9387-344c436509ed">Provides a numeric value indicating the maximum number of
active vpolls at any one time.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_3bc138d4-d469-46a1-a1c2-843d019311d7">This property MAY be defined on any calendar
collection.  If defined, it MUST be protected and SHOULD NOT be
returned by a PROPFIND DAV:allprop request (as defined in
<relref target="RFC2518" section="12.14.1" relative=""></relref>).</t>
</dd><dt>Description</dt><dd>
<t anchor="_7973b97e-a711-4141-a06f-368719e294ed">The CALDAV:vpoll-max-active is used to specify a
numeric value that indicates the maximum number of active VPOLLs
at any one time.  Any attempt to store a new active VPOLL calendar
object resource which results in exceeding this limit MUST result
in an error, with the <tt>CALDAV:vpoll-max-active</tt> precondition
<xref target="caldav-additional-preconditions"></xref> being violated.  In the absence of this property, the
client can assume that the server can handle any number of active
VPOLLs.</t>
</dd><dt>Definition</dt><dd></dd></dl>
<sourcecode anchor="_8713dfbb-b3f0-453c-8ab4-d7f8421d5ea3"><![CDATA[<!ELEMENT vpoll-max-active (#PCDATA)>
PCDATA value: a numeric value (integer greater than zero)]]></sourcecode>

<sourcecode anchor="_490e441f-98ca-4e00-a129-5881fd4f10e8" type="xml"><![CDATA[<C:vpoll-max-active xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:vpoll-max-active>]]></sourcecode>
</section>
<section anchor="vpoll-max-voters"><name>CALDAV:vpoll-max-voters</name><dl anchor="_676143ec-f58d-45ef-b33c-0d1711159f59"><dt>Name</dt><dd>
<t anchor="_52cd3087-6bd2-49a2-8dad-be83c57b027c">
<tt>vpoll-max-voters</tt>
</t>
</dd><dt>Namespace</dt><dd>
<t anchor="_8ea30e34-b01f-4c3a-a21f-f687f9889c37">
<tt>urn:ietf:params:xml:ns:caldav</tt>
</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_799e9405-e84a-4aa4-a309-b2f2ca57bfda">Provides a numeric value indicating the maximum number of
voters for any instance of a VPOLL calendar object resource stored
in the calendar collection.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_287924b2-928a-45a3-9496-81104dcfe222">This property MAY be defined on any calendar
collection.  If defined, it MUST be protected and SHOULD NOT be
returned by a PROPFIND <tt>DAV:allprop</tt> request (as defined in
<relref target="RFC2518" section="12.14.1" relative=""></relref>).</t>
</dd><dt>Description</dt><dd>
<t anchor="_0ba6ead6-6a35-4a0a-a69f-39ae0833c9d2">The <tt>CALDAV:vpoll-max-voters</tt> is used to specify a
numeric value that indicates the maximum number of voters for any one instance of a VPOLL calendar object
resource stored in a calendar collection. Any attempt to store a
calendar object resource with more voters per instance
than this value MUST result in an error, with the CALDAV:
<tt>vpoll-max-voters</tt> precondition <xref target="caldav-additional-preconditions"></xref>
being violated.  In the absence of this property, the client can
assume that the server can handle any number of voters in a VPOLL
calendar component.</t>
</dd><dt>Definition</dt><dd></dd></dl>
<sourcecode anchor="_6025ed37-b702-4b9c-a8c7-1ca2ec2d3245"><![CDATA[<!ELEMENT vpoll-max-voters (#PCDATA)>
PCDATA value: a numeric value (integer greater than zero)]]></sourcecode>

<sourcecode anchor="_73fce904-3f36-46a2-9860-fd8511eb47d1" type="xml"><![CDATA[<C:vpoll-max-voters xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:vpoll-max-voters>]]></sourcecode>
</section>
<section anchor="_caldaveven_more_properties"><name>CalDAV:even-more-properties</name>

</section>
<section anchor="_extensions_to_caldav_scheduling"><name>Extensions to CalDAV scheduling</name><t anchor="_74aca58b-b58a-4cea-bcd8-bc21c459deb2">This specification extends <relref target="RFC6638" section="" relative=""></relref>.</t>
<t anchor="_99a317be-5ed9-4510-83f9-8bbb5b144b5e">Each section of Appendix A "Scheduling Privileges Summary" is
extended to include VPOLL.</t>
<t anchor="_1c2c6dcf-64bf-4c1a-bb24-dbf6d6b99c39">Any reference to the ATTENDEE property should be read to include the
CALENDAR-ADDRESS property contained in the PARTICIPANT compoents.
That is, for scheduling purposes the CALENDAR-ADDRESS property
is handled in exactly the same manner as the ATTENDEE property.</t></section></section>
<section anchor="caldav-additional-preconditions"><name>Additional Preconditions for PUT, COPY, and MOVE</name><t anchor="_4151dc23-789d-4a03-ab7a-b18ab982c288">This specification creates additional Preconditions for PUT, COPY,
and MOVE methods.  These preconditions apply when a PUT operation of
a VPOLL calendar object resource into a calendar collection occurs,
or when a COPY or MOVE operation of a calendar object resource into a
calendar collection occurs, or when a COPY or MOVE operation occurs
on a calendar collection.</t>
<t anchor="_2a1252db-1f61-4624-827c-952b20270a61">The new preconditions are:</t>
<dl anchor="_3722b244-9bcf-453c-8d2d-ad3dd5a7451a"><dt>(CALDAV:supported-vpoll-component-sets)</dt><dd>
<t anchor="_2451bf0e-2f25-4f45-9cd1-b81c18746a2b">The VPOLL resource
submitted in the PUT request, or targeted by a COPY or MOVE
request, MUST contain a type or combination of calendar component
that is supported in the targeted calendar collection;</t>
</dd><dt>(CALDAV:vpoll-max-items)</dt><dd>
<t anchor="_5aa11904-4280-4f32-a10a-c15a7c40f772">The VPOLL resource submitted in the PUT
request, or targeted by a COPY or MOVE request, MUST have a number
of sub-components (excluding VTIMEZONE) less than or equal to the
value of the <tt>CALDAV:vpoll-max-items</tt> property value <xref target="vpoll-max-items"></xref>
on the calendar collection where the resource will be stored;</t>
</dd><dt>(CALDAV:vpoll-max-active)</dt><dd>
<t anchor="_d381d9d4-58c4-4e9a-aa95-151f0ddd08be">The PUT request, or COPY or MOVE request,
MUST not result in the number of active VPOLLs being greater than
the value of the <tt>CALDAV:vpoll-max-active</tt> property value
<xref target="vpoll-max-active"></xref> on the calendar collection where the resource will
be stored;</t>
</dd><dt>(CALDAV:vpoll-max-voters)</dt><dd>
<t anchor="_c2a053ef-6b29-4d2d-a060-f9727a389109">The VPOLL resource submitted in the PUT
request, or targeted by a COPY or MOVE request, MUST have a number
of voters represented by PARTICIPANT components less than or equal to the value of the
<tt>CALDAV:vpoll-max-voters</tt> property value <xref target="vpoll-max-voters"></xref> on the
calendar collection where the resource will be stored;</t>
</dd></dl></section>
<section anchor="_caldavcalendar_query_report"><name>CalDAV:calendar-query Report</name><t anchor="_22b694a6-567d-4583-aa4e-0bd9a2b31c12">This allows the retrieval of VPOLLs and their included components.
The query specification allows queries to be directed at the
contained sub-components.  For VPOLL queries this feature is
disallowed.  Time-range queries can only target the vpoll component
itself.</t>
<section anchor="_example_partial_retrieval_of_vpoll"><name>Example: Partial Retrieval of VPOLL</name><t anchor="_6d2ba465-4915-4e4a-981f-ea3a586add01">In this example, the client requests the server to return specific
components and properties of the VPOLL components that overlap the
time range from December 4, 2012, at 00:00:00 A.M.  UTC to December
5, 2012, at 00:00:00 A.M.  UTC.  In addition, the <tt>DAV:getetag</tt>
property is also requested and returned as part of the response.
Note that due to the CALDAV: calendar-data element restrictions, the
DTSTAMP property in VPOLL components has not been returned, and the
only property returned in the VCALENDAR object is VERSION.</t>
<sourcecode anchor="_16de12bd-df85-4a4f-8e82-8bf450c6dd71"><![CDATA[>> Request <<

REPORT /cyrus/work/ HTTP/1.1
Host: cal.example.com
Depth: 1
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:"
              xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:prop>
    <D:getetag/>
    <C:calendar-data>
      <C:comp name="VCALENDAR">
        <C:prop name="VERSION"/>
        <C:comp name="VPOLL">
          <C:prop name="SUMMARY"/>
          <C:prop name="UID"/>
          <C:prop name="DTSTART"/>
          <C:prop name="DTEND"/>
          <C:prop name="DURATION"/>
        </C:comp>

      </C:comp>
    </C:calendar-data>
  </D:prop>
  <C:filter>
    <C:comp-filter name="VCALENDAR">
      <C:comp-filter name="VPOLL">
        <C:time-range start="20121204T000000Z"
                      end="20121205T000000Z"/>
      </C:comp-filter>
    </C:comp-filter>
  </C:filter>
</C:calendar-query>

>> Response <<

HTTP/1.1 207 Multi-Status
Date: Sat, 11 Nov 2012 09:32:12 GMT
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:"
           xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:response>
    <D:href>http://cal.example.com/cyrus/work/poll2.ics</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>"fffff-abcd2"</D:getetag>
        <C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VPOLL
DTSTART;TZID=US/Eastern:20121202T120000
DURATION:PT4D
SUMMARY:Poll #2
UID:00959BC664CA650E933C892C@example.com
END:VPOLL
END:VCALENDAR
</C:calendar-data>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>http://cal.example.com/cyrus/work/poll3.ics</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>"fffff-abcd3"</D:getetag>
        <C:calendar-data>BEGIN:VCALENDAR

VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
BEGIN:VPOLL
DTSTART;TZID=US/Eastern:20121204T100000
DURATION:PT4D
SUMMARY:Poll #3
UID:DC6C50A017428C5216A2F1CD@example.com
END:VPOLL
END:VCALENDAR
</C:calendar-data>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>]]></sourcecode>
</section></section>
<section anchor="_caldav_time_ranges"><name>CalDAV time ranges</name><t anchor="_9ada8404-9631-4d8f-94de-7ea2246ffa5d">"CALDAV:time-range XML Element" in <relref target="RFC4791" section="9.9" relative=""></relref> describes
how to specify time ranges to limit the set of calendar components
returned by the server.  This specification extends <relref target="RFC4791" section="" relative=""></relref> to
describe the meaning of time ranges for VPOLL</t>
<t anchor="_38f29563-8b9c-489a-abac-320841c719cc">A VPOLL component is said to overlap a given time range if the
condition for the corresponding component state specified in the
table below is satisfied.  The conditions depend on the presence of
the DTSTART, DURATION, DTEND, COMPLETED and CREATED properties in the
VPOLL component.  Note that, as specified above, the DTEND value MUST
be a DATE-TIME value equal to or after the DTSTART value if
specified.</t>
<sourcecode anchor="_e8b78e02-d3af-4505-ad6c-3a18aa3db5d7"><![CDATA[+-------------------------------------------------------------------+
| VPOLL has the DTSTART property?                                   |
|   +---------------------------------------------------------------+
|   |   VPOLL has the DURATION property?                            |
|   |   +-----------------------------------------------------------+
|   |   | VPOLL has the DTEND property?                             |
|   |   |   +-------------------------------------------------------+
|   |   |   | VPOLL has the COMPLETED property?                     |
|   |   |   |   +---------------------------------------------------+
|   |   |   |   | VPOLL has the CREATED property?                   |
|   |   |   |   |   +-----------------------------------------------+
|   |   |   |   |   | Condition to evaluate                         |
+---+---+---+---+---+-----------------------------------------------+
| Y | Y | N | * | * | (start  <= DTSTART+DURATION)  AND             |
|   |   |   |   |   | ((end   >  DTSTART)  OR                       |
|   |   |   |   |   |  (end   >= DTSTART+DURATION))                 |
+---+---+---+---+---+-----------------------------------------------+
| Y | N | Y | * | * | ((start <  DTEND)    OR  (start <= DTSTART))  |
|   |   |   |   |   | AND                                           |
|   |   |   |   |   | ((end   >  DTSTART)  OR  (end   >= DTEND))    |
+---+---+---+---+---+-----------------------------------------------+
| Y | N | N | * | * | (start  <= DTSTART)  AND (end >  DTSTART)     |
+---+---+---+---+---+-----------------------------------------------+
| N | N | Y | * | * | (start  <  DTEND)    AND (end >= DTEND)       |
+---+---+---+---+---+-----------------------------------------------+
| N | N | N | Y | Y | ((start <= CREATED)  OR  (start <= COMPLETED))|
|   |   |   |   |   | AND                                           |
|   |   |   |   |   | ((end   >= CREATED)  OR  (end   >= COMPLETED))|
+---+---+---+---+---+-----------------------------------------------+
| N | N | N | Y | N | (start  <= COMPLETED) AND (end  >= COMPLETED) |
+---+---+---+---+---+-----------------------------------------------+
| N | N | N | N | Y | (end    >  CREATED)                           |
+---+---+---+---+---+-----------------------------------------------+
| N | N | N | N | N | TRUE                                          |
+---+---+---+---+---+-----------------------------------------------+]]></sourcecode>
</section></section>
    <section anchor="security"><name>Security Considerations</name>

<t anchor="_2ffa82d9-0da9-419c-a769-8a07e95a9173">Applications using these property need to be aware of the risks
entailed in using the URIs provided as values.  See <relref target="RFC3986" section="" relative=""></relref> for a
discussion of the security considerations relating to URIs.</t>
</section>
    <section anchor="iana"><name>IANA Considerations</name><section anchor="_parameter_registrations"><name>Parameter Registrations</name><t anchor="_7934a8de-c5e0-455e-869c-2cfd7ced2539">This document defines the following new iCalendar property parameters
to be added to the registry defined in <relref target="RFC5545" section="8.2.4" relative=""></relref>:</t>
<table anchor="_14807cce-47bf-453f-8354-5f1e33f34165"><thead><tr><th align="left">Property Parameter</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_b066e26a-5855-4ec2-8d87-7edbe6713ab7">REQUIRED</t>
</td><td align="left">
<t anchor="_f00b81a2-70bc-4ce7-b229-8b1d8fe9b141">Current</t>
</td><td align="left">
<t anchor="_78c3c016-08c9-414d-880c-53ab70adaa39">
<xref target="new-prop-para-required"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_0ed6f9e2-2ec6-4ff2-95a5-e0c954cf6359">STAY-INFORMED</t>
</td><td align="left">
<t anchor="_434777cc-ef8e-4510-8c48-9b64863501c9">Current</t>
</td><td align="left">
<t anchor="_a3ffc237-1304-4b0b-8359-71368567a7a1">
<xref target="new-prop-para-stay-informed"></xref>
</t>
</td></tr></tbody></table></section>
<section anchor="_property_registrations"><name>Property Registrations</name><t anchor="_af2338a6-17f2-446c-863e-a43fdcb544eb">This document defines the following new iCalendar properties to be
added to the registry defined in <relref target="RFC5545" section="8.2.3" relative=""></relref>:</t>
<table anchor="_6853daab-767a-48c1-9758-5a4297738ff6"><thead><tr><th align="left">Property</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_3ff0d7f0-5454-4c8f-bfbd-897a6b6719b2">ACCEPT-RESPONSE</t>
</td><td align="left">
<t anchor="_26efecfe-1031-4132-aa5a-2a767d842ca1">Current</t>
</td><td align="left">
<t anchor="_87f6c680-94b2-44cf-92f9-007b2518557c">
<xref target="new-prop-reply-url"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_527d252e-2735-4db1-8eca-19de7360819a">POLL-ITEM-ID</t>
</td><td align="left">
<t anchor="_b8127f63-aa52-4f71-a5f7-d2ffdff7506a">Current</t>
</td><td align="left">
<t anchor="_79eda19b-2aaf-4a63-8eb1-35cac5b5f664">
<xref target="new-prop-poll-item-id"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_3e1f130b-4f05-4a02-a6c6-c96fe9cac2c0">POLL-MODE</t>
</td><td align="left">
<t anchor="_39c684b0-e59d-48b4-b695-e5a568f98a8d">Current</t>
</td><td align="left">
<t anchor="_fc695433-ff63-4199-a01c-6fee35e8a2a4">
<xref target="new-prop-poll-mode"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_e0ff1a62-b975-4274-9682-ae0b1d7ed8b9">POLL-PROPERTIES</t>
</td><td align="left">
<t anchor="_d3aba086-6b0b-486f-bb68-1db8e2c69d19">Current</t>
</td><td align="left">
<t anchor="_f1bba78e-be3c-4582-849b-a0c8814453ab">
<xref target="new-prop-poll-properties"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_9bad90dd-b85a-4406-9317-5600de395640">POLL-WINNER</t>
</td><td align="left">
<t anchor="_da8f7c1e-0c55-4ac4-b12b-41b6cddb3fcd">Current</t>
</td><td align="left">
<t anchor="_44ca5c76-103a-43ea-ae16-9f4832822105">
<xref target="new-prop-poll-winner"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_454b2d75-4fef-4441-a10d-4b35dd718998">RESPONSE</t>
</td><td align="left">
<t anchor="_416d58c0-3e8d-4fc2-9b4c-131821a3c2e0">Current</t>
</td><td align="left">
<t anchor="_11294ac8-218e-4b5b-8fb3-0e9602e0aac2">
<xref target="new-prop-response"></xref>
</t>
</td></tr></tbody></table></section>
<section anchor="poll-registration-template"><name>POLL-MODE Registration Template</name><t anchor="_6a0c1674-bf60-4984-8c10-a006f0baec89">A poll mode is defined by completing the following template.</t>
<dl anchor="_47f64c11-f3c4-4a76-b02a-0d7340a5fe57"><dt>Poll mode name</dt><dd>
<t anchor="_5a2b6de4-36a8-4971-bff0-77590474f83c">The name of the poll mode.</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_9a536474-934c-47a5-b4cb-1a167045bb59">The purpose of the poll mode.  Give a short but clear
description.</t>
</dd><dt>Reference</dt><dd>
<t anchor="_1aa0196c-5ad4-480f-85d3-28453c65c646">A reference to the RFC in which the poll mode is defined</t>
</dd></dl></section>
<section anchor="_poll_mode_registrations"><name>POLL-MODE Registrations</name><t anchor="_ea9eac18-8eb4-49a7-aed6-defe37fb7ced">This document defines the following registered poll modes.</t>
<table anchor="_38ef9bfb-08d2-42ad-9a2a-e36a5509530a"><thead><tr><th align="left">Poll mode name</th><th align="left">Purpose</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_9d3b7414-7721-456e-9df1-033c8a1a9080">BASIC</t>
</td><td align="left">
<t anchor="_f8418d77-d7b7-4901-b344-098a8f42a0a9">To provide simple voting for a single outcome from a number of candidates.</t>
</td><td align="left">
<t anchor="_cef641a2-139e-49a4-8b36-3ff645b520f3">Current</t>
</td></tr></tbody></table></section></section>
  </middle>
  <back>
    <references anchor="_normative_references">
      <name>Normative References</name>
      <reference target="https://www.rfc-editor.org/info/rfc2119" anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" asciiFullname="S. Bradner"></author>
          <date month="March" year="1997"></date>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.2119.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc2119" type="src"></format>
        <refcontent>RFC 2119</refcontent>
        <seriesInfo value="2119" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC2119" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc2518" anchor="RFC2518">
        <front>
          <title>HTTP Extensions for Distributed Authoring - WEBDAV</title>
          <author fullname="Y. Goland" asciiFullname="Y. Goland"></author>
          <author fullname="E. Whitehead" asciiFullname="E. Whitehead"></author>
          <author fullname="A. Faizi" asciiFullname="A. Faizi"></author>
          <author fullname="S. Carter" asciiFullname="S. Carter"></author>
          <author fullname="D. Jensen" asciiFullname="D. Jensen"></author>
          <date month="February" year="1999"></date>
          <abstract>
            <t>This document specifies a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, namespace manipulation, and resource locking (collision avoidance).  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.2518.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc2518" type="src"></format>
        <refcontent>RFC 2518</refcontent>
        <seriesInfo value="2518" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC2518" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc3986" anchor="RFC3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" asciiFullname="T. Berners-Lee"></author>
          <author fullname="R. Fielding" asciiFullname="R. Fielding"></author>
          <author fullname="L. Masinter" asciiFullname="L. Masinter"></author>
          <date month="January" year="2005"></date>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.3986.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc3986" type="src"></format>
        <refcontent>RFC 3986</refcontent>
        <seriesInfo value="3986" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC3986" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc4791" anchor="RFC4791">
        <front>
          <title>Calendaring Extensions to WebDAV (CalDAV)</title>
          <author fullname="C. Daboo" asciiFullname="C. Daboo"></author>
          <author fullname="B. Desruisseaux" asciiFullname="B. Desruisseaux"></author>
          <author fullname="L. Dusseault" asciiFullname="L. Dusseault"></author>
          <date month="March" year="2007"></date>
          <abstract>
            <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format.  This document defines the "calendar-access" feature of CalDAV.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.4791.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc4791" type="src"></format>
        <refcontent>RFC 4791</refcontent>
        <seriesInfo value="4791" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC4791" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc5234" anchor="RFC5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author fullname="D. Crocker" asciiFullname="D. Crocker" role="editor"></author>
          <author fullname="P. Overell" asciiFullname="P. Overell"></author>
          <date month="January" year="2008"></date>
          <abstract>
            <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.5234.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc5234" type="src"></format>
        <refcontent>RFC 5234</refcontent>
        <seriesInfo value="5234" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC5234" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc5545" anchor="RFC5545">
        <front>
          <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
          <author fullname="B. Desruisseaux" asciiFullname="B. Desruisseaux" role="editor"></author>
          <date month="September" year="2009"></date>
          <abstract>
            <t>This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.5545.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc5545" type="src"></format>
        <refcontent>RFC 5545</refcontent>
        <seriesInfo value="5545" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC5545" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc5546" anchor="RFC5546">
        <front>
          <title>iCalendar Transport-Independent Interoperability Protocol (iTIP)</title>
          <author fullname="C. Daboo" asciiFullname="C. Daboo" role="editor"></author>
          <date month="December" year="2009"></date>
          <abstract>
            <t>This document specifies a protocol that uses the iCalendar object specification to provide scheduling interoperability between different calendaring systems.  This is done without reference to a specific transport protocol so as to allow multiple methods of communication between systems.  Subsequent documents will define profiles of this protocol that use specific, interoperable methods of communication between systems.The iCalendar Transport-Independent Interoperability Protocol (iTIP) complements the iCalendar object specification by adding semantics for group scheduling methods commonly available in current calendaring systems.  These scheduling methods permit two or more calendaring systems to perform transactions such as publishing, scheduling, rescheduling, responding to scheduling requests, negotiating changes, or canceling.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.5546.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc5546" type="src"></format>
        <refcontent>RFC 5546</refcontent>
        <seriesInfo value="5546" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC5546" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc6047" anchor="RFC6047">
        <front>
          <title>iCalendar Message-Based Interoperability Protocol (iMIP)</title>
          <author fullname="A. Melnikov" asciiFullname="A. Melnikov" role="editor"></author>
          <date month="December" year="2010"></date>
          <abstract>
            <t>This document, "iCalendar Message-Based Interoperability Protocol (iMIP)", specifies a binding from the iCalendar Transport-independent Interoperability Protocol (iTIP) to Internet email-based transports. Calendaring entries defined by the iCalendar Object Model (iCalendar) are wrapped using constructs from RFC 5322 and MIME (RFC 2045, RFC 2046, RFC 2047, and RFC 2049), and then transported over SMTP.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.6047.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc6047" type="src"></format>
        <refcontent>RFC 6047</refcontent>
        <seriesInfo value="6047" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC6047" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc6638" anchor="RFC6638">
        <front>
          <title>Scheduling Extensions to CalDAV</title>
          <author fullname="C. Daboo" asciiFullname="C. Daboo"></author>
          <author fullname="B. Desruisseaux" asciiFullname="B. Desruisseaux"></author>
          <date month="June" year="2012"></date>
          <abstract>
            <t>This document defines extensions to the Calendaring Extensions to WebDAV (CalDAV) "calendar-access" feature to specify a standard way of performing scheduling operations with iCalendar-based calendar components.  This document defines the "calendar-auto-schedule" feature of CalDAV.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.6638.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc6638" type="src"></format>
        <refcontent>RFC 6638</refcontent>
        <seriesInfo value="6638" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC6638" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc9073" anchor="RFC9073">
        <front>
          <title>Event Publishing Extensions to iCalendar</title>
          <author fullname="M. Douglass" asciiFullname="M. Douglass"></author>
          <date month="August" year="2021"></date>
          <abstract>
            <t>This specification updates RFC 5545 by introducing a number of new iCalendar properties and components that are of particular use for event publishers and in social networking. This specification also defines a new "STRUCTURED-DATA" property for iCalendar (RFC 5545) to allow for data that is directly pertinent to an event or task to be included with the calendar data.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.9073.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc9073" type="src"></format>
        <refcontent>RFC 9073</refcontent>
        <seriesInfo value="9073" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC9073" name="DOI"></seriesInfo>
      </reference>
    </references>
    <section anchor="_open_issues"><name>Open issues</name><t anchor="_673d9239-78b4-496e-b187-90d3b3af0dfd">public-comment: Not documented and was a parameter on something.
Really sounds like a PARTICIPANT or VOTE property</t>
<t anchor="_a033be57-60dc-40e1-a4be-68b9ca26d17d">Notifications: Need to do a section on what Notifications to
  support.<br />
  A.  VPOLL is about to end and you haven't voted on it yet.
  Instead reuse VALARMS to notify the user?</t>
<t anchor="_ad615f1b-9710-48c7-a1d8-210c2453261d">Future: Restarting a confirmed/completed VPOLL  What to do with
  changes to STATUS:CONFIRMED?  Allow them or not?  What do to that
  poll had a winning event or todo.
  Stress VPOLL UID MUST be unique
  Changing status back from CONFIRMED MUST adjust status of any
  events booked as a result of confirmation.
  MUST winning event be cancelled for POLL-MODE basic?  No - voter
  has indicated now unable to attend - want to revote</t>
<t anchor="_75ec4304-7b67-406b-b469-1e721d82c729">Future: Voting on a confirmed/completed VPOLL  Can a voter vote after
  completion?  May be unable to attend and wants to indicate.
  Requires retention of VPOLL
  retention period
  Removed status</t>
<t anchor="_d797a1dd-842d-4243-bf0f-944173631194">ORGANIZER/ATTENDEE validity  Can a user create a poll with scheduled
  events where that user's isn't the organizer of the poll?  So is
  there a requirement that the account that poll is on is able to
  create each one of the resources in the poll? i.e. I can't create
  a poll with a set of events where I am just the attendee of the
  events.  Are there any other restrictions for components in a
  VPOLL?
  Add to security consideration</t>
<t anchor="_deeb5c9a-1029-4618-9898-449d6016123b">Update to existing event after poll confirm  When voting on existing
  event - winning properties ONLY are merged in to the real event.</t>
<section anchor="_advertising_tasks"><name>Advertising tasks</name><t anchor="_356b8d81-e4cb-444b-a81c-bd3f12da4efe">Use VPOLL for advertising a task to a pool of possible ATTENDEEs and then select the respondent to assign one or more assignees.</t>
<t anchor="_4d903bf3-2235-42f8-b2dd-8af464ed1d12">Introduce POLL-MODE:ASSIGNMENT</t>
<t anchor="_fc0cda19-00a1-4671-9ed3-f2746652bd03">Need to indicate number of assignees required.</t>
<t anchor="_85ce1b62-0164-40df-a6bb-584ac0481bc4">Potentially different types of response e.g. ACCEPT or DECLINE, or a weighting e.g. 0 - 100</t>
<t anchor="_29284a08-403e-4c5a-bb6c-32e9cb8b6dfe">Take into FREEBUSY discussion.</t>
<t anchor="_e9e79630-b5e2-4f0c-8d16-014bf836fa30">Need to write down what isn't valid in a VPOLL<br />
  a.  Can't change POLL-MODE</t>
<t anchor="_5f1205d2-2ad8-4e33-babe-fb5c8158233c">Guide for ATTENDEE roles
  chair, NON-PARTICIPANT etc</t>
<t anchor="_f29b062c-39c4-4a84-a5b5-0cc4eb137d9c">? - some iTip notes  On confirm - send itip if appropriate (PUBLISH)
  - all non-participating - shared - feeds
  Organizer can specify where result is?
  Confirm can specify that itip is sent - ITIP / NONE - parameter ?
  on POLL-WINNER</t>
<t anchor="_0146fee7-2465-43eb-8a11-39a15d2c9324">Need to add example of freebusy in response</t>
<sourcecode anchor="_119f7e90-ab0a-4a2a-8727-f40585e61e15"><![CDATA[BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//BedeworkCaldavTest//BedeworkCaldavTest
METHOD: REPLY
BEGIN:VPOLL
ORGANIZER:mailto:douglm@mysite.edu
BEGIN:PARTICIPANT
PARTICIPANT-TYPE: VOTER
CALENDAR-ADDRESS:mailto:eric@example.com
UID:sched01-1234567890
DTSTAMP:20120101T010000Z
SEQUENCE:0
SUMMARY:What to do this week
BEGIN:VFREEBUSY
.......
END:VFREEBUSY
END:PARTICIPANT
END:VPOLL
END:VCALENDAR]]></sourcecode>
</section></section>
    <section anchor="_change_log"><name>Change log</name>

<dl anchor="_e61b41dd-cfdb-4723-8e3e-f801a2ebe78b"><dt>Calext V01: 2019-10-17 MD</dt><dd>
<t anchor="_6cf91f9e-1bd2-4faf-9acc-8447749a74f2">Replace VVOTER and VOTER with PARTICIPANT.</t>
</dd><dt>Calext V00: 2019-05-17 MD</dt><dd>
<t anchor="_d275579c-675c-4f7a-bdd8-c60855c5e39d">First calext version. Moved source to metanorma. No changes to specification.</t>
</dd><dt>V03: 2014-10-28 MD</dt><dd>
<ul anchor="_6a0660ad-3237-48ba-bc5a-c96bfbfd5003">
<li>Add VVOTER and VOTE components.</li>
<li>Add RESPONSE property.</li>
<li>Remove RESPONSE parameter from VOTER.</li>
</ul>
</dd><dt>V03: 2014-05-12 MD</dt><dd>
<ul anchor="_1abd2f2e-3ac3-4dc9-b970-db0775fbeea2">
<li>Add reply-url property and required parameter.</li>
<li>Fix ACCEPT-RESPONSE definition.</li>
</ul>
</dd><dt>V02: 2014-05-12 MD</dt><dd>
<ul anchor="_92013239-9d49-44ab-a580-4255a0b81937">
<li>Typos fixed, clarifications made.</li>
<li>Removed spurious COMMENT param.  Switched some to PUBLIC-COMMENT</li>
<li>Changed STAY-INFORMED to remove boolean value type and state
explicit TRUE/FALSE values.</li>
<li>iTip: Allow VPOLL DTSTART to be optional and allow VAVAILABILITY
as subcomponent</li>
<li>iTip: fix broken table cells</li>
<li>Add POLL-PROPERTIES, POLL-WINNER to 5545 extensions table</li>
<li>Added Caldav scheduling section</li>
</ul>
</dd><dt>V01: 2013-08-07 MD</dt><dd>
<ul anchor="_85ee2272-df00-44ed-b2cb-3c2d22465c1b">
<li>Removed method CONFIRM</li>
<li>Removed pollitemid from VPOLL abnf.  Added text for pollwinner</li>
<li>Added POLL-WINNER and verbiage</li>
<li>Added STATUS values</li>
<li>Added RELTYPE=POLL</li>
<li>Added supported-vpoll-component-sets</li>
<li>Added CalDAV related parameters to VOTER</li>
<li>Removed bad CalDAV query example.  State that queries cannot
target the sub-components.</li>
</ul>
</dd><dt>Initial version: 2012-11-02 MD</dt><dd></dd></dl>
</section>
  </back>
</rfc>
