Abstract
This specification describes a new XML object that can be retrieved from hosts to discover applications, features and limits for that host or domain.
Introduction
Any given host on a network may support a number of applications. Each will have limits or optional features. The advertising and discovery of applications, features and limits is often through the use of properties and headers. As the number of applications and features grows the amount of data and complexity of the requests grows.
Additionally, headers and properties don’t allow for caching mechanisms based on etags. A client has to fetch all the information and compare with its stored copies to determine if a application change has taken place.
This specification defines a new XML document type which can be retrieved from a host and is easily extended to allow the description of complex applications. The schema as described here only handles basic DAV applications. Other specifications will extend this specification to define elements for other DAV based applications.
DAV Server Information Object
1. Scope
This specification describes a new XML object that can be retrieved from hosts to discover applications, features and limits for that host or domain.
2. Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
IETF RFC 2119, S. BRADNER. Key words for use in RFCs to Indicate Requirement Levels. 1997. RFC Publisher. https://www.rfc-editor.org/info/rfc2119.
IETF RFC 2518, Y. GOLAND, E. WHITEHEAD, A. FAIZI, S. CARTER and D. JENSEN. HTTP Extensions for Distributed Authoring — WEBDAV. 1999. RFC Publisher. https://www.rfc-editor.org/info/rfc2518.
IETF RFC 3253, G. CLEMM, J. AMSDEN, T. ELLISON, C. KALER and J. WHITEHEAD. Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning). 2002. RFC Publisher. https://www.rfc-editor.org/info/rfc3253.
IETF RFC 3339, G. KLYNE and C. NEWMAN. Date and Time on the Internet: Timestamps. 2002. RFC Publisher. https://www.rfc-editor.org/info/rfc3339.
IETF RFC 3744, G. CLEMM, J. RESCHKE, E. SEDLAR and J. WHITEHEAD. Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol. 2004. RFC Publisher. https://www.rfc-editor.org/info/rfc3744.
IETF RFC 4331, B. KORVER and L. DUSSEAULT. Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections. 2006. RFC Publisher. https://www.rfc-editor.org/info/rfc4331.
IETF RFC 4791, C. DABOO, B. DESRUISSEAUX and L. DUSSEAULT. Calendaring Extensions to WebDAV (CalDAV). 2007. RFC Publisher. https://www.rfc-editor.org/info/rfc4791.
IETF RFC 4918, L. DUSSEAULT (ed.). HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV). 2007. RFC Publisher. https://www.rfc-editor.org/info/rfc4918.
IETF RFC 5323, S. REDDY, J. DAVIS and A. BABICH. Web Distributed Authoring and Versioning (WebDAV) SEARCH. 2008. RFC Publisher. https://www.rfc-editor.org/info/rfc5323.
IETF RFC 5689, C. DABOO. Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV). 2009. RFC Publisher. https://www.rfc-editor.org/info/rfc5689.
IETF RFC 5842, G. CLEMM, J. CRAWFORD and J. WHITEHEAD. Binding Extensions to Web Distributed Authoring and Versioning (WebDAV). 2010. RFC Publisher. https://www.rfc-editor.org/info/rfc5842.
IETF RFC 5988, M. NOTTINGHAM. Web Linking. 2010. RFC Publisher. https://www.rfc-editor.org/info/rfc5988.
IETF RFC 5995, J. RESCHKE. Using POST to Add Members to Web Distributed Authoring and Versioning (WebDAV) Collections. 2010. RFC Publisher. https://www.rfc-editor.org/info/rfc5995.
IETF RFC 6578, C. DABOO and A. QUILLAUD. Collection Synchronization for Web Distributed Authoring and Versioning (WebDAV). 2012. RFC Publisher. https://www.rfc-editor.org/info/rfc6578.
IETF RFC 6638, C. DABOO and B. DESRUISSEAUX. Scheduling Extensions to CalDAV. 2012. RFC Publisher. https://www.rfc-editor.org/info/rfc6638.
ISO 8601:2004, International Organization for Standardization. Data elements and interchange formats — Information interchange — Representation of dates and times. Third edition. 2004. Geneva. https://www.iso.org/standard/40874.html.
3. Terms and definitions
For the purposes of this document, the following terms and definitions apply.
3.1. Application
An application running on one or more hosts at the network application layer and above. The application may provide data storage, manipulation, presentation, communication or other capabilities. The application may use a well defined protocol and is often implemented with a client-server relationship.
A application will usually implement one or more features which may be defined by standard specifications. Applications and features may also be constrained by various limits.
Examples of applications are:
caldav
email
File servers
3.2. Feature
A feature is some functionality provided by a application. For example, a DAV based application may provide the versioning feature.
Applications need not support all features that are defined as an optional part of that application. Some features may depend on the authenticated state and/or the authorization of the authenticated principal.
Examples of features are:
DAV versioning
DAV access control
CalDAV scheduling
4. 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 IETF RFC 2119.
5. Server Information Document Use
A host will make the document available through one or more methods. Depending upon the endpoint and method of retrieval the retrieved document may describe one or more applications.
If a document provides information for more than one application it SHOULD contain information allowing clients to obtain information about each individual application only. This allows a client to determine what the actual limits and features are for the specific application.
5.1. Server Information Location and Retrieval
5.1.1. Server Information Retrieval
The document may be retrieved from the server by including the server-info-token header field with a value of “*” any request to the server.
The server MUST respond to such a request by including a LINK header field with a reltype of “server-info”, a token parameter with the current token value and the url being the location of the document.
Following that a GET may be executed by the client against that URL, specifying a content type in the ACCEPT header field of “application/server-info+xml”.
Clients SHOULD retrieve the document in the context of a session and applications SHOULD ensure the context is appropriate. Values in the returned document may differ depending on who is authenticated so a server SHOULD require authentication before returning server information for an authenticated application.
5.1.2. Server Information Synchronization
While server features may not change frequently it may be important for clients to react rapidly when server features or limits change. Polling for server feature changes is undesirable so this specification allows clients to check for such changes during normal operations.
Clients SHOULD include the server-info-token header field with the current stored value of the token from the document in requests to the server.
The server MUST add the link header field to the response when the tokens do not match.
5.1.2.1. Header Field: server-info-token
The server-info-token header field takes as a value the current value of the token element in the server-info document or the value “*”.
This header field may be included in a request at any time a client feels appropriate.
5.1.2.2. Header Field: link
The link header field is defined in IETF RFC 5988. The target IRI as defined by that specification will be the location of the server information document. The “reltype” parameter will have the value “server-info”.
Additionally, there will be a “token” parameter which has a quoted token as the value.
This header field may be included in a response at any time a server feels appropriate.
The link header field MUST be returned in response to:
An OPTIONS request where the server-info-token header is absent or it’s value does not match. * Any request with the server-info-token header field where the value of the header field does not math the current token value.
The link header field SHOULD be returned when a client:
Attempts to use an unsupported feature.
Misuses a feature according to the server info document.
Exceeds a limit defined in the document.
If the server returns a link header field as part of the response it is an indication to the client that it SHOULD fetch a new copy of the server information document.
The following is an example of a link header field — folded to fit on the page
Link: </dav/principals/.server-info>; rel="server-info";
token="7140903ee1b57d0752a7d8da774a398b10de5868"
6. Server Information Document Structure
This specification defines a new XML document type “server-info”. All XML elements in this specification are in the DAV name space.
6.1. Server Information server-info element
At the top level of the document is a “server-info” element which encloses a change token, an optional “features” element and an “applications” element:
<?xml version="1.0" encoding="utf-8"?>
<server-info xmlns="DAV">
<token>...</token>
<server>
<name>...</name>
<version>...</version>
</server>
<features>
...
</features>
<applications>
...
</applications>
</server-info>
If a “features” element appears inside the “server-info” element then the features apply to all applications.
6.2. Server Information server element
The optional “server” element appears once and contains a name and version for the server. The values for both those elements is server specific.
6.3. Server Information applications element
The “applications” element appears once and contains 0 or more “application” elements each of which provides information about a application.
NOTE do the applications have to be on the same host? I think not.
6.3.1. Server Information application element
The “application” element contains the name and information about the location of that application and how to obtain a application specific server-info document.
It may also contain a “features” element which lists features implemented by that application.
For example:
<applications>
<application>
<name>caldav</name>
<features>
<CALDAV:calendar-access />
<CS:sharing>
<CS:no-scheduling />
</CS:sharing>
</features>
</application>
</applications>
6.4. Server Information features element
The “features” element contains 0 or more elements each specifying a feature supported by that application.
The “features” element may appear within the “server-info” element — in which case it applies to all applications or it may appear inside a “application” element in which case it only applies to that application.
When a single application is specified the features named SHOULD be accessible for the same authentication and authorization level.
6.4.1. Server Information feature element
A feature is specified by an element defined in this document or by an element defined in the specification for that feature.
WebDAV feature elements correspond to, but are not exactly the same as, the elements returned in the DAV header field.
Some features have no corresponding DAV header field element. This may be because the feature is not available on all resources. The occurrence of a such a feature simply advertises the availability of that feature on some resources.
For an application supporting this specification, the absence of a feature means that this feature is NOT supported on any resource.
For example, a calendar application may return the following which specifies a global set of features:
<features>
<DAV:class-1 />
<DAV:class-2 />
<DAV:access-control />
<CALDAV:calendar-access />
<CALDAV:calendar-availability />
<CALDAV:calendar-auto-schedule />
</features>
7. XML Element Definitions
All elements defined in this section are in the “DAV” namespace unless otherwise specified.
7.1. server-info XML element
Name
server-info
Purpose
Contains information about a server.
Definition
<!ELEMENT server-info (token, server-instance-info?, features?, applications?) >
7.2. token XML element
Name
token
Purpose
Contains an opaque token which changes when the document changes.
Definition
<!ELEMENT token (#PCDATA) >
7.3. server-instance-info XML element
Name
server-instance-info
Purpose
Contains name and version information for a server.
Definition
<!ELEMENT server-instance-info (server-name*, server-version*,
server-link, server-contact) >
* product name
* product version
* product bug tracker link (or just link)
* system administrator contact ("mailto:", "tel:" an embedded vcard or a link to a vcard?)
* operating system info (string like the result of "uname -a" on POSIX systems)
7.4. name XML element
Name
name
Purpose
Within an application or feature element provides the registered name of that application or feature.
Within a server element the value of the name element is any text string.
Definition
<!ELEMENT name (#PCDATA) >
7.5. version XML element
Name
version
Purpose
Within a server element the value of the version element is any text string.
Definition
<!ELEMENT version (#PCDATA) >
7.6. applications XML element
Name
applications
Purpose
Contains information about all applications on a host.
Definition
<!ELEMENT applications (application*) >
7.7. application XML element
Name
application
Purpose
Contains information about a specific application on a host.
Definition
<!ELEMENT application (name, features) >
7.8. features XML element
Name
features
Purpose
Contains information about all application features on a host.
Definition
<!ELEMENT features ANY* >
8. WebDAV Features
Here we define the feature elements for features defined in the various DAV related specifications.
Specifications which extend this specification should define additions to this table. In addition, they may define the XML specification for that element.
Table 1
| Namespace | Name | Reference |
|---|---|---|
| DAV | class-1 | IETF RFC 4918, Section 18.1 |
| DAV | class-2 | IETF RFC 4918, Section 18.2 |
| DAV | class-3 | IETF RFC 4918, Section 18.3 |
| DAV | access-control | IETF RFC 3744, Section 7.2 |
| DAV | version-control | IETF RFC 3253, Section 3 |
| DAV | extended-mkcol | IETF RFC 5689, Section 3.1 |
| DAV | quota | IETF RFC 4331 |
| DAV | bind | IETF RFC 5842 |
| DAV | search | IETF RFC 5323 |
| DAV | sync-collection | IETF RFC 6578 |
| DAV | add-member | IETF RFC 5995 |
8.1. DAV class-1 feature XML element
Namespace
DAV
Name
class-1
DAV Header Name
1
Reference
Description
Class 1 compliant resource
Definition
<!ELEMENT class-1 >
8.2. DAV class-2 feature XML element
Namespace
DAV
Name
class-2
DAV Header Name
2
Reference
Description
Class 2 compliant resource
Definition
<!ELEMENT class-2 >
8.3. DAV class-3 feature XML element
Namespace
DAV
Name
class-3
DAV Header Name
3
Reference
Description
Class 3 compliant resource
Definition
<!ELEMENT class-3 >
8.4. DAV access control feature XML element
Namespace
DAV
Name
access-control
DAV Header Name
access-control
Reference
Description
WebDAV ACL
Definition
<!ELEMENT access-control >
8.5. DAV version control feature XML element
Namespace
DAV
Name
version-control
DAV Header Name
version-control
Reference
Description
WebDAV DeltaV
Definition
<!ELEMENT version-control >
8.6. DAV Extended mkcol feature XML element
Namespace
DAV
Name
extended-mkcol
DAV Header Name
extended-mkcol
Reference
Description
Extended mkcol
Definition
<!ELEMENT extended-mkcol >
8.7. DAV bind feature XML element
Namespace
DAV
Name
bind
DAV Header Name
bind
Reference
Description
Binding extensions
Definition
<!ELEMENT bind >
8.8. DAV search feature XML element
Namespace
DAV
Name
search
Reference
Description
Search extensions
Definition
<!ELEMENT search >
8.9. DAV quota feature XML element
Namespace
DAV
Name
quota
Reference
Description
DAV quotas. May not apply to all resources. Absence of this feature implies no support on any resource.
Definition
<!ELEMENT quota >
8.10. DAV Sync Collection feature XML element
Namespace
DAV
Name
sync-collection
Reference
Description
Collection synchronization report. May not apply to all resources. Absence of this feature implies no support on any resource.
Definition
<!ELEMENT sync-collection >
8.11. DAV Add Member feature XML element
Namespace
DAV
Name
add-member
Reference
Description
Using POST to add a member to a collection. May not apply to all resources. Absence of this feature implies no support on any resource.
Definition
<!ELEMENT add-member >
9. CalDAV Features
Here we define the feature elements for features defined in the various CalDAV related specifications.
All of these are under the CalDAV namespace:
urn:ietf:params:xml:ns:caldav
Table 2
| Name | Reference |
|---|---|
| calendar-access | IETF RFC 4791 |
| calendar-auto-schedule | IETF RFC 6638 |
| calendar-no-timezone | RFC ???? |
9.1. CalDAV calendar-access feature XML element
Namespace
urn:ietf:params:xml:ns:caldav
Name
calendar-access
Reference
Description
Calendar access
Definition
<!ELEMENT calendar-access >
9.2. CalDAV calendar-auto-schedule feature XML element
Namespace
urn:ietf:params:xml:ns:caldav
Name
calendar-auto-schedule
Reference
Description
CalDAV implicit scheduling
Definition
<!ELEMENT calendar-auto-schedule >
9.3. CalDAV calendar-no-timezone feature XML element
Namespace
urn:ietf:params:xml:ns:caldav
Name
calendar-no-timezone
Reference
Description
CalDAV implicit timezones
Definition
<!ELEMENT calendar-no-timezone >
11. Notes
Tag enabling synchronization
Document location (section 3)
server-info token in DAV header returned as part of OPTIONS response
Clients that see that and do not have a server-info document for that application should do a propfind to discover document href.
Authenticated v unauth
Clients may fetch the si doc in an unauth mode. When they auth they must recheck their token and refetch if appropriate.
Caching by intermediaries might be an issue Server info may vary by user-agent.
product name
product version
product bug tracker link (or just link)
system administrator contact (“mailto:”, “tel:” an embedded vcard or a link to a vcard?)
operating system info (string like the result of “uname -a” on POSIX systems)
Add something about rscale — calendar-rscale element
12. Security Considerations
TBD.
Something about not sending server name + version. Opaque version code.
13. IANA Considerations
13.1. MIME media type Registrations
Media Type
This section defines the MIME media type for use with the server information document.
Type name
application
Subtype name
server-info+xml
Required parameters
None
Optional parameters
charset as defined for application/xml in RFC 3023; per RFC 3023, use of the charset property parameter with the value “utf-8” is STRONGLY RECOMMENDED.
Encoding considerations
Same as encoding considerations of application/xml as specified in RFC 3023.
Security considerations
See previous section.
Interoperability considerations
This media type provides an alternative format for iCalendar data based on XML.
Published specification
This specification.
Additional information
Magic number(s)
None
File extension(s)
xml
Macintosh file type code(s)
None specified.
Person & email address to contact for further information
Intended usage
COMMON
Restrictions on usage
There are no restrictions on where this media type can be used.
Author
See the “Authors’ Addresses” section of this document.
Change controller
IETF
13.2. New Link reltype Registration
The link relation type “server-info” has been added to the Reference Types Registry defined in IETF RFC 5988, Section 6.2 with the following values:
Relation Name: server-info
Description: Provides the location of and current token for the server information document
Reference: This specification
14. Acknowledgments
This specification is a result of discussions that took place within the Calendaring and Scheduling Consortium’s CalDAV Technical Committee. The author thanks the participants of that group.