<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[5485] CalendarServer/trunk/doc/RFC/draft-ietf-vcarddav-carddav.txt</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.macosforge.org/projects/calendarserver/changeset/5485">5485</a></dd>
<dt>Author</dt> <dd>cdaboo@apple.com</dd>
<dt>Date</dt> <dd>2010-04-16 07:11:11 -0700 (Fri, 16 Apr 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add CardDAV spec.</pre>

<h3>Added Paths</h3>
<ul>
<li><a href="#CalendarServertrunkdocRFCdraftietfvcarddavcarddavtxt">CalendarServer/trunk/doc/RFC/draft-ietf-vcarddav-carddav.txt</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="CalendarServertrunkdocRFCdraftietfvcarddavcarddavtxt"></a>
<div class="addfile"><h4>Added: CalendarServer/trunk/doc/RFC/draft-ietf-vcarddav-carddav.txt (0 => 5485)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/doc/RFC/draft-ietf-vcarddav-carddav.txt                                (rev 0)
+++ CalendarServer/trunk/doc/RFC/draft-ietf-vcarddav-carddav.txt        2010-04-16 14:11:11 UTC (rev 5485)
</span><span class="lines">@@ -0,0 +1,3136 @@
</span><ins>+
+
+
+Network Working Group                                           C. Daboo
+Internet-Draft                                                     Apple
+Intended status: Standards Track                        November 9, 2009
+Expires: May 13, 2010
+
+
+                  vCard Extensions to WebDAV (CardDAV)
+                     draft-ietf-vcarddav-carddav-10
+
+Status of this Memo
+
+   This Internet-Draft is submitted to IETF in full conformance with the
+   provisions of BCP 78 and BCP 79.  This document may contain material
+   from IETF Documents or IETF Contributions published or made publicly
+   available before November 10, 2008.  The person(s) controlling the
+   copyright in some of this material may not have granted the IETF
+   Trust the right to allow modifications of such material outside the
+   IETF Standards Process.  Without obtaining an adequate license from
+   the person(s) controlling the copyright in such materials, this
+   document may not be modified outside the IETF Standards Process, and
+   derivative works of it may not be created outside the IETF Standards
+   Process, except to format it for publication as an RFC or to
+   translate it into languages other than English.
+
+   Internet-Drafts are working documents of the Internet Engineering
+   Task Force (IETF), its areas, and its working groups.  Note that
+   other groups may also distribute working documents as Internet-
+   Drafts.
+
+   Internet-Drafts are draft documents valid for a maximum of six months
+   and may be updated, replaced, or obsoleted by other documents at any
+   time.  It is inappropriate to use Internet-Drafts as reference
+   material or to cite them other than as &quot;work in progress.&quot;
+
+   The list of current Internet-Drafts can be accessed at
+   http://www.ietf.org/ietf/1id-abstracts.txt.
+
+   The list of Internet-Draft Shadow Directories can be accessed at
+   http://www.ietf.org/shadow.html.
+
+   This Internet-Draft will expire on May 13, 2010.
+
+Copyright Notice
+
+   Copyright (c) 2009 IETF Trust and the persons identified as the
+   document authors.  All rights reserved.
+
+   This document is subject to BCP 78 and the IETF Trust's Legal
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 1]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Provisions Relating to IETF Documents in effect on the date of
+   publication of this document (http://trustee.ietf.org/license-info).
+   Please review these documents carefully, as they describe your rights
+   and restrictions with respect to this document.
+
+Abstract
+
+   This document defines extensions to the Web Distributed Authoring and
+   Versioning (WebDAV) protocol to specify a standard way of accessing,
+   managing, and sharing contact information based on the vCard format.
+
+
+Table of Contents
+
+   1.  Introduction and Overview  . . . . . . . . . . . . . . . . . .  4
+   2.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  5
+   3.  Requirements Overview  . . . . . . . . . . . . . . . . . . . .  6
+   4.  Address Book Data Model  . . . . . . . . . . . . . . . . . . .  7
+     4.1.  Address Book Server  . . . . . . . . . . . . . . . . . . .  7
+   5.  Address Book Resources . . . . . . . . . . . . . . . . . . . .  7
+     5.1.  Address Object Resources . . . . . . . . . . . . . . . . .  8
+       5.1.1.  Data Type Conversion . . . . . . . . . . . . . . . . .  8
+         5.1.1.1.  Additional Precondition for GET  . . . . . . . . .  9
+     5.2.  Address Book Collections . . . . . . . . . . . . . . . . .  9
+   6.  Address Book Feature . . . . . . . . . . . . . . . . . . . . . 10
+     6.1.  Address Book Support . . . . . . . . . . . . . . . . . . . 10
+       6.1.1.  Example: Using OPTIONS for the Discovery of
+               Support for CardDAV  . . . . . . . . . . . . . . . . . 10
+     6.2.  Address Book Properties  . . . . . . . . . . . . . . . . . 10
+       6.2.1.  CARDDAV:addressbook-description Property . . . . . . . 11
+       6.2.2.  CARDDAV:supported-address-data Property  . . . . . . . 11
+       6.2.3.  CARDDAV:max-resource-size Property . . . . . . . . . . 12
+     6.3.  Creating Resources . . . . . . . . . . . . . . . . . . . . 13
+       6.3.1.  Extended MKCOL Method  . . . . . . . . . . . . . . . . 13
+         6.3.1.1.  Example - Successful MKCOL request . . . . . . . . 14
+       6.3.2.  Creating Address Object Resources  . . . . . . . . . . 16
+         6.3.2.1.  Additional Preconditions for PUT, COPY and MOVE  . 17
+         6.3.2.2.  Non-Standard vCard Properties, and Parameters  . . 18
+         6.3.2.3.  Address Object Resource Entity Tag . . . . . . . . 18
+   7.  Address Book Access Control  . . . . . . . . . . . . . . . . . 19
+     7.1.  Additional Principal Properties  . . . . . . . . . . . . . 19
+       7.1.1.  CARDDAV:addressbook-home-set Property  . . . . . . . . 19
+       7.1.2.  CARDDAV:principal-address Property . . . . . . . . . . 20
+   8.  Address Book Reports . . . . . . . . . . . . . . . . . . . . . 21
+     8.1.  REPORT Method  . . . . . . . . . . . . . . . . . . . . . . 21
+     8.2.  Ordinary Collections . . . . . . . . . . . . . . . . . . . 21
+     8.3.  Searching Text: Collations . . . . . . . . . . . . . . . . 21
+       8.3.1.  CARDDAV:supported-collation-set Property . . . . . . . 22
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 2]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+     8.4.  Partial Retrieval  . . . . . . . . . . . . . . . . . . . . 23
+     8.5.  Non-standard Properties and Parameters . . . . . . . . . . 23
+     8.6.  CARDDAV:addressbook-query Report . . . . . . . . . . . . . 24
+       8.6.1.  Limiting Results . . . . . . . . . . . . . . . . . . . 25
+       8.6.2.  Truncation of Results  . . . . . . . . . . . . . . . . 26
+       8.6.3.  Example: Partial Retrieval of vCards Matching
+               NICKNAME . . . . . . . . . . . . . . . . . . . . . . . 26
+       8.6.4.  Example: Partial Retrieval of vCards Matching a
+               Full Name or Email Address . . . . . . . . . . . . . . 28
+       8.6.5.  Example: Truncated Results . . . . . . . . . . . . . . 31
+     8.7.  CARDDAV:addressbook-multiget Report  . . . . . . . . . . . 32
+       8.7.1.  Example: CARDDAV:addressbook-multiget Report . . . . . 34
+       8.7.2.  Example: CARDDAV:addressbook-multiget Report . . . . . 35
+   9.  Client Guidelines  . . . . . . . . . . . . . . . . . . . . . . 36
+     9.1.  Restrict the Properties Returned . . . . . . . . . . . . . 36
+     9.2.  Avoiding Lost Updates  . . . . . . . . . . . . . . . . . . 37
+     9.3.  Client Configuration . . . . . . . . . . . . . . . . . . . 37
+     9.4.  Finding Other Users' Address Books . . . . . . . . . . . . 37
+   10. XML Element Definitions  . . . . . . . . . . . . . . . . . . . 38
+     10.1. CARDDAV:addressbook XML Element  . . . . . . . . . . . . . 38
+     10.2. CARDDAV:supported-collation XML Element  . . . . . . . . . 38
+     10.3. CARDDAV:addressbook-query XML Element  . . . . . . . . . . 39
+     10.4. CARDDAV:address-data XML Element . . . . . . . . . . . . . 39
+       10.4.1. CARDDAV:allprop XML Element  . . . . . . . . . . . . . 41
+       10.4.2. CARDDAV:prop XML Element . . . . . . . . . . . . . . . 41
+     10.5. CARDDAV:filter XML Element . . . . . . . . . . . . . . . . 42
+       10.5.1. CARDDAV:prop-filter XML Element  . . . . . . . . . . . 43
+       10.5.2. CARDDAV:param-filter XML Element . . . . . . . . . . . 44
+       10.5.3. CARDDAV:is-not-defined XML Element . . . . . . . . . . 45
+       10.5.4. CARDDAV:text-match XML Element . . . . . . . . . . . . 45
+     10.6. CARDDAV:limit XML Element  . . . . . . . . . . . . . . . . 46
+       10.6.1. CARDDAV:nresults XML Element . . . . . . . . . . . . . 46
+     10.7. CARDDAV:addressbook-multiget XML Element . . . . . . . . . 47
+   11. Service Discovery via SRV Records  . . . . . . . . . . . . . . 47
+   12. Internationalization Considerations  . . . . . . . . . . . . . 48
+   13. Security Considerations  . . . . . . . . . . . . . . . . . . . 48
+   14. IANA Consideration . . . . . . . . . . . . . . . . . . . . . . 49
+     14.1. Namespace Registration . . . . . . . . . . . . . . . . . . 49
+   15. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 49
+   16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 49
+     16.1. Normative References . . . . . . . . . . . . . . . . . . . 49
+     16.2. Informative References . . . . . . . . . . . . . . . . . . 51
+   Appendix A.  Change History (to be removed prior to
+                publication as an RFC)  . . . . . . . . . . . . . . . 51
+   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 56
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 3]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+1.  Introduction and Overview
+
+   Address books containing contact information are a key component of
+   personal information management tools, such as email, calendaring and
+   scheduling, and instant messaging clients.  To date several protocols
+   have been used for remote access to contact data, including
+   Lightweight Directory Access Protocol (LDAP) [RFC4510], Internet
+   Message Support Protocol (IMSP) [IMSP] and Application Configuration
+   Access Protocol (ACAP) [RFC2244], together with SyncML used for
+   synchronization of such data.
+
+   WebDAV [RFC4918] offers a number of advantages as a framework or
+   basis for address book access and management.  Most of these
+   advantages boil down to a significant reduction in design costs,
+   implementation costs, interoperability test costs and deployment
+   costs.
+
+   The key features of address book support with WebDAV are:
+
+   1.  Ability to use multiple address books with hierarchical layout.
+
+   2.  Ability to control access to individual address books and address
+       entries as per WebDAV ACL [RFC3744].
+
+   3.  Principal collections can be used to enumerate and query other
+       users on the system as per WebDAV ACL [RFC3744].
+
+   4.  Server-side searching of address data, avoiding the need for
+       clients to download an entire address book in order to do a quick
+       address 'expansion' operation.
+
+   5.  Well-defined internationalization support through WebDAV's use of
+       XML.
+
+   6.  Use of vCards [RFC2426] for well defined address schema to
+       enhance client interoperability.
+
+   7.  Many limited clients (e.g. mobile devices) contain an HTTP stack
+       which makes implementing WebDAV much easier than other protocols.
+
+   The key disadvantages of address book support in WebDAV are:
+
+   1.  Lack of change notification.  Many of the alternative protocols
+       also lack this ability.  However, an extension for push
+       notifications could easily be developed.
+
+   vCard is a MIME directory profile aimed at encapsulating personal
+   addressing and contact information about people.  The specification
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 4]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   of vCard was originally done by the Versit consortium, with a
+   subsequent 3.0 version standardized by the IETF [RFC2426]. vCard is
+   in wide spread use in email clients and mobile devices as a means of
+   encapsulating address information for transport via email, or for
+   import/export and synchronization operations.
+
+   An update to vCard - vCard v4 - is currently being developed
+   [I-D.ietf-vcarddav-vcardrev]and is compatible with this
+   specification.
+
+
+2.  Conventions
+
+   The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
+   &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this
+   document are to be interpreted as described in [RFC2119].
+
+   The term &quot;protected&quot; is used in the Conformance field of property
+   definitions as defined in Section 15 of [RFC4918].
+
+   This document uses XML DTD fragments ([W3C.REC-xml-20081126], Section
+   3.2) as a purely notational convention.  WebDAV request and response
+   bodies cannot be validated by a DTD due to the specific extensibility
+   rules defined in Section 17 of [RFC4918] and due to the fact that all
+   XML elements defined by this specification use the XML namespace name
+   &quot;DAV:&quot;.  In particular:
+
+   1.  element names use the &quot;DAV:&quot; namespace,
+
+   2.  element ordering is irrelevant unless explicitly stated,
+
+   3.  extension elements (elements not already defined as valid child
+       elements) may be added anywhere, except when explicitly stated
+       otherwise,
+
+   4.  extension attributes (attributes not already defined as valid for
+       this element) may be added anywhere, except when explicitly
+       stated otherwise.
+
+   The namespace &quot;urn:ietf:params:xml:ns:carddav&quot; is reserved for the
+   XML elements defined in this specification, its revisions, and
+   related CardDAV specifications.  XML elements defined by individual
+   implementations MUST NOT use the &quot;urn:ietf:params:xml:ns:carddav&quot;
+   namespace, and instead should use a namespace that they control.
+
+   When XML element types in the namespaces &quot;DAV:&quot; and
+   &quot;urn:ietf:params:xml:ns:carddav&quot; are referenced in this document
+   outside of the context of an XML fragment, the strings &quot;DAV:&quot; and
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 5]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &quot;CARDDAV:&quot; will be prefixed to the element types, respectively.
+
+   This document inherits, and sometimes extends, DTD productions from
+   Section 14 of [RFC4918].
+
+   Also note that some CardDAV 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.
+
+
+3.  Requirements Overview
+
+   This section lists what functionality is required of a CardDAV
+   server.  To advertise support for CardDAV, a server:
+
+   o  MUST support vCard v3 [RFC2426] as a media type for the address
+      object resource format;
+
+   o  MUST support WebDAV Class 3 [RFC4918];
+
+   o  MUST support WebDAV ACL [RFC3744];
+
+   o  MUST support secure transport as defined in [RFC2818] using TLS
+      [RFC5246] and using the certificate validation procedures
+      described in [RFC5280];
+
+   o  MUST support ETags [RFC2616] with additional requirements
+      specified in Section 6.3.2.3 of this document;
+
+   o  MUST support all address book reports defined in Section 8 of this
+      document; and
+
+   o  MUST advertise support on all address book collections and address
+      object resources for the address book reports in the DAV:
+      supported-report-set property, as defined in Versioning Extensions
+      to WebDAV [RFC3253].
+
+   In addition, a server:
+
+   o  SHOULD support vCard v4 [I-D.ietf-vcarddav-vcardrev] as a media
+      type for the address object resource format;
+
+   o  SHOULD support the extended MKCOL method [RFC5689] to create
+      address book collections as defined in Section 6.3.1 of this
+      document.
+
+   o  SHOULD support the DAV:current-user-principal-URL property as
+      defined in [RFC5397] to give clients a fast way to locate user
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 6]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+      principals.
+
+
+4.  Address Book Data Model
+
+   As a brief overview, a CardDAV address book is modeled as a WebDAV
+   collection with a well defined structure; each of these address book
+   collections contain a number of resources representing address
+   objects as their direct child resources.  Each resource representing
+   an address object is called an &quot;address object resource&quot;.  Each
+   address object resource and each address book collection can be
+   individually locked and have individual WebDAV properties.
+   Requirements derived from this model are provided in Section 5.1 and
+   Section 5.2.
+
+4.1.  Address Book Server
+
+   A CardDAV server is an address-aware engine combined with a WebDAV
+   server.  The server may include address data in some parts of its URL
+   namespace, and non-address data in other parts.
+
+   A WebDAV server can advertise itself as a CardDAV server if it
+   supports the functionality defined in this specification at any point
+   within the root of its repository.  That might mean that address data
+   is spread throughout the repository and mixed with non-address data
+   in nearby collections (e.g. address data may be found in /lisa/
+   addressbook/ as well as in /bernard/addressbook/, and non-address
+   data in /lisa/calendars/).  Or, it might mean that address data can
+   be found only in certain sections of the repository (e.g.
+   /addressbooks/user/).  Address book features are only required in the
+   repository sections that are or contain address objects.  So a
+   repository confining address data to the /carddav/ collection would
+   only need to support the CardDAV required features within that
+   collection.
+
+   The CardDAV server is the canonical location for address data and
+   state information.  Clients may submit requests to change data or
+   download data.  Clients may store address objects offline and attempt
+   to synchronize at a later time.  Address data on the server can
+   change between the time of last synchronization and when attempting
+   an update, as address book collections may be shared and accessible
+   via multiple clients.  Entity tags and locking help this work.
+
+
+5.  Address Book Resources
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 7]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+5.1.  Address Object Resources
+
+   This specification uses vCard as the default format for address or
+   contact information being stored on the server.  However, this
+   specification does allow other formats for address data provided that
+   the server advertises support for those additional formats as
+   described below.  The requirements in this section pertain to vCard
+   address data, or formats that follow the semantics of vCard data.
+
+   Address object resources contained in address book collections MUST
+   contain a single vCard component only.
+
+   vCard components in an address book collection MUST have a UID
+   property value that MUST be unique in the scope of the address book
+   collection in which it is contained.
+
+5.1.1.  Data Type Conversion
+
+   Servers might support more than one primary media type for address
+   object resources, for example vCard v3.0 and vCard v4.0.  In such
+   cases servers have to accept all media types that they advertise via
+   the CARDDAV:supported-address-data WebDAV property (see
+   Section 6.2.2).
+
+   However, clients can use standard HTTP content negotiation behavior
+   (the Accept request header defined in Section 14.1 of [RFC2616]) to
+   request that an address object resource's data be returned in a
+   specific media type format.  For example, a client only capable of
+   handling vCard v3.0 would only want to have address object resources
+   returned in v3.0 format.
+
+   Additionally, REPORT requests, defined later in this specification,
+   allow for the return of address object resource data within an XML
+   response body.  Again, the client can use content negotiation to
+   request that data be returned in a specific media type by specifying
+   appropriate attributes on the CARDDAV:address-data XML element used
+   in the request body (see Section 10.4).
+
+   In some cases it might not be possible for a server to convert from
+   one media type to another.  When that happens, the server MUST return
+   the CARDDAV:supported-address-data-conversion precondition (see
+   below) in the response body (when the failure to convert applies to
+   the entire response) or use that same precondition code in the DAV:
+   response XML element in the response for the targeted address object
+   resource when one of the REPORTs defined below is used.  See
+   Section 8.7.2 for an example of this.
+
+
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 8]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+5.1.1.1.  Additional Precondition for GET
+
+   This specification creates additional preconditions for the GET
+   method.
+
+   The new precondition is:
+
+      (CARDDAV:supported-address-data-conversion): The resource targeted
+      by the GET request can be converted to the media type specified in
+      the Accept request header included with the request;
+
+5.2.  Address Book Collections
+
+   Address book collections appear to clients as a WebDAV collection
+   resource, identified by a URL.  An address book collection MUST
+   report the DAV:collection and CARDDAV:addressbook XML elements in the
+   value of the DAV:resourcetype property.  The element type declaration
+   for CARDDAV:addressbook is:
+
+       &lt;!ELEMENT addressbook EMPTY&gt;
+
+   An address book collection can be created through provisioning (e.g.,
+   automatically created when a user's account is provisioned), or it
+   can be created with the extended MKCOL method (see Section 6.3.1).
+   This can be used by a user to create additional address books (e.g.,
+   &quot;soccer team members&quot;) or for users to share an address book (e.g.,
+   &quot;sales team contacts&quot;).  Note however that this document doesn't
+   define what extra address book collections are for.  Users must rely
+   on non-standard cues to find out what an address book collection is
+   for, or use the CARDDAV:addressbook-description property defined in
+   Section 6.2.1 to provide such a cue.
+
+   The following restrictions are applied to the resources within an
+   address book collection:
+
+   a.  Address book collections MUST only contain address object
+       resources and collections that are not address book collections.
+       i.e., the only &quot;top-level&quot; non-collection resources allowed in an
+       address book collection are address object resources.  This
+       ensures that address book clients do not have to deal with non-
+       address data in an address book collection, though they do have
+       to distinguish between address object resources and collections
+       when using standard WebDAV techniques to examine the contents of
+       a collection.
+
+   b.  Collections contained in address book collections MUST NOT
+       contain address book collections at any depth. i.e., &quot;nesting&quot; of
+       address book collections within other address book collections at
+
+
+
+Daboo                     Expires May 13, 2010                  [Page 9]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+       any depth is not allowed.  This specification does not define how
+       collections contained in an address book collection are used or
+       how they relate to any address object resources contained in the
+       address book collection.
+
+   Multiple address book collections MAY be children of the same
+   collection.
+
+
+6.  Address Book Feature
+
+6.1.  Address Book Support
+
+   A server supporting the features described in this document, MUST
+   include &quot;addressbook&quot; as a field in the DAV response header from an
+   OPTIONS request on any resource that supports any address book
+   properties, reports, or methods.  A value of &quot;addressbook&quot; in the DAV
+   response header MUST indicate that the server supports all MUST level
+   requirements and REQUIRED features specified in this document.
+
+6.1.1.  Example: Using OPTIONS for the Discovery of Support for CardDAV
+
+   &gt;&gt; Request &lt;&lt;
+
+   OPTIONS /addressbooks/users/ HTTP/1.1
+   Host: addressbook.example.com
+
+   &gt;&gt; Response &lt;&lt;
+
+   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, 3, access-control, addressbook
+   DAV: extended-mkcol
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Length: 0
+
+   In this example, the OPTIONS response indicates that the server
+   supports CardDAV in this namespace, therefore the '/addressbooks/
+   users/' collection may be used as a parent for address book
+   collections as the extended MKCOL method is available, and as a
+   possible target for REPORT requests for address book reports.
+
+6.2.  Address Book Properties
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 10]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+6.2.1.  CARDDAV:addressbook-description Property
+
+   Name:  addressbook-description
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Provides a human-readable description of the address book
+      collection.
+
+   Value:  Any text.
+
+   Protected:  SHOULD NOT be protected so that users can specify a
+      description.
+
+   COPY/MOVE behavior:  This property value SHOULD be preserved in COPY
+      and MOVE operations.
+
+   allprop behavior:  SHOULD NOT be returned by a PROPFIND DAV:allprop
+      request.
+
+   Description:  This property contains a description of the address
+      book collection that is suitable for presentation to a user.  The
+      xml:lang attribute can be used to add a language tag for the value
+      of this property.
+
+   Definition:
+
+       &lt;!ELEMENT addressbook-description (#PCDATA)&gt;
+       &lt;!-- PCDATA value: string --&gt;
+
+   Example:
+
+       &lt;C:addressbook-description xml:lang=&quot;fr-CA&quot;
+          xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;
+       &gt;Adresses de Oliver Daboo&lt;/C:addressbook-description&gt;
+
+6.2.2.  CARDDAV:supported-address-data Property
+
+   Name:  supported-address-data
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies what media types are allowed for address object
+      resources in an address book collection.
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 11]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Protected:  MUST be protected as it indicates the level of support
+      provided by the server.
+
+   COPY/MOVE behavior:  This property value MUST be preserved in COPY
+      and MOVE operations.
+
+   allprop behavior:  SHOULD NOT be returned by a PROPFIND DAV:allprop
+      request.
+
+   Description:  The CARDDAV:supported-address-data property is used to
+      specify the media type supported for the address object resources
+      contained in a given address book collection (e.g., vCard version
+      3.0).  Any attempt by the client to store address object resources
+      with a media type not listed in this property MUST result in an
+      error, with the CARDDAV:supported-address-data precondition
+      (Section 6.3.2.1) being violated.  In the absence of this property
+      the server MUST only accept data with the media type &quot;text/vcard&quot;
+      and vCard version 3.0, and clients can assume that.
+
+   Definition:
+
+       &lt;!ELEMENT supported-address-data (address-data-type+)&gt;
+
+       &lt;!ELEMENT address-data-type EMPTY&gt;
+       &lt;!ATTLIST address-data-type content-type CDATA &quot;text/vcard&quot;
+                             version CDATA &quot;3.0&quot;&gt;
+       &lt;!-- content-type value: a MIME media type --&gt;
+       &lt;!-- version value: a version string --&gt;
+
+
+
+   Example:
+
+       &lt;C:supported-address-data
+          xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+         &lt;C:address-data-type content-type=&quot;text/vcard&quot; version=&quot;3.0&quot;/&gt;
+       &lt;/C:supported-address-data&gt;
+
+6.2.3.  CARDDAV:max-resource-size Property
+
+   Name:  max-resource-size
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Provides a numeric value indicating the maximum size in
+      octets of a resource that the server is willing to accept when an
+      address object resource is stored in an address book collection.
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 12]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Value:  Any text representing a numeric value.
+
+   Protected:  MUST be protected as it indicates limits provided by the
+      server.
+
+   COPY/MOVE behavior:  This property value MUST be preserved in COPY
+      and MOVE operations.
+
+   allprop behavior:  SHOULD NOT be returned by a PROPFIND DAV:allprop
+      request.
+
+   Description:  The CARDDAV:max-resource-size is used to specify a
+      numeric value that represents the maximum size in octets that the
+      server is willing to accept when an address object resource is
+      stored in an address book collection.  Any attempt to store an
+      address book object resource exceeding this size MUST result in an
+      error, with the CARDDAV:max-resource-size precondition
+      (Section 6.3.2.1) being violated.  In the absence of this property
+      the client can assume that the server will allow storing a
+      resource of any reasonable size.
+
+   Definition:
+
+       &lt;!ELEMENT max-resource-size (#PCDATA)&gt;
+       &lt;!-- PCDATA value: a numeric value (positive decimal integer) --&gt;
+
+   Example:
+
+       &lt;C:max-resource-size xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;
+       &gt;102400&lt;/C:max-resource-size&gt;
+
+6.3.  Creating Resources
+
+   Address book collections and address object resources may be created
+   by either a CardDAV client or by the CardDAV server.  This
+   specification defines restrictions and a data model that both clients
+   and servers MUST adhere to when manipulating such address data.
+
+6.3.1.  Extended MKCOL Method
+
+   An HTTP request using the extended MKCOL method [RFC5689] can be used
+   to create a new address book collection resource.  A server MAY
+   restrict address book collection creation to particular collections.
+
+   To create an address book, the client sends an extended MKCOL request
+   to the server and in the body of the request sets the DAV:
+   resourcetype property to the resource type for an address book
+   collection as defined in Section 5.2.
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 13]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Support for creating address books on the server is only RECOMMENDED
+   and not REQUIRED because some address book stores only support one
+   address book per user (or principal), and those are typically pre-
+   created for each account.  However, servers and clients are strongly
+   encouraged to support address book creation whenever possible to
+   allow users to create multiple address book collections to help
+   organize their data better.
+
+   The DAV:displayname property can be used for a human-readable name of
+   the address book.  Clients can either specify the value of the DAV:
+   displayname property in the request body of the extended MKCOL
+   request, or alternatively issue a PROPPATCH request to change the
+   DAV:displayname property to the appropriate value immediately after
+   using the extended MKCOL request.  When displaying address book
+   collections to users, clients SHOULD check the DAV:displayname
+   property and use that value as the name of the address book.  In the
+   event that the DAV:displayname property is not set, the client MAY
+   use the last part of the address book collection URI as the name,
+   however that path segment may be &quot;opaque&quot; and not represent any
+   meaningful human-readable text.
+
+6.3.1.1.  Example - Successful MKCOL request
+
+   This example creates an address book collection called /home/lisa/
+   addressbook/ on the server addressbook.example.com with specific
+   values for the properties DAV:resourcetype, DAV:displayname and
+   CARDDAV:addressbook-description.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 14]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Request &lt;&lt;
+
+   MKCOL /home/lisa/addressbook/ HTTP/1.1
+   Host: addressbook.example.com
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:mkcol xmlns:D=&quot;DAV:&quot;
+                 xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:set&gt;
+       &lt;D:prop&gt;
+         &lt;D:resourcetype&gt;
+           &lt;D:collection/&gt;
+           &lt;C:addressbook/&gt;
+         &lt;/D:resourcetype&gt;
+         &lt;D:displayname&gt;Lisa's Contacts&lt;/D:displayname&gt;
+         &lt;C:addressbook-description xml:lang=&quot;en&quot;
+   &gt;My primary address book.&lt;/C:addressbook-description&gt;
+       &lt;/D:prop&gt;
+     &lt;/D:set&gt;
+   &lt;/D:mkcol&gt;
+
+   &gt;&gt; Response &lt;&lt;
+
+   HTTP/1.1 201 Created
+   Cache-Control: no-cache
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Type: application/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:mkcol-response xmlns:D=&quot;DAV:&quot;
+                 xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:propstat&gt;
+       &lt;D:prop&gt;
+         &lt;D:resourcetype/&gt;
+         &lt;D:displayname/&gt;
+         &lt;C:addressbook-description/&gt;
+       &lt;/D:prop&gt;
+       &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+     &lt;/D:propstat&gt;
+   &lt;/D:mkcol-response&gt;
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 15]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+6.3.2.  Creating Address Object Resources
+
+   Clients populate address book collections with address object
+   resources.  The URL for each address object resource is entirely
+   arbitrary, and does not need to bear a specific relationship (but
+   might) to the address object resource's vCard properties or other
+   metadata.  New address object resources MUST be created with a PUT
+   request targeted at an unmapped URI.  A PUT request targeted at a
+   mapped URI updates an existing address object resource.
+
+   When servers create new resources, it's not hard for the server to
+   choose a unique URL.  It's slightly tougher for clients, because a
+   client might not want to examine all resources in the collection, and
+   might not want to lock the entire collection to ensure that a new one
+   isn't created with a name collision.  However, there is an HTTP
+   feature to mitigate this.  If the client intends to create a new
+   address resource the client SHOULD use the HTTP header &quot;If-None-
+   Match: *&quot; on the PUT request.  The Request-URI on the PUT request
+   MUST include the target collection, where the resource is to be
+   created, plus the name of the resource in the last path segment.  The
+   &quot;If-None-Match&quot; header ensures that the client will not inadvertently
+   overwrite an existing resource even, if the last path segment turned
+   out to already be used.
+
+   &gt;&gt; Request &lt;&lt;
+
+   PUT /lisa/addressbook/newvcard.vcf HTTP/1.1
+   If-None-Match: *
+   Host: addressbook.example.com
+   Content-Type: text/vcard
+   Content-Length: xxx
+
+   BEGIN:VCARD
+   VERSION:3.0
+   FN:Cyrus Daboo
+   N:Daboo;Cyrus
+   ADR;TYPE=POSTAL:;2822 Email HQ;Suite 2821;RFCVille;PA;15213;USA
+   EMAIL;TYPE=INTERNET,PREF:cyrus@example.com
+   NICKNAME:me
+   NOTE:Example VCard.
+   ORG:Self Employed
+   TEL;TYPE=WORK,VOICE:412 605 0499
+   TEL;TYPE=FAX:412 605 0705
+   URL:http://www.example.com
+   UID:1234-5678-9000-1
+   END:VCARD
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 16]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Response &lt;&lt;
+
+   HTTP/1.1 201 Created
+   Date: Thu, 02 Sep 2004 16:53:32 GMT
+   Content-Length: 0
+   ETag: &quot;123456789-000-111&quot;
+
+   The request to change an existing address object resource without
+   overwriting a change made on the server, uses a specific ETag in an
+   &quot;If-Match&quot; header, rather than the &quot;If-None-Match&quot; header.
+
+   File names for vCards are commonly suffixed by &quot;.vcf&quot;, and clients
+   may choose to use the same convention for URLs.
+
+6.3.2.1.  Additional Preconditions for PUT, COPY and MOVE
+
+   This specification creates additional Preconditions for PUT, COPY and
+   MOVE methods.  These preconditions apply:
+
+   o  When a PUT operation of an address object resource into an address
+      book collection occurs.
+
+   o  When a COPY or MOVE operation of an address object resource into
+      an address book collection occurs.
+
+   The new preconditions are:
+
+      (CARDDAV:supported-address-data): The resource submitted in the
+      PUT request, or targeted by a COPY or MOVE request MUST be a
+      supported media type (i.e., vCard) for address object resources;
+
+      (CARDDAV:valid-address-data): The resource submitted in the PUT
+      request, or targeted by a COPY or MOVE request MUST be valid data
+      for the media type being specified (i.e., MUST contain valid vCard
+      data);
+
+      (CARDDAV:no-uid-conflict): The resource submitted in the PUT
+      request, or targeted by a COPY or MOVE request MUST NOT specify a
+      vCard UID property value already in use in the targeted address
+      book collection or overwrite an existing address object resource
+      with one that has a different UID property value.  Servers SHOULD
+      report the URL of the resource that is already making use of the
+      same UID property value in the DAV:href element;
+
+          &lt;!ELEMENT no-uid-conflict (DAV:href)&gt;
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 17]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+      (CARDDAV:addressbook-collection-location-ok): In a COPY or MOVE
+      request, when the Request-URI is an address book collection, the
+      URI targeted by the Destination HTTP Request header MUST identify
+      a location where an address book collection can be created;
+
+      (CARDDAV:max-resource-size): The resource submitted in the PUT
+      request, or targeted by a COPY or MOVE request MUST have a size in
+      octets less than or equal to the value of the CARDDAV:max-
+      resource-size property value (Section 6.2.3) on the address book
+      collection where the resource will be stored;
+
+6.3.2.2.  Non-Standard vCard Properties, and Parameters
+
+   vCard provides a &quot;standard mechanism for doing non-standard things&quot;.
+   This extension support allows implementers to make use of non-
+   standard vCard properties and parameters whose names are prefixed
+   with the text &quot;X-&quot;.
+
+   Servers MUST support the use of non-standard properties and
+   parameters in address object resources stored via the PUT method.
+
+   Servers may need to enforce rules for their own &quot;private&quot; properties
+   or parameters, so servers MAY reject any attempt by the client to
+   change those or use values for those outside of any restrictions the
+   server may have.  Servers SHOULD ensure that any &quot;private&quot; properties
+   or parameters it uses follow the convention of including a vendor id
+   in the &quot;X-&quot; name, as described in Section 3.8 of [RFC2426], e.g.,
+   &quot;X-ABC-PRIVATE&quot;.
+
+6.3.2.3.  Address Object Resource Entity Tag
+
+   The DAV:getetag property MUST be defined and set to a strong entity
+   tag on all address object resources.
+
+   A response to a GET request targeted at an address object resource
+   MUST contain an ETag response header field indicating the current
+   value of the strong entity tag of the address object resource.
+
+   Servers SHOULD return a strong entity tag (ETag header) in a PUT
+   response when the stored address object resource is equivalent by
+   octet equality to the address object resource submitted in the body
+   of the PUT request.  This allows clients to reliably use the returned
+   strong entity tag for data synchronization purposes.  For instance,
+   the client can do a PROPFIND request on the stored address object
+   resource and have the DAV:getetag property returned, and compare that
+   value with the strong entity tag it received on the PUT response, and
+   know that if they are equal, then the address object resource on the
+   server has not been changed.
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 18]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   In the case where the data stored by a server as a result of a PUT
+   request is not equivalent by octet equality to the submitted address
+   object resource, the behavior of the ETag response header is not
+   specified here, with the exception that a strong entity tag MUST NOT
+   be returned in the response.  As a result, clients may need to
+   retrieve the modified address object resource (and ETag) as a basis
+   for further changes, rather than use the address object resource it
+   had sent with the PUT request.
+
+
+7.  Address Book Access Control
+
+   CardDAV servers MUST support and adhere to the requirements of WebDAV
+   ACL [RFC3744].  WebDAV ACL provides a framework for an extensible set
+   of privileges that can be applied to WebDAV collections and ordinary
+   resources.
+
+7.1.  Additional Principal Properties
+
+   This section defines additional properties for WebDAV principal
+   resources as defined in [RFC3744].
+
+7.1.1.  CARDDAV:addressbook-home-set Property
+
+   Name:  addressbook-home-set
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Identifies the URL of any WebDAV collections that contain
+      address book collections owned by the associated principal
+      resource.
+
+   Protected:  MAY be protected if the server has fixed locations in
+      which address books are created.
+
+   COPY/MOVE behavior:  This property value MUST be preserved in COPY
+      and MOVE operations.
+
+   allprop behavior:  SHOULD NOT be returned by a PROPFIND DAV:allprop
+      request.
+
+   Description:  The CARDDAV:addressbook-home-set property is meant to
+      allow users to easily find the address book collections owned by
+      the principal.  Typically, users will group all the address book
+      collections that they own under a common collection.  This
+      property specifies the URL of collections that either are address
+      book collections or ordinary collections that have child or
+      descendant address book collections owned by the principal.
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 19]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Definition:
+
+       &lt;!ELEMENT addressbook-home-set (DAV:href*)&gt;
+
+   Example:
+
+       &lt;C:addressbook-home-set xmlns:D=&quot;DAV:&quot;
+          xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+         &lt;D:href&gt;/bernard/addresses/&lt;/D:href&gt;
+       &lt;/C:addressbook-home-set&gt;
+
+7.1.2.  CARDDAV:principal-address Property
+
+   Name:  principal-address
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Identifies the URL of an address object resource that
+      corresponds to the user represented by the principal.
+
+   Protected:  MAY be protected if the server provides a fixed location
+      for principal addresses.
+
+   COPY/MOVE behavior:  This property value MUST be preserved in COPY
+      and MOVE operations.
+
+   allprop behavior:  SHOULD NOT be returned by a PROPFIND DAV:allprop
+      request.
+
+   Description:  The CARDDAV:principal-address property is meant to
+      allow users to easily find contact information for users
+      represented by principals on the system.  This property specifies
+      the URL of the resource containing the corresponding contact
+      information.  The resource could be an address object resource in
+      an address book collection, or it could be a resource in a
+      &quot;regular&quot; collection.
+
+   Definition:
+
+       &lt;!ELEMENT principal-address (DAV:href)&gt;
+
+   Example:
+
+       &lt;C:principal-address xmlns:D=&quot;DAV:&quot;
+          xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+          &lt;D:href&gt;/system/cyrus.vcf&lt;/D:href&gt;
+       &lt;/C:principal-address&gt;
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 20]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+8.  Address Book Reports
+
+   This section defines the reports that CardDAV servers MUST support on
+   address book collections and address object resources.
+
+   CardDAV servers MUST advertise support for these reports on all
+   address book collections and address object resources with the DAV:
+   supported-report-set property defined in Section 3.1.5 of [RFC3253].
+   CardDAV servers MAY also advertise support for these reports on
+   ordinary collections.
+
+   Some of these reports allow address data (from possibly multiple
+   resources) to be returned.
+
+8.1.  REPORT Method
+
+   The REPORT method (defined in Section 3.6 of [RFC3253]) provides an
+   extensible mechanism for obtaining information about a resource.
+   Unlike the PROPFIND method, which returns the value of one or more
+   named properties, the REPORT method can involve more complex
+   processing.  REPORT is valuable in cases where the server has access
+   to all of the information needed to perform the complex request (such
+   as a query), and where it would require multiple requests for the
+   client to retrieve the information needed to perform the same
+   request.
+
+   A server that supports this specification MUST support the DAV:
+   expand-property report (defined in Section 3.8 of [RFC3253]).
+
+8.2.  Ordinary Collections
+
+   Servers MAY support the reports defined in this document on ordinary
+   collections (collections that are not address book collections) in
+   addition to address book collections or address object resources.  In
+   computing responses to the reports on ordinary collections, servers
+   MUST only consider address object resources contained in address book
+   collections that are targeted by the REPORT based on the value of the
+   Depth request header.
+
+8.3.  Searching Text: Collations
+
+   Some of the reports defined in this section do text matches of
+   character strings provided by the client and compared to stored
+   address data.  Since vCard data is by default encoded in the UTF-8
+   charset and may include characters outside of the US-ASCII charset
+   range in some property and parameter values, there is a need to
+   ensure that text matching follows well-defined rules.
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 21]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   To deal with this, this specification makes use of the IANA Collation
+   Registry defined in [RFC4790] to specify collations that may be used
+   to carry out the text comparison operations with a well-defined rule.
+
+   Collations supported by the server MUST support &quot;equality&quot; and
+   &quot;substring&quot; match operations as per [RFC4790] Section 4.2, including
+   the &quot;prefix&quot; and &quot;suffix&quot; options for &quot;substring&quot; matching.  CardDAV
+   uses these match options for &quot;equals&quot;, &quot;contains&quot;, &quot;starts-with&quot; and
+   &quot;ends-with&quot; match operations.
+
+   CardDAV servers are REQUIRED to support the &quot;i;ascii-casemap&quot;
+   [RFC4790] and &quot;i;unicode-casemap&quot; [RFC5051] collations, and MAY
+   support other collations.
+
+   Servers MUST advertise the set of collations that they support via
+   the CARDDAV:supported-collation-set property defined on any resource
+   that supports reports that use collations.
+
+   In the absence of a collation explicitly specified by the client, or
+   if the client specifies the &quot;default&quot; collation identifier (as
+   defined in [RFC4790] Section 3.1), the server MUST default to using
+   &quot;i;unicode-casemap&quot; as the collation.
+
+   Wildcards (as defined in [RFC4790] Section 3.2) MUST NOT be used in
+   the collation identifier.
+
+   If the client chooses a collation not supported by the server, the
+   server MUST respond with a CARDDAV:supported-collation precondition
+   error response.
+
+8.3.1.  CARDDAV:supported-collation-set Property
+
+   Name:  supported-collation-set
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Identifies the set of collations supported by the server
+      for text matching operations.
+
+   Protected:  MUST be protected as it indicates support provided by the
+      server.
+
+   COPY/MOVE behavior:  This property value MUST be preserved in COPY
+      and MOVE operations.
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 22]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   allprop behavior:  SHOULD NOT be returned by a PROPFIND DAV:allprop
+      request.
+
+   Description:  The CARDDAV:supported-collation-set property contains
+      two or more CARDDAV:supported-collation elements which specify the
+      identifiers of the collations supported by the server.
+
+   Definition:
+
+         &lt;!ELEMENT supported-collation-set (
+               supported-collation
+               supported-collation
+               supported-collation*)&gt;
+         &lt;!-- Both &quot;i;ascii-casemap&quot; and &quot;i;unicode-casemap&quot;
+              will be present --&gt;
+
+         &lt;!ELEMENT supported-collation (#PCDATA)&gt;
+
+   Example:
+
+      &lt;C:supported-collation-set
+        xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+        &lt;C:supported-collation&gt;i;ascii-casemap&lt;/C:supported-collation&gt;
+        &lt;C:supported-collation&gt;i;octet&lt;/C:supported-collation&gt;
+        &lt;C:supported-collation&gt;i;unicode-casemap&lt;/C:supported-collation&gt;
+      &lt;/C:supported-collation-set&gt;
+
+8.4.  Partial Retrieval
+
+   Some address book reports defined in this document allow partial
+   retrieval of address object resources.  A CardDAV client can specify
+   what information to return in the body of an address book REPORT
+   request.
+
+   A CardDAV client can request particular WebDAV property values, all
+   WebDAV property values, or a list of the names of the resource's
+   WebDAV properties.  A CardDAV client can also request address data to
+   be returned and whether all vCard properties should be returned or
+   only particular ones.  See CARDDAV:address-data in Section 10.4.
+
+8.5.  Non-standard Properties and Parameters
+
+   Servers MUST support the use of non-standard vCard property or
+   parameter names in the CARDDAV:address-data XML element in address
+   book REPORT requests to allow clients to request that non-standard
+   properties and parameters be returned in the address data provided in
+   the response.
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 23]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Servers MAY support the use of non-standard vCard property or
+   parameter names in the CARDDAV:prop-filter and CARDDAV:param-filter
+   XML elements specified in the CARDDAV:filter XML element of address
+   book REPORT requests.
+
+   Servers MUST fail with the CARDDAV:supported-filter precondition if
+   an address book REPORT request uses a CARDDAV:prop-filter or CARDDAV:
+   param-filter XML element that makes reference to a non-standard vCard
+   property or parameter name which the server does not support queries
+   on.
+
+8.6.  CARDDAV:addressbook-query Report
+
+   The CARDDAV:addressbook-query REPORT performs a search for all
+   address object resources that match a specified filter.  The response
+   of this report will contain all the WebDAV properties and address
+   object resource data specified in the request.  In the case of the
+   CARDDAV:address-data XML element, one can explicitly specify the
+   vCard properties that should be returned in the address object
+   resource data that matches the filter.
+
+   The format of this report is modeled on the PROPFIND method.  The
+   request and response bodies of the CARDDAV:addressbook-query report
+   use XML elements that are also used by PROPFIND.  In particular the
+   request can include XML elements to request WebDAV properties to be
+   returned.  When that occurs the response should follow the same
+   behavior as PROPFIND with respect to the DAV:multistatus response
+   elements used to return specific WebDAV property results.  For
+   instance, a request to retrieve the value of a WebDAV property which
+   does not exist is an error and MUST be noted with a response XML
+   element which contains a 404 (Not Found) status value.
+
+   Support for the CARDDAV:addressbook-query REPORT is REQUIRED.
+
+   Marshalling:
+
+      The request body MUST be a CARDDAV:addressbook-query XML element
+      as defined in Section 10.3.
+
+      The request MUST include a Depth header.  The scope of the query
+      is determined by the value of the Depth header. e.g., to query all
+      address object resources in an address book collection, the REPORT
+      would use the address book collection as the request-URI and
+      specify a Depth of 1 or infinity.
+
+      The response body for a successful request MUST be a DAV:
+      multistatus XML element (i.e., the response uses the same format
+      as the response for PROPFIND).  In the case where there are no
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 24]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+      response elements, the returned DAV:multistatus XML element is
+      empty.
+
+      The response body for a successful CARDDAV:addressbook-query
+      REPORT request MUST contain a DAV:response element for each
+      address object that matched the search filter. address data is
+      returned in the CARDDAV:address-data XML element inside the DAV:
+      propstat XML element.
+
+   Preconditions:
+
+      (CARDDAV:supported-address-data): The attributes &quot;content-type&quot;
+      and &quot;version&quot; of the CARDDAV:address-data XML element (see
+      Section 10.4) specify a media type supported by the server for
+      address object resources.
+
+      (CARDDAV:supported-filter): The CARDDAV:prop-filter (see
+      Section 10.5.1) and CARDDAV:param-filter (see Section 10.5.2) XML
+      elements used in the CARDDAV:filter XML element (see Section 10.5)
+      in the REPORT request only make reference to vCard properties and
+      parameters for which queries are supported by the server. i.e., if
+      the CARDDAV:filter element attempts to reference an unsupported
+      vCard property or parameter, this precondition is violated.
+      Servers SHOULD report the CARDDAV:prop-filter or CARDDAV:param-
+      filter for which it does not provide support.
+
+          &lt;!ELEMENT supported-filter (prop-filter*,
+                                      param-filter*)&gt;
+
+      (CARDDAV:supported-collation): Any XML attribute specifying a
+      collation MUST specify a collation supported by the server as
+      described in Section 8.3.
+
+   Postconditions:
+
+      (DAV:number-of-matches-within-limits): The number of matching
+      address object resources must fall within server-specific,
+      predefined limits.  For example, this condition might be triggered
+      if a search specification would cause the return of an extremely
+      large number of responses.
+
+8.6.1.  Limiting Results
+
+   A client can limit the number of results returned by the server
+   through use of the CARDDAV:limit element in the request body.  This
+   is useful when clients are only interested in a few matches, or only
+   have limited space to display results to users and thus don't need
+   the overhead of receiving more than that.  When the results are
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 25]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   truncated by the server, the server MUST follow the rules below for
+   indicating a result set truncation to the client.
+
+8.6.2.  Truncation of Results
+
+   A server MAY limit the number of resources in a response, for
+   example, to limit the amount of work expended in processing a query,
+   or as the result of an explicit limit set by the client.  If the
+   result set is truncated because of such a limit, the response MUST
+   use status code 207, return a DAV:multistatus response body, and
+   indicate a status of 507 (Insufficient Storage) for the request URI.
+   That DAV:response element SHOULD include a DAV:error element with the
+   DAV:number-of-matches-within-limits precondition, as defined in
+   [RFC3744] (Section 9.2).
+
+   The server SHOULD also include the partial results in additional DAV:
+   response elements.  If a client requested limit is being applied, the
+   507 response for the request URI MUST NOT be included in calculating
+   the limit (e.g., if the client requests that only a single result be
+   returned, and multiple matches are present, then the DAV:multistatus
+   response will include one DAV:response for the matching resource and
+   one DAV:response for the 507 status on the request URI).
+
+8.6.3.  Example: Partial Retrieval of vCards Matching NICKNAME
+
+   In this example, the client requests the server to search for address
+   object resources that contain a NICKNAME property whose value equals
+   some specific text, and to return specific vCard properties for those
+   vCards found.  In addition the DAV:getetag property is also requested
+   and returned as part of the response.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 26]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Request &lt;&lt;
+
+
+   REPORT /home/bernard/addressbook/ HTTP/1.1
+   Host: addressbook.example.com
+   Depth: 1
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;C:addressbook-query xmlns:D=&quot;DAV:&quot;
+                     xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:prop&gt;
+       &lt;D:getetag/&gt;
+       &lt;C:address-data&gt;
+         &lt;C:prop name=&quot;VERSION&quot;/&gt;
+         &lt;C:prop name=&quot;UID&quot;/&gt;
+         &lt;C:prop name=&quot;NICKNAME&quot;/&gt;
+         &lt;C:prop name=&quot;EMAIL&quot;/&gt;
+         &lt;C:prop name=&quot;FN&quot;/&gt;
+       &lt;/C:address-data&gt;
+     &lt;/D:prop&gt;
+     &lt;C:filter&gt;
+       &lt;C:prop-filter name=&quot;NICKNAME&quot;&gt;
+         &lt;C:text-match collation=&quot;i;unicode-casemap&quot;
+                       match-type=&quot;equals&quot;
+         &gt;me&lt;/C:text-match&gt;
+       &lt;/C:prop-filter&gt;
+     &lt;/C:filter&gt;
+   &lt;/C:addressbook-query&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 27]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Response &lt;&lt;
+
+
+   HTTP/1.1 207 Multi-Status
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:multistatus xmlns:D=&quot;DAV:&quot;
+                  xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/v102.vcf&lt;/D:href&gt;
+       &lt;D:propstat&gt;
+         &lt;D:prop&gt;
+           &lt;D:getetag&gt;&quot;23ba4d-ff11fb&quot;&lt;/D:getetag&gt;
+           &lt;C:address-data&gt;BEGIN:VCARD
+   VERSION:3.0
+   NICKNAME:me
+   UID:34222-232@example.com
+   FN:Cyrus Daboo
+   EMAIL:daboo@example.com
+   END:VCARD
+   &lt;/C:address-data&gt;
+         &lt;/D:prop&gt;
+         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+       &lt;/D:propstat&gt;
+     &lt;/D:response&gt;
+   &lt;/D:multistatus&gt;
+
+
+8.6.4.  Example: Partial Retrieval of vCards Matching a Full Name or
+        Email Address
+
+   In this example, the client requests the server to search for address
+   object resources that contain a FN property whose value contains some
+   specific text or that contain an EMAIL property whose value contains
+   other text, and to return specific vCard properties for those vCards
+   found.  In addition the DAV:getetag property is also requested and
+   returned as part of the response.
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 28]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Request &lt;&lt;
+
+
+   REPORT /home/bernard/addressbook/ HTTP/1.1
+   Host: addressbook.example.com
+   Depth: 1
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;C:addressbook-query xmlns:D=&quot;DAV:&quot;
+                     xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:prop&gt;
+       &lt;D:getetag/&gt;
+       &lt;C:address-data&gt;
+         &lt;C:prop name=&quot;VERSION&quot;/&gt;
+         &lt;C:prop name=&quot;UID&quot;/&gt;
+         &lt;C:prop name=&quot;NICKNAME&quot;/&gt;
+         &lt;C:prop name=&quot;EMAIL&quot;/&gt;
+         &lt;C:prop name=&quot;FN&quot;/&gt;
+       &lt;/C:address-data&gt;
+     &lt;/D:prop&gt;
+     &lt;C:filter test=&quot;anyof&quot;&gt;
+       &lt;C:prop-filter name=&quot;FN&quot;&gt;
+         &lt;C:text-match collation=&quot;i;unicode-casemap&quot;
+                       match-type=&quot;contains&quot;
+         &gt;daboo&lt;/C:text-match&gt;
+       &lt;/C:prop-filter&gt;
+       &lt;C:prop-filter name=&quot;EMAIL&quot;&gt;
+         &lt;C:text-match collation=&quot;i;unicode-casemap&quot;
+                       match-type=&quot;contains&quot;
+         &gt;daboo&lt;/C:text-match&gt;
+       &lt;/C:prop-filter&gt;
+     &lt;/C:filter&gt;
+   &lt;/C:addressbook-query&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 29]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Response &lt;&lt;
+
+
+   HTTP/1.1 207 Multi-Status
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:multistatus xmlns:D=&quot;DAV:&quot;
+                  xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/v102.vcf&lt;/D:href&gt;
+       &lt;D:propstat&gt;
+         &lt;D:prop&gt;
+           &lt;D:getetag&gt;&quot;23ba4d-ff11fb&quot;&lt;/D:getetag&gt;
+           &lt;C:address-data&gt;BEGIN:VCARD
+   VERSION:3.0
+   NICKNAME:me
+   UID:34222-232@example.com
+   FN:David Boo
+   EMAIL:daboo@example.com
+   END:VCARD
+   &lt;/C:address-data&gt;
+         &lt;/D:prop&gt;
+         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+       &lt;/D:propstat&gt;
+     &lt;/D:response&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/v104.vcf&lt;/D:href&gt;
+       &lt;D:propstat&gt;
+         &lt;D:prop&gt;
+           &lt;D:getetag&gt;&quot;23ba4d-ff11fc&quot;&lt;/D:getetag&gt;
+           &lt;C:address-data&gt;BEGIN:VCARD
+   VERSION:3.0
+   NICKNAME:oliver
+   UID:34222-23222@example.com
+   FN:Oliver Daboo
+   EMAIL:oliver@example.com
+   END:VCARD
+   &lt;/C:address-data&gt;
+         &lt;/D:prop&gt;
+         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+       &lt;/D:propstat&gt;
+     &lt;/D:response&gt;
+   &lt;/D:multistatus&gt;
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 30]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+8.6.5.  Example: Truncated Results
+
+   In this example, the client requests the server to search for address
+   object resources that contain a FN property whose value contains some
+   specific text, and to return the DAV:getetag property for two results
+   only.  The server response includes a 507 status for the request URI
+   indicating that there were more than two resources that matched the
+   query, but that the server truncated the result set as requested by
+   the client.
+
+   &gt;&gt; Request &lt;&lt;
+
+
+   REPORT /home/bernard/addressbook/ HTTP/1.1
+   Host: addressbook.example.com
+   Depth: 1
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;C:addressbook-query xmlns:D=&quot;DAV:&quot;
+                     xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:prop&gt;
+       &lt;D:getetag/&gt;
+     &lt;/D:prop&gt;
+     &lt;C:filter test=&quot;anyof&quot;&gt;
+       &lt;C:prop-filter name=&quot;FN&quot;&gt;
+         &lt;C:text-match collation=&quot;i;unicode-casemap&quot;
+                       match-type=&quot;contains&quot;
+         &gt;daboo&lt;/C:text-match&gt;
+       &lt;/C:prop-filter&gt;
+     &lt;/C:filter&gt;
+     &lt;C:limit&gt;
+       &lt;C:nresults&gt;2&lt;/C:nresults&gt;
+     &lt;/C:limit&gt;
+   &lt;/C:addressbook-query&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 31]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Response &lt;&lt;
+
+
+   HTTP/1.1 207 Multi-Status
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:multistatus xmlns:D=&quot;DAV:&quot;
+                  xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/&lt;/D:href&gt;
+       &lt;D:status&gt;HTTP/1.1 507 OK&lt;/D:status&gt;
+       &lt;D:error&gt;&lt;D:number-of-matches-within-limits/&gt;&lt;/D:error&gt;
+       &lt;D:responsedescription xml:lang=&quot;en&quot;&gt;
+         Only two matching records were returned
+       &lt;/D:responsedescription&gt;
+     &lt;/D:response&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/v102.vcf&lt;/D:href&gt;
+       &lt;D:propstat&gt;
+         &lt;D:prop&gt;
+           &lt;D:getetag&gt;&quot;23ba4d-ff11fb&quot;&lt;/D:getetag&gt;
+         &lt;/D:prop&gt;
+         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+       &lt;/D:propstat&gt;
+     &lt;/D:response&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/v104.vcf&lt;/D:href&gt;
+       &lt;D:propstat&gt;
+         &lt;D:prop&gt;
+           &lt;D:getetag&gt;&quot;23ba4d-ff11fc&quot;&lt;/D:getetag&gt;
+         &lt;/D:prop&gt;
+         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+       &lt;/D:propstat&gt;
+     &lt;/D:response&gt;
+   &lt;/D:multistatus&gt;
+
+
+8.7.  CARDDAV:addressbook-multiget Report
+
+   The CARDDAV:addressbook-multiget REPORT is used to retrieve specific
+   address object resources from within a collection, if the Request-URI
+   is a collection, or to retrieve a specific address object resource,
+   if the Request-URI is a address object resource.  This report is
+   similar to the CARDDAV:addressbook-query REPORT (see Section 8.6),
+   except that it takes a list of DAV:href elements instead of a
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 32]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   CARDDAV:filter element to determine which address object resources to
+   return.
+
+   Support for the addressbook-multiget REPORT is REQUIRED.
+
+   Marshalling:
+
+      The request body MUST be a CARDDAV:addressbook-multiget XML
+      element (see Section 10.7), which MUST contain at least one DAV:
+      href XML element, and one optional CARDDAV:address-data element as
+      defined in Section 10.4.  If DAV:href elements are present, the
+      scope of the request is the set of resources identified by these
+      elements, which all need to be members (not necessarily internal
+      members) of the resource identified by the Request-URI.
+      Otherwise, the scope is the resource identified by the Request-URI
+      itself.
+
+      The request MUST include a Depth: 0 header, however the actual
+      scope of the REPORT is determined as described above.
+
+      The response body for a successful request MUST be a DAV:
+      multistatus XML element.
+
+      The response body for a successful CARDDAV:addressbook-multiget
+      REPORT request MUST contain a DAV:response element for each
+      address object resource referenced by the provided set of DAV:href
+      elements.  Address data is returned in the CARDDAV:address-data
+      element inside the DAV:prop element.
+
+      In the case of an error accessing any of the provided DAV:href
+      resources, the server MUST return the appropriate error status
+      code in the DAV:status element of the corresponding DAV:response
+      element.
+
+   Preconditions:
+
+      (CARDDAV:supported-address-data): The attributes &quot;content-type&quot;
+      and &quot;version&quot; of the CARDDAV:address-data XML elements (see
+      Section 10.4) specify a media type supported by the server for
+      address object resources.
+
+   Postconditions:
+
+      None.
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 33]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+8.7.1.  Example: CARDDAV:addressbook-multiget Report
+
+   In this example, the client requests the server to return specific
+   vCard properties of the address components referenced by specific
+   URIs.  In addition the DAV:getetag property is also requested and
+   returned as part of the response.  Note that in this example, the
+   resource at
+   http://addressbook.example.com/home/bernard/addressbook/vcf1.vcf does
+   not exist, resulting in an error status response.
+
+   &gt;&gt; Request &lt;&lt;
+
+
+   REPORT /home/bernard/addressbook/ HTTP/1.1
+   Host: addressbook.example.com
+   Depth: 1
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;C:addressbook-multiget xmlns:D=&quot;DAV:&quot;
+                        xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:prop&gt;
+       &lt;D:getetag/&gt;
+       &lt;C:address-data&gt;
+         &lt;C:prop name=&quot;VERSION&quot;/&gt;
+         &lt;C:prop name=&quot;UID&quot;/&gt;
+         &lt;C:prop name=&quot;NICKNAME&quot;/&gt;
+         &lt;C:prop name=&quot;EMAIL&quot;/&gt;
+         &lt;C:prop name=&quot;FN&quot;/&gt;
+       &lt;/C:address-data&gt;
+     &lt;/D:prop&gt;
+     &lt;D:href&gt;/home/bernard/addressbook/vcf102.vcf&lt;/D:href&gt;
+     &lt;D:href&gt;/home/bernard/addressbook/vcf1.vcf&lt;/D:href&gt;
+   &lt;/C:addressbook-multiget&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 34]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Response &lt;&lt;
+
+
+   HTTP/1.1 207 Multi-Status
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:multistatus xmlns:D=&quot;DAV:&quot;
+                  xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/vcf102.vcf&lt;/D:href&gt;
+       &lt;D:propstat&gt;
+         &lt;D:prop&gt;
+           &lt;D:getetag&gt;&quot;23ba4d-ff11fb&quot;&lt;/D:getetag&gt;
+           &lt;C:address-data&gt;BEGIN:VCARD
+   VERSION:3.0
+   NICKNAME:me
+   UID:34222-232@example.com
+   FN:Cyrus Daboo
+   EMAIL:daboo@example.com
+   END:VCARD
+   &lt;/C:address-data&gt;
+         &lt;/D:prop&gt;
+         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
+       &lt;/D:propstat&gt;
+     &lt;/D:response&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/vcf1.vcf&lt;/D:href&gt;
+       &lt;D:status&gt;HTTP/1.1 404 Resource not found&lt;/D:status&gt;
+     &lt;/D:response&gt;
+   &lt;/D:multistatus&gt;
+
+
+8.7.2.  Example: CARDDAV:addressbook-multiget Report
+
+   In this example, the client requests the server to return vCard v4.0
+   data of the address components referenced by specific URIs.  In
+   addition the DAV:getetag property is also requested and returned as
+   part of the response.  Note that in this example, the resource at
+   http://addressbook.example.com/home/bernard/addressbook/vcf3.vcf
+   exists but in a media type format that the server is unable to
+   convert, resulting in an error status response.
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 35]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   &gt;&gt; Request &lt;&lt;
+
+
+   REPORT /home/bernard/addressbook/ HTTP/1.1
+   Host: addressbook.example.com
+   Depth: 1
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;C:addressbook-multiget xmlns:D=&quot;DAV:&quot;
+                        xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:prop&gt;
+       &lt;D:getetag/&gt;
+       &lt;C:address-data type='text/vcard' version='4.0'/&gt;
+     &lt;/D:prop&gt;
+     &lt;D:href&gt;/home/bernard/addressbook/vcf3.vcf&lt;/D:href&gt;
+   &lt;/C:addressbook-multiget&gt;
+
+
+   &gt;&gt; Response &lt;&lt;
+
+
+   HTTP/1.1 207 Multi-Status
+   Date: Sat, 11 Nov 2006 09:32:12 GMT
+   Content-Type: text/xml; charset=&quot;utf-8&quot;
+   Content-Length: xxxx
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:multistatus xmlns:D=&quot;DAV:&quot;
+                  xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;&gt;
+     &lt;D:response&gt;
+       &lt;D:href&gt;/home/bernard/addressbook/vcf3.vcf&lt;/D:href&gt;
+       &lt;D:status&gt;HTTP/1.1 415 Unsupported Media Type&lt;/D:status&gt;
+       &lt;D:error&gt;&lt;C:supported-address-data-conversion/&gt;&lt;/D:error&gt;
+       &lt;D:responsedescription&gt;Unable to convert from vCard v3.0
+       to vCard v4.0&lt;/D:responsedescription&gt;
+     &lt;/D:response&gt;
+   &lt;/D:multistatus&gt;
+
+
+
+9.  Client Guidelines
+
+9.1.  Restrict the Properties Returned
+
+   Clients may not need all the properties in a vCard object when
+   presenting information to the user, or looking up specific items for
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 36]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   their email address, for example.  Since some property data can be
+   large (e.g., PHOTO or SOUND with inline content) clients can choose
+   to ignore those by only requesting the specific items it knows it
+   will use, through use of the CARDDAV:address-data XML element in the
+   relevant reports.
+
+   However, if a client needs to make a change to a vCard, it can only
+   change the entire vCard data via a PUT request.  There is no way to
+   incrementally make a change to a set of properties within a vCard
+   object resource.  As a result the client will have to cache the
+   entire set of properties on a resource that is being changed.
+
+9.2.  Avoiding Lost Updates
+
+   When resources are accessed by multiple clients, the possibility of
+   clients overwriting each other's changes exists.  To alleviate that,
+   clients SHOULD use the If-Match request header on PUT requests with
+   the ETag of the previously retrieved resource data to check whether
+   the resource was modified since it was previously retrieved.  If a
+   pre-condition failure occurs, clients need to reload the resource and
+   go through their own merge or conflict resolution process before
+   writing back the data (again using the If-Match check).
+
+9.3.  Client Configuration
+
+   When CardDAV clients need to be configured, the key piece of
+   information that they require is the principal-URL of the user whose
+   address book information is desired.  Servers SHOULD support the DAV:
+   current-user-principal-URL property as defined in [RFC5397] to give
+   clients a fast way to locate user principals.
+
+   Given support for SRV records (Section 11) and DAV:current-user-
+   principal-URL [RFC5397], users only need enter a user identifier,
+   host name and password to configure their client.  The client would
+   take the host name and do an SRV lookup to locate the CardDAV server,
+   then execute an authenticated PROPFIND on the root / resource looking
+   for the DAV:current-user-principal-URL property.  The value returned
+   gives the client direct access to the user's principal-URL and from
+   there all the related CardDAV properties needed to locate address
+   books.
+
+9.4.  Finding Other Users' Address Books
+
+   For address book sharing use cases, one might wish to find the
+   address book belonging to another user.  To find other users' address
+   books on the same server, the DAV:principal-property-search REPORT
+   [RFC3744] can be used to filter on some properties and return others.
+   To search for an address book owned by a user named &quot;Laurie&quot;, the
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 37]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   REPORT request body would look like this:
+
+   &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+   &lt;D:principal-property-search xmlns:D=&quot;DAV:&quot;&gt;
+     &lt;D:property-search&gt;
+       &lt;D:prop&gt;
+         &lt;D:displayname/&gt;
+       &lt;/D:prop&gt;
+       &lt;D:match&gt;Laurie&lt;/D:match&gt;
+     &lt;/D:property-search&gt;
+     &lt;D:prop&gt;
+       &lt;C:addressbook-home-set
+          xmlns:C=&quot;urn:ietf:params:xml:ns:carddav&quot;/&gt;
+       &lt;D:displayname/&gt;
+     &lt;/D:prop&gt;
+   &lt;/D:principal-property-search&gt;
+
+   The server performs a case-sensitive or caseless search for a
+   matching string subset of &quot;Laurie&quot; within the DAV:displayname
+   property.  Thus, the server might return &quot;Laurie Dusseault&quot;, &quot;Laurier
+   Desruisseaux&quot; or &quot;Wilfrid Laurier&quot; all as matching DAV:displayname
+   values, and the address books for each of these.
+
+
+10.  XML Element Definitions
+
+10.1.  CARDDAV:addressbook XML Element
+
+   Name:  addressbook
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies the resource type of an address book collection.
+
+   Description:  See Section 5.2.
+
+   Definition:
+
+       &lt;!ELEMENT addressbook EMPTY&gt;
+
+10.2.  CARDDAV:supported-collation XML Element
+
+   Name:  supported-collation
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 38]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Purpose:  Identifies a single collation via its collation identifier
+      as defined by [RFC4790].
+
+   Description:  The CARDDAV:supported-collation contains the text of a
+      collation identifier as described in Section 8.3.1.
+
+   Definition:
+
+       &lt;!ELEMENT supported-collation (#PCDATA)&gt;
+       &lt;!-- PCDATA value: collation identifier --&gt;
+
+10.3.  CARDDAV:addressbook-query XML Element
+
+   Name:  addressbook-query
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Defines a report for querying address book data
+
+   Description:  See Section 8.6.
+
+   Definition:
+
+       &lt;!ELEMENT addressbook-query ((DAV:allprop |
+                                     DAV:propname |
+                                     DAV:prop)?, filter, limit?)&gt;
+
+10.4.  CARDDAV:address-data XML Element
+
+   Name:  address-data
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies one of the following:
+
+      1.  The parts of an address object resource which should be
+          returned by a given address book REPORT request, and the media
+          type and version for the returned data;
+
+      2.  The content of an address object resource in a response to an
+          address book REPORT request.
+
+   Description:  When used in an address book REPORT request, the
+      CARDDAV:address-data XML element specifies which parts of address
+      object resources need to be returned in the response.  If the
+      CARDDAV:address-data XML element doesn't contain any CARDDAV:prop
+      elements, address object resources will be returned in their
+      entirety.  Additionally a media type and version can be specified
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 39]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+      to request that the server return the data in that format if
+      possible.
+
+      Finally, when used in an address book REPORT response, the
+      CARDDAV:address-data XML element specifies the content of a
+      address object resource.  Given that XML parsers normalize the
+      two-character sequence CRLF (US-ASCII decimal 13 and US-ASCII
+      decimal 10) to a single LF character (US-ASCII decimal 10), the CR
+      character (US-ASCII decimal 13) MAY be omitted in address object
+      resources specified in the CARDDAV:address-data XML element.
+      Furthermore, address object resources specified in the CARDDAV:
+      address-data XML element MAY be invalid per their media type
+      specification if the CARDDAV:address-data XML element part of the
+      address book REPORT request did not specify required vCard
+      properties (e.g., UID, etc.) or specified a CARDDAV:prop XML
+      element with the &quot;novalue&quot; attribute set to &quot;yes&quot;.
+
+   Note:  The CARDDAV:address-data XML element is specified in requests
+      and responses inside the DAV:prop XML element as if it were a
+      WebDAV property.  However, the CARDDAV:address-data XML element is
+      not a WebDAV property and as such it is not returned in PROPFIND
+      responses nor used in PROPPATCH requests.
+
+   Note:  The address data embedded within the CARDDAV:address-data XML
+      element MUST follow the standard XML character data encoding
+      rules, including use of &amp;lt;, &amp;gt;, &amp;amp; etc entity encoding or
+      the use of a &lt;![CDATA[ ... ]]&gt; construct.  In the later case the
+      vCard data cannot contain the character sequence &quot;]]&gt;&quot; which is
+      the end delimiter for the CDATA section.
+
+   Definition:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 40]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+       &lt;!ELEMENT address-data (allprop | prop*)&gt;
+
+       when nested in the DAV:prop XML element in an address book
+       REPORT request to specify which parts of address object
+       resources should be returned in the response;
+
+       &lt;!ELEMENT address-data (#PCDATA)&gt;
+       &lt;!-- PCDATA value: address data --&gt;
+
+       when nested in the DAV:prop XML element in an address book
+       REPORT response to specify the content of a returned
+       address object resource.
+
+       &lt;!ATTLIST address-data content-type CDATA &quot;text/vcard&quot;
+                             version CDATA &quot;3.0&quot;&gt;
+       &lt;!-- content-type value: a MIME media type --&gt;
+       &lt;!-- version value: a version string --&gt;
+
+       attributes can be used on each variant of the
+       CALDAV:address-data XML element.
+
+10.4.1.  CARDDAV:allprop XML Element
+
+   Name:  allprop
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies that all vCard properties shall be returned.
+
+   Description:  This element can be used when the client wants all
+      vCard properties of components returned by a report.
+
+   Definition:
+
+       &lt;!ELEMENT allprop EMPTY&gt;
+
+   NOTE: The CARDDAV:allprop element defined here has the same name as
+   the DAV:allprop element defined in WebDAV.  However, the CARDDAV:
+   allprop element defined here uses the
+   &quot;urn:ietf:params:xml:ns:carddav&quot; namespace, as opposed to the &quot;DAV:&quot;
+   namespace used for the DAV:allprop element defined in WebDAV.
+
+10.4.2.  CARDDAV:prop XML Element
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 41]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Name:  prop
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Defines which vCard properties to return in the response.
+
+   Description:  The &quot;name&quot; attribute specifies the name of the vCard
+      property to return (e.g., &quot;NICKNAME&quot;).  The &quot;novalue&quot; attribute
+      can be used by clients to request that the actual value of the
+      property not be returned (if the &quot;novalue&quot; attribute is set to
+      &quot;yes&quot;).  In that case the server will return just the vCard
+      property name and any vCard parameters and a trailing &quot;:&quot; without
+      the subsequent value data.
+
+      vCard allows a &quot;group&quot; prefix to appear before a property name in
+      the vCard data.  When the &quot;name&quot; attribute does not specify a
+      group prefix, it MUST match properties in the vCard data without a
+      group prefix or with any group prefix.  When the &quot;name&quot; attribute
+      includes a group prefix, it MUST match properties that have
+      exactly the same group prefix and name. e.g.: a &quot;name&quot; set to
+      &quot;TEL&quot; will match &quot;TEL&quot;, &quot;X-ABC.TEL&quot;, &quot;X-ABC-1.TEL&quot; vCard
+      properties.  A &quot;name&quot; set to &quot;X-ABC.TEL&quot; will match an &quot;X-ABC.TEL&quot;
+      vCard property only, it will not match &quot;TEL&quot; or &quot;X-ABC-1.TEL&quot;.
+
+   Definition:
+
+       &lt;!ELEMENT prop EMPTY&gt;
+
+       &lt;!ATTLIST prop name CDATA #REQUIRED
+                  novalue (yes | no) &quot;no&quot;&gt;
+       &lt;!-- name value: a vCard property name --&gt;
+       &lt;!-- novalue value: &quot;yes&quot; or &quot;no&quot; --&gt;
+
+   NOTE: The CARDDAV:prop element defined here has the same name as the
+   DAV:prop element defined in WebDAV.  However, the CARDDAV:prop
+   element defined here uses the &quot;urn:ietf:params:xml:ns:carddav&quot;
+   namespace, as opposed to the &quot;DAV:&quot; namespace used for the DAV:prop
+   element defined in WebDAV.
+
+10.5.  CARDDAV:filter XML Element
+
+   Name:  filter
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 42]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Purpose:  Determines which matching objects are returned.
+
+   Description:  The &quot;filter&quot; element specifies the search filter used
+      to match address objects that should be returned by a report.  The
+      &quot;test&quot; attribute specifies whether any (logical OR) or all
+      (logical AND) of the prop-filter tests needs to match in order for
+      the overall filter to match.
+
+   Definition:
+
+       &lt;!ELEMENT filter (prop-filter*)&gt;
+
+       &lt;!ATTLIST filter test (anyof | allof) &quot;anyof&quot;&gt;
+       &lt;!-- test value:
+                 anyof logical OR for prop-filter matches
+                 allof logical AND for prop-filter matches --&gt;
+
+10.5.1.  CARDDAV:prop-filter XML Element
+
+   Name:  prop-filter
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Limits the search to specific vCard properties.
+
+   Description:  The CARDDAV:prop-filter XML element specifies a search
+      criteria on a specific vCard property (e.g., NICKNAME).  An
+      address object is said to match a CARDDAV:prop-filter if:
+
+      *  A vCard property of the type specified by the &quot;name&quot; attribute
+         exists, and the CARDDAV:prop-filter is empty, or it matches any
+         specified CARDDAV:text-match or CARDDAV:param-filter
+         conditions.  The &quot;test&quot; attribute specifies whether any
+         (logical OR) or all (logical AND) of the text-filter and param-
+         filter tests need to match in order for the overall filter to
+         match.
+
+      or:
+
+      *  A vCard property of the type specified by the &quot;name&quot; attribute
+         does not exist, and the CARDDAV:is-not-defined element is
+         specified.
+
+      vCard allows a &quot;group&quot; prefix to appear before a property name in
+      the vCard data.  When the &quot;name&quot; attribute does not specify a
+      group prefix, it MUST match properties in the vCard data without a
+      group prefix or with any group prefix.  When the &quot;name&quot; attribute
+      includes a group prefix, it MUST match properties that have
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 43]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+      exactly the same group prefix and name. e.g.: a &quot;name&quot; set to
+      &quot;TEL&quot; will match &quot;TEL&quot;, &quot;X-ABC.TEL&quot;, &quot;X-ABC-1.TEL&quot; vCard
+      properties.  A &quot;name&quot; set to &quot;X-ABC.TEL&quot; will match an &quot;X-ABC.TEL&quot;
+      vCard property only, it will not match &quot;TEL&quot; or &quot;X-ABC-1.TEL&quot;.
+
+   Definition:
+
+       &lt;!ELEMENT prop-filter (is-not-defined |
+                              (text-match*, param-filter*))&gt;
+
+       &lt;!ATTLIST prop-filter name CDATA #REQUIRED
+                             test (anyof | allof) &quot;anyof&quot;&gt;
+       &lt;!-- name value: a vCard property name (e.g., &quot;NICKNAME&quot;)
+         test value:
+             anyof logical OR for text-match/param-filter matches
+             allof logical AND for text-match/param-filter matches --&gt;
+
+10.5.2.  CARDDAV:param-filter XML Element
+
+   Name:  param-filter
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Limits the search to specific parameter values.
+
+   Description:  The CARDDAV:param-filter XML element specifies a search
+      criteria on a specific vCard property parameter (e.g., TYPE) in
+      the scope of a given CARDDAV:prop-filter.  A vCard property is
+      said to match a CARDDAV:param-filter if:
+
+      *  A parameter of the type specified by the &quot;name&quot; attribute
+         exists, and the CARDDAV:param-filter is empty, or it matches
+         the CARDDAV:text-match conditions if specified.
+
+      or:
+
+      *  A parameter of the type specified by the &quot;name&quot; attribute does
+         not exist, and the CARDDAV:is-not-defined element is specified.
+
+   Definition:
+
+       &lt;!ELEMENT param-filter (is-not-defined | text-match)?&gt;
+
+       &lt;!ATTLIST param-filter name CDATA #REQUIRED&gt;
+       &lt;!-- name value: a property parameter name (e.g., &quot;TYPE&quot;) --&gt;
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 44]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+10.5.3.  CARDDAV:is-not-defined XML Element
+
+   Name:  is-not-defined
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies that a match should occur if the enclosing vCard
+      property or parameter does not exist.
+
+   Description:  The CARDDAV:is-not-defined XML element specifies that a
+      match occurs if the enclosing vCard property or parameter value
+      specified in an address book REPORT request does not exist in the
+      address data being tested.
+
+   Definition:
+
+       &lt;!ELEMENT is-not-defined EMPTY&gt;
+
+10.5.4.  CARDDAV:text-match XML Element
+
+   Name:  text-match
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies a substring match on a vCard property or
+      parameter value.
+
+   Description:  The CARDDAV:text-match XML element specifies text used
+      for a substring match against the vCard property or parameter
+      value specified in an address book REPORT request.
+
+      The &quot;collation&quot; attribute is used to select the collation that the
+      server MUST use for character string matching.  In the absence of
+      this attribute the server MUST use the &quot;i;unicode-casemap&quot;
+      collation.
+
+      The &quot;negate-condition&quot; attribute is used to indicate that this
+      test returns a match if the text matches, when the attribute value
+      is set to &quot;no&quot;, or return a match if the text does not match, if
+      the attribute value is set to &quot;yes&quot;.  For example, this can be
+      used to match components with a CATEGORIES property not set to
+      PERSON.
+
+      The &quot;match-type&quot; attribute is used to indicate the type of match
+      operation to use.  Possible choices are:
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 45]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+         &quot;equals&quot; - an exact match to the target string
+
+         &quot;contains&quot; - a substring match, matching anywhere within the
+         target string
+
+         &quot;starts-with&quot; - a substring match, matching only at the start
+         of the target string
+
+         &quot;ends-with&quot; - a substring match, matching only at the end of
+         the target string
+
+   Definition:
+
+       &lt;!ELEMENT text-match (#PCDATA)&gt;
+       &lt;!-- PCDATA value: string --&gt;
+
+       &lt;!ATTLIST text-match
+          collation        CDATA &quot;i;unicode-casemap&quot;
+          negate-condition (yes | no) &quot;no&quot;
+          match-type (equals|contains|starts-with|ends-with) &quot;contains&quot;&gt;
+
+10.6.  CARDDAV:limit XML Element
+
+   Name:  limit
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  Specifies different types of limits that can be applied to
+      the results returned by the server.
+
+   Description:  The CARDDAV:limit XML element can be used to specify
+      different types of limits that the client can request the server
+      to apply to the results returned by the server.  Currently only
+      the CARDDAV:nresults limit can be used, other types of limit could
+      be defined in the future.
+
+   Definition:
+
+       &lt;!ELEMENT limit (nresults)&gt;
+
+10.6.1.  CARDDAV:nresults XML Element
+
+   Name:  nresults
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 46]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Purpose:  Specifies a limit on the number of results returned by the
+      server.
+
+   Description:  The CARDDAV:nresults XML element contains a requested
+      maximum number of DAV:response elements to be returned in the
+      response body of a query.  The server MAY disregard this limit.
+      The value of this element is an unsigned integer.
+
+   Definition:
+
+       &lt;!ELEMENT nresults (#PCDATA)&gt;
+       &lt;!-- nresults value: unsigned integer, must be digits --&gt;
+
+10.7.  CARDDAV:addressbook-multiget XML Element
+
+   Name:  addressbook-multiget
+
+   Namespace:  urn:ietf:params:xml:ns:carddav
+
+   Purpose:  CardDAV report used to retrieve specific address objects
+      via their URIs.
+
+   Description:  See Section 8.7.
+
+   Definition:
+
+       &lt;!ELEMENT addressbook-multiget ((DAV:allprop |
+                                        DAV:propname |
+                                        DAV:prop)?,
+                                        DAV:href+)&gt;
+
+
+11.  Service Discovery via SRV Records
+
+   [RFC2782] defines a DNS-based service discovery protocol that has
+   been widely adopted as a means of locating particular services within
+   a local area network and beyond, using SRV RR records.
+
+   This specification adds two service types for use with SRV records:
+
+   carddav:  Identifies a CardDAV server that uses HTTP without TLS
+      [RFC2818].
+
+   carddavs:  Identifies a CardDAV server that uses HTTP with TLS
+      [RFC2818].
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 47]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   Example: non-TLS service record
+
+       _carddav._tcp     SRV 0 1 80 addressbook.example.com.
+
+   Example: TLS service
+
+       _carddavs._tcp    SRV 0 1 443 addressbook.example.com.
+
+
+12.  Internationalization Considerations
+
+   CardDAV allows internationalized strings to be stored and retrieved
+   for the description of address book collections (see Section 6.2.1).
+
+   The CARDDAV:addressbook-query REPORT (Section 8.6) includes a text
+   searching option controlled by the CARDDAV:text-match element and
+   details of character handling are covered in the description of that
+   element (see Section 10.5.4).
+
+
+13.  Security Considerations
+
+   HTTP protocol transactions are sent in the clear over the network
+   unless protection from snooping is negotiated.  This can be
+   accomplished by use of TLS as defined in [RFC2818].  In particular,
+   if HTTP Basic authentication [RFC2617] is available, the server MUST
+   allow TLS to be used at the same time, and SHOULD prevent use of
+   Basic authentication when TLS is not in use.  Clients SHOULD use TLS
+   whenever possible.
+
+   With the ACL extension [RFC3744] present, WebDAV allows control over
+   who can access (read or write) any resource on the WebDAV server.  In
+   addition, WebDAV ACL provides for an &quot;inheritance&quot; mechanism, whereby
+   resources may inherit access privileges from other resources.  Often
+   the &quot;other&quot; resource is a parent collection of the resource itself.
+   Servers are able to support address books that are &quot;private&quot;
+   (accessible only to the &quot;owner&quot;), &quot;shared&quot; (accessible to the owner
+   and other specified authenticated users), and &quot;public&quot; (accessible to
+   any authenticated or unauthenticated users).  When provisioning
+   address books of a particular type, servers MUST ensure that the
+   correct privileges are applied on creation, and in particular private
+   and shared address books MUST NOT be accessible by unauthenticated
+   users (to prevent data from being automatically searched or indexed
+   by web &quot;crawlers&quot;).
+
+   Clients SHOULD warn users in an appropriate fashion when they copy or
+   move address data from a private address book to a shared address
+   book or public address book.  Clients SHOULD provide a clear
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 48]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   indication as to which address books are private, shared or public.
+   Clients SHOULD provide an appropriate warning when changing access
+   privileges for a private or shared address book with data so as to
+   allow unauthenticated users access.
+
+   This specification currently relies on standard HTTP authentication
+   mechanisms for identifying users.  These comprise Basic and Digest
+   authentication [RFC2617] as well as TLS [RFC2818] using client-side
+   certificates.
+
+
+14.  IANA Consideration
+
+   This document uses a URN to describe a new XML namespace conforming
+   to the registry mechanism described in [RFC3688].
+
+14.1.  Namespace Registration
+
+   Registration request for the carddav namespace:
+
+   URI: urn:ietf:params:xml:ns:carddav
+
+   Registrant Contact: See the &quot;Author's Address&quot; section of this
+   document.
+
+   XML: None - not applicable for namespace registrations.
+
+
+15.  Acknowledgments
+
+   Thanks go to Lisa Dusseault and Bernard Desruisseaux for their work
+   on CalDAV, on which CardDAV is heavily based.  The following
+   individuals contributed their ideas and support for writing this
+   specification: Mike Douglass, Stefan Eissing, Helge Hess, Arnaud
+   Quillaud, Julian Reschke, Elias Sinderson, Greg Stein, Wilfredo
+   Sanchez, and Simon Vaillancourt.
+
+
+16.  References
+
+16.1.  Normative References
+
+   [I-D.ietf-vcarddav-vcardrev]
+              Perreault, S. and P. Resnick, &quot;vCard Format
+              Specification&quot;, draft-ietf-vcarddav-vcardrev-08 (work in
+              progress), July 2009.
+
+   [RFC2119]  Bradner, S., &quot;Key words for use in RFCs to Indicate
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 49]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+              Requirement Levels&quot;, BCP 14, RFC 2119, March 1997.
+
+   [RFC2426]  Dawson, F. and T. Howes, &quot;vCard MIME Directory Profile&quot;,
+              RFC 2426, September 1998.
+
+   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
+              Masinter, L., Leach, P., and T. Berners-Lee, &quot;Hypertext
+              Transfer Protocol -- HTTP/1.1&quot;, RFC 2616, June 1999.
+
+   [RFC2617]  Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
+              Leach, P., Luotonen, A., and L. Stewart, &quot;HTTP
+              Authentication: Basic and Digest Access Authentication&quot;,
+              RFC 2617, June 1999.
+
+   [RFC2782]  Gulbrandsen, A., Vixie, P., and L. Esibov, &quot;A DNS RR for
+              specifying the location of services (DNS SRV)&quot;, RFC 2782,
+              February 2000.
+
+   [RFC2818]  Rescorla, E., &quot;HTTP Over TLS&quot;, RFC 2818, May 2000.
+
+   [RFC3253]  Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J.
+              Whitehead, &quot;Versioning Extensions to WebDAV
+              (Web Distributed Authoring and Versioning)&quot;, RFC 3253,
+              March 2002.
+
+   [RFC3688]  Mealling, M., &quot;The IETF XML Registry&quot;, BCP 81, RFC 3688,
+              January 2004.
+
+   [RFC3744]  Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, &quot;Web
+              Distributed Authoring and Versioning (WebDAV)
+              Access Control Protocol&quot;, RFC 3744, May 2004.
+
+   [RFC4790]  Newman, C., Duerst, M., and A. Gulbrandsen, &quot;Internet
+              Application Protocol Collation Registry&quot;, RFC 4790,
+              March 2007.
+
+   [RFC4918]  Dusseault, L., &quot;HTTP Extensions for Web Distributed
+              Authoring and Versioning (WebDAV)&quot;, RFC 4918, June 2007.
+
+   [RFC5051]  Crispin, M., &quot;i;unicode-casemap - Simple Unicode Collation
+              Algorithm&quot;, RFC 5051, October 2007.
+
+   [RFC5246]  Dierks, T. and E. Rescorla, &quot;The Transport Layer Security
+              (TLS) Protocol Version 1.2&quot;, RFC 5246, August 2008.
+
+   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
+              Housley, R., and W. Polk, &quot;Internet X.509 Public Key
+              Infrastructure Certificate and Certificate Revocation List
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 50]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+              (CRL) Profile&quot;, RFC 5280, May 2008.
+
+   [RFC5397]  Sanchez, W. and C. Daboo, &quot;WebDAV Current Principal
+              Extension&quot;, RFC 5397, December 2008.
+
+   [RFC5689]  Daboo, C., &quot;Extended MKCOL for Web Distributed Authoring
+              and Versioning (WebDAV)&quot;, RFC 5689, September 2009.
+
+   [W3C.REC-xml-20081126]
+              Paoli, J., Yergeau, F., Bray, T., Sperberg-McQueen, C.,
+              and E. Maler, &quot;Extensible Markup Language (XML) 1.0 (Fifth
+              Edition)&quot;, World Wide Web Consortium Recommendation REC-
+              xml-20081126, November 2008,
+              &lt;http://www.w3.org/TR/2008/REC-xml-20081126&gt;.
+
+16.2.  Informative References
+
+   [IMSP]     Myers, J., &quot;IMSP - Internet Message Support Protocol&quot;,
+              June 1995.
+
+   [RFC2244]  Newman, C. and J. Myers, &quot;ACAP -- Application
+              Configuration Access Protocol&quot;, RFC 2244, November 1997.
+
+   [RFC4510]  Zeilenga, K., &quot;Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map&quot;, RFC 4510,
+              June 2006.
+
+
+Appendix A.  Change History (to be removed prior to publication as an
+             RFC)
+
+   Changes in -10
+
+   1.  Updated to MKColExt RFC reference.
+
+   2.  GenART Review: changed to clients SHOULD support TLS.
+
+   3.  GenART Review: changed security considerations in relation to
+       clients indicating which address books are private, shared or
+       public.
+
+   4.  IESG Review: re-wrote section on locking to instead describe how
+       to avoid lost updates using ETags.
+
+   5.  IESG Review: removed disadvantage describing stateless protocol
+       nature.
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 51]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   6.  IESG Review: clarified that 507 is only returned when truncation
+       of the results set occurs.
+
+   7.  IESG Review: added additional text in security considerations
+       about the handling private, shared and public address books.
+
+   8.  Fixed typos.
+
+   9.  Fixed some XML example errors.
+
+   Changes in -09
+
+   1.  AD Review: support for vCard v4 is now a SHOULD.
+
+   2.  As a result of the above, added a sub-section on content
+       conversion that defines a new precondition, and added an example
+       of a conversion failure when doing a multiget.
+
+   Changes in -08
+
+   1.   AD Review: added references to list in section 1.
+
+   2.   AD Review: added reference to RFC5280 for cert validation
+        procedures.
+
+   3.   AD Review: added additional comment in addressbook-description
+        property relating to use of xml:lang attribute.
+
+   4.   AD Review: max-resource-size now explicitly stated to be a
+        decimal integer.
+
+   5.   AD Review: tweaked text for supported-collation-set to make it
+        clear two will always be present.
+
+   6.   AD Review: section title change to &quot;Client Guidelines&quot;.
+
+   7.   AD Review: finding address books section re-worded and reference
+        added.
+
+   8.   AD Review: re-worded prop-filter description to better explain
+        that text-match and param-filter can be specified independently
+        of each other.
+
+   9.   AD Review: references added to security considerations.
+
+   10.  AD Review: changed to RFC4510 reference.
+
+   Changes in -07
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 52]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   1.  WGLC: changed all alprop behaviors to SHOULD NOT return in
+       allprop PROPFIND.
+
+   2.  WGLC: Reworked XML conventions section to come into line with
+       text in extended MKCOL, and also updated W3C reference.
+
+   3.  WGLC: Changed a couple of examples to use absolute path DAV:href
+       values.
+
+   4.  WGLC: Simplified IANA Considerations section.
+
+   5.  WGLC: Added new Client Configuration section and removed
+       reference to principal-match.
+
+   6.  address-data element in supported-address-data changed to
+       address-data-type.
+
+   7.  REPORTs now require Depth to be present and the scope of matching
+       resources is determined by the value of the Depth header.
+
+   8.  Removed requirement that DAV:displayname should be unique at each
+       level.
+
+   Changes in -06
+
+   1.  WGLC: addressbook-home-set changed to SHOULD NOT return in
+       allprop PROPFIND.
+
+   2.  WGLC: principal-address description changed to note that the
+       resource pointed to could be in a regular collection too.
+
+   3.  Added new section decribing how SRV and current-user-principal
+       are used to bootstrap client configuration.
+
+   4.  Removed discussion of using principal-match report.
+
+   Changes in -05
+
+   1.  Removed mailing list discussion note from abstract.
+
+   Changes in -04
+
+   1.  Tweaked limit element text to not imply any formal ordering of
+       results.
+
+   2.  Changed prop-filter element to allow zero or more text-match
+       elements rather than zero or one.
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 53]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   3.  Updated to RFC5397 reference.
+
+   4.  Updated TLS reference to latest version RFC5246.
+
+   5.  Boiler plate update.
+
+   Changes in -03
+
+   1.  Added limit element to addressbook-query.
+
+   2.  Specified how a server signals that query results have been
+       truncated.
+
+   3.  Minor stylistic changes.
+
+   Changes in -02
+
+   1.  Added text to CARDDAV:prop and CARDDAV:prop-filter elements to
+       explain how vCard &quot;group&quot; prefix on property names is handled.
+
+   Changes in -01
+
+   1.  Added section on SRV records.
+
+   Changes in -00
+
+   1.  Removed text describing other protocols.
+
+   2.  Added comment about a new vcard spec being developed.
+
+   3.  Added SHOULD support for the DAV:current-user-principal-URL
+       property.
+
+   4.  Added &quot;anyof&quot;/&quot;allof&quot; test attribute to query XML elements to
+       support simple or/and combinations of tests.
+
+   Changes in pre-04
+
+   1.  Renamed addressbook-data to address-data for consistency.
+
+   2.  Fixed address-data element definition.
+
+   Changes in pre-03
+
+   1.  Replaced MKADDRESSBOOK with extended MKCOL.
+
+   2.  Now require i;uncide-casemap as a supported collation and make it
+       the default.
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 54]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   3.  No longer require i;octet as a supported collation.
+
+   4.  Allow different types of match operations via the &quot;match-type&quot;
+       attribute on the &quot;text-match&quot; element.
+
+   5.  Updated to 4918 reference and removed some text/sections
+       duplicating 4918.
+
+   6.  WebDAV Level 3 now required.
+
+   7.  TLS requirement text tweaked to match latest text approved by
+       IESG.
+
+   8.  Added principal-address property to principal resources to allow
+       a vcard to be associated with a principal.
+
+   9.  XML definition clean-up.
+
+   Changes in pre-02
+
+   1.   Added commentary on SyncML.
+
+   2.   Changed 'adbk' to 'addressbook'.
+
+   3.   Support for MKADDRESSBOOK is now a SHOULD.
+
+   4.   Updated to RFC4790 reference.
+
+   5.   Removed synchronization report.
+
+   6.   Removed BNF conventions section as we have no BNF.
+
+   7.   Reworded and reformatted several items to match the final CalDAV
+        spec.
+
+   8.   Added section on use of nonstandard properties and parameters
+        (as per CalDAV).
+
+   9.   Added section of behavior of ETags (as per CalDAV).
+
+   10.  Generalized the text so that vCard need not be the only format
+        supported by the server (i.e., allow xml version of vCard etc).
+
+   11.  Renamed supported-addressbook-data to supported-address-data.
+
+   12.  Renamed valid-addressbook-data to valid-address-data.
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 55]
+
+Internet-Draft    vCard Extensions to WebDAV (CardDAV)     November 2009
+
+
+   13.  Now requires &quot;i;unicasemao&quot; collation.
+
+   Changes in pre-01
+
+   1.  Fixed various incorrect references and typos.
+
+   2.  Major changes to sync with latest CalDAV spec behaviors.
+
+
+Author's Address
+
+   Cyrus Daboo
+   Apple Inc.
+   1 Infinite Loop
+   Cupertino, CA  95014
+   USA
+
+   Email: cyrus@daboo.name
+   URI:   http://www.apple.com/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo                     Expires May 13, 2010                 [Page 56]
+
</ins></span></pre>
</div>
</div>

</body>
</html>