diff options
Diffstat (limited to 'vendor/sabre/dav/docs/rfc6352.txt')
-rw-r--r-- | vendor/sabre/dav/docs/rfc6352.txt | 2691 |
1 files changed, 0 insertions, 2691 deletions
diff --git a/vendor/sabre/dav/docs/rfc6352.txt b/vendor/sabre/dav/docs/rfc6352.txt deleted file mode 100644 index cb03747b4..000000000 --- a/vendor/sabre/dav/docs/rfc6352.txt +++ /dev/null @@ -1,2691 +0,0 @@ - - - - - - -Internet Engineering Task Force (IETF) C. Daboo -Request for Comments: 6352 Apple -Category: Standards Track August 2011 -ISSN: 2070-1721 - - - CardDAV: vCard Extensions to - Web Distributed Authoring and Versioning (WebDAV) - -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. - -Status of This Memo - - This is an Internet Standards Track document. - - This document is a product of the Internet Engineering Task Force - (IETF). It represents the consensus of the IETF community. It has - received public review and has been approved for publication by the - Internet Engineering Steering Group (IESG). Further information on - Internet Standards is available in Section 2 of RFC 5741. - - Information about the current status of this document, any errata, - and how to provide feedback on it may be obtained at - http://www.rfc-editor.org/info/rfc6352. - -Copyright Notice - - Copyright (c) 2011 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 - Provisions Relating to IETF Documents - (http://trustee.ietf.org/license-info) in effect on the date of - publication of this document. Please review these documents - carefully, as they describe your rights and restrictions with respect - to this document. Code Components extracted from this document must - include Simplified BSD License text as described in Section 4.e of - the Trust Legal Provisions and are provided without warranty as - described in the Simplified BSD License. - - 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 - - - -Daboo Standards Track [Page 1] - -RFC 6352 CardDAV August 2011 - - - 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. - -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 . . . . . . . . . . . . . . . . . 7 - 5.1.1. Data Type Conversion . . . . . . . . . . . . . . . . . 8 - 5.1.1.1. Additional Precondition for GET . . . . . . . . . 8 - 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 . . . . . . . 10 - 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 . . . . . . . . . . 15 - 6.3.2.1. Additional Preconditions for PUT, COPY, and - MOVE . . . . . . . . . . . . . . . . . . . . . . . 16 - 6.3.2.2. Non-Standard vCard Properties and Parameters . . . 17 - 6.3.2.3. Address Object Resource Entity Tag . . . . . . . . 18 - 7. Address Book Access Control . . . . . . . . . . . . . . . . . 18 - 7.1. Additional Principal Properties . . . . . . . . . . . . . 18 - 7.1.1. CARDDAV:addressbook-home-set Property . . . . . . . . 19 - 7.1.2. CARDDAV:principal-address Property . . . . . . . . . . 19 - 8. Address Book Reports . . . . . . . . . . . . . . . . . . . . . 20 - 8.1. REPORT Method . . . . . . . . . . . . . . . . . . . . . . 20 - 8.2. Ordinary Collections . . . . . . . . . . . . . . . . . . . 21 - 8.3. Searching Text: Collations . . . . . . . . . . . . . . . . 21 - 8.3.1. CARDDAV:supported-collation-set Property . . . . . . . 22 - 8.4. Partial Retrieval . . . . . . . . . . . . . . . . . . . . 23 - 8.5. Non-Standard Properties and Parameters . . . . . . . . . . 23 - - - - -Daboo Standards Track [Page 2] - -RFC 6352 CardDAV August 2011 - - - 8.6. CARDDAV:addressbook-query Report . . . . . . . . . . . . . 23 - 8.6.1. Limiting Results . . . . . . . . . . . . . . . . . . . 25 - 8.6.2. Truncation of Results . . . . . . . . . . . . . . . . 25 - 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 . . . . . . . . . . . . . . 27 - 8.6.5. Example: Truncated Results . . . . . . . . . . . . . . 29 - 8.7. CARDDAV:addressbook-multiget Report . . . . . . . . . . . 31 - 8.7.1. Example: CARDDAV:addressbook-multiget Report . . . . . 32 - 8.7.2. Example: CARDDAV:addressbook-multiget Report . . . . . 33 - 9. Client Guidelines . . . . . . . . . . . . . . . . . . . . . . 34 - 9.1. Restrict the Properties Returned . . . . . . . . . . . . . 34 - 9.2. Avoiding Lost Updates . . . . . . . . . . . . . . . . . . 35 - 9.3. Client Configuration . . . . . . . . . . . . . . . . . . . 35 - 9.4. Finding Other Users' Address Books . . . . . . . . . . . . 35 - 10. XML Element Definitions . . . . . . . . . . . . . . . . . . . 36 - 10.1. CARDDAV:addressbook XML Element . . . . . . . . . . . . . 36 - 10.2. CARDDAV:supported-collation XML Element . . . . . . . . . 36 - 10.3. CARDDAV:addressbook-query XML Element . . . . . . . . . . 37 - 10.4. CARDDAV:address-data XML Element . . . . . . . . . . . . . 37 - 10.4.1. CARDDAV:allprop XML Element . . . . . . . . . . . . . 39 - 10.4.2. CARDDAV:prop XML Element . . . . . . . . . . . . . . . 39 - 10.5. CARDDAV:filter XML Element . . . . . . . . . . . . . . . . 40 - 10.5.1. CARDDAV:prop-filter XML Element . . . . . . . . . . . 40 - 10.5.2. CARDDAV:param-filter XML Element . . . . . . . . . . . 41 - 10.5.3. CARDDAV:is-not-defined XML Element . . . . . . . . . . 42 - 10.5.4. CARDDAV:text-match XML Element . . . . . . . . . . . . 42 - 10.6. CARDDAV:limit XML Element . . . . . . . . . . . . . . . . 43 - 10.6.1. CARDDAV:nresults XML Element . . . . . . . . . . . . . 44 - 10.7. CARDDAV:addressbook-multiget XML Element . . . . . . . . . 44 - 11. Service Discovery via SRV Records . . . . . . . . . . . . . . 45 - 12. Internationalization Considerations . . . . . . . . . . . . . 45 - 13. Security Considerations . . . . . . . . . . . . . . . . . . . 45 - 14. IANA Consideration . . . . . . . . . . . . . . . . . . . . . . 46 - 14.1. Namespace Registration . . . . . . . . . . . . . . . . . . 46 - 15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 46 - 16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 47 - 16.1. Normative References . . . . . . . . . . . . . . . . . . . 47 - 16.2. Informative References . . . . . . . . . . . . . . . . . . 48 - - - - - - - - - - - -Daboo Standards Track [Page 3] - -RFC 6352 CardDAV August 2011 - - -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 the - Lightweight Directory Access Protocol (LDAP) [RFC4510], Internet - Message Support Protocol [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 the costs of - design, implementation, interoperability testing, and deployment. - - 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 Access Control List (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 - that makes implementing WebDAV much easier than other protocols. - - The key disadvantage of address book support in WebDAV is: - - 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 - of vCard was originally done by the Versit consortium, with a - - - -Daboo Standards Track [Page 4] - -RFC 6352 CardDAV August 2011 - - - subsequent 3.0 version standardized by the IETF [RFC2426]. vCard is - in widespread 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 - [RFC6350] and is compatible with this specification. - -2. Conventions - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in [RFC2119]. - - The term "protected" 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 that specification use the XML namespace name - "DAV:". In particular: - - 1. Element names use the "DAV:" 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 "urn:ietf:params:xml:ns:carddav" 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 "urn:ietf:params:xml:ns:carddav" - namespace, and instead should use a namespace that they control. - - When XML element types in the namespaces "DAV:" and - "urn:ietf:params:xml:ns:carddav" are referenced in this document - outside of the context of an XML fragment, the strings "DAV:" and - "CARDDAV:" will be prefixed to the element types, respectively. - - - - - -Daboo Standards Track [Page 5] - -RFC 6352 CardDAV August 2011 - - - 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 - Transport Layer Security (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 [RFC6350] 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 - principals. - - - - - -Daboo Standards Track [Page 6] - -RFC 6352 CardDAV August 2011 - - -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 contains a number of resources representing address - objects as their direct child resources. Each resource representing - an address object is called an "address object resource". 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 Sections 5.1 and - 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 - -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 - - - -Daboo Standards Track [Page 7] - -RFC 6352 CardDAV August 2011 - - - 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 merely 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. - -5.1.1.1. Additional Precondition for GET - - This specification creates additional preconditions for the GET - method. - - - - - - -Daboo Standards Track [Page 8] - -RFC 6352 CardDAV August 2011 - - - 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: - - <!ELEMENT addressbook EMPTY> - - 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., - "soccer team members") or for users to share an address book (e.g., - "sales team contacts"). However, note 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. - That is, the only "top-level" 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. That is, - "nesting" of address book collections within other address book - collections at 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. - - - - -Daboo Standards Track [Page 9] - -RFC 6352 CardDAV August 2011 - - - 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 "addressbook" 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 "addressbook" 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 - - >> Request << - - OPTIONS /addressbooks/users/ HTTP/1.1 - Host: addressbook.example.com - - >> Response << - - 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 - -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. - - - - -Daboo Standards Track [Page 10] - -RFC 6352 CardDAV August 2011 - - - 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: - - <!ELEMENT addressbook-description (#PCDATA)> - <!-- PCDATA value: string --> - - Example: - - <C:addressbook-description xml:lang="fr-CA" - xmlns:C="urn:ietf:params:xml:ns:carddav" - >Adresses de Oliver Daboo</C:addressbook-description> - -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. - - 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 - - - -Daboo Standards Track [Page 11] - -RFC 6352 CardDAV August 2011 - - - 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 - "text/vcard" and vCard version 3.0, and clients can assume that is - all the server will accept. - - Definition: - - <!ELEMENT supported-address-data (address-data-type+)> - - <!ELEMENT address-data-type EMPTY> - <!ATTLIST address-data-type content-type CDATA "text/vcard" - version CDATA "3.0"> - <!-- content-type value: a MIME media type --> - <!-- version value: a version string --> - - Example: - - <C:supported-address-data - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <C:address-data-type content-type="text/vcard" version="3.0"/> - </C:supported-address-data> - -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. - - 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. - - - - - - -Daboo Standards Track [Page 12] - -RFC 6352 CardDAV August 2011 - - - 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: - - <!ELEMENT max-resource-size (#PCDATA)> - <!-- PCDATA value: a numeric value (positive decimal integer) --> - - Example: - - <C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:carddav" - >102400</C:max-resource-size> - -6.3. Creating Resources - - Address book collections and address object resources may be created - by either a CardDAV client or 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. - - 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. - - - - - - -Daboo Standards Track [Page 13] - -RFC 6352 CardDAV August 2011 - - - 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 "opaque" 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. - - >> Request << - - MKCOL /home/lisa/addressbook/ HTTP/1.1 - Host: addressbook.example.com - Content-Type: text/xml; charset="utf-8" - Content-Length: xxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:mkcol xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:set> - <D:prop> - <D:resourcetype> - <D:collection/> - <C:addressbook/> - </D:resourcetype> - <D:displayname>Lisa's Contacts</D:displayname> - <C:addressbook-description xml:lang="en" - >My primary address book.</C:addressbook-description> - </D:prop> - </D:set> - </D:mkcol> - - - - - - - - - -Daboo Standards Track [Page 14] - -RFC 6352 CardDAV August 2011 - - - >> Response << - - HTTP/1.1 201 Created - Cache-Control: no-cache - Date: Sat, 11 Nov 2006 09:32:12 GMT - Content-Type: application/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:mkcol-response xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:propstat> - <D:prop> - <D:resourcetype/> - <D:displayname/> - <C:addressbook-description/> - </D:prop> - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:mkcol-response> - -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 "If-None- - Match: *" 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 - "If-None-Match" header ensures that the client will not inadvertently - overwrite an existing resource even if the last path segment turned - out to already be used. - - - - - - - -Daboo Standards Track [Page 15] - -RFC 6352 CardDAV August 2011 - - - >> Request << - - 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 - - >> Response << - - HTTP/1.1 201 Created - Date: Thu, 02 Sep 2004 16:53:32 GMT - Content-Length: 0 - ETag: "123456789-000-111" - - The request to change an existing address object resource without - overwriting a change made on the server uses a specific ETag in an - "If-Match" header, rather than the "If-None-Match" header. - - File names for vCards are commonly suffixed by ".vcf", 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 the 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. - - - - -Daboo Standards Track [Page 16] - -RFC 6352 CardDAV August 2011 - - - 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. - - <!ELEMENT no-uid-conflict (DAV:href)> - - (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 "standard mechanism for doing non-standard things". - This extension support allows implementers to make use of non- - standard vCard properties and parameters whose names are prefixed - with the text "X-". - - 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 "private" 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. A server SHOULD ensure that any "private" - - - - - -Daboo Standards Track [Page 17] - -RFC 6352 CardDAV August 2011 - - - properties or parameters it uses follow the convention of including a - vendor ID in the "X-" name, as described in Section 3.8 of [RFC2426], - e.g., "X-ABC-PRIVATE". - -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, have the DAV:getetag property returned, 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. - - 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, a client 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]. - - - - - - - -Daboo Standards Track [Page 18] - -RFC 6352 CardDAV August 2011 - - -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 are either address - book collections or ordinary collections that have child or - descendant address book collections owned by the principal. - - Definition: - - <!ELEMENT addressbook-home-set (DAV:href*)> - - Example: - - <C:addressbook-home-set xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:href>/bernard/addresses/</D:href> - </C:addressbook-home-set> - -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. - - - - - -Daboo Standards Track [Page 19] - -RFC 6352 CardDAV August 2011 - - - 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 - "regular" collection. - - Definition: - - <!ELEMENT principal-address (DAV:href)> - - Example: - - <C:principal-address xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:href>/system/cyrus.vcf</D:href> - </C:principal-address> - -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 - - - -Daboo Standards Track [Page 20] - -RFC 6352 CardDAV August 2011 - - - 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. - - 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 "equality" and - "substring" match operations as per [RFC4790], Section 4.2, including - the "prefix" and "suffix" options for "substring" matching. CardDAV - uses these match options for "equals", "contains", "starts-with", and - "ends-with" match operations. - - CardDAV servers are REQUIRED to support the "i;ascii-casemap" - [RFC4790] and "i;unicode-casemap" [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. - - - - - - -Daboo Standards Track [Page 21] - -RFC 6352 CardDAV August 2011 - - - In the absence of a collation explicitly specified by the client, or - if the client specifies the "default" collation identifier (as - defined in [RFC4790], Section 3.1), the server MUST default to using - "i;unicode-casemap" 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. - - 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 that specify the - identifiers of the collations supported by the server. - - Definition: - - <!ELEMENT supported-collation-set ( - supported-collation - supported-collation - supported-collation*)> - <!-- Both "i;ascii-casemap" and "i;unicode-casemap" - will be present --> - - <!ELEMENT supported-collation (#PCDATA)> - - - - - - - -Daboo Standards Track [Page 22] - -RFC 6352 CardDAV August 2011 - - - Example: - - <C:supported-collation-set - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <C:supported-collation>i;ascii-casemap</C:supported-collation> - <C:supported-collation>i;octet</C:supported-collation> - <C:supported-collation>i;unicode-casemap</C:supported-collation> - </C:supported-collation-set> - -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. - - 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 on which the server does - not support queries. - -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 - - - - -Daboo Standards Track [Page 23] - -RFC 6352 CardDAV August 2011 - - - 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 that - does not exist is an error and MUST be noted with a response XML - element that 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. For example, 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 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 "content-type" - and "version" of the CARDDAV:address-data XML element (see - Section 10.4) specify a media type supported by the server for - address object resources. - - - - - -Daboo Standards Track [Page 24] - -RFC 6352 CardDAV August 2011 - - - (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. That - is, if the CARDDAV:filter element attempts to reference an - unsupported vCard property or parameter, this precondition is - violated. A server SHOULD report the CARDDAV:prop-filter or - CARDDAV:param-filter for which it does not provide support. - - <!ELEMENT supported-filter (prop-filter*, - param-filter*)> - - (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 - 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 (Multi-Status), 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. - - - - - -Daboo Standards Track [Page 25] - -RFC 6352 CardDAV August 2011 - - - 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 that the server search for - address object resources that contain a NICKNAME property whose value - equals some specific text and return specific vCard properties for - those vCards found. In addition, the DAV:getetag property is also - requested and returned as part of the response. - - >> Request << - - REPORT /home/bernard/addressbook/ HTTP/1.1 - Host: addressbook.example.com - Depth: 1 - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <C:addressbook-query xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:prop> - <D:getetag/> - <C:address-data> - <C:prop name="VERSION"/> - <C:prop name="UID"/> - <C:prop name="NICKNAME"/> - <C:prop name="EMAIL"/> - <C:prop name="FN"/> - </C:address-data> - </D:prop> - <C:filter> - <C:prop-filter name="NICKNAME"> - <C:text-match collation="i;unicode-casemap" - match-type="equals" - >me</C:text-match> - </C:prop-filter> - </C:filter> - </C:addressbook-query> - - - - - -Daboo Standards Track [Page 26] - -RFC 6352 CardDAV August 2011 - - - >> Response << - - HTTP/1.1 207 Multi-Status - Date: Sat, 11 Nov 2006 09:32:12 GMT - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:multistatus xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:response> - <D:href>/home/bernard/addressbook/v102.vcf</D:href> - <D:propstat> - <D:prop> - <D:getetag>"23ba4d-ff11fb"</D:getetag> - <C:address-data>BEGIN:VCARD - VERSION:3.0 - NICKNAME:me - UID:34222-232@example.com - FN:Cyrus Daboo - EMAIL:daboo@example.com - END:VCARD - </C:address-data> - </D:prop> - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:response> - </D:multistatus> - -8.6.4. Example: Partial Retrieval of vCards Matching a Full Name or - Email Address - - In this example, the client requests that the server 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 return specific vCard properties for - those vCards found. In addition, the DAV:getetag property is also - requested and returned as part of the response. - - >> Request << - - REPORT /home/bernard/addressbook/ HTTP/1.1 - Host: addressbook.example.com - Depth: 1 - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - - - - -Daboo Standards Track [Page 27] - -RFC 6352 CardDAV August 2011 - - - <?xml version="1.0" encoding="utf-8" ?> - <C:addressbook-query xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:prop> - <D:getetag/> - <C:address-data> - <C:prop name="VERSION"/> - <C:prop name="UID"/> - <C:prop name="NICKNAME"/> - <C:prop name="EMAIL"/> - <C:prop name="FN"/> - </C:address-data> - </D:prop> - <C:filter test="anyof"> - <C:prop-filter name="FN"> - <C:text-match collation="i;unicode-casemap" - match-type="contains" - >daboo</C:text-match> - </C:prop-filter> - <C:prop-filter name="EMAIL"> - <C:text-match collation="i;unicode-casemap" - match-type="contains" - >daboo</C:text-match> - </C:prop-filter> - </C:filter> - </C:addressbook-query> - - >> Response << - - HTTP/1.1 207 Multi-Status - Date: Sat, 11 Nov 2006 09:32:12 GMT - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:multistatus xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:response> - <D:href>/home/bernard/addressbook/v102.vcf</D:href> - <D:propstat> - <D:prop> - <D:getetag>"23ba4d-ff11fb"</D:getetag> - <C:address-data>BEGIN:VCARD - VERSION:3.0 - NICKNAME:me - UID:34222-232@example.com - FN:David Boo - EMAIL:daboo@example.com - - - -Daboo Standards Track [Page 28] - -RFC 6352 CardDAV August 2011 - - - END:VCARD - </C:address-data> - </D:prop> - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:response> - <D:response> - <D:href>/home/bernard/addressbook/v104.vcf</D:href> - <D:propstat> - <D:prop> - <D:getetag>"23ba4d-ff11fc"</D:getetag> - <C:address-data>BEGIN:VCARD - VERSION:3.0 - NICKNAME:oliver - UID:34222-23222@example.com - FN:Oliver Daboo - EMAIL:oliver@example.com - END:VCARD - </C:address-data> - </D:prop> - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:response> - </D:multistatus> - -8.6.5. Example: Truncated Results - - In this example, the client requests that the server search for - address object resources that contain a FN property whose value - contains some specific text and 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. - - >> Request << - - REPORT /home/bernard/addressbook/ HTTP/1.1 - Host: addressbook.example.com - Depth: 1 - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <C:addressbook-query xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - - - - - -Daboo Standards Track [Page 29] - -RFC 6352 CardDAV August 2011 - - - <D:prop> - <D:getetag/> - </D:prop> - <C:filter test="anyof"> - <C:prop-filter name="FN"> - <C:text-match collation="i;unicode-casemap" - match-type="contains" - >daboo</C:text-match> - </C:prop-filter> - </C:filter> - <C:limit> - <C:nresults>2</C:nresults> - </C:limit> - </C:addressbook-query> - - >> Response << - - HTTP/1.1 207 Multi-Status - Date: Sat, 11 Nov 2006 09:32:12 GMT - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:multistatus xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:response> - <D:href>/home/bernard/addressbook/</D:href> - <D:status>HTTP/1.1 507 Insufficient Storage</D:status> - <D:error><D:number-of-matches-within-limits/></D:error> - <D:responsedescription xml:lang="en"> - Only two matching records were returned - </D:responsedescription> - </D:response> - <D:response> - <D:href>/home/bernard/addressbook/v102.vcf</D:href> - <D:propstat> - <D:prop> - <D:getetag>"23ba4d-ff11fb"</D:getetag> - </D:prop> - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:response> - <D:response> - <D:href>/home/bernard/addressbook/v104.vcf</D:href> - <D:propstat> - <D:prop> - <D:getetag>"23ba4d-ff11fc"</D:getetag> - </D:prop> - - - -Daboo Standards Track [Page 30] - -RFC 6352 CardDAV August 2011 - - - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:response> - </D:multistatus> - -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 an 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 - 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. - - - - - -Daboo Standards Track [Page 31] - -RFC 6352 CardDAV August 2011 - - - Preconditions: - - (CARDDAV:supported-address-data): The attributes "content-type" - and "version" 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. - -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. - - >> Request << - - REPORT /home/bernard/addressbook/ HTTP/1.1 - Host: addressbook.example.com - Depth: 1 - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <C:addressbook-multiget xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:prop> - <D:getetag/> - <C:address-data> - <C:prop name="VERSION"/> - <C:prop name="UID"/> - <C:prop name="NICKNAME"/> - <C:prop name="EMAIL"/> - <C:prop name="FN"/> - </C:address-data> - </D:prop> - <D:href>/home/bernard/addressbook/vcf102.vcf</D:href> - <D:href>/home/bernard/addressbook/vcf1.vcf</D:href> - </C:addressbook-multiget> - - - - - - -Daboo Standards Track [Page 32] - -RFC 6352 CardDAV August 2011 - - - >> Response << - - HTTP/1.1 207 Multi-Status - Date: Sat, 11 Nov 2006 09:32:12 GMT - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:multistatus xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:response> - <D:href>/home/bernard/addressbook/vcf102.vcf</D:href> - <D:propstat> - <D:prop> - <D:getetag>"23ba4d-ff11fb"</D:getetag> - <C:address-data>BEGIN:VCARD - VERSION:3.0 - NICKNAME:me - UID:34222-232@example.com - FN:Cyrus Daboo - EMAIL:daboo@example.com - END:VCARD - </C:address-data> - </D:prop> - <D:status>HTTP/1.1 200 OK</D:status> - </D:propstat> - </D:response> - <D:response> - <D:href>/home/bernard/addressbook/vcf1.vcf</D:href> - <D:status>HTTP/1.1 404 Resource not found</D:status> - </D:response> - </D:multistatus> - -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 Standards Track [Page 33] - -RFC 6352 CardDAV August 2011 - - - >> Request << - - REPORT /home/bernard/addressbook/ HTTP/1.1 - Host: addressbook.example.com - Depth: 1 - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <C:addressbook-multiget xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:prop> - <D:getetag/> - <C:address-data content-type='text/vcard' version='4.0'/> - </D:prop> - <D:href>/home/bernard/addressbook/vcf3.vcf</D:href> - </C:addressbook-multiget> - - >> Response << - - HTTP/1.1 207 Multi-Status - Date: Sat, 11 Nov 2006 09:32:12 GMT - Content-Type: text/xml; charset="utf-8" - Content-Length: xxxx - - <?xml version="1.0" encoding="utf-8" ?> - <D:multistatus xmlns:D="DAV:" - xmlns:C="urn:ietf:params:xml:ns:carddav"> - <D:response> - <D:href>/home/bernard/addressbook/vcf3.vcf</D:href> - <D:status>HTTP/1.1 415 Unsupported Media Type</D:status> - <D:error><C:supported-address-data-conversion/></D:error> - <D:responsedescription>Unable to convert from vCard v3.0 - to vCard v4.0</D:responsedescription> - </D:response> - </D:multistatus> - -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 - their email address, for example. Since some property data can be - large (e.g., PHOTO or SOUND with in-line 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. - - - -Daboo Standards Track [Page 34] - -RFC 6352 CardDAV August 2011 - - - 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 this, - 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 - precondition 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 use cases of address book sharing, 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 search principals for matching properties - and return specified properties for the matching principal resources. - To search for an address book owned by a user named "Laurie", the - REPORT request body would look like this: - - - - - - - -Daboo Standards Track [Page 35] - -RFC 6352 CardDAV August 2011 - - - <?xml version="1.0" encoding="utf-8" ?> - <D:principal-property-search xmlns:D="DAV:"> - <D:property-search> - <D:prop> - <D:displayname/> - </D:prop> - <D:match>Laurie</D:match> - </D:property-search> - <D:prop> - <C:addressbook-home-set - xmlns:C="urn:ietf:params:xml:ns:carddav"/> - <D:displayname/> - </D:prop> - </D:principal-property-search> - - The server performs a case-sensitive or caseless search for a - matching string subset of "Laurie" within the DAV:displayname - property. Thus, the server might return "Laurie Dusseault", "Laurier - Desruisseaux", or "Wilfrid Laurier" 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: - - <!ELEMENT addressbook EMPTY> - -10.2. CARDDAV:supported-collation XML Element - - Name: supported-collation - - Namespace: urn:ietf:params:xml:ns:carddav - - 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. - - - -Daboo Standards Track [Page 36] - -RFC 6352 CardDAV August 2011 - - - Definition: - - <!ELEMENT supported-collation (#PCDATA)> - <!-- PCDATA value: collation identifier --> - -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: - - <!ELEMENT addressbook-query ((DAV:allprop | - DAV:propname | - DAV:prop)?, filter, limit?)> - -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 that should be - returned by a given address book REPORT request, and the media - type and version for the returned data; or - - 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 - 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 an - address object resource. Given that XML parsers normalize the - - - -Daboo Standards Track [Page 37] - -RFC 6352 CardDAV August 2011 - - - 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 "novalue" attribute set to "yes". - - 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 <, >, & etc., entity encoding or - the use of a <![CDATA[ ... ]]> construct. In the latter case, the - vCard data cannot contain the character sequence "]]>", which is - the end delimiter for the CDATA section. - - Definition: - - <!ELEMENT address-data (allprop | prop*)> - - 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; - - <!ELEMENT address-data (#PCDATA)> - <!-- PCDATA value: address data --> - - when nested in the DAV:prop XML element in an address book - REPORT response to specify the content of a returned - address object resource. - - <!ATTLIST address-data content-type CDATA "text/vcard" - version CDATA "3.0"> - <!-- content-type value: a MIME media type --> - <!-- version value: a version string --> - - attributes can be used on each variant of the - CALDAV:address-data XML element. - - - - - -Daboo Standards Track [Page 38] - -RFC 6352 CardDAV August 2011 - - -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: - - <!ELEMENT allprop EMPTY> - - 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 - "urn:ietf:params:xml:ns:carddav" namespace, as opposed to the "DAV:" - namespace used for the DAV:allprop element defined in WebDAV. - -10.4.2. CARDDAV:prop XML Element - - Name: prop - - Namespace: urn:ietf:params:xml:ns:carddav - - Purpose: Defines which vCard properties to return in the response. - - Description: The "name" attribute specifies the name of the vCard - property to return (e.g., "NICKNAME"). The "novalue" attribute - can be used by clients to request that the actual value of the - property not be returned (if the "novalue" attribute is set to - "yes"). In that case, the server will return just the vCard - property name and any vCard parameters and a trailing ":" without - the subsequent value data. - - vCard allows a "group" prefix to appear before a property name in - the vCard data. When the "name" 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 "name" attribute - includes a group prefix, it MUST match properties that have - exactly the same group prefix and name. For example, a "name" set - to "TEL" will match "TEL", "X-ABC.TEL", and "X-ABC-1.TEL" vCard - properties. A "name" set to "X-ABC.TEL" will match an "X-ABC.TEL" - vCard property only; it will not match "TEL" or "X-ABC-1.TEL". - - - - - -Daboo Standards Track [Page 39] - -RFC 6352 CardDAV August 2011 - - - Definition: - - <!ELEMENT prop EMPTY> - - <!ATTLIST prop name CDATA #REQUIRED - novalue (yes | no) "no"> - <!-- name value: a vCard property name --> - <!-- novalue value: "yes" or "no" --> - - 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 "urn:ietf:params:xml:ns:carddav" - namespace, as opposed to the "DAV:" 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 - - Purpose: Determines which matching objects are returned. - - Description: The "filter" element specifies the search filter used - to match address objects that should be returned by a report. The - "test" attribute specifies whether any (logical OR) or all - (logical AND) of the prop-filter tests need to match in order for - the overall filter to match. - - Definition: - - <!ELEMENT filter (prop-filter*)> - - <!ATTLIST filter test (anyof | allof) "anyof"> - <!-- test value: - anyof logical OR for prop-filter matches - allof logical AND for prop-filter matches --> - -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. - - - - - - -Daboo Standards Track [Page 40] - -RFC 6352 CardDAV August 2011 - - - Description: The CARDDAV:prop-filter XML element specifies 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 "name" attribute - exists, and the CARDDAV:prop-filter is empty, or it matches any - specified CARDDAV:text-match or CARDDAV:param-filter - conditions. The "test" 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 "name" attribute - does not exist, and the CARDDAV:is-not-defined element is - specified. - - vCard allows a "group" prefix to appear before a property name in - the vCard data. When the "name" 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 "name" attribute - includes a group prefix, it MUST match properties that have - exactly the same group prefix and name. For example, a "name" set - to "TEL" will match "TEL", "X-ABC.TEL", "X-ABC-1.TEL" vCard - properties. A "name" set to "X-ABC.TEL" will match an "X-ABC.TEL" - vCard property only, it will not match "TEL" or "X-ABC-1.TEL". - - Definition: - - <!ELEMENT prop-filter (is-not-defined | - (text-match*, param-filter*))> - - <!ATTLIST prop-filter name CDATA #REQUIRED - test (anyof | allof) "anyof"> - <!-- name value: a vCard property name (e.g., "NICKNAME") - test value: - anyof logical OR for text-match/param-filter matches - allof logical AND for text-match/param-filter matches --> - -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. - - - - -Daboo Standards Track [Page 41] - -RFC 6352 CardDAV August 2011 - - - Description: The CARDDAV:param-filter XML element specifies 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 "name" 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 "name" attribute does - not exist, and the CARDDAV:is-not-defined element is specified. - - Definition: - - <!ELEMENT param-filter (is-not-defined | text-match)?> - - <!ATTLIST param-filter name CDATA #REQUIRED> - <!-- name value: a property parameter name (e.g., "TYPE") --> - -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: - - <!ELEMENT is-not-defined EMPTY> - -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. - - - - -Daboo Standards Track [Page 42] - -RFC 6352 CardDAV August 2011 - - - 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 "collation" 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 "i;unicode-casemap" - collation. - - The "negate-condition" attribute is used to indicate that this - test returns a match if the text matches, when the attribute value - is set to "no", or return a match if the text does not match, if - the attribute value is set to "yes". For example, this can be - used to match components with a CATEGORIES property not set to - PERSON. - - The "match-type" attribute is used to indicate the type of match - operation to use. Possible choices are: - - "equals" - an exact match to the target string - - "contains" - a substring match, matching anywhere within the - target string - - "starts-with" - a substring match, matching only at the start - of the target string - - "ends-with" - a substring match, matching only at the end of - the target string - - Definition: - - <!ELEMENT text-match (#PCDATA)> - <!-- PCDATA value: string --> - - <!ATTLIST text-match - collation CDATA "i;unicode-casemap" - negate-condition (yes | no) "no" - match-type (equals|contains|starts-with|ends-with) "contains"> - -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. - - - -Daboo Standards Track [Page 43] - -RFC 6352 CardDAV August 2011 - - - 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: - - <!ELEMENT limit (nresults)> - -10.6.1. CARDDAV:nresults XML Element - - Name: nresults - - Namespace: urn:ietf:params:xml:ns:carddav - - 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: - - <!ELEMENT nresults (#PCDATA)> - <!-- nresults value: unsigned integer, must be digits --> - -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: - - <!ELEMENT addressbook-multiget ((DAV:allprop | - DAV:propname | - DAV:prop)?, - DAV:href+)> - - - - - -Daboo Standards Track [Page 44] - -RFC 6352 CardDAV August 2011 - - -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 RRs. - - 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]. - - 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 it 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 "inheritance" mechanism, whereby - resources may inherit access privileges from other resources. Often, - the "other" resource is a parent collection of the resource itself. - Servers are able to support address books that are "private" - - - -Daboo Standards Track [Page 45] - -RFC 6352 CardDAV August 2011 - - - (accessible only to the "owner"), "shared" (accessible to the owner - and other specified authenticated users), and "public" (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. 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 "crawlers"). - - 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 - 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: The IESG <iesg@ietf.org> - - 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. - - - - - - -Daboo Standards Track [Page 46] - -RFC 6352 CardDAV August 2011 - - -16. References - -16.1. Normative References - - [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate - Requirement Levels", BCP 14, RFC 2119, March 1997. - - [RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile", - RFC 2426, September 1998. - - [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., - Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext - Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. - - [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., - Leach, P., Luotonen, A., and L. Stewart, "HTTP - Authentication: Basic and Digest Access Authentication", - RFC 2617, June 1999. - - [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for - specifying the location of services (DNS SRV)", RFC 2782, - February 2000. - - [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. - - [RFC3253] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J. - Whitehead, "Versioning Extensions to WebDAV - (Web Distributed Authoring and Versioning)", RFC 3253, - March 2002. - - [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, - January 2004. - - [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web - Distributed Authoring and Versioning (WebDAV) - Access Control Protocol", RFC 3744, May 2004. - - [RFC4790] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet - Application Protocol Collation Registry", RFC 4790, - March 2007. - - [RFC4918] Dusseault, L., "HTTP Extensions for Web Distributed - Authoring and Versioning (WebDAV)", RFC 4918, June 2007. - - [RFC5051] Crispin, M., "i;unicode-casemap - Simple Unicode Collation - Algorithm", RFC 5051, October 2007. - - - - - -Daboo Standards Track [Page 47] - -RFC 6352 CardDAV August 2011 - - - [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security - (TLS) Protocol Version 1.2", RFC 5246, August 2008. - - [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., - Housley, R., and W. Polk, "Internet X.509 Public Key - Infrastructure Certificate and Certificate Revocation List - (CRL) Profile", RFC 5280, May 2008. - - [RFC5397] Sanchez, W. and C. Daboo, "WebDAV Current Principal - Extension", RFC 5397, December 2008. - - [RFC5689] Daboo, C., "Extended MKCOL for Web Distributed Authoring - and Versioning (WebDAV)", RFC 5689, September 2009. - - [RFC6350] Perreault, S., "vCard Format Specification", RFC 6350, - August 2011. - - [W3C.REC-xml-20081126] - Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and - F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth - Edition)", World Wide Web Consortium Recommendation REC- - xml-20081126, November 2008, - <http://www.w3.org/TR/2008/REC-xml-20081126>. - -16.2. Informative References - - [IMSP] Myers, J., "IMSP - Internet Message Support Protocol", - Work in Progress, June 1995. - - [RFC2244] Newman, C. and J. Myers, "ACAP -- Application - Configuration Access Protocol", RFC 2244, November 1997. - - [RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol - (LDAP): Technical Specification Road Map", RFC 4510, - June 2006. - -Author's Address - - Cyrus Daboo - Apple, Inc. - 1 Infinite Loop - Cupertino, CA 95014 - USA - - EMail: cyrus@daboo.name - URI: http://www.apple.com/ - - - - - -Daboo Standards Track [Page 48] - |