Next message: Ron Jacobs: "RE: proposal for OPTIONS"
To: ietf-dav-versioning@w3.org
Message-ID: <OF7359A20F.C4F300F2-ON85256968.006212F3@ott.oti.com>
From: "Boris Bokowski/OTT/OTI" <Boris_Bokowski@oti.com>
Date: Thu, 28 Sep 2000 13:58:15 -0400
Subject: proposal for OPTIONS
Here is a proposal for spec'ing the OPTIONS request.
First of all, to attack the problem that OPTIONS, although applied to a
resource, should report capabilities of a server:
"The DAV response header for an OPTIONS request applies to a resource and
all its members. If a DAV response header contains one or more of
'core-versioning', 'workspace', 'versioned-collection',
'baselined-collection', 'activity', 'merge', the DAV response header for
its members MUST at least contain these as well."
Spec'd this way, it is sufficient to query the root of a resource subtree
in order to discover the versioning capabilities for all resources in the
subtree.
The list of OPTIONS responses should not include reports. As already
pointed out on the mailing list, the availability of reports can be
queried using DAV:available-report.
There are a couple of minor features which need not appear as OPTIONS
responses. They can be detected by the absence or presence of certain
properties:
initial value of DAV:auto-version
- if a server sets an initial value for DAV:auto-version, it MUST be the
same initial value for all newly created version selectors.
Reified version histories
- This is a protected property. If supported, the server MUST provide it
consistently.
- If reified version histories are supported, the server MUST supports
the DAV:version-history
property on versions, version selectors, and working resources.
- If reified version histories are not supported, the server MUST NOT
include the DAV:version-history
property on versions, version selectors, and working resources.
Controlling forking
- Controls forking on checkout and checkin.
- Also covers implicit checkout and checkin
- must support DAV:checkout-fork of versions, version selectors, and
working resources
- must support DAV:checkin-fork of versions, version selectors, and
working resources
- must support CHECKOUT specifying DAV:fork-ok in body
- must support CHECKIN specifying DAV:fork-ok in body
Mutable versions
- Controls whether versions are mutable
- the server MUST support (as in if-supported) CHECKIN specifying
DAV:overwrite in body
- the server MUST provide DAV:mutable for versions, version selectors,
and working resources
- for a single version history, all versions, version selectors, and
working resources must have
- the server chooses the initial boolean value for this property
- the property propagates from version selector to version on CHECKIN
[missing postcondition]
- the property propagates from version to version selector on CHECKOUT
[missing postcondition]
- the property can be changed at any time on versions, version selectors,
and working resources
- overwriting happens only if DAV:overwrite is specified in body and
DAV:mutable of the checked-out
version is "T"
The major advanced features are "workspace", "versioned-collection",
"baselined-collection", "activity", and "merge". If a server returns one
of these in an OPTIONS request, it promises the following:
Workspace
- Controls whether there are workspaces
- option name: "workspace"
- replaces: "workspace", "mkworkspace", "workspace-header",
"workspace-url-report"
- must support MKWORKSPACE method
- must support "Workspace" header as explained in 15.1
- must support VERSION-CONTROL when request-URL is member of workspace
- must support VERSION-CONTROL when request-URL is member of workspace and
activities are supported
- must support CHECKOUT when request-URL is member of workspace
- must support CHECKOUT when request-URL is member of workspace AND
activities are involved
- must support CHECKIN when request-URL is member of workspace
- must support CHECKIN when request-URL is member of workspace AND
activities are involved
- must support SET-TARGET when request-URL is member of workspace
- must support deleting of workspaces with DELETE
- must support DAV:repository-report as per 18.2
- must support DAV:workspace -url-report as per 18.3
- must support DAV:version-selector-url report as per 18.8
Versioned collections
- Controls whether collections can be versioned
- option name: "versioned-collection"
- must support VERSION-CONTROL when request-URL is a collection
- must support CHECKOUT when request-URL is a collection
- must support CHECKIN when request-URL is a collection
- must support SET-TARGET when request-URL is a collection
- N.B. may or may not support BASELINE-CONTROL when request-URL is a
collection
Baselines
- Controls whether baselines are supported
- option name: "baselined-collection"
- must support BASELINE-CONTROL method
- must provide DAV:baseline-selector property of collections
- must allow CHECKOUT, CHECKIN, and SET-TARGET on baseline selectors
- must provide resources of type DAV:baseline
- must provide DAV:version-set for all baselines
- must support SET-TARGET when request-URL is a baseline selector
- must support reports of type DAV:baselined-collection-report
- N.B. may or may not support VERSION-CONTROL when request-URL is a
collection
Activity
- Controls whether activities are supported
- option name: "activity"
- replaces: "activity", "mkactivity", "workspace-current-activity",
"subactivity"
- must support MKACTIVITY method
- must support additional VERSION-CONTROL, CHECKOUT, CHECKIN, and
SET-TARGET semantics
- must support DAV:activity-set property of versions, version selectors,
and working resources
- must support DAV:unreserved property of version selectors and working
resources
- must support DAV:current-activity-set of workspaces
- must support resources of type DAV:activity
- must support DAV:version-set property of activities
- must support DAV:subactivity-set property of activities
- must support DELETE when request-URL is activity
- must support VERSION-CONTROL when request-URL is member of workspace and
activities are supported
- must support CHECKOUT specifying DAV:activity-set in body
- must support CHECKOUT specifying DAV:unreserved in body
- must support CHECKOUT when request-URL is member of workspace AND
activities are involved
- must support CHECKIN when request-URL is member of workspace AND
activities are involved
- must support reports of type DAV:repository-report
- must support reports of type DAV:current-workspace-report
Merging
- Controls whether merging is supported
- option name: "merge"
- must support MERGE method
- must support DAV:merge-set of version selectors and working resources
- must support DAV:auto-merge-set of version selectors and working
resources
- must support reports of type DAV:merge-preview-report
- must support reports of type DAV:compare-report
-Boris.