summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc5689.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc5689.txt')
-rw-r--r--doc/rfc/rfc5689.txt675
1 files changed, 675 insertions, 0 deletions
diff --git a/doc/rfc/rfc5689.txt b/doc/rfc/rfc5689.txt
new file mode 100644
index 0000000..bce3cfc
--- /dev/null
+++ b/doc/rfc/rfc5689.txt
@@ -0,0 +1,675 @@
+
+
+
+
+
+
+Network Working Group C. Daboo
+Request for Comments: 5689 Apple Inc.
+Updates: 4791, 4918 September 2009
+Category: Standards Track
+
+
+ Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV)
+
+Abstract
+
+ This specification extends the Web Distributed Authoring and
+ Versioning (WebDAV) MKCOL (Make Collection) method to allow
+ collections of arbitrary resourcetype to be created and to allow
+ properties to be set at the same time.
+
+Status of This Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (c) 2009 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ 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 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
+ 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
+
+
+
+
+
+Daboo Standards Track [Page 1]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+ 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Conventions Used in This Document . . . . . . . . . . . . . . 3
+ 3. WebDAV Extended MKCOL . . . . . . . . . . . . . . . . . . . . 4
+ 3.1. Extended MKCOL Support . . . . . . . . . . . . . . . . . . 5
+ 3.1.1. Example: Using OPTIONS for the Discovery of
+ Support for Extended MKCOL . . . . . . . . . . . . . . 5
+ 3.2. Status Codes . . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.3. Additional Precondition for Extended MKCOL . . . . . . . . 5
+ 3.4. Example: Successful Extended MKCOL Request . . . . . . . . 6
+ 3.5. Example: Unsuccessful Extended MKCOL Request . . . . . . . 6
+ 4. Using Extended MKCOL as an Alternative for MKxxx Methods . . . 8
+ 4.1. MKCALENDAR Alternative . . . . . . . . . . . . . . . . . . 8
+ 4.1.1. Example: Using MKCOL Instead of MKCALENDAR . . . . . . 8
+ 5. XML Element Definitions . . . . . . . . . . . . . . . . . . . 10
+ 5.1. mkcol XML Element . . . . . . . . . . . . . . . . . . . . 10
+ 5.2. mkcol-response XML Element . . . . . . . . . . . . . . . . 10
+ 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11
+ 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11
+ 8. Normative References . . . . . . . . . . . . . . . . . . . . . 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo Standards Track [Page 2]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+1. Introduction
+
+ WebDAV [RFC4918] defines the HTTP [RFC2616] method MKCOL. This
+ method is used to create WebDAV collections on the server. However,
+ several WebDAV-based specifications (e.g., CalDAV [RFC4791]) define
+ "special" collections -- ones that are identified by additional
+ values in the DAV:resourcetype property assigned to the collection
+ resource or by other means. These "special" collections are created
+ by new methods (e.g., MKCALENDAR). The addition of a new MKxxx
+ method for each new "special" collection adds to server complexity
+ and is detrimental to overall reliability due to the need to make
+ sure intermediaries are aware of these methods.
+
+ This specification defines an extension to the WebDAV MKCOL method
+ that adds a request body allowing a client to specify WebDAV
+ properties to be set on the newly created collection or resource. In
+ particular, the DAV:resourcetype property can be used to create a
+ "special" collection; alternatively, other properties can be used to
+ create a "special" resource. This avoids the need to invent new
+ MKxxx methods.
+
+2. Conventions Used in This Document
+
+ 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].
+
+ This document uses XML DTD fragments (Section 3.2 of
+ [W3C.REC-xml-20081126]) as a purely notational convention. WebDAV
+ request and response bodies cannot be validated by a DTD due to the
+ specific extensibility rules defined in Section 17 of [RFC4918] and
+ due to the fact that all XML elements defined by this specification
+ use the XML namespace name "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.
+
+
+
+
+
+
+Daboo Standards Track [Page 3]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+ When an XML element type in the "DAV:" namespace is referenced in
+ this document outside of the context of an XML fragment, the string
+ "DAV:" will be prefixed to the element type.
+
+ This document inherits, and sometimes extends, DTD productions from
+ Section 14 of [RFC4918].
+
+3. WebDAV Extended MKCOL
+
+ The WebDAV MKCOL request is extended to allow the inclusion of a
+ request body. The request body is an XML document containing a
+ single DAV:mkcol XML element as the root element. The Content-Type
+ request header MUST be set appropriately for an XML body (e.g., set
+ to "text/xml" or "application/xml"). XML-typed bodies for an MKCOL
+ request that do not have DAV:mkcol as the root element are reserved
+ for future usage.
+
+ One or more DAV:set XML elements may be included in the DAV:mkcol XML
+ element to allow setting properties on the collection as it is
+ created. In particular, to create a collection of a particular type,
+ the DAV:resourcetype XML element MUST be included in a DAV:set XML
+ element and MUST specify the expected resource type elements for the
+ new resource, which MUST include the DAV:collection element that
+ needs to be present for any WebDAV collection.
+
+ As per the PROPPATCH method (Section 9.2 of [RFC4918]), servers MUST
+ process any DAV:set instructions in document order (an exception to
+ the normal rule that ordering is irrelevant). If any one instruction
+ fails to execute successfully, all instructions MUST fail (i.e.,
+ either all succeed or all fail). Thus, if any error occurs during
+ processing, all executed instructions MUST be undone and a proper
+ error result returned. Failure to set a property value on the
+ collection MUST result in a failure of the overall MKCOL request --
+ i.e., the collection is not created.
+
+ The response to an extended MKCOL request MUST be an XML document
+ containing a single DAV:mkcol-response XML element, which MUST
+ contain DAV:propstat XML elements with the status of each property
+ when the request fails due to a failure to set one or more of the
+ properties specified in the request body. The server MAY return a
+ response body in the case where the request is successful, indicating
+ success for setting each property specified in the request body.
+ When an empty response body is returned with a success request status
+ code, the client can assume that all properties were set.
+
+ In all other respects, the behavior of the extended MKCOL request
+ follows that of the standard MKCOL request.
+
+
+
+
+Daboo Standards Track [Page 4]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+3.1. Extended MKCOL Support
+
+ A server supporting the features described in this document MUST
+ include "extended-mkcol" as a field in the DAV response header from
+ an OPTIONS request on any URI that supports use of the extended MKCOL
+ method.
+
+3.1.1. Example: Using OPTIONS for the Discovery of Support for Extended
+ MKCOL
+
+ >> 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, extended-mkcol
+ Date: Sat, 11 Nov 2006 09:32:12 GMT
+ Content-Length: 0
+
+3.2. Status Codes
+
+ As per Section 9.3.1 of [RFC4918].
+
+3.3. Additional Precondition for Extended MKCOL
+
+ WebDAV ([RFC4918], Section 16) defines preconditions and
+ postconditions for request behavior. This specification adds the
+ following precondition for the extended MKCOL request.
+
+ Name: valid-resourcetype
+
+ Namespace: DAV:
+
+ Use with: Typically 403 (Forbidden)
+
+ Purpose: (precondition) -- The server MUST support the specified
+ resourcetype value for the specified collection.
+
+
+
+
+
+
+
+
+
+Daboo Standards Track [Page 5]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+3.4. Example: Successful Extended MKCOL Request
+
+ This example shows how the extended MKCOL request is used to create a
+ collection of a fictitious type "special-resource". The response
+ body is empty as the request completed successfully.
+
+ >> Request <<
+
+ MKCOL /home/special/ HTTP/1.1
+ Host: special.example.com
+ Content-Type: application/xml; charset="utf-8"
+ Content-Length: xxxx
+
+ <?xml version="1.0" encoding="utf-8" ?>
+ <D:mkcol xmlns:D="DAV:"
+ xmlns:E="http://example.com/ns/">
+ <D:set>
+ <D:prop>
+ <D:resourcetype>
+ <D:collection/>
+ <E:special-resource/>
+ </D:resourcetype>
+ <D:displayname>Special Resource</D:displayname>
+ </D:prop>
+ </D:set>
+ </D:mkcol>
+
+ >> Response <<
+
+ HTTP/1.1 201 Created
+ Cache-Control: no-cache
+ Date: Sat, 11 Nov 2006 09:32:12 GMT
+
+3.5. Example: Unsuccessful Extended MKCOL Request
+
+ This example shows an attempt to use the extended MKCOL request to
+ create a collection of a fictitious type "special-resource", which is
+ not actually supported by the server. The response body shows that
+ an error occurred specifically with the DAV:resourcetype property.
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo Standards Track [Page 6]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+ >> Request <<
+
+ MKCOL /home/special/ HTTP/1.1
+ Host: special.example.com
+ Content-Type: application/xml; charset="utf-8"
+ Content-Length: xxxx
+
+ <?xml version="1.0" encoding="utf-8" ?>
+ <D:mkcol xmlns:D="DAV:"
+ xmlns:E="http://example.com/ns/">
+ <D:set>
+ <D:prop>
+ <D:resourcetype>
+ <D:collection/>
+ <E:special-resource/>
+ </D:resourcetype>
+ <D:displayname>Special Resource</D:displayname>
+ </D:prop>
+ </D:set>
+ </D:mkcol>
+
+ >> Response <<
+
+ HTTP/1.1 403 Forbidden
+ 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:">
+ <D:propstat>
+ <D:prop>
+ <D:resourcetype/>
+ </D:prop>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ <D:error><D:valid-resourcetype /></D:error>
+ <D:responsedescription>Resource type is not
+ supported by this server</D:responsedescription>
+ </D:propstat>
+ <D:propstat>
+ <D:prop>
+ <D:displayname/>
+ </D:prop>
+ <D:status>HTTP/1.1 424 Failed Dependency</D:status>
+ </D:propstat>
+ </D:mkcol-response>
+
+
+
+
+Daboo Standards Track [Page 7]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+4. Using Extended MKCOL as an Alternative for MKxxx Methods
+
+ One of the goals of this extension is to eliminate the need for other
+ extensions to define their own variant of MKCOL to create the special
+ collections they need. This extension can be used as an alternative
+ to existing MKxxx methods in other extensions as detailed below. If
+ a server supports this extension and the other extension listed, then
+ the server MUST support use of the extended MKCOL method to achieve
+ the same result as the MKxxx method of the other extension.
+
+4.1. MKCALENDAR Alternative
+
+ CalDAV defines the MKCALENDAR method to create a calendar collection
+ as well as to set properties during creation (Section 5.3.1 of
+ [RFC4791]).
+
+ The extended MKCOL method can be used instead by specifying both DAV:
+ collection and CALDAV:calendar-collection XML elements in the DAV:
+ resourcetype property, set during the extended MKCOL request.
+
+4.1.1. Example: Using MKCOL Instead of MKCALENDAR
+
+ The first example below shows an MKCALENDAR request containing a
+ CALDAV:mkcalendar XML element in the request body and returning a
+ CALDAV:mkcalendar-response XML element in the response body.
+
+ >> MKCALENDAR Request <<
+
+ MKCALENDAR /home/lisa/calendars/events/ HTTP/1.1
+ Host: calendar.example.com
+ Content-Type: application/xml; charset="utf-8"
+ Content-Length: xxxx
+
+ <?xml version="1.0" encoding="utf-8" ?>
+ <C:mkcalendar xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:set>
+ <D:prop>
+ <D:displayname>Lisa's Events</D:displayname>
+ </D:prop>
+ </D:set>
+ </C:mkcalendar>
+
+
+
+
+
+
+
+
+
+Daboo Standards Track [Page 8]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+ >> MKCALENDAR 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" ?>
+ <C:mkcalendar-response xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:propstat>
+ <D:prop>
+ <D:displayname/>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:propstat>
+ </C:mkcalendar-response>
+
+ The second example shows the equivalent extended MKCOL request with
+ the same request and response XML elements.
+
+ >> MKCOL Request <<
+
+ MKCOL /home/lisa/calendars/events/ HTTP/1.1
+ Host: calendar.example.com
+ Content-Type: application/xml; charset="utf-8"
+ Content-Length: xxxx
+
+ <?xml version="1.0" encoding="utf-8" ?>
+ <D:mkcol xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:set>
+ <D:prop>
+ <D:resourcetype>
+ <D:collection/>
+ <C:calendar/>
+ </D:resourcetype>
+ <D:displayname>Lisa's Events</D:displayname>
+ </D:prop>
+ </D:set>
+ </D:mkcol>
+
+
+
+
+
+
+
+
+
+Daboo Standards Track [Page 9]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+ >> MKCOL 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:caldav">
+ <D:propstat>
+ <D:prop>
+ <D:resourcetype/>
+ <D:displayname/>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:propstat>
+ </D:mkcol-response>
+
+5. XML Element Definitions
+
+5.1. mkcol XML Element
+
+ Name: mkcol
+
+ Namespace: DAV:
+
+ Purpose: Used in a request to specify properties to be set in an
+ extended MKCOL request, as well as any additional information
+ needed when creating the resource.
+
+ Description: This XML element is a container for the information
+ required to modify the properties on a collection resource as it
+ is created in an extended MKCOL request.
+
+ Definition:
+
+ <!ELEMENT mkcol (set+)>
+
+5.2. mkcol-response XML Element
+
+ Name: mkcol-response
+
+ Namespace: DAV:
+
+
+
+
+
+
+Daboo Standards Track [Page 10]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+ Purpose: Used in a response to indicate the status of properties
+ that were set or failed to be set during an extended MKCOL
+ request.
+
+ Description: This XML element is a container for the information
+ returned about a resource that has been created in an extended
+ MKCOL request.
+
+ Definition:
+
+ <!ELEMENT mkcol-response (propstat+)>
+
+6. Security Considerations
+
+ This extension does not introduce any new security concerns beyond
+ those already described in HTTP [RFC2616] and WebDAV [RFC4918].
+
+7. Acknowledgments
+
+ Thanks to Bernard Desruisseaux, Mike Douglass, Alexey Melnikov,
+ Julian Reschke, and Simon Vaillancourt.
+
+
+8. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [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.
+
+ [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
+ "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
+ March 2007.
+
+ [RFC4918] Dusseault, L., "HTTP Extensions for Web Distributed
+ Authoring and Versioning (WebDAV)", RFC 4918, June 2007.
+
+ [W3C.REC-xml-20081126]
+ Maler, E., Yergeau, F., Paoli, J., Bray, T., and C.
+ Sperberg-McQueen, "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>.
+
+
+
+
+
+
+Daboo Standards Track [Page 11]
+
+RFC 5689 Extended MKCOL for WebDAV September 2009
+
+
+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 12]
+