draft-ietf-vcarddav-carddav-05.txt   draft-ietf-vcarddav-carddav-06.txt 
Network Working Group C. Daboo Network Working Group C. Daboo
Internet-Draft Apple Internet-Draft Apple
Intended status: Standards Track February 10, 2009 Intended status: Standards Track March 9, 2009
Expires: August 14, 2009 Expires: September 10, 2009
vCard Extensions to WebDAV (CardDAV) vCard Extensions to WebDAV (CardDAV)
draft-ietf-vcarddav-carddav-05 draft-ietf-vcarddav-carddav-06
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. 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 Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 14, 2009. This Internet-Draft will expire on September 10, 2009.
Copyright Notice Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents in effect on the date of
(http://trustee.ietf.org/license-info) in effect on the date of publication of this document (http://trustee.ietf.org/license-info).
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document.
to this document.
Abstract Abstract
This document defines extensions to the Web Distributed Authoring and This document defines extensions to the Web Distributed Authoring and
Versioning (WebDAV) protocol to specify a standard way of accessing, Versioning (WebDAV) protocol to specify a standard way of accessing,
managing, and sharing contact information based on the vCard format. managing, and sharing contact information based on the vCard format.
Table of Contents Table of Contents
1. Introduction and Overview . . . . . . . . . . . . . . . . . . 4 1. Introduction and Overview . . . . . . . . . . . . . . . . . . 4
skipping to change at page 3, line 10 skipping to change at page 3, line 19
8.6.3. Example: Partial Retrieval of vCards Matching 8.6.3. Example: Partial Retrieval of vCards Matching
NICKNAME . . . . . . . . . . . . . . . . . . . . . . . 24 NICKNAME . . . . . . . . . . . . . . . . . . . . . . . 24
8.6.4. Example: Partial Retrieval of vCards Matching a 8.6.4. Example: Partial Retrieval of vCards Matching a
Full Name or Email Address . . . . . . . . . . . . . . 26 Full Name or Email Address . . . . . . . . . . . . . . 26
8.6.5. Example: Truncated Results . . . . . . . . . . . . . . 29 8.6.5. Example: Truncated Results . . . . . . . . . . . . . . 29
8.7. CARDDAV:addressbook-multiget Report . . . . . . . . . . . 30 8.7. CARDDAV:addressbook-multiget Report . . . . . . . . . . . 30
8.7.1. Example: CARDDAV:addressbook-multiget Report . . . . . 32 8.7.1. Example: CARDDAV:addressbook-multiget Report . . . . . 32
9. Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . 33 9. Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.1. Restrict the Properties Returned . . . . . . . . . . . . . 33 9.1. Restrict the Properties Returned . . . . . . . . . . . . . 33
9.2. Use of Locking . . . . . . . . . . . . . . . . . . . . . . 34 9.2. Use of Locking . . . . . . . . . . . . . . . . . . . . . . 34
9.3. Finding Address Books . . . . . . . . . . . . . . . . . . 34 9.3. Client Configuration . . . . . . . . . . . . . . . . . . . 34
10. XML Element Definitions . . . . . . . . . . . . . . . . . . . 36 9.4. Finding Other Users' Address Books . . . . . . . . . . . . 35
10.1. CARDDAV:addressbook XML Element . . . . . . . . . . . . . 36 10. XML Element Definitions . . . . . . . . . . . . . . . . . . . 35
10.1. CARDDAV:addressbook XML Element . . . . . . . . . . . . . 35
10.2. CARDDAV:supported-collation XML Element . . . . . . . . . 36 10.2. CARDDAV:supported-collation XML Element . . . . . . . . . 36
10.3. CARDDAV:addressbook-query XML Element . . . . . . . . . . 36 10.3. CARDDAV:addressbook-query XML Element . . . . . . . . . . 36
10.4. CARDDAV:address-data XML Element . . . . . . . . . . . . . 37 10.4. CARDDAV:address-data XML Element . . . . . . . . . . . . . 36
10.4.1. CARDDAV:allprop XML Element . . . . . . . . . . . . . 38 10.4.1. CARDDAV:allprop XML Element . . . . . . . . . . . . . 38
10.4.2. CARDDAV:prop XML Element . . . . . . . . . . . . . . . 39 10.4.2. CARDDAV:prop XML Element . . . . . . . . . . . . . . . 39
10.5. CARDDAV:filter XML Element . . . . . . . . . . . . . . . . 40 10.5. CARDDAV:filter XML Element . . . . . . . . . . . . . . . . 39
10.5.1. CARDDAV:prop-filter XML Element . . . . . . . . . . . 40 10.5.1. CARDDAV:prop-filter XML Element . . . . . . . . . . . 40
10.5.2. CARDDAV:param-filter XML Element . . . . . . . . . . . 41 10.5.2. CARDDAV:param-filter XML Element . . . . . . . . . . . 41
10.5.3. CARDDAV:is-not-defined XML Element . . . . . . . . . . 42 10.5.3. CARDDAV:is-not-defined XML Element . . . . . . . . . . 42
10.5.4. CARDDAV:text-match XML Element . . . . . . . . . . . . 42 10.5.4. CARDDAV:text-match XML Element . . . . . . . . . . . . 42
10.6. CARDDAV:limit XML Element . . . . . . . . . . . . . . . . 44 10.6. CARDDAV:limit XML Element . . . . . . . . . . . . . . . . 43
10.6.1. CARDDAV:nresults XML Element . . . . . . . . . . . . . 44 10.6.1. CARDDAV:nresults XML Element . . . . . . . . . . . . . 44
10.7. CARDDAV:addressbook-multiget XML Element . . . . . . . . . 44 10.7. CARDDAV:addressbook-multiget XML Element . . . . . . . . . 44
11. Service Discovery via SRV Records . . . . . . . . . . . . . . 45 11. Service Discovery via SRV Records . . . . . . . . . . . . . . 44
12. Internationalization Considerations . . . . . . . . . . . . . 45 12. Internationalization Considerations . . . . . . . . . . . . . 45
13. Security Considerations . . . . . . . . . . . . . . . . . . . 45 13. Security Considerations . . . . . . . . . . . . . . . . . . . 45
14. IANA Consideration . . . . . . . . . . . . . . . . . . . . . . 46 14. IANA Consideration . . . . . . . . . . . . . . . . . . . . . . 46
14.1. Namespace Registration . . . . . . . . . . . . . . . . . . 46 14.1. Namespace Registration . . . . . . . . . . . . . . . . . . 46
15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 47 15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 46
16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 47 16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 46
16.1. Normative References . . . . . . . . . . . . . . . . . . . 47 16.1. Normative References . . . . . . . . . . . . . . . . . . . 46
16.2. Informative References . . . . . . . . . . . . . . . . . . 48 16.2. Informative References . . . . . . . . . . . . . . . . . . 48
Appendix A. Change History (to be removed prior to Appendix A. Change History (to be removed prior to
publication as an RFC) . . . . . . . . . . . . . . . 48 publication as an RFC) . . . . . . . . . . . . . . . 48
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 51 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 51
1. Introduction and Overview 1. Introduction and Overview
Address books containing contact information are a key component of Address books containing contact information are a key component of
personal information management tools, such as email, calendaring and personal information management tools, such as email, calendaring and
scheduling, and instant messaging clients. To date several protocols scheduling, and instant messaging clients. To date several protocols
skipping to change at page 18, line 18 skipping to change at page 18, line 18
Purpose: Identifies the URL of any WebDAV collections that contain Purpose: Identifies the URL of any WebDAV collections that contain
address book collections owned by the associated principal address book collections owned by the associated principal
resource. resource.
Protected: MAY be protected if the server has fixed locations in Protected: MAY be protected if the server has fixed locations in
which address books are created. which address books are created.
COPY/MOVE behavior: This property value MUST be preserved in COPY COPY/MOVE behavior: This property value MUST be preserved in COPY
and MOVE operations. and MOVE operations.
allprop behavior: SHOULD be returned by a PROPFIND DAV:allprop allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop
request. request.
Description: The CARDDAV:addressbook-home-set property is meant to Description: The CARDDAV:addressbook-home-set property is meant to
allow users to easily find the address book collections owned by allow users to easily find the address book collections owned by
the principal. Typically, users will group all the address book the principal. Typically, users will group all the address book
collections that they own under a common collection. This collections that they own under a common collection. This
property specifies the URL of collections that either are address property specifies the URL of collections that either are address
book collections or ordinary collections that have child or book collections or ordinary collections that have child or
descendant address book collections owned by the principal. descendant address book collections owned by the principal.
skipping to change at page 19, line 17 skipping to change at page 19, line 17
COPY/MOVE behavior: This property value MUST be preserved in COPY COPY/MOVE behavior: This property value MUST be preserved in COPY
and MOVE operations. and MOVE operations.
allprop behavior: SHOULD be returned by a PROPFIND DAV:allprop allprop behavior: SHOULD be returned by a PROPFIND DAV:allprop
request. request.
Description: The CARDDAV:principal-address property is meant to Description: The CARDDAV:principal-address property is meant to
allow users to easily find contact information for users allow users to easily find contact information for users
represented by principals on the system. This property specifies represented by principals on the system. This property specifies
the URL of the address object resource containing the the URL of the resource containing the corresponding contact
corresponding contact information. 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: Definition:
<!ELEMENT principal-address (DAV:href)> <!ELEMENT principal-address (DAV:href)>
Example: Example:
<C:principal-address xmlns:D="DAV:" <C:principal-address xmlns:D="DAV:"
xmlns:C="urn:ietf:params:xml:ns:carddav"> xmlns:C="urn:ietf:params:xml:ns:carddav">
<D:href>http://addressbook.example.com/system/cyrus.vcf< <D:href>http://addressbook.example.com/system/cyrus.vcf<
skipping to change at page 34, line 34 skipping to change at page 34, line 34
Clients may request a lock timeout period that is appropriate to the Clients may request a lock timeout period that is appropriate to the
use case. When the user explicitly decides to reserve a resource and use case. When the user explicitly decides to reserve a resource and
prevent other changes, a long timeout might be appropriate, but in prevent other changes, a long timeout might be appropriate, but in
cases when the client automatically decides to lock the resource the cases when the client automatically decides to lock the resource the
timeout should be short (and the client can always refresh the lock timeout should be short (and the client can always refresh the lock
should it need to). A short lock timeout means that if the client is should it need to). A short lock timeout means that if the client is
unable to remove the lock, the other address book users aren't unable to remove the lock, the other address book users aren't
prevented from making changes. prevented from making changes.
9.3. Finding Address Books 9.3. Client Configuration
Much of the time an address book client (or agent) will discover a When CardDAV clients need to be configured, the key piece of
new address book's location by being provided directly with the URL. information that they require is the principal-URL of the user whose
E.g. a user will type his or her own address book location into addressbook information is desired. Servers SHOULD support the DAV:
client configuration information, or cut and paste a URL from email current-user-principal-URL property as defined in [RFC5397] to give
into the address book application. The client need only confirm that clients a fast way to locate user principals.
the URL points to a resource which is an address book. The client
may also be able to browse WebDAV collections to find address book
collections.
The choice of HTTP URLs means that address object resources are Given support for SRV records (Section 11) and DAV:current-user-
backward compatible with existing software, but does have the principal-URL [RFC5397], users only need enter a user identifier,
disadvantage that existing software does not usually know to look at host name and password to configure their client. The client would
the OPTIONS response to that URL to determine what can be done with take the host name and do an SRV lookup to locate the CardDAV server,
it. This is somewhat of a barrier for WebDAV usage as well as with then execute an authenticated PROPFIND on the root / resource looking
CardDAV usage. This specification does not offer a way through this for the DAV:current-user-principal-URL property. The value returned
other than making the information available in the OPTIONS response gives the client direct access to the user's principal-URL and from
should this be requested. 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 For address book sharing use cases, one might wish to find the
address book belonging to another user. If the other user has an address book belonging to another user. If the other user has an
address book in the same repository, that address book can be found address book in the same repository, that address book can be found
by using the principal namespace required by WebDAV ACL support. by using the principal namespace required by WebDAV ACL support.
Because CardDAV requires servers to support WebDAV ACL [RFC3744]
including principal namespaces, and with the addition of the CARDDAV:
addressbook-home-set property, there are a couple options for CardDAV
clients to find one's own address book or another user's address
book.
In this case, a DAV:principal-match REPORT is used to find a named
property (the CARDDAV:addressbook-home-set) on the Principal-URL of
the current user. Using this, a WebDAV client can learn "who am I"
and "where are my address books". The REPORT request body looks like
this:
<?xml version="1.0" encoding="utf-8" ?>
<D:principal-match xmlns:D="DAV:">
<D:self/>
<D:prop>
<C:addressbook-home-set
xmlns:C="urn:ietf:params:xml:ns:carddav"/>
</D:prop>
</D:principal-match>
To find other users' address books, the DAV:principal-property-search To find other users' address books, the DAV:principal-property-search
REPORT can be used to filter on some properties and return others. REPORT can be used to filter on some properties and return others.
To search for an address book owned by a user named "Laurie", the To search for an address book owned by a user named "Laurie", the
REPORT request body would look like this: REPORT request body would look like this:
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<D:principal-property-search xmlns:D="DAV:"> <D:principal-property-search xmlns:D="DAV:">
<D:property-search> <D:property-search>
<D:prop> <D:prop>
<D:displayname/> <D:displayname/>
skipping to change at page 47, line 10 skipping to change at page 46, line 35
Registrant Contact: See the "Author's Address" section of this Registrant Contact: See the "Author's Address" section of this
document. document.
XML: None. Namespace URIs do not represent an XML specification. XML: None. Namespace URIs do not represent an XML specification.
15. Acknowledgments 15. Acknowledgments
Thanks go to Lisa Dusseault and Bernard Desruisseaux for their work Thanks go to Lisa Dusseault and Bernard Desruisseaux for their work
on CalDAV, on which CardDAV is heavily based. The following on CalDAV, on which CardDAV is heavily based. The following
individuals contributed their ideas and support for writing this individuals contributed their ideas and support for writing this
specification: Stefan Eissing, Arnaud Quillaud, Julian Reschke, Elias specification: Mike Douglass, Stefan Eissing, Helge Hess, Arnaud
Sinderson, Greg Stein, Wilfredo Sanchez. Quillaud, Julian Reschke, Elias Sinderson, Greg Stein, Wilfredo
Sanchez, and Simon Vaillancourt.
16. References 16. References
16.1. Normative References 16.1. Normative References
[I-D.ietf-vcarddav-vcardrev] [I-D.ietf-vcarddav-vcardrev]
Perreault, S. and P. Resnick, "vCard Format Perreault, S. and P. Resnick, "vCard Format
Specification", draft-ietf-vcarddav-vcardrev-05 (work in Specification", draft-ietf-vcarddav-vcardrev-06 (work in
progress), November 2008. progress), March 2009.
[I-D.ietf-vcarddav-webdav-mkcol] [I-D.ietf-vcarddav-webdav-mkcol]
Daboo, C., "Extended MKCOL for WebDAV", Daboo, C., "Extended MKCOL for WebDAV",
draft-ietf-vcarddav-webdav-mkcol-03 (work in progress), draft-ietf-vcarddav-webdav-mkcol-03 (work in progress),
February 2009. February 2009.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile", [RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile",
skipping to change at page 48, line 44 skipping to change at page 48, line 26
[RFC2244] Newman, C. and J. Myers, "ACAP -- Application [RFC2244] Newman, C. and J. Myers, "ACAP -- Application
Configuration Access Protocol", RFC 2244, November 1997. Configuration Access Protocol", RFC 2244, November 1997.
[RFC4511] Sermersheim, J., "Lightweight Directory Access Protocol [RFC4511] Sermersheim, J., "Lightweight Directory Access Protocol
(LDAP): The Protocol", RFC 4511, June 2006. (LDAP): The Protocol", RFC 4511, June 2006.
Appendix A. Change History (to be removed prior to publication as an Appendix A. Change History (to be removed prior to publication as an
RFC) RFC)
Changes from -04 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. 1. Removed mailing list discussion note from abstract.
Changes from -03 Changes in -04
1. Tweaked limit element text to not imply any formal ordering of 1. Tweaked limit element text to not imply any formal ordering of
results. results.
2. Changed prop-filter element to allow zero or more text-match 2. Changed prop-filter element to allow zero or more text-match
elements rather than zero or one. elements rather than zero or one.
3. Updated to RFC5397 reference. 3. Updated to RFC5397 reference.
4. Updated TLS reference to latest version RFC5246. 4. Updated TLS reference to latest version RFC5246.
5. Boiler plate update. 5. Boiler plate update.
Changes from -02 Changes in -03
1. Added limit element to addressbook-query. 1. Added limit element to addressbook-query.
2. Specified how a server signals that query results have been 2. Specified how a server signals that query results have been
truncated. truncated.
3. Minor stylistic changes. 3. Minor stylistic changes.
Changes from -01 Changes in -02
1. Added text to CARDDAV:prop and CARDDAV:prop-filter elements to 1. Added text to CARDDAV:prop and CARDDAV:prop-filter elements to
explain how vCard "group" prefix on property names is handled. explain how vCard "group" prefix on property names is handled.
Changes from -00 Changes in -01
1. Added section on SRV records. 1. Added section on SRV records.
Changes from draft-daboo-carddav-04 Changes in -00
1. Removed text describing other protocols. 1. Removed text describing other protocols.
2. Added comment about a new vcard spec being developed. 2. Added comment about a new vcard spec being developed.
3. Added SHOULD support for the DAV:current-user-principal-URL 3. Added SHOULD support for the DAV:current-user-principal-URL
property. property.
4. Added "anyof"/"allof" test attribute to query XML elements to 4. Added "anyof"/"allof" test attribute to query XML elements to
support simple or/and combinations of tests. support simple or/and combinations of tests.
Changes from -03 Changes in pre-04
1. Renamed addressbook-data to address-data for consistency. 1. Renamed addressbook-data to address-data for consistency.
2. Fixed address-data element definition. 2. Fixed address-data element definition.
Changes from -02 Changes in pre-03
1. Replaced MKADDRESSBOOK with extended MKCOL. 1. Replaced MKADDRESSBOOK with extended MKCOL.
2. Now require i;uncide-casemap as a supported collation and make it 2. Now require i;uncide-casemap as a supported collation and make it
the default. the default.
3. No longer require i;octet as a supported collation. 3. No longer require i;octet as a supported collation.
4. Allow different types of match operations via the "match-type" 4. Allow different types of match operations via the "match-type"
attribute on the "text-match" element. attribute on the "text-match" element.
skipping to change at page 50, line 30 skipping to change at page 50, line 23
6. WebDAV Level 3 now required. 6. WebDAV Level 3 now required.
7. TLS requirement text tweaked to match latest text approved by 7. TLS requirement text tweaked to match latest text approved by
IESG. IESG.
8. Added principal-address property to principal resources to allow 8. Added principal-address property to principal resources to allow
a vcard to be associated with a principal. a vcard to be associated with a principal.
9. XML definition clean-up. 9. XML definition clean-up.
Changes from -01 Changes in pre-02
1. Added commentary on SyncML. 1. Added commentary on SyncML.
2. Changed 'adbk' to 'addressbook'. 2. Changed 'adbk' to 'addressbook'.
3. Support for MKADDRESSBOOK is now a SHOULD. 3. Support for MKADDRESSBOOK is now a SHOULD.
4. Updated to RFC4790 reference. 4. Updated to RFC4790 reference.
5. Removed synchronization report. 5. Removed synchronization report.
skipping to change at page 51, line 14 skipping to change at page 51, line 7
10. Generalized the text so that vCard need not be the only format 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). supported by the server (i.e., allow xml version of vCard etc).
11. Renamed supported-addressbook-data to supported-address-data. 11. Renamed supported-addressbook-data to supported-address-data.
12. Renamed valid-addressbook-data to valid-address-data. 12. Renamed valid-addressbook-data to valid-address-data.
13. Now requires "i;unicasemao" collation. 13. Now requires "i;unicasemao" collation.
Changes from -00 Changes in pre-01
1. Fixed various incorrect references and typos. 1. Fixed various incorrect references and typos.
2. Major changes to sync with latest CalDAV spec behaviors. 2. Major changes to sync with latest CalDAV spec behaviors.
Author's Address Author's Address
Cyrus Daboo Cyrus Daboo
Apple Inc. Apple Inc.
1 Infinite Loop 1 Infinite Loop
 End of changes. 29 change blocks. 
75 lines changed or deleted 81 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/