<?xml version="1.0"?>
<?rfc rfcedstyle="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<!--<?rfc compact="yes"?>-->
<!--<?rfc subcompact="no"?>-->

<rfc  category='std' ipr="full3978" docName="draft-desruisseaux-caldav-sched-03">
<front>
  <title abbrev="CalDAV">Scheduling Extensions to CalDAV</title>
  <author initials="C." surname="Daboo" fullname="Cyrus Daboo">
    <organization abbrev="Apple">Apple Inc.</organization>
    <address>
      <postal>
        <street>1 Infinite Loop</street>
        <city>Cupertino</city>
        <region>CA</region>
        <code>95014</code>
        <country>USA</country>
      </postal>
      <email>cyrus@daboo.name</email>
      <uri>http://www.apple.com/</uri>
    </address>
  </author>
  <author initials="B." surname="Desruisseaux" 
    fullname="Bernard Desruisseaux">
    <organization abbrev="Oracle">Oracle Corporation</organization>
    <address>
      <postal>
        <street>600 Blvd. de Maisonneuve West</street>
        <street>Suite 1900</street>
        <city>Montreal</city>
        <region>QC</region>
        <code>H3A 3J2</code>
        <country>CANADA</country>
      </postal>
      <email>bernard.desruisseaux@oracle.com</email>
      <uri>http://www.oracle.com/</uri>
    </address>
  </author>
  <author initials="L.M." surname="Dusseault" fullname="Lisa Dusseault">
    <organization abbrev="CommerceNet">CommerceNet</organization>
    <address>
      <postal>
        <street>169 University Ave.</street>
        <city>Palo Alto</city>
        <region>CA</region>
        <code>94301</code>
        <country>USA</country>
      </postal>
      <email>ldusseault@commerce.net</email>
      <uri>http://commerce.net/</uri>
    </address>
  </author>
  <date year="2007" month="January" day="26"/>
  <area>Applications</area>
  <keyword>calsched</keyword>
  <keyword>calsch</keyword>
  <keyword>caldav</keyword>
  <keyword>calendar</keyword>
  <keyword>calendaring</keyword>
  <keyword>scheduling</keyword>
  <keyword>webdav</keyword>
  <keyword>iCal</keyword>
  <keyword>iCalendar</keyword>
  <keyword>iTIP</keyword>
  <keyword>text/calendar</keyword>
  <keyword>HTTP</keyword>
  <abstract>
    <t>
	  This document defines extensions to the Web Distributed Authoring
	  and Versioning (WebDAV) protocol to specify a standard way of
	  exchanging and processing scheduling messages based on the iCalendar
	  Transport-Independent Interoperability Protocol (iTIP). This document
	  defines the "calendar-schedule" feature of CalDAV.
    </t>
  </abstract>
</front>
<middle>
  <section anchor="intro" title="Introduction">
    <t>
      This document specifies a set of headers, properties and
      privileges that define the <xref
      target="I-D.dusseault-caldav">CalDAV</xref> scheduling extensions
      to the <xref target="RFC2518">WebDAV</xref>
      protocol. This document also provides the transport specific
      information necessary to convey <xref target="RFC2445">iCalendar
      </xref> Transport-independent Interoperability Protocol <xref
      target="RFC2446">iTIP</xref> over WebDAV which enables
      transactions such as publish, schedule, reschedule, respond to
      scheduling requests, negotiation of changes or cancel
      iCalendar-based calendar components, as well as search for
      available busy time information.
    </t>
    <t>
      Discussion of this Internet-Draft is taking place on the mailing list
      &lt;http://lists.osafoundation.org/mailman/listinfo/ietf-caldav&gt;.
    </t>

    <section title="XML Namespaces">
      <t>
        Definitions of XML elements in this document use XML element
        type declarations (as found in XML Document Type Declarations),
        described in Section 3.2 of <xref target="W3C.REC-xml-20060816"/>.
      </t>
      <t>
        The namespace "urn:ietf:params:xml:ns:caldav" is reserved for the
        XML elements defined in this specification, or in other Standards
        Track IETF RFCs written to extend CalDAV. It MUST NOT be used
        for proprietary extensions.
      </t>
      <t>
        Note that the XML declarations used in this document are
        incomplete, in that they do not include namespace information.
        Thus, the reader MUST NOT use these declarations as the only way
        to create valid CalDAV properties or to validate CalDAV XML
        element types. Some of the declarations refer to XML elements
        defined by WebDAV which use the "DAV:" namespace. Wherever such
        elements appear, they are explicitly given the "DAV:" prefix to
        help avoid confusion. Additionally, some of the elements used
        here are defined in <xref
        target="I-D.dusseault-caldav">CalDAV</xref>.
      </t>
      <t>
        Also note that some CalDAV XML element names are identical to
        WebDAV XML element names, though their namespace differs. Care
        MUST be taken not to confuse the two sets of names.
      </t>
    </section><!-- XML Namespace -->

    <section title="Notational Conventions">
      <t>
        The augmented BNF used by this document to describe protocol
        elements is described in Section 2.1 of <xref target="RFC2616"/>.
        Because this augmented BNF uses the basic production rules provided
        in Section 2.2 of <xref target="RFC2616"/>, those rules apply to
        this document as well.
      </t>
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
        in this document are to be interpreted as described in <xref target="RFC2119"/>.
      </t>
      <t>
        When XML element types in the namespaces "DAV:" and
        "urn:ietf:params:xml:ns:caldav" are referenced in this document
        outside of the context of an XML fragment, the string "DAV:" and
        "CALDAV:" will be prefixed to the element types respectively.
      </t>
    </section><!-- Notational Conventions -->
    <section title="Terminology">
      <t>
<?rfc compact="no" ?>
        <list style="hanging">
          <t hangText="Scheduling message:">
            A message that describes a transaction such as publish,
            schedule, reschedule, respond to scheduling requests,
            negotiation of changes or cancel calendar components.
          </t>
          <t hangText="Free busy message:">
            A message that describes a transaction such as publish
            unsolicited busy time information, request busy time
            information, or respond to a busy time request.
          </t>
        </list>
<?rfc compact="yes" ?>
      </t>
    </section><!-- Terminology-->
  </section><!-- Introduction -->

  <section anchor="requirements" title="Required Scheduling features">
    <t>
      This section lists what functionality is required of a CalDAV
      scheduling server. To advertise support for this specification
      a server:
<?rfc compact="no" ?>
      <list style="symbols">
	    <t>
		  MUST support <xref target="RFC2445">iCalendar</xref> as a
		  media type for calendar object resource format;
	    </t>
        <t>
          MUST support iTIP <xref target="RFC2446"/>.
        </t>
	    <t>
		  MUST support <xref target="RFC2518">WebDAV Class 1 &amp; Class 2</xref>
		  (note that <xref target="I-D.ietf-webdav-rfc2518bis"/> describes
		  clarifications to <xref target="RFC2518"/> that aid interoperability);
	    </t>
	    <t>
		  MUST support <xref target="RFC3744">WebDAV ACL</xref> with
		  the additional privilege defined in <xref target="privileges"/>
		  of this document;
	    </t>
	    <t>
		  MUST support transport over TLS <xref target="RFC2246"/>
		  as defined in <xref target="RFC2818"/> (note that <xref target="RFC2246"/> has been obsoleted by <xref target="RFC4346"/>);
	    </t>
	    <t>
		  MUST support ETags <xref target="RFC2616"/>;
	    </t>
        <t>
          MUST support the CALDAV:schedule privilege and its sub-privileges.
        </t>
        <t>
          MUST support the CALDAV:schedule-inbox and
          CALDAV:schedule-outbox collection resource types.
        </t>
        <t>
          MUST support the POST method with the Recipient and Originator
          request headers targeted at a CALDAV:schedule-outbox
          collection resource types.
        </t>
      </list>
<?rfc compact="yes" ?>
    </t>
	<t>
	  A CalDAV scheduling server MAY also support the CalDAV
	  calendar-access feature <xref target="I-D.dusseault-caldav"/>, and
	  that adds the following requirements:
<?rfc compact="no" ?>
	  <list>
	  	<t>
	  	  MUST support the CALDAV:calendar-query and CALDAV:multiget REPORTs
	  	  on CALDAV:schedule-inbox and CALDAV:schedule-outbox collection 
	  	  resource types.
	  	</t>
	  </list>
<?rfc compact="yes" ?>
	</t>
  </section>
  <section title="CalDAV Scheduling Support Discovery" anchor="support.discovery">
    <t>
      If the server supports the calendar scheduling features described
      in this document it MUST include "calendar-schedule" as a field
      in the DAV response header from an OPTIONS request on any resource
      that supports any scheduling properties, privileges or methods.
    </t>

    <section title="Example: Using OPTIONS for the Discovery of Support for CalDAV" anchor="support.discovery.example">
      <figure>
        <preamble>&gt;&gt; Request &lt;&lt;</preamble>
        <artwork><![CDATA[
OPTIONS /lisa/calendar/outbox/ HTTP/1.1
Host: cal.example.com
        ]]></artwork>
      </figure>
      <figure>
        <preamble>&gt;&gt; Response &lt;&lt;</preamble>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE
Allow: MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, REPORT, ACL
DAV: 1, 2, access-control, calendar-access, calendar-schedule
Content-Length: 0
        ]]></artwork>
      </figure>
      <t>
        In this example, the OPTIONS response indicates that the server
        supports both the calendar-access and calendar-schedule features
        and that /lisa/calendar/outbox/ can be specified as a Request-URI
        to the POST method.
      </t>
    </section><!-- support.discovery.example -->
  </section><!-- support.discovery -->

  <section title="Scheduling Process">
    <t>
      The process of scheduling a meeting between different parties
      often involves a series of steps with different "actors" playing
      particular roles during the whole process. Typically there is
      a meeting "Organizer" whose role is to setup a meeting between
      one or more meeting "Attendees", and this is done by sending out
      invitations and handling responses from each Attendee.
    </t>
    <t>
      This process can typically be broken down into two phases.
    </t>
    <t>
      In the first phase the "Organizer" tries to determine a time for
      the meeting that ought to be the most acceptable to each "Attendee".
      This involves finding out when each Attendee is available during
      the period of time in which the meeting needs to occur (or simply
      finding a suitable time for all attendees to come together for the
      meeting), and determining when the most appropriate time is for
      which each Attendee is free. This process is called a "free-busy"
      lookup.
    </t>
    <t>
      In the second phase the "Organizer" sends out invitations to each
      "Attendee" using the time determined from the free-busy lookup - or
      a suitable guess as to an appropriate time based on other factors
      if free-busy lookup is not feasible. There then follows a process
      of negotiation between "Organizer" and "Attendees" regarding the
      invitation. Some "Attendees" may choose to attend at the original
      time provided by the "Organizer", others may decline to attend at
      that time, but suggest another time, others may decline to attend at
      any time. The "Organizer" needs to process each of the replies from
      the "Attendees" and take appropriate action to confirm the meeting,
      reschedule it or perhaps cancel it depending on those replies.
    </t>
    <t>
      The user "expectation" as to how a calendaring and scheduling
      system should respond in each of these two phases is somewhat
      different. In the case of a free-busy lookup, users expect to
      get back results immediately so that they can then move on to the
      invitation phase as quickly as possible. In the case of invitations,
      its expected that each "Attendee" will reply in his or her own time,
      so delays in receiving replies are anticipated. Thus calendaring
      and scheduling systems should treat these two operational phases
      in different ways to accommodate the user expectations, and this
      specification does that.
    </t>

    <section title="Scheduling Collections">
      <t>
        It is useful for each participant in a scheduling transaction to
        maintain their own "history" of invitations sent and received
        during the process and after to keep track of what was done,
        and to properly handle updates to invitations as they may change
        over time. This history is usually kept separate from the actual
        "booked" event, to-do, or daily journal entry, which would normally
        be placed in a user's calendar collection.
      </t>
      <t>
        In addition, it is useful to keep outgoing invitations separate
        from incoming ones for organizational purposes.
      </t>
      <t>
        Also, a calendar user may have multiple calendars representing
        different spheres of activity, but scheduling requests are targeted
        at calendar user addresses, and there is no formal way to have
        those indicate which sphere of activity they might apply to. By
        storing all incoming scheduling requests in a separate collection,
        clients can process the requests in that collection and choose what
        calendar the request belongs to and make its own arrangements to
        place the relevant calendar object in that calendar to "book" it.
      </t>
      <t>
        This specification introduces two new collection resource types
        that are used for keeping incoming and outgoing scheduling messages
        separate from other calendar object resources. These can also be
        used to control who is able to send scheduling messages on behalf
        of a user, and who is allowed to send scheduling messages to other
        users by the use of new WebDAV <xref target="RFC3744">ACL</xref>
        privileges.  Note that these collections only contains scheduling
        messages that pertains to the scheduling of events, to-dos and
        daily journal entries. Scheduling messages that describes requests
        for available busy time information, or replies to such request,
        are not contained in these collections.
      </t>
      <t>
        The scheduling "Inbox" collection contains received scheduling
        messages. Scheduling messages are contained in calendar object
        resources. Each calendar object resource has a WebDAV property
        that indicates whether the scheduling message has already been
        processed or not so that multiple clients do not repeat the
        processing actions already done.
      </t>
      <t>
        The scheduling "Outbox" collection contains scheduling message
        that have been sent, which need to be tracked both to help
        synchronize between multiple clients and to support delegation
        use cases. A single user with multiple clients can use this
        collection to synchronize the outbound request history. Two users
        coordinating scheduling with one calendar (e.g., a calendar user
        and her assistant) can see what scheduling messages the other
        user has sent. The calendar owner would then typically have
        permission to DELETE the scheduling messages but the assistant
        might not.
      </t>
    </section>

    <section title="Scheduling Transactions">
      <t>
        The iCalendar Transport-independent Interoperability Protocol
        <xref target="RFC2446">(iTIP)</xref> outlines a model for
        scheduling and free-busy message exchanges to perform scheduling
        transactions. This specification makes use of scheduling free-busy
        messages to handle scheduling transactions on the server by
        having such messages passed between different users on the server
        depending on their role in the scheduling process.
      </t>
      <t>
        To that end each scheduling message is modeled as a calendar object
        resource which contains the iCalendar object that conforms to
        the iTIP requirements for the type of transaction being requested.
      </t>
      <t>
        This specification defines the POST method, acting on an
        Organizer's scheduling Outbox, to trigger schedule processing
        by the server. This can take one of two forms: for free-busy
        messages the POST request returns immediately with free busy
        results; for scheduling messages, a copy of the scheduling message
        specified in the request body is deposited into each recipient's
        scheduling Inbox.
      </t>
      <t>
        The server may support delivery of scheduling messages to other
        CalDAV servers if the client specifies a remote calendar user address for any recipient,
        but the server is not bound to support or complete remote
        delivery operations even if it advertises support for the
        "calendar-schedule" feature. Note that remote delivery mechanisms
        are not defined in this specification.  This specification does
        not define a server-to-server or server-to-client protocol to
        deliver remote scheduling messages. Implementations may do this in
        a proprietary way, with <xref target="RFC2447">iMIP</xref>,
        or with iTIP bindings as yet unspecified.
      </t>
      <t>
        After the delivery is completed, CalDAV clients will see the
        scheduling message the next time they synchronize or query a
        scheduling Inbox collection. To reply to a scheduling REQUEST,
        the client uses the POST method to send another scheduling
        message (this time, a REPLY) back to the "Organizer". If the
        user has decided to accept the REQUEST, the client can create
        a suitable calendar object resource in the appropriate calendar
        collection for the recipient. The step of putting the calendar
        object resource in the calendar is left up to the client, so that
        the client can make appropriate choices about where to put the
        calendar object resource, and with what alarms, etc. However,
        the server MAY be configured to automatically accept or reject
        invitations, and if the server auto-accepts invitations then the
        server is responsible for creating calendar object resources in
        a calendar collection specified by the user.
      </t>
    </section>
  </section><!-- Process -->

  <section anchor="new-resources" title="New Resource Types and Properties">
    <t>
      The CalDAV scheduling extension defines the following new resource
      types for use with CalDAV.
    </t>
    <section anchor="schedule-inbox" title="Scheduling Inbox Collection">
      <t>
        A scheduling Inbox collection contains incoming scheduling
        messages. These may be requests sent by an Organizer, or replies
        sent by an Attendee in response to a request.
      </t>
      <t>
        A scheduling Inbox collection MUST report the DAV:collection and
        CALDAV:schedule-inbox XML elements in the value of the
        DAV:resourcetype property. The element type declaration for
        CALDAV:schedule-inbox is:
        <figure>
          <artwork><![CDATA[
   <!ELEMENT schedule-inbox EMPTY>
          ]]></artwork>
        </figure>
      </t>
      <t>
        Example:
        <figure>
          <artwork><![CDATA[
   <resourcetype xmlns="DAV:">
     <collection/>
     <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
   </resourcetype>
          ]]></artwork>
        </figure>
      </t>
      <t>
        Every non-collection resource in the scheduling Inbox collection
        MUST be a valid calendar object resource that defines a
        scheduling message (e.g., an iCalendar object that follows the
        iTIP semantic).  Note, that unlike calendar collections defined
        by the calendar-access feature, there are no restrictions on the
        nature of the resources stored (e.g., there is no need to verify
        that the UIDs in each resource are unique) beyond the restrictions
        of iTIP itself. The removal of the UID restriction, in particular,
        is needed because multiple scheduling messages may be sent for
        one particular calendar component, and each of those will have
        the same UID property in the calendar object resource.
      </t>
      <t>
        A new access control privilege can be set on the scheduling
        Inbox collection to control who is allowed to send scheduling
        messages to the calendar user associated with the scheduling Inbox. See <xref
        target="privileges"/> for more details.
      </t>
    </section>
    <section anchor="schedule-outbox" title="Scheduling Outbox Collection">
      <t>
        A scheduling Outbox collection contains outgoing scheduling
        messages. These may be requests initiated by or on behalf of the
        calendar user associated with the scheduling Outbox, or responses to requests received
        by the calendar user associated with the scheduling Outbox.
      </t>
      <t>
        A scheduling Outbox collection MUST report the DAV:collection
        and CALDAV:schedule-outbox XML elements in the value of the
        DAV:resourcetype property. The element type declaration for
        CALDAV:schedule-outbox is:
        <figure>
          <artwork><![CDATA[
   <!ELEMENT schedule-outbox EMPTY>
          ]]></artwork>
        </figure>
      </t>
      <t>
        Example:
        <figure>
          <artwork><![CDATA[
   <resourcetype xmlns="DAV:">
     <collection/>
     <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
   </resourcetype>
          ]]></artwork>
        </figure>
      </t>
      <t>
        Every non-collection resource in the scheduling Outbox collection
        MUST be a valid calendar object resource that defines a scheduling
        message (e.g., an iCalendar object that follows the iTIP semantic).
        When a client targets the POST method at a scheduling Outbox,
        the server MAY create a copy of the scheduling message in that
        scheduling Outbox, unless the POST method corresponds to
        a free-busy message, in which case the server MUST NOT store a
        copy of the free-busy message. Copies that are created serve as
        a record of outgoing scheduling messages.
      </t>
      <t>
        The server MAY auto-delete calendar object resources in the
        scheduling Outbox (e.g., after a period of time or to keep within
        a quota).
      </t>
      <t>
        A new access control privilege can be used on the scheduling
        Outbox collection to control who is allowed to send scheduling
        messages on behalf of the calendar user associated with the scheduling Outbox.  See
        <xref target="privileges"/> for more details.
      </t>
    </section>

    <section anchor="inbox-properties" title="Scheduling Inbox Properties">
      <t>
        This section describes new WebDAV properties on scheduling Inbox
        collection resources.
      </t>

      <section anchor="PROPERTY_calendar-free-busy-set" title="CALDAV:calendar-free-busy-set Property">
        <t>
<?rfc compact="no" ?>
          <list style="hanging">
            <t hangText="Name:">
              calendar-free-busy-set
            </t>
            <t hangText="Namespace:">
              urn:ietf:params:xml:ns:caldav
            </t>
            <t hangText="Purpose:">
              Identify the calendars that contribute to the free-busy
              information for the calendar user associated with the scheduling Inbox.
            </t>
            <t hangText="Conformance:">
              This property MAY be protected and SHOULD NOT be returned by
              a PROPFIND allprop request (as defined in Section 12.14.1 of
              <xref target="RFC2518"/>).  Support for
              this property is REQUIRED.
            </t>
            <t hangText="Description:">
              This property is required to allow a POST request to
              automatically determine the free busy information for each
              specified Recipient for immediate return in the response. A
              server with a fixed set of calendars per user can make this
              property protected. A server that allows users to create
              their own calendars SHOULD allow users to change their own
              property value.
            </t>
            <t hangText="Definition:">
              <figure>
                <artwork><![CDATA[
   <!ELEMENT calendar-free-busy-set (DAV:href*) >
                ]]></artwork>
              </figure>
            </t>
            <t hangText="Example:">
              <figure>
                <artwork><![CDATA[
   <C:calendar-free-busy-set xmlns:D="DAV:"
                         xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:href>/calendars/bernard/work/</D:href>
     <D:href>/calendars/bernard/home/</D:href>
     <D:href>/public/holidays/CA/</D:href>
   </C:calendar-free-busy-set>
                ]]></artwork>
              </figure>
            </t>
          </list>
<?rfc compact="yes" ?>
        </t>
      </section><!-- PROPERTY_calendar-free-busy-set -->
    </section><!-- inbox-properties -->

    <section anchor="resource-properties" title="Calendar Object Resource Properties">
      <t>
        This section describes new WebDAV properties for calendar object
        resources stored in scheduling Inbox or Outbox collections.
      </t>

      <section title="CALDAV:originator Property" anchor="originator">
        <t>
<?rfc compact="no" ?>
          <list style="hanging">
            <t hangText="Name:">  
              originator
            </t>
            <t hangText="Namespace:">
              urn:ietf:params:xml:ns:caldav
            </t>
            <t hangText="Purpose:">
              Indicates the Originator of the scheduling message contained
              in a scheduling Inbox or Outbox collection.
            </t>
            <t hangText="Conformance:">
              This property MUST be protected and SHOULD NOT be returned
              by a PROPFIND DAV:allprop request (as defined in Section
              12.14.1 of <xref target="RFC2518"/>).
            </t>
            <t hangText="Description:">
              The CALDAV:originator property MUST be defined on calendar
              object resources stored in an Inbox or Outbox collection as
              the result of a POST request.  The value of the property
              MUST be the value of the Originator request header in the
              POST request that caused the resource to be created in
              the collection.
            </t>
            <t hangText="Definition:">
              <figure>
                <artwork><![CDATA[
   <!ELEMENT originator (DAV:href)>
   DAV:href value: a CAL-ADDRESS (see Section 4.3.3 in [RFC 2445])
                ]]></artwork>
              </figure>
            </t>
            <t hangText="Example:">
              <figure>
                <artwork><![CDATA[
   <C:originator xmlns:D="DAV:"
                 xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:href>mailto:bernard@example.com</D:href>
   </C:originator>
                ]]></artwork>
              </figure>
            </t>
          </list>
<?rfc compact="yes" ?>
        </t>
      </section><!-- originator -->

      <section title="CALDAV:recipient Property" anchor="recipient">
        <t>
<?rfc compact="no" ?>
          <list style="hanging">
            <t hangText="Name:">  
              recipient
            </t>
            <t hangText="Namespace:">
              urn:ietf:params:xml:ns:caldav
            </t>
            <t hangText="Purpose:">
              On a calendar object resource contained in a scheduling
              Outbox collection, this indicates the list of Recipients to
              whom the scheduling message was sent. On a calendar object
              resource in a scheduling Inbox collection, this indicates the
              recipient calendar user address that caused the scheduling
              message to be delivered into the scheduling Inbox.
            </t>
            <t hangText="Conformance:">
              This property MUST be protected and SHOULD NOT be returned
              by a PROPFIND DAV:allprop request (as defined in Section
              12.14.1 of <xref target="RFC2518"/>).
            </t>
            <t hangText="Description:">
              The CALDAV:recipient property MUST be defined on calendar
              object resources stored in a scheduling Outbox or Inbox
              collection as the result of a POST request. For calendar
              object resources in a scheduling Outbox, the value of the
              property MUST be a list of calendar user addresses formed
              from all the addresses in any Recipient request headers
              in the POST request that caused the resource to be
              created in the collection. For calendar object resources in
              a scheduling Inbox, the value of the property MUST be the
              calendar user address from the Recipient request header
              in the POST request that caused the resource to be
              created in the collection. Typically this calendar user address will be
              one of those listed in the CALDAV:calendar-user-address-set
              (see <xref target="PROPERTY_calendar-user-address-set"/>)
              property for the principal that owns the scheduling Inbox.
              However, it could, for example, be a calendar user address
              of a group that includes the calendar user associated with the scheduling Inbox.
            </t>
            <t hangText="Definition:">
              <figure>
                <artwork>
                  <![CDATA[
   <!ELEMENT recipient (DAV:href+)>
   DAV:href value: a CAL-ADDRESS (see Section 4.3.3 in [RFC 2445])
            ]]>
                </artwork>
              </figure>
            </t>
            <t hangText="Example:">
              <figure>
                <artwork><![CDATA[
   <C:recipient xmlns:D="DAV:"
                xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:href>mailto:cyrus@example.com</D:href>
     <D:href>mailto:lisa@example.com</D:href>
   </C:recipient>
                ]]></artwork>
              </figure>
            </t>
          </list>
<?rfc compact="yes" ?>
        </t>
      </section><!-- recipient -->
    </section>
  </section>
  <section anchor="scheduling" title="Scheduling">
    <section anchor="schedule" title="POST Method">
      <t>
        The POST method submits a scheduling or free-busy message to
        one or more recipients by targeting the request at the URI of a
        scheduling Outbox collection. The request body of a POST method
        MUST contain a scheduling message or free-busy message (e.g., an
        iCalendar object that follows the iTIP semantic).  The resource
        identified by the Request-URI MUST be a resource collection of
        type <xref target="schedule-outbox">CALDAV:schedule-outbox</xref>.
      </t>
      <t>
        A submitted scheduling message will be delivered to the calendar
        user addresses specified in the Recipient request header. A
        submitted free-busy message will be immediately executed and a
        free-busy response returned.
      </t>
      <t>
        Preconditions:
<?rfc compact="no" ?>
        <list>
          <t>
            (CALDAV:supported-collection): The Request-URI MUST identify
            the location of a scheduling Outbox collection;
          </t>
          <t>
            (CALDAV:supported-calendar-data): The resource submitted in
            the POST request MUST be a supported media type (i.e.,
            text/calendar) for scheduling or free-busy messages;
          </t>
          <t>
            (CALDAV:valid-calendar-data): The resource submitted in the
            POST request MUST be valid data for the media type being
            specified (i.e., valid iCalendar object);
          </t>
          <t>
            (CALDAV:valid-scheduling-message): The resource submitted in
            the POST request MUST obey all restrictions specified for
            the POST request (e.g., scheduling message follows the
            restriction of iTIP);
          </t>
          <t>
            (CALDAV:originator-specified): The POST request MUST
            include a valid Originator request header specifying a calendar
            user address of the currently authenticated user;
          </t>
          <t>
            (CALDAV:originator-allowed): The calendar user identified by
            the Originator request header in the POST request MUST be
            granted the CALDAV:schedule privilege or a suitable
            sub-privilege on the scheduling Outbox collection being
            targeted by the request;
          </t>
          <t>
            (CALDAV:organizer-allowed): The calendar user identified by
            the ORGANIZER property in the POST request's scheduling
            message MUST be the calendar user (or one of the calendar users) associated with of the
            scheduling Outbox being targeted by the request;
          </t>
          <t>
            (CALDAV:recipient-specified): The POST request MUST include
            one or more valid Recipient request headers specifying the
            calendar user address of users to whom the scheduling message
            will be delivered.
          </t>
        </list>
<?rfc compact="yes" ?>
      </t>
      <t>
        Postconditions: None
      </t>

      <section title="Originator request header">
        <t>
          Every POST request MUST include an Originator request header
          that specifies the calendar user address of the originator of
          a given scheduling message. The value specified in this
          request header MUST be a calendar user address specified in
          the CALDAV:calendar-user-address-set property defined on the
          principal resource of the currently authenticated user. Also,
          the currently authenticated user MUST have the CALDAV:schedule
          privilege or a suitable sub-privilege granted on the targeted
          scheduling Outbox collection.
        </t>
        <t>
          Typically the Originator request header's value will correspond
          to the Organizer of the calendar component and to the calendar user associated with the Outbox being targeted by the request. However, the
          Organizer may choose to allow another user to act on his behalf
          to send scheduling messages. To allow for this a new privilege
          has been defined to allow the calendar user associated with a scheduling Outbox to
          grant to other users the right to execute POST requests on
          that Outbox.
        </t>
        <t>
          The value of the Originator request header is kept in the
          CALDAV:originator property on any resources saved as a result of
          the schedule request. This includes the copy of the scheduling
          message saved in the scheduling Outbox, and scheduling messages
          delivered to any scheduling Inbox.
        </t>
      </section>

      <section title="ORGANIZER Property">
        <t>
          iTIP requires that every scheduling message contains an ORGANIZER
          property identifying the calendar user address of the Organizer
          of the calendar object. To prevent 'spoofing' (forgeries)
          of scheduling messages, CalDAV servers MUST verify that the
          calendar user address identified by the ORGANIZER property in
          the scheduling message data corresponds to the principal owning
          the scheduling Outbox targeted by the POST request. This
          MUST be done during the processing of the POST request.
        </t>
      </section>

      <section title="Recipient request header">
        <t>
          Every POST request MUST include one or more Recipient request
          header. The value of this header is a list of
          one or more calendar user addresses and corresponds to the set
          of calendar users who will be delivered the scheduling
          message. The calendar user associated with of the scheduling Outbox being targeted by
          the POST method MUST have the CALDAV:schedule privilege or a
          suitable sub-privilege granted on the scheduling Inbox
          collection of each recipient.
        </t>
        <t>
          Typically the list of recipients would correspond to any ATTENDEE
          property values listed in the scheduling message data. However,
          there are cases when an ATTENDEE is not listed as a Recipient, or
          when a Recipient is not one of the ATTENDEE's.
        </t>
        <t>For example, if the Organizer of an event wishes to attend the
           event themselves, they must list themselves as one of the
           ATTENDEE's, as the ORGANIZER of an event does not implicitly
           attend. However, the Organizer does not need to receive an
           invitation as they know their own participation status, so there is
           no need to be listed as a Recipient of the scheduling message.</t>
        <t>Alternatively, a client may have determined participation status of
           some ATTENDEE's out-of-band and has no need to send another request
           via CalDAV.</t>
        <t>In some cases it is handy to be able to send information about a
           meeting to someone who is not an ATTENDEE. In that case, there
           would be a Recipient in the request without a corresponding
           ATTENDEE property in the scheduling message data.</t>
        <t>Note that the recipient of a CalDAV scheduling message has no
           knowledge of who the other recipients were - they only get to see
           the ATTENDEE information listed in the scheduling message data. So
           listing a calendar user as a Recipient and not an ATTENDEE is the
           equivalent of a 'Bcc' (blind-carbon-copy) operation in email.</t>
      </section>
      <section anchor="schedule-response" title="Response to a POST request">
        <t>
          A POST request may deliver a scheduling message to one or
          more calendar users specified in the Recipient request header.
          Since the behavior of each recipient may vary, it is useful
          to get response status information for each recipient in the
          overall POST response. This specification defines a new
          XML response to convey multiple recipient status.  
        </t>
        <t>
          A response to a POST method that indicates status for
          one or more recipients MUST be a CALDAV:schedule-response
          XML element. This MUST contain one or more CALDAV:response
          elements for each recipient, with each of those containing
          elements that indicate which recipient they correspond to,
          the scheduling status of the request for that recipient,
          any error codes and an optional description. See <xref target="schedule_response_element"/>.
        </t>
        <t>
          In the case of a free-busy request, the CALDAV:response elements
          can also contain CALDAV:calendar-data elements which contain
          free busy information (e.g., an iCalendar VFREEBUSY component)
          indicating the busy state of the corresponding recipient,
          assuming that the free-busy request for that recipient succeeded.
        </t>
      </section>

      <section anchor="schedule-status-codes" title="Status Codes for use with the POST method">
        <t>The following are examples of response codes one would expect to be
           used for this method. Note, however, that unless explicitly
           prohibited any 2/3/4/5xx series response code may be used in a
           response.</t>
        <t>200 (OK) - The command succeeded.</t>
        <t>400 (Bad Request) - The client has provided an invalid scheduling
           message.</t>
        <t>403 (Forbidden) - The client, for reasons the server chooses not to
           specify, cannot submit a scheduling message to the specified
           Request-URI.</t>
        <t>404 (Not Found) - The URL in the Request-URI, the Originator, or
           the Recipient request headers were not present.</t>
        <t>423 (Locked) - The specified resource is locked and the client
           either is not a lock owner or the lock type requires a lock token
           to be submitted and the client did not submit it.</t>
        <t>502 (Bad Gateway) - The Recipient request header contained a URL
           which the server considers to be in another domain, which it cannot
           forward scheduling messages to.</t>
        <t>507 (Insufficient Storage) - The server did not have sufficient
           space to record the scheduling message in a recipient's scheduling
           inbox.</t>
      </section>
      <!-- schedule-status-codes -->
      <section anchor="schedule-example" title="Example - Simple meeting invitation">
        <figure>
          <preamble>&gt;&gt; Request &lt;&lt;</preamble>
          <artwork>
            <![CDATA[
POST /lisa/calendar/outbox/ HTTP/1.1
Host: cal.example.com
Originator: mailto:lisa@example.com
Recipient: mailto:bernard@example.com
Recipient: mailto:cyrus@example.com
Content-Type: text/calendar
Content-Length: xxxx

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:lisa@example.com
DTSTART:20040902T130000Z
DTEND:20040902T140000Z
SUMMARY:Design meeting
UID:34222-232@example.com
ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;CUTYPE=IND
 IVIDUAL;CN=Lisa Dusseault:mailto:lisa@example.c
 om
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
 Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Bernard Desr
 uisseaux:mailto:bernard@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
 Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:
 mailto:cyrus@example.com
END:VEVENT
END:VCALENDAR
]]>
          </artwork>
        </figure>
        <figure>
          <preamble>&gt;&gt; Response &lt;&lt;</preamble>
          <artwork>
            <![CDATA[
HTTP/1.1 200 OK
Date: Thu, 02 Sep 2004 16:53:32 GMT
Content-Type: text/xml
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<C:schedule-response xmlns:D="DAV:"
             xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:response>
  <C:recipient>mailto:bernard@example.com</C:recipient>
  <C:request-status>2.0;Success</C:request-status>
  <D:responsedescription>Delivered to recipient
  scheduling inbox</D:responsedescription>
</C:response>
<C:response>
  <C:recipient>mailto:cyrus@example.com</C:recipient>
  <C:request-status>2.0;Success</C:request-status>
  <D:responsedescription>Delivered to recipient
  scheduling inbox</D:responsedescription>
</C:response>
</C:schedule-response>
]]>
          </artwork>
        </figure>
        <t>
          In this example, the client requests the server to deliver a
          meeting invitation (scheduling REQUEST) to the calendar users
          mailto:bernard@example.com and mailto:cyrus@example.com. The
          response indicates that delivery to the relevant scheduling
          Inboxes of each recipient was accomplished successfully.
        </t>
        <t>
          Note that the Originator and Organizer calendar user addresses
          were both set to mailto:lisa@example.com. In order to indicate
          that she is also attending the meeting, mailto:lisa@example.com
          also included an ATTENDEE property in the iCalendar data
          corresponding to her calendar user address, however she did
          not include a Recipient request header for that calendar user
          address since she already has here own copy of the meeting
          stored in a calendar collection.
        </t>
      </section>
      <!-- schedule-example -->
      <section anchor="schedule-fb-example" title="Example - Free-Busy lookup">
        <figure>
          <preamble>&gt;&gt; Request &lt;&lt;</preamble>
          <artwork>
            <![CDATA[
POST /lisa/calendar/outbox/ HTTP/1.1
Host: cal.example.com
Originator: mailto:lisa@example.com
Recipient: mailto:bernard@example.com
Recipient: mailto:cyrus@example.com
Content-Type: text/calendar
Content-Length: xxxx

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
METHOD:REQUEST
BEGIN:VFREEBUSY
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:lisa@example.com
DTSTART:20040902T000000Z
DTEND:20040903T000000Z
UID:34222-232@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
 Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Bernard Desr
 uisseaux:mailto:bernard@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
 Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:
 mailto:cyrus@example.com
END:VFREEBUSY
END:VCALENDAR
]]>
          </artwork>
        </figure>
        <figure>
          <preamble>&gt;&gt; Response &lt;&lt;</preamble>
          <artwork>
            <![CDATA[
HTTP/1.1 200 OK
Date: Thu, 02 Sep 2004 16:53:32 GMT
Content-Type: text/xml
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<C:schedule-response xmlns:D="DAV:"
             xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:response>
  <C:recipient>mailto:bernard@example.com</C:recipient>
  <C:request-status>2.0;Success</C:request-status>
  <C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
METHOD:REPLY
BEGIN:VFREEBUSY
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:lisa@example.com
DTSTART:20040902T000000Z
DTEND:20040903T000000Z
UID:34222-232@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
 Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Bernard Desr
 uisseaux:mailto:bernard@example.com
FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20040902T000000Z/
 20040902T090000Z,20040902T170000Z/20040903T000000Z
END:VFREEBUSY
END:VCALENDAR
</C:calendar-data>
  <D:responsedescription>Immediate response from recipient
  </D:responsedescription>
</C:response>
<C:response>
  <C:recipient>mailto:cyrus@example.com</C:recipient>
  <C:request-status>2.0;Success</C:request-status>
  <C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
METHOD:REPLY
BEGIN:VFREEBUSY
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:lisa@example.com
DTSTART:20040902T000000Z
DTEND:20040903T000000Z
UID:34222-232@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
 Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:
 mailto:cyrus@example.com
FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20040902T000000Z/
 20040902T090000Z,20040902T170000Z/20040903T000000Z
FREEBUSY;FBTYPE=BUSY:20040902T120000Z/20040902T130000Z
END:VFREEBUSY
END:VCALENDAR
</C:calendar-data>
  <D:responsedescription>Immediate response from recipient
  </D:responsedescription>
</C:response>
</C:schedule-response>
]]>
          </artwork>
        </figure>
        <t>In this example, the client requests the server to determine the
           busy information of the calendar users mailto:bernard@example.com and
           mailto:cyrus@example.com, over the time range specified by the scheduling
           message sent in the request. The response includes VFREEBUSY
           components for each of those calendar users with their busy time
           indicated.</t>
      </section>
    </section>
    <section anchor="schedule-incoming" title="Retrieving incoming scheduling messages">
      <t>
        Incoming scheduling messages will be stored in a scheduling Inbox collection. As per <xref target='reports'/>, CalDAV calendar access reports work on scheduling collections, so the client can use those to get partial information on scheduling messages in the scheduling inbox.</t>
      <section anchor="get-incoming-itip" title="Example - Retrieve incoming scheduling message">
        <figure>
          <preamble>&gt;&gt; Request &lt;&lt;</preamble>
          <artwork>
            <![CDATA[
GET /bernard/calendar/inbox/mtg456.ics HTTP/1.1
Host: cal.example.com
]]>
          </artwork>
        </figure>
        <figure>
          <preamble>&gt;&gt; Response &lt;&lt;</preamble>
          <artwork>
            <![CDATA[
HTTP/1.1 200 OK
Date: Thu, 02 Sep 2004 17:05:23 GMT
Content-Type: text/calendar
Content-Length: xxxx

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Server//EN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20040901T200200Z
CATEGORIES:APPOINTMENT
ORGANIZER:mailto:lisa@example.com
DTSTART:20040902T130000Z
DTEND:20040902T140000Z
SUMMARY:CalDAV draft review
UID:34222-232@example.com
ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;CUTYPE=IND
 IVIDUAL;CN=Lisa Dusseault:mailto:lisa@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIP
 ANT;CUTYPE=INDIVIDUAL;CN=Bernard Desruisseaux:
 mailto:bernard@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIP
 ANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:mailto:cyr
 us@example.com
END:VEVENT
END:VCALENDAR
]]>
          </artwork>
        </figure>
      </section>
      <!-- get-incoming-itip -->
    </section>
    <!-- schedule-incoming -->
    <section anchor="handling-incoming" title="Acting on incoming scheduling messages">
      <t>
        Scheduling messages are delivered into a recipients Inbox collection. To process these messages a calendar user agent client needs to follow a sequence of steps to ensure good interoperability with other clients that may also be monitoring or processing the Inbox.
      </t>
      <t>
        Processing a scheduling message in an Inbox collections requires the client to read the message, determine the nature of the scheduling operation, make appropriate adjustments to the recipients actual calendars, and then, if required, send a response.
      </t>
      <t>
        In order to ensure that only one client at a time is processing scheduling messages in an Inbox collection, clients MUST use the WebDAV locking feature to lock the entire Inbox collection for the duration of its processing step. Once a collection is locked, other clients attempting to obtain their own lock will fail as the WebDAV server will return a protocol error at that point. Clients MUST NOT attempt to process scheduling messages in an Inbox without having obtained a lock first.
      </t>
      <t>
        When a scheduling message has been processed by a client it MUST delete that message from the Inbox before removing the webDAV lock on the Inbox collection. This ensures that other clients will not in the future attempt to process the scheduling message again.
      </t>
      <t>
        TODO: provide definitions of new iCalendar parameters RECEIVED-DTSTAMP and RECEIVED-SEQUENCE that will help with schedule processing.
      </t>
    </section>
  </section>
  <!-- scheduling.and.fanout -->
  <section title="HTTP Request Headers for CalDAV" anchor="http.headers">
    <section title="Originator Request Header" anchor="originator.header">
      <figure>
        <artwork>
          <![CDATA[
   Originator = "Originator" ":" absoluteURI
  ]]>
        </artwork>
      </figure>
      <t>
        The Originator request header value is a URI which specifies the
        calendar user address of the originator of the scheduling message.
        Note that the absoluteURI production is defined in
        <xref target="RFC2396">RFC2396</xref>.
      </t>
    </section>
    <!-- originator.header -->
    <section title="Recipient Request Header" anchor="recipient.header">
      <figure>
        <artwork>
          <![CDATA[
   Recipient = "Recipient" ":" 1#absoluteURI
]]>
        </artwork>
      </figure>
      <t>
        The Recipient request header value is a URI which specifies the
        calendar user address of the recipients to which the POST method
        should deliver the submitted scheduling message. Note that the
        absoluteURI production is defined in
        <xref target="RFC2396">RFC2396</xref>
      </t>
    </section>
    <!-- recipient.header -->
  </section>
  <!-- http.headers -->
  <section title="Scheduling Access Control">
    <section anchor="privileges" title="Scheduling Privileges">
      <t>
        A CalDAV server MUST support the
        <xref target="RFC3744">WebDAV ACLs standard</xref>.
        That standard provides a framework for an extensible list of
        privileges on WebDAV collections and ordinary resources. A CalDAV
        server MUST also support the set of calendar-specific privileges
        defined in this section.
      </t>
      <section title="CALDAV:schedule-request Privilege" anchor="PRIVILEGE_schedule_request">
        <t>
          The CALDAV:schedule-request privilege controls who can
          initiate scheduling requests, and who will accept such requests.
        </t>
                 
        <t>
          The CALDAV:schedule-request privilege can be applied to either
          a scheduling Outbox or Inbox. Its effect depends on the type
          of collection it is applied to.
        </t>
           
        <t>
          When used on a scheduling Outbox, the CALDAV:schedule-request
          privilege controls the use of the POST method to submit a
          scheduling message via a scheduling Outbox collection. When
          granted to a principal, that principal is allowed to use the
          POST method on the schedule Outbox with the following
          restrictions:
<?rfc compact="no" ?>
           <list>
           <t>
             the iCalendar component in the request body MUST NOT be a
             VFREEBUSY component and the METHOD property MUST NOT be
             REQUEST.
           </t>
           <t>
             the METHOD property in the iCalendar component in the
             request body MUST be either PUBLISH or REQUEST.
             </t>
           </list>
<?rfc compact="yes" ?>
        </t>

        <t>
          When used on a scheduling Inbox, the CALDAV:schedule-request
          privilege controls whether a scheduling message can be
          deposited in the scheduling Inbox collection. When granted to
          a principal, that principal is allowed to use the POST
          method to deposit scheduling messages with the following restrictions:
<?rfc compact="no" ?>
           <list>
           <t>
             the iCalendar component in the request body MUST NOT be a
             VFREEBUSY component and the METHOD property MUST NOT be
             REQUEST.
           </t>
           <t>
             the METHOD property in the iCalendar component in the
             request body MUST be either PUBLISH or REQUEST.
             </t>
           </list>
<?rfc compact="yes" ?>
        </t>
        <t>
          <![CDATA[<!ELEMENT schedule-request EMPTY >]]>
        </t>
        <t>For example, the following ACE, on Bernard's scheduling Outbox,
           would only grant the privilege to Bernard to send schedule request messages on behalf of himself:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/bernard</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-request/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>Whereas, the following ACE's, on Cyrus's scheduling Outbox, would
           grant the privilege to Cyrus and his assistant Kim to send schedule request messages on behalf of Cyrus:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/cyrus</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-request/></D:privilege>
  </D:grant>
</D:ace>
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/kim</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-request/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>For example, the following ACE's, on Bernard's scheduling Inbox,
           would grant the privilege to Lisa to send a schedule request message to Bernard:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/lisa</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-request/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
		</section>

        <section title="CALDAV:schedule-reply Privilege" anchor="PRIVILEGE_schedule_reply">
        <t>
          The CALDAV:schedule-reply privilege controls who can
          respond to scheduling requests, and who will accept such responses.
        </t>
                 
        <t>
          The CALDAV:schedule-reply privilege can be applied to either
          a scheduling Outbox or Inbox. Its effect depends on the type
          of collection it is applied to.
        </t>
           
        <t>
          When used on a scheduling Outbox, the CALDAV:schedule-reply
          privilege controls the use of the POST method to submit a
          scheduling message via a scheduling Outbox collection. When
          granted to a principal, that principal is allowed to use the
          POST method on the schedule Outbox with the following
          restrictions:
<?rfc compact="no" ?>
           <list>
           <t>
             the iCalendar component in the request body MUST NOT be a
             VFREEBUSY component and the METHOD property MUST NOT be
             REQUEST.
           </t>
           <t>
             the METHOD property in the iCalendar component in the
             request body MUST NOT be either PUBLISH or REQUEST.
             </t>
           </list>
<?rfc compact="yes" ?>
        </t>

        <t>
          When used on a scheduling Inbox, the CALDAV:schedule-reply
          privilege controls whether a scheduling message can be
          deposited in the scheduling Inbox collection. When granted to
          a principal, that principal is allowed to use the POST
          method to deposit scheduling messages with the following restrictions:
<?rfc compact="no" ?>
           <list>
           <t>
             the iCalendar component in the request body MUST NOT be a
             VFREEBUSY component and the METHOD property MUST NOT be
             REQUEST.
           </t>
           <t>
             the METHOD property in the iCalendar component in the
             request body MUST NOT be either PUBLISH or REQUEST.
             </t>
           </list>
<?rfc compact="yes" ?>
        </t>
        <t>
          <![CDATA[<!ELEMENT schedule-reply EMPTY >]]>
        </t>
        <t>For example, the following ACE, on Bernard's scheduling Outbox,
           would only grant the privilege to Bernard to respond to schedule messages on behalf of himself:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/bernard</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-reply/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>Whereas, the following ACE's, on Cyrus's scheduling Outbox, would
           grant the privilege to Cyrus and his assistant Kim to respond to schedule messages on behalf of Cyrus:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/cyrus</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-reply/></D:privilege>
  </D:grant>
</D:ace>
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/kim</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-reply/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>For example, the following ACE's, on Bernard's scheduling Inbox,
           would grant the privilege to Lisa to send a scheduling reply message to Bernard:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/lisa</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-reply/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
		</section>

        <section title="CALDAV:schedule-free-busy Privilege" anchor="PRIVILEGE_schedule_free_busy">
        <t>
          The CALDAV:schedule-free-busy privilege controls who can
          initiate free-busy requests, and who will accept such requests.
        </t>
                 
        <t>
          The CALDAV:schedule-free-busy privilege can be applied to either
          a scheduling Outbox or Inbox. Its effect depends on the type
          of collection it is applied to.
        </t>
           
        <t>
          When used on a scheduling Outbox, the CALDAV:schedule-free-busy
          privilege controls the use of the POST method to submit a
          scheduling message via a scheduling Outbox collection. When
          granted to a principal, that principal is allowed to use the
          POST method on the schedule Outbox with the following
          restrictions:
<?rfc compact="no" ?>
           <list>
           <t>
             the iCalendar component in the request body MUST be a
             VFREEBUSY component.
           </t>
           <t>
             the METHOD property in the iCalendar component in the
             request body MUST be REQUEST.
             </t>
           </list>
<?rfc compact="yes" ?>
        </t>

        <t>
          When used on a scheduling Inbox, the CALDAV:schedule-free-busy
          privilege controls whether a scheduling message can be
          deposited in the scheduling Inbox collection. When granted to
          a principal, that principal is allowed to use the POST
          method to deposit scheduling messages with the following restrictions:
<?rfc compact="no" ?>
           <list>
           <t>
             the iCalendar component in the request body MUST be a
             VFREEBUSY component.
           </t>
           <t>
             the METHOD property in the iCalendar component in the
             request body MUST be REQUEST.
             </t>
           </list>
<?rfc compact="yes" ?>
        </t>
        <t>
          <![CDATA[<!ELEMENT schedule-free-busy EMPTY >]]>
        </t>
        <t>For example, the following ACE, on Bernard's scheduling Outbox,
           would only grant the privilege to Bernard to request free-busy information on behalf of himself:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/bernard</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-free-busy/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>Whereas, the following ACE's, on Cyrus's scheduling Outbox, would
           grant the privilege to Cyrus and his assistant Kim to free-busy information on behalf of Cyrus:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/cyrus</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-free-busy/></D:privilege>
  </D:grant>
</D:ace>
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/kim</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-free-busy/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>For example, the following ACE's, on Bernard's scheduling Inbox,
           would grant the privilege to Lisa to retrieve free-busy information for Bernard:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/lisa</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule-free-busy/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
		</section>

      <section title="CALDAV:schedule Privilege" anchor="PRIVILEGE_schedule">
        <t>
          The CALDAV:schedule privilege can be applied to either a
          scheduling Outbox or Inbox. Its effect depends on the type of
          collection it is applied to. This privilege is actually an
          aggregate of the CALDAV:schedule-request,
          CALDAV:schedule-reply and CALDAV:schedule-free-busy
          privileges.
        </t>

        <t>
          <![CDATA[<!ELEMENT schedule EMPTY >]]>
        </t>
        <t>For example, the following ACE, on Bernard's scheduling Outbox,
           would only grant the privilege to Bernard to carry out any schedule operation on behalf of himself:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/bernard</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>Whereas, the following ACE's, on Cyrus's scheduling Outbox, would
           grant the privilege to Cyrus and his assistant Kim to carry out any schedule operation on behalf of Cyrus:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/cyrus</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule/></D:privilege>
  </D:grant>
</D:ace>
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/kim</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
        <t>For example, the following ACE's, on Bernard's scheduling Inbox,
           would grant the privilege to Lisa to carry out any schedule operation with Bernard:</t>
        <figure>
          <artwork>
            <![CDATA[
<D:ace xmlns:D="DAV:"
     xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:principal>
      <D:href>http://cal.example.com/users/lisa</D:href>
  </D:principal>
  <D:grant>
    <D:privilege><C:schedule/></D:privilege>
  </D:grant>
</D:ace>
]]>
          </artwork>
        </figure>
      </section>
      <!-- PRIVILEGE_schedule -->
      <section title="Privilege aggregation and the DAV:supported-privilege-set property">
        <t>
          The CALDAV:schedule privilege MUST be non-abstract, and MUST be
          aggregated under the DAV:bind privilege.  The CALDAV:schedule
          privilege MUST appear in the DAV:supported-privilege-set property
          of scheduling Inbox and Outbox collections.
        </t>
        <t>
          The CALDAV:schedule-request, CALDAV:schedule-reply and
          CALDAV:schedule-free-busy privileges MUST be non-abstract, and
          MUST be aggregated under the CALDAV:schedule privilege.  These
          privileges MUST appear in the DAV:supported-privilege-set
          property of scheduling Inbox and Outbox collections.
        </t>
      </section>
    </section>
    <!-- privileges -->
    <section anchor="principal.properties" title="Additional Principal Properties">
      <t> 
        This section defines new properties for WebDAV principal
        resources as defined in <xref target="RFC3744">RFC3744</xref>.
        These properties are likely to be protected but the server MAY
        allow them to be written by appropriate users.
      </t>
      <section anchor="PROPERTY_schedule-inbox-URL" title="CALDAV:schedule-inbox-URL Property">
        <t>
<?rfc compact="no" ?>
          <list style="hanging">
            <t hangText="Name:">
              schedule-inbox-URL
            </t>
            <t hangText="Namespace:">
              urn:ietf:params:xml:ns:caldav
            </t>
            <t hangText="Purpose:">
              Identify the URL of the scheduling Inbox collection owned
              by the associated principal resource.
            </t>
            <t hangText="Conformance:">
              This property MAY be protected and SHOULD NOT be returned by a
              PROPFIND allprop request (as defined in Section 12.14.1 of
              <xref target="RFC2518"/>).
            </t>
            <t hangText="Description:">
              This property is needed for a client to
              determine where the scheduling Inbox of
              the current user is located so that
              processing of scheduling messages can
              occur.
            </t>
            <t hangText="Definition:">
              <figure>
                <artwork><![CDATA[
   <!ELEMENT schedule-inbox-URL (href)>
                ]]></artwork>
              </figure>
            </t>
          </list>
<?rfc compact="yes" ?>
        </t>
      </section><!-- PROPERTY_schedule-inbox-URL -->

      <section anchor="PROPERTY_schedule-outbox-URL" title="CALDAV:schedule-outbox-URL Property">
        <t>
<?rfc compact="no" ?>
          <list style="hanging">
            <t hangText="Name:">
              schedule-outbox-URL
            </t>
            <t hangText="Namespace:">
              urn:ietf:params:xml:ns:caldav
            </t>
            <t hangText="Purpose:">
              Identify the URL of the scheduling Outbox
              collection owned by the associated
              principal resource.
            </t>
            <t hangText="Conformance:">
              This property MAY be protected and SHOULD NOT be returned by a
              PROPFIND allprop request (as defined in Section 12.14.1 of
              <xref target="RFC2518"/>).
            </t>
            <t hangText="Description:">
              This property is needed for a client to
              determine where the scheduling Outbox
              of the current user is located so that
              sending of scheduling messages can
              occur.
            </t>
            <t hangText="Definition:">
              <figure>
                <artwork><![CDATA[
   <!ELEMENT schedule-outbox-URL href>
                ]]></artwork>
              </figure>
            </t>
          </list>
<?rfc compact="yes" ?>
        </t>
      </section><!-- PROPERTY_schedule-outbox-URL -->

      <section anchor="PROPERTY_calendar-user-address-set" title="CALDAV:calendar-user-address-set Property">
        <t>
<?rfc compact="no" ?>
          <list style="hanging">
            <t hangText="Name:">calendar-user-address-set</t>
            <t hangText="Namespace:">urn:ietf:params:xml:ns:caldav</t>
            <t hangText="Purpose:">Identify the calendar addresses of the
                                   associated principal resource.</t>
            <t hangText="Conformance:">
              This property MAY be protected and SHOULD NOT be returned by a
              PROPFIND allprop request (as defined in Section 12.14.1 of
              <xref target="RFC2518"/>
              ). Support for this property is REQUIRED. This property SHOULD
              be searchable using the DAV:principal-property-search REPORT.
              The DAV:principal-search-property-set REPORT SHOULD identify
              this property as such.
            </t>
            <t hangText="Description:">This property is needed to map
                                       Originator and Recipient values in a
                                       POST request to principal resources
                                       and their associated scheduling Inbox
                                       and Outbox. In the event that a user
                                       has no well defined identifier for
                                       their calendar user address, the URI of
                                       their principal resource can be used.</t>
            <t hangText="Definition:">
              <figure>
                <artwork>
                  <![CDATA[
   <!ELEMENT calendar-user-address-set (DAV:href*)>
          ]]>
                </artwork>
              </figure>
            </t>
            <t hangText="Example:">
              <figure>
                <artwork>
                  <![CDATA[
   <C:calendar-user-address-set xmlns:D="DAV:"
                         xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:href>mailto:bernard@example.com</D:href>
     <D:href>mailto:bernard.desruisseaux@example.com</D:href>
   </C:calendar-user-address-set>
          ]]>
                </artwork>
              </figure>
            </t>
          </list>
<?rfc compact="yes" ?>
        </t>
      </section>
      <!-- PROPERTY_calendar-user-address-set -->
      <section title="Example: Searching for calendars belonging to a user based on a calendar user address">
        <t>In this example, the client requests the CALDAV:calendar-home-URL
           of the principal resources whose CALDAV:calendar-user-address-set
           property contains the substring "mailto:bernard@example.com". In
           addition, the client requests the DAV:displayname of each principal
           to also be returned for the matching principals.</t>
        <t>The response shows that only one principal resource meets the
           search specification, "mailto:bernard@example.com".</t>
        <t>
          <figure>
            <preamble>&gt;&gt; Request &lt;&lt;</preamble>
            <artwork>
              <![CDATA[
REPORT /users/ HTTP/1.1
Host: cal.example.com
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
Depth: 0

<?xml version="1.0" encoding="utf-8" ?>
<D:principal-property-search xmlns:D="DAV:"
            xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:property-search>
    <D:prop>
      <C:calendar-user-address-set/>
    </D:prop>
    <D:match>mailto:bernard@example.com</D:match>
  </D:property-search>
  <D:prop>
    <C:calendar-home-URL/>
    <D:displayname/>
  </D:prop>
</D:principal-property-search>
            ]]></artwork>
          </figure>
          <figure>
            <preamble>&gt;&gt; Response &lt;&lt;</preamble>
            <artwork><![CDATA[
HTTP/1.1 207 Multi-Status
Content-Type: text/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>/users/bernard</D:href>
    <D:propstat>
      <D:prop>
        <C:calendar-home-URL>
          <D:href>/home/bernard/</D:href>
        </C:calendar-home-URL>
        <D:displayname>Bernard Desruisseaux</D:displayname>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
            ]]></artwork>
          </figure>
        </t>
      </section><!-- Example -->

      <section title="Example: Finding the scheduling Inbox and Outbox belonging to the currently authenticated user">
        <t>In this example, the client requests the CALDAV:schedule-inbox-URL
           and CALDAV:schedule-outbox-URL of the currently authenticated user.</t>
        <t>TODO: principal-match report</t>
      </section>
    </section><!-- principal.properties -->
  </section><!-- Scheduling Access Control -->

  <!-- Calendaring Reports -->
  <section anchor="reports" title="Reports">
    <t>
      When the calendar-access feature is supported in addition to
      calendar-schedule, this specification extends the
      CALDAV:calendar-query and CALDAV:calendar-multiget reports to
      return results for calendar object resources in scheduling Inbox
      and Outbox collections when the report directly targets such a
      collection. i.e. the Request-URI for a REPORT MUST be the URI of
      the scheduling Inbox or Outbox or of a child resource within a
      scheduling Inbox or Outbox collection. A report run on a regular
      collection that includes a scheduling Inbox or Outbox as a child
      resource at any depth MUST NOT examine or return any calendar
      object resources from within any scheduling Inbox or Outbox
      collections.
    </t>
    <t>
      Note that the CALDAV:free-busy-query report is NOT supported on
      scheduling Inbox or Outbox collections when the calendar-access
      feature is also present.
    </t>
  </section>

  <section title="XML Element Definitions">
    <section anchor="schedule_response_element" title="CALDAV:schedule-response XML Element">
      <t>
<?rfc compact="no" ?>
        <list style="hanging">
          <t hangText="Name:">schedule-response</t>
          <t hangText="Namespace:">urn:ietf:params:xml:ns:caldav</t>
          <t hangText="Purpose:">Contains the set of responses for a POST
                                 method request.</t>
          <t hangText="Description:">
            See <xref target="schedule-response"/>.
          </t>
          <t hangText="Definition:">
            <figure>
              <artwork>
                <![CDATA[
    <!ELEMENT schedule-response (response*)>
            ]]>
              </artwork>
            </figure>
          </t>
        </list>
<?rfc compact="yes" ?>
      </t>
    </section>
    <section anchor="response_element" title="CALDAV:response XML Element">
      <t>
<?rfc compact="no" ?>
        <list style="hanging">
          <t hangText="Name:">response</t>
          <t hangText="Namespace:">urn:ietf:params:xml:ns:caldav</t>
          <t hangText="Purpose:">Contains a single response for a POST
                                 method request.</t>
          <t hangText="Description:">
            See <xref target="schedule-response"/>.
          </t>
          <t hangText="Definition:">
            <figure>
              <artwork><![CDATA[
<!ELEMENT response (recipient,
                    request-status,
                    calendar-data?,
                    DAV:error?,
                    DAV:responsedescription?)>
              ]]></artwork>
            </figure>
          </t>
        </list>
<?rfc compact="no" ?>
      </t>
    </section>
    <section anchor="recipient_element" title="CALDAV:recipient XML Element">
      <t>
<?rfc compact="no" ?>
        <list style="hanging">
          <t hangText="Name:">recipient</t>
          <t hangText="Namespace:">urn:ietf:params:xml:ns:caldav</t>
          <t hangText="Purpose:">The calendar user address (recipient header
                                 value) that the enclosing response for a
                                 POST method request is for.</t>
          <t hangText="Description:">
            See <xref target="schedule-response"/>.
          </t>
          <t hangText="Definition:">
            <figure>
              <artwork>
                <![CDATA[
    <!ELEMENT recipient (#PCDATA)>
            ]]>
              </artwork>
            </figure>
          </t>
        </list>
<?rfc compact="yes" ?>
      </t>
    </section>
    <section anchor="response_status_element" title="CALDAV:request-status XML Element">
      <t>
<?rfc compact="no" ?>
        <list style="hanging">
          <t hangText="Name:">request-status</t>
          <t hangText="Namespace:">urn:ietf:params:xml:ns:caldav</t>
          <t hangText="Purpose:">The iTIP REQUEST-STATUS property value for
                                 this response.</t>
          <t hangText="Description:">
            See <xref target="schedule-response"/>.
          </t>
          <t hangText="Definition:">
            <figure>
              <artwork>
                <![CDATA[
    <!ELEMENT request-status (#PCDATA)>
            ]]>
              </artwork>
            </figure>
          </t>
        </list>
<?rfc compact="yes" ?>
      </t>
    </section>
  </section>
  <section title="Security Considerations">
    <t>
      The process of scheduling involves the sending and receiving of
      scheduling messages. As a result, the security problems related
      to messaging in general are relevant here. In particular the
      authenticity of the scheduling messages needs to be verified
      absolutely. Servers and clients MUST use an HTTP connection protected
      with TLS as defined in <xref target="RFC2818"/> for all scheduling
      transactions.
    </t>
    <section title="Verifying scheduling requests">
      <t>
        When handling a POST request on a scheduling Outbox:
<?rfc compact="no" ?>
        <list>
          <t>Servers MUST verify that the principal associated with the
             calendar user address specified in the Originator request header
             in the request matches the currently authenticated user.
          </t>
          <t>Servers MUST verify that the currently authenticated user has the
             CALDAV:schedule privilege or a suitable sub-privilege on the 
             scheduling Outbox targeted by the request.</t>
          <t>Servers MUST verify that the principal associated with the
             calendar user address specified in the ORGANIZER property of the
             scheduling message data in the request contains a
             CALDAV:schedule-outbox-URL property value that matches the
             scheduling Outbox targeted by the request.</t>
          <t>Servers MUST verify that the principal associated with the
             calendar user address specified in the ORGANIZER property of the
             scheduling message data in the request has the CALDAV:schedule
             privilege or a suitable sub-privilege on all of the scheduling 
             Inbox collections for the principals associated with all of the 
             calendar user addresses specified in any Recipient request headers 
             in the request.</t>
          <t>The CALDAV:calendar-free-busy-set property on principal resources
             SHOULD only be accessible when that principal is authenticated
             (i.e., the property SHOULD be hidden from other principals).</t>
        </list>
<?rfc compact="yes" ?>
      </t>
    </section>
  </section>
  <section title="IANA Consideration" anchor="IANA">
    <t>
      This specification does not require any IANA actions.
    </t>
  </section><!-- IANA -->
  <section title="Acknowledgements">
    <t>
      The authors would like to thank the following individuals for
      contributing their ideas and support for writing this specification:
      Mike Douglass, Julian F. Reschke,  Wilfredo Sanchez Vega, Simon Vaillancourt, and Jim Whitehead.
    </t>
    <t>
      The authors would also like to thank the Calendaring and
      Scheduling Consortium for advice with this specification,
      and for organizing interoperability testing events to help
      refine it.
    </t>
  </section>
</middle>
<back>
  <references title="Normative References">
    

<reference anchor="RFC2119">

<front>
<title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="Scott Bradner">
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year="1997" month="March"/>
<area>General</area>
<keyword>keyword</keyword>
<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.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<format type="TXT" octets="4723" target="ftp://ftp.isi.edu/in-notes/rfc2119.txt"/>
<format type="HTML" octets="16553" target="http://xml.resource.org/public/rfc/html/rfc2119.html"/>
<format type="XML" octets="5703" target="http://xml.resource.org/public/rfc/xml/rfc2119.xml"/>
</reference>

    

<reference anchor="RFC2246">

<front>
<title>The TLS Protocol Version 1.0</title>
<author initials="T." surname="Dierks" fullname="Tim Dierks">
<organization>Certicom</organization>
<address>
<email>tdierks@certicom.com</email></address></author>
<author initials="C." surname="Allen" fullname="Christopher Allen">
<organization>Certicom</organization>
<address>
<email>callen@certicom.com</email></address></author>
<date year="1999" month="January"/>
<abstract>
<t>This document specifies Version 1.0 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications privacy over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.</t></abstract></front>

<seriesInfo name="RFC" value="2246"/>
<format type="TXT" octets="170401" target="ftp://ftp.isi.edu/in-notes/rfc2246.txt"/>
</reference>

    

<reference anchor="RFC2396">

<front>
<title abbrev="URI Generic Syntax">Uniform Resource Identifiers (URI): Generic Syntax</title>
<author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
<organization abbrev="MIT/LCS">World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>545 Technology Square</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code></postal>
<facsimile>+1(617)258-8682</facsimile>
<email>timbl@w3.org</email></address></author>
<author initials="R.T." surname="Fielding" fullname="Roy T. Fielding">
<organization abbrev="U.C. Irvine">Department of Information and Computer Science</organization>
<address>
<postal>
<street>University of California, Irvine</street>
<city>Irvine</city>
<region>CA</region>
<code>92697-3425</code></postal>
<facsimile>+1(949)824-1715</facsimile>
<email>fielding@ics.uci.edu</email></address></author>
<author initials="L." surname="Masinter" fullname="Larry Masinter">
<organization abbrev="Xerox Corporation">Xerox PARC</organization>
<address>
<postal>
<street>3333 Coyote Hill Road</street>
<city>Palo Alto</city>
<region>CA</region>
<code>94034</code></postal>
<facsimile>+1(415)812-4333</facsimile>
<email>masinter@parc.xerox.com</email></address></author>
<date year="1998" month="August"/>
<area>Applications</area>
<keyword>uniform resource</keyword>
<keyword>URI</keyword>
<abstract>
<t>
   A Uniform Resource Identifier (URI) is a compact string of characters
   for identifying an abstract or physical resource.  This document
   defines the generic syntax of URI, including both absolute and
   relative forms, and guidelines for their use; it revises and replaces
   the generic definitions in RFC 1738 and RFC 1808.
</t>
<t>
   This document defines a grammar that is a superset of all valid URI,
   such that an implementation can parse the common components of a URI
   reference without knowing the scheme-specific requirements of every
   possible identifier type.  This document does not define a generative
   grammar for URI; that task will be performed by the individual
   specifications of each URI scheme.
</t></abstract>
<note title="IESG Note">
<t>
   This paper describes a "superset" of operations that can be applied
   to URI.  It consists of both a grammar and a description of basic
   functionality for URI.  To understand what is a valid URI, both the
   grammar and the associated description have to be studied.  Some of
   the functionality described is not applicable to all URI schemes, and
   some operations are only possible when certain media types are
   retrieved using the URI, regardless of the scheme used.
</t></note></front>

<seriesInfo name="RFC" value="2396"/>
<format type="TXT" octets="83639" target="ftp://ftp.isi.edu/in-notes/rfc2396.txt"/>
<format type="HTML" octets="126294" target="http://xml.resource.org/public/rfc/html/rfc2396.html"/>
<format type="XML" octets="102773" target="http://xml.resource.org/public/rfc/xml/rfc2396.xml"/>
</reference>

    

<reference anchor="RFC2445">

<front>
<title abbrev="iCalendar">Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
<author initials="F." surname="Dawson" fullname="Frank Dawson">
<organization>Lotus Development Corporation</organization>
<address>
<postal>
<street>6544 Battleford Drive</street>
<city>Raleigh</city>
<region>NC</region>
<code>27613-3502</code>
<country>USA</country></postal>
<phone>+1-919-676-9515</phone>
<facsimile>+1-919-676-9564</facsimile>
<email>Frank_Dawson@Lotus.com</email>
<uri>http://home.earthlink.net/~fdawson</uri></address></author>
<author initials="D." surname="Stenerson" fullname="Derik Stenerson">
<organization>Microsoft Corporation</organization>
<address>
<postal>
<street>One Microsoft Way</street>
<city>Redmond</city>
<region>WA</region>
<code>98052-6399</code>
<country>USA</country></postal>
<phone>+1-425-936-5522</phone>
<facsimile>+1-425-936-7329</facsimile>
<email>deriks@Microsoft.com</email></address></author>
<author>
<organization/></author>
<author>
<organization/></author>
<date year="1998" month="November"/>
<area>Applications</area>
<keyword>calendaring</keyword>
<keyword>scheduling</keyword>
<keyword>PIM</keyword>
<abstract>
<t>
   There is a clear need to provide and deploy interoperable calendaring
   and scheduling services for the Internet. Current group scheduling
   and Personal Information Management (PIM) products are being extended
   for use across the Internet, today, in proprietary ways. This memo
   has been defined to provide the definition of a common format for
   openly exchanging calendaring and scheduling information across the
   Internet.
</t>
<t>
   This memo is formatted as a registration for a MIME media type per
   . However, the format in this memo is equally applicable
   for use outside of a MIME message content type.
</t>
<t>
   The proposed media type value is 'text/calendar'. This string would
   label a media type containing calendaring and scheduling information
   encoded as text characters formatted in a manner outlined below.
</t>
<t>
   This MIME media type provides a standard content type for capturing
   calendar event, to-do and journal entry information. It also can be
   used to convey free/busy time information. The content type is
   suitable as a MIME message entity that can be transferred over MIME
   based email systems, using HTTP or some other Internet transport. In
   addition, the content type is useful as an object for interactions
   between desktop applications using the operating system clipboard,
   drag/drop or file systems capabilities.
</t>
<t>
   This memo is based on the earlier work of the vCalendar specification
   for the exchange of personal calendaring and scheduling information.
   In order to avoid confusion with this referenced work, this memo is
   to be known as the iCalendar specification.
</t>
<t>
   This memo defines the format for specifying iCalendar object methods.
   An iCalendar object method is a set of usage constraints for the
   iCalendar object. For example, these methods might define scheduling
   messages that request an event be scheduled, reply to an event
   request, send a cancellation notice for an event, modify or replace
   the definition of an event, provide a counter proposal for an
   original event request, delegate an event request to another
   individual, request free or busy time, reply to a free or busy time
   request, or provide similar scheduling messages for a to-do or
   journal entry calendar component. The iCalendar Transport-indendent
   Interoperability Protocol (iTIP) defined in  is one such
   scheduling protocol.
</t></abstract></front>

<seriesInfo name="RFC" value="2445"/>
<format type="TXT" octets="291838" target="ftp://ftp.isi.edu/in-notes/rfc2445.txt"/>
<format type="HTML" octets="323537" target="http://xml.resource.org/public/rfc/html/rfc2445.html"/>
<format type="XML" octets="305481" target="http://xml.resource.org/public/rfc/xml/rfc2445.xml"/>
</reference>

    

<reference anchor="RFC2446">

<front>
<title abbrev="iTIP">iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries</title>
<author initials="S." surname="Silverberg" fullname="Steve Silverberg">
<organization>Microsoft Corporation</organization>
<address>
<postal>
<street>One Microsoft Way</street>
<city>Redmond</city>
<region>WA</region>
<code>98052-6399</code>
<country>USA</country></postal>
<phone>+1-425-936-9277</phone>
<facsimile>+1-425-936-8019</facsimile>
<email>stevesil@Microsoft.com</email></address></author>
<author initials="S." surname="Mansour" fullname="Steve Mansour">
<organization>Netscape Communications Corporation</organization>
<address>
<postal>
<street>501 East Middlefield Road</street>
<city>MountainView</city>
<region>CA</region>
<code>94043</code>
<country>USA</country></postal>
<phone>+1-650-937-2378</phone>
<facsimile>+1-650-937-2103</facsimile>
<email>sman@netscape.com</email></address></author>
<author initials="F." surname="Dawson" fullname="Frank Dawson">
<organization>Lotus Development Corporation</organization>
<address>
<postal>
<street>6544 Battleford Drive</street>
<city>Raleigh</city>
<region>NC</region>
<code>27613-3502</code>
<country>USA</country></postal>
<phone>+1-919-676-9515</phone>
<facsimile>+1-919-676-9564</facsimile>
<email>Frank_Dawson@Lotus.com</email>
<uri>http://home.earthlink.net/~fdawson</uri></address></author>
<author initials="R." surname="Hopson" fullname="Ross Hopson">
<organization>On Technology, Inc.</organization>
<address>
<postal>
<street>434 Fayetteville St.Mall, Two Hannover Square</street>
<street>Suite 1600</street>
<city>Raleigh</city>
<region>NC</region>
<code>27601</code></postal>
<phone>+1-919-890-4036</phone>
<facsimile>+1-919-890-4100</facsimile>
<email>rhopson@on.com</email></address></author>
<date year="1998" month="November"/>
<area>Applications</area>
<keyword>calendaring</keyword>
<keyword>scheduling</keyword>
<abstract>
<t>
   This document specifies how calendaring systems use iCalendar objects
   to interoperate with other calendar systems. It does so in a general
   way so as to allow multiple methods of communication between systems.
   Subsequent documents specify interoperable methods of communications
   between systems that use this protocol.
</t>
<t>
   The document outlines a model for calendar exchange that defines both
   static and dynamic event, to-do, journal and free/busy objects.
   Static objects are used to transmit information from one entity to
   another without the expectation of continuity or referential
   integrity with the original item. Dynamic objects are a superset of
   static objects and will gracefully degrade to their static
   counterparts for clients that only support static objects.
</t>
<t>
   This document specifies an Internet protocol based on the iCalendar
   object specification that provides scheduling interoperability
   between different calendar systems. The Internet protocol is called
   the "iCalendar Transport-Independent Interoperability Protocol
   (iTIP)".
   iTIP complements the iCalendar object specification by adding
   semantics for group scheduling methods commonly available in current
   calendar systems. These scheduling methods permit two or more
   calendar systems to perform transactions such as publish, schedule,
   reschedule, respond to scheduling requests, negotiation of changes or
   cancel iCalendar-based calendar components.
</t>
<t>
   iTIP is defined independent of the particular transport used to
   transmit the scheduling information. Companion memos to iTIP provide
   bindings of the interoperability protocol to a number of Internet
   protocols.
</t></abstract></front>

<seriesInfo name="RFC" value="2446"/>
<format type="TXT" octets="225964" target="ftp://ftp.isi.edu/in-notes/rfc2446.txt"/>
<format type="HTML" octets="249838" target="http://xml.resource.org/public/rfc/html/rfc2446.html"/>
<format type="XML" octets="229099" target="http://xml.resource.org/public/rfc/xml/rfc2446.xml"/>
</reference>

    

<reference anchor="RFC2447">

<front>
<title abbrev="iMIP">iCalendar Message-Based Interoperability Protocol (iMIP)</title>
<author initials="F." surname="Dawson" fullname="Frank Dawson">
<organization>Lotus Development Corporation</organization>
<address>
<postal>
<street>6544 BattlefordDrive</street>
<city>Raleigh</city>
<region>NC</region>
<code>27613-3502</code>
<country>USA</country></postal>
<phone>+1-919-676-9515</phone>
<facsimile>+1-919-676-9564</facsimile>
<email>fdawson@earthlink.net</email>
<uri>http://home.earthlink.net/~fdawson</uri></address></author>
<author initials="S." surname="Mansour" fullname="Steve Mansour">
<organization>Netscape Communications Corporation</organization>
<address>
<postal>
<street>501 East Middlefield Road</street>
<city>MountainView</city>
<region>CA</region>
<code>94043</code>
<country>USA</country></postal>
<phone>+1-650-937-2378</phone>
<facsimile>+1-650-937-2103</facsimile>
<email>sman@netscape.com</email></address></author>
<author initials="S." surname="Silverberg" fullname="Steve Silverberg">
<organization>Microsoft Corporation</organization>
<address>
<postal>
<street>One Microsoft Way</street>
<city>Redmond</city>
<region>WA</region>
<code>98052-6399</code>
<country>USA</country></postal>
<phone>+1-425-936-9277</phone>
<facsimile>+1-425-936-8019</facsimile>
<email>stevesil@Microsoft.com</email></address></author>
<date year="1998" month="November"/>
<area>Applications</area>
<keyword>calendaring</keyword>
<keyword>iMIP</keyword>
<abstract>
<t>
   This document, [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  are composed using constructs from ,
   , , ,  and [RFC-2049].
</t>
<t>
   This document is based on discussions within the Internet Engineering
   Task Force (IETF) Calendaring and Scheduling (CALSCH) working group.
   More information about the IETF CALSCH working group activities can
   be found on the IMC web site at http://www.imc.org, the IETF web site
   at http://www.ietf.org/html.charters/calsch-charter.html. Refer to
   the references within this document for further information on how to
   access these various documents.
</t></abstract></front>

<seriesInfo name="RFC" value="2447"/>
<format type="TXT" octets="33480" target="ftp://ftp.isi.edu/in-notes/rfc2447.txt"/>
<format type="HTML" octets="53600" target="http://xml.resource.org/public/rfc/html/rfc2447.html"/>
<format type="XML" octets="34719" target="http://xml.resource.org/public/rfc/xml/rfc2447.xml"/>
</reference>

    

<reference anchor="RFC2518">

<front>
<title abbrev="WEBDAV">HTTP Extensions for Distributed Authoring -- WEBDAV</title>
<author initials="Y." surname="Goland" fullname="Y. Y. Goland">
<organization abbrev="Microsoft">Microsoft Corporation</organization>
<address>
<postal>
<street>One Microsoft Way</street>
<city>Redmond</city>
<region>WA</region>
<code>98052-6399</code></postal>
<email>yarong@microsoft.com</email></address></author>
<author initials="E." surname="Whitehead" fullname="E. J. Whitehead, Jr.">
<organization abbrev="UC Irvine">Dept. Of Information and Computer Science,
      University of California, Irvine</organization>
<address>
<postal>
<street/>
<city>Irvine</city>
<region>CA</region>
<code>92697-3425</code></postal>
<email>ejw@ics.uci.edu</email></address></author>
<author initials="A." surname="Faizi" fullname="A. Faizi">
<organization abbrev="Netscape">Netscape</organization>
<address>
<postal>
<street>685 East Middlefield Road</street>
<city>Mountain View</city>
<region>CA</region>
<code>94043</code></postal>
<email>asad@netscape.com</email></address></author>
<author initials="S.R." surname="Carter" fullname="S. R. Carter">
<organization abbrev="Novell">Novell</organization>
<address>
<postal>
<street>1555 N. Technology Way</street>
<street>M/S ORM F111</street>
<city>Orem</city>
<region>UT</region>
<code>84097-2399</code></postal>
<email>srcarter@novell.com</email></address></author>
<author initials="D." surname="Jensen" fullname="D. Jensen">
<organization abbrev="Novell">Novell</organization>
<address>
<postal>
<street>1555 N. Technology Way</street>
<street>M/S ORM F111</street>
<city>Orem</city>
<region>UT</region>
<code>84097-2399</code></postal>
<email>dcjensen@novell.com</email></address></author>
<date year="1999" month="February"/>
<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).
      </t></abstract></front>

<seriesInfo name="RFC" value="2518"/>
<format type="TXT" octets="202829" target="ftp://ftp.isi.edu/in-notes/rfc2518.txt"/>
<format type="HTML" octets="303525" target="http://xml.resource.org/public/rfc/html/rfc2518.html"/>
<format type="XML" octets="217603" target="http://xml.resource.org/public/rfc/xml/rfc2518.xml"/>
</reference>

    

<reference anchor="RFC2616">

<front>
<title abbrev="HTTP/1.1">Hypertext Transfer Protocol -- HTTP/1.1</title>
<author initials="R." surname="Fielding" fullname="Roy T. Fielding">
<organization abbrev="UC Irvine">Department of Information and Computer Science</organization>
<address>
<postal>
<street>University of California, Irvine</street>
<city>Irvine</city>
<region>CA</region>
<code>92697-3425</code></postal>
<facsimile>+1(949)824-1715</facsimile>
<email>fielding@ics.uci.edu</email></address></author>
<author initials="J." surname="Gettys" fullname="James Gettys">
<organization abbrev="Compaq/W3C">World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>545 Technology Square</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code></postal>
<facsimile>+1(617)258-8682</facsimile>
<email>jg@w3.org</email></address></author>
<author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul">
<organization abbrev="Compaq">Compaq Computer Corporation</organization>
<address>
<postal>
<street>Western Research Laboratory</street>
<street>250 University Avenue</street>
<city>Palo Alto</city>
<region>CA</region>
<code>94305</code></postal>
<email>mogul@wrl.dec.com</email></address></author>
<author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen">
<organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>545 Technology Square</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code></postal>
<facsimile>+1(617)258-8682</facsimile>
<email>frystyk@w3.org</email></address></author>
<author initials="L." surname="Masinter" fullname="Larry Masinter">
<organization abbrev="Xerox">Xerox Corporation</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>3333 Coyote Hill Road</street>
<city>Palo Alto</city>
<region>CA</region>
<code>94034</code></postal>
<email>masinter@parc.xerox.com</email></address></author>
<author initials="P." surname="Leach" fullname="Paul J. Leach">
<organization abbrev="Microsoft">Microsoft Corporation</organization>
<address>
<postal>
<street>1 Microsoft Way</street>
<city>Redmond</city>
<region>WA</region>
<code>98052</code></postal>
<email>paulle@microsoft.com</email></address></author>
<author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
<organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>545 Technology Square</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code></postal>
<facsimile>+1(617)258-8682</facsimile>
<email>timbl@w3.org</email></address></author>
<date year="1999" month="June"/>
<abstract>
<t>
   The Hypertext Transfer Protocol (HTTP) is an application-level
   protocol for distributed, collaborative, hypermedia information
   systems. It is a generic, stateless, protocol which can be used for
   many tasks beyond its use for hypertext, such as name servers and
   distributed object management systems, through extension of its
   request methods, error codes and headers . A feature of HTTP is
   the typing and negotiation of data representation, allowing systems
   to be built independently of the data being transferred.
</t>
<t>
   HTTP has been in use by the World-Wide Web global information
   initiative since 1990. This specification defines the protocol
   referred to as "HTTP/1.1", and is an update to RFC 2068 .
</t></abstract></front>

<seriesInfo name="RFC" value="2616"/>
<format type="TXT" octets="422317" target="ftp://ftp.isi.edu/in-notes/rfc2616.txt"/>
<format type="PS" octets="5529857" target="ftp://ftp.isi.edu/in-notes/rfc2616.ps"/>
<format type="PDF" octets="550558" target="ftp://ftp.isi.edu/in-notes/rfc2616.pdf"/>
<format type="HTML" octets="620835" target="http://xml.resource.org/public/rfc/html/rfc2616.html"/>
<format type="XML" octets="490204" target="http://xml.resource.org/public/rfc/xml/rfc2616.xml"/>
</reference>

    

<reference anchor="RFC2818">

<front>
<title>HTTP Over TLS</title>
<author initials="E." surname="Rescorla" fullname="E. Rescorla">
<organization/></author>
<date year="2000" month="May"/>
<abstract>
<t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet. This memo provides information for the Internet community. </t></abstract></front>

<seriesInfo name="RFC" value="2818"/>
<format type="TXT" octets="15170" target="ftp://ftp.isi.edu/in-notes/rfc2818.txt"/>
</reference>

    

<reference anchor="RFC3744">

<front>
<title abbrev="WebDAV Access Control Protocol">Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol</title>
<author initials="G." surname="Clemm" fullname="Geoffrey Clemm">
<organization>IBM</organization>
<address>
<postal>
<street>20 Maguire Road</street>
<city>Lexington</city>
<region>MA</region>
<code>02421</code></postal>
<email>geoffrey.clemm@us.ibm.com</email></address></author>
<author initials="J. F." surname="Reschke" fullname="Julian F. Reschke">
<organization abbrev="greenbytes">greenbytes GmbH</organization>
<address>
<postal>
<street>Salzmannstrasse 152</street>
<city>Muenster</city>
<region>NW</region>
<code>48159</code>
<country>Germany</country></postal>
<email>julian.reschke@greenbytes.de</email></address></author>
<author initials="E." surname="Sedlar" fullname="Eric Sedlar">
<organization>Oracle Corporation</organization>
<address>
<postal>
<street>500 Oracle Parkway</street>
<city>Redwood Shores</city>
<region>CA</region>
<code>94065</code></postal>
<email>eric.sedlar@oracle.com</email></address></author>
<author initials="J." surname="Whitehead" fullname="Jim Whitehead">
<organization abbrev="U.C. Santa Cruz">U.C. Santa Cruz, Dept. of Computer Science</organization>
<address>
<postal>
<street>1156 High Street</street>
<city>Santa Cruz</city>
<region>CA</region>
<code>95064</code></postal>
<email>ejw@cse.ucsc.edu</email></address></author>
<date year="2004" month="May"/>
<abstract>
<t>
        This document specifies a set of methods, headers, message bodies,
        properties, and reports that define Access Control extensions to the
        WebDAV Distributed Authoring Protocol.  This protocol permits a client to
        read and modify access control lists that instruct a server whether to
        allow or deny operations upon a resource (such as HyperText Transfer
        Protocol (HTTP) method invocations) by a given principal.  A lightweight
        representation of principals as Web resources supports integration of a
        wide range of user management repositories.  Search operations allow
        discovery and manipulation of principals using human names.
      </t></abstract></front>

<seriesInfo name="RFC" value="3744"/>
<format type="TXT" octets="146623" target="ftp://ftp.isi.edu/in-notes/rfc3744.txt"/>
<format type="HTML" octets="220016" target="http://xml.resource.org/public/rfc/html/rfc3744.html"/>
<format type="XML" octets="167673" target="http://xml.resource.org/public/rfc/xml/rfc3744.xml"/>
</reference>

    

<reference anchor="RFC4346">

<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.1</title>
<author initials="T." surname="Dierks" fullname="T. Dierks">
<organization/></author>
<author initials="E." surname="Rescorla" fullname="E. Rescorla">
<organization/></author>
<date year="2006" month="April"/>
<abstract>
<t>This document specifies Version 1.1 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS TRACK]</t></abstract></front>

<seriesInfo name="RFC" value="4346"/>
<format type="TXT" octets="187041" target="ftp://ftp.isi.edu/in-notes/rfc4346.txt"/>
</reference>

    

<reference anchor="W3C.REC-xml-20060816" target="http://www.w3.org/TR/2006/REC-xml-20060816">
<front>
<title>Extensible Markup Language (XML) 1.0 (Fourth Edition)</title>

<author initials="T." surname="Bray" fullname="Tim Bray">
    <organization/>
</author>

<author initials="J." surname="Paoli" fullname="Jean Paoli">
    <organization/>
</author>

<author initials="E." surname="Maler" fullname="Eve Maler">
    <organization/>
</author>

<author initials="C." surname="Sperberg-McQueen" fullname="C. M. Sperberg-McQueen">
    <organization/>
</author>

<author initials="F." surname="Yergeau" fullname="Fran&#231;ois Yergeau">
    <organization/>
</author>

<date month="August" day="16" year="2006"/>
</front>

<seriesInfo name="World Wide Web Consortium Recommendation" value="REC-xml-20060816"/>
<format type="HTML" target="http://www.w3.org/TR/2006/REC-xml-20060816"/>
</reference>

    

<reference anchor="I-D.dusseault-caldav">
<front>
<title>Calendaring Extensions to WebDAV (CalDAV)</title>

<author initials="L" surname="Dusseault" fullname="Lisa Dusseault">
    <organization/>
</author>

<date month="September" day="15" year="2006"/>

<abstract><t>This document specifies a set of methods, headers, message bodies, properties, and reports that define calendar access extensions to the WebDAV protocol. The new protocol elements are intended to make WebDAV-based calendaring and scheduling an interoperable standard that supports calendar access, calendar management, calendar sharing, and calendar publishing.</t></abstract>

</front>

<seriesInfo name="Internet-Draft" value="draft-dusseault-caldav-15"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-dusseault-caldav-15.txt"/>
</reference>

  </references>
  <references title="Informative References">
    

<reference anchor="I-D.ietf-webdav-rfc2518bis">
<front>
<title>HTTP Extensions for Distributed Authoring - WebDAV</title>

<author initials="L" surname="Dusseault" fullname="Lisa Dusseault">
    <organization/>
</author>

<date month="February" day="16" year="2007"/>

<abstract><t>WebDAV consists of 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, URL namespace manipulation, and resource locking (collision avoidance). RFC2518 was published in February 1999, and this specification makes minor revisions mostly due to interoperability experience.</t></abstract>

</front>

<seriesInfo name="Internet-Draft" value="draft-ietf-webdav-rfc2518bis-18"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-webdav-rfc2518bis-18.txt"/>
</reference>

  </references>
  <section title="Changes">
    <section title="Changes in -03">
      <t>
        <list style="letters">
          <t>
            Added free-busy example.
          </t>
          <t>
            Better abstract.
          </t>
          <t>
            Requiring DAV level 2 for locking of Inbox.
          </t>
          <t>
            Do not require servers to actually save Outbox requests.
          </t>
          <t>
            Removed CALDAV:schedule-state Property. Clients now must
            remove inbox items after processing them, using locking etc
            to prevent race conditions.
          </t>
          <t>
            Switched back to 2518 reference from 2518bis.
          </t>
		  <t>
		    Updated to more recent XML reference.
		  </t>
		  <t>
		    Revised required features section to better match caldav-access.
		  </t>
        </list>
      </t>
    </section><!-- Changes in -03 -->
    <section title="Changes in -02">
      <t>
        <list style="letters">
          <t>
            Split schedule privilege into three sub-privileges.
          </t>
          <t>
            Made support for caldav-access optional.
          </t>
          <t>
            Changed SCHEDULE method to POST.
          </t>
        </list>
      </t>
    </section><!-- Changes in -03 -->
    <section title="Changes in -01">
      <t>
        <list style="letters">
          <t>
            Updated to latest references including 2518bis.
          </t>
          <t>
            Added principal property CALDAV:calendar-user-address-set.
          </t>
          <t>
            Major changes to schedule method, including addition of
            preconditions.
          </t>
          <t>
            New principal properties added.
          </t>
          <t>
            Text related to alternative ways of doing scheduling (some
            speculative) removed.
          </t>
          <t>
            Added Security Considerations text.
          </t>
          <t>
            Added IANA consideration text.
          </t>
        </list>
      </t>
    </section><!-- Changes in -01 -->
  </section><!-- Changes -->
</back>
</rfc>
<!--

Open Issue:

1- (2006-05-22 BD): How can I grant someone the right to invite me to
   an event, but not grant him the right to assign me a to-do?

2- (2006-05-22 BD): How can I deny someone the right to invite me to
   an event, but grant him the right to reply to scheduling request that
   I have sent to him?

-->

