Method: VERSION-CONTROL
  Preconditions:
    (DAV:cannot-add-to-existing-history): If the DAV:version-control request body element contains a DAV:version element, the request-URL MUST NOT identify a resource.
    (DAV:must-be-version): The DAV:href of the DAV:version element MUST identify a version.
    (DAV:one-version-controlled-resource-per-history-per-workspace): If the DAV:version-control request body specifies a version, and if the request-URL is a member of a workspace, then there MUST NOT already be a version-controlled member of that workspace whose DAV:checked-in or DAV:checked-out property identifies any version from the version history of the version specified in the request body. 
    (DAV:cannot-modify-checked-in-parent): If the parent of the request-URL is a checked-in version-controlled collection, the request MUST fail unless DAV:auto-version semantics will automatically check out that version-controlled collection.
  Postconditons:
    (DAV:put-under-version-control): If the request-URL identified a versionable resource at the time of the request, the request MUST have created a new version history and MUST have created a new version resource in that version history.  The resource MUST have a DAV:checked-in property that identifies the new version.  The content, dead properties, and DAV:resourcetype of the new version MUST be the same as those of the resource.  Note that an implementation can choose to locate the version history and version resources anywhere that it wishes.  In particular, it could locate them on the same host and server as the version-controlled resource, on a different virtual host maintained by the same server, on the same host maintained by a different server, or on a different host maintained by a different server.
    (DAV:must-not-change-existing-checked-in-out): If the request-URL identified a resource already under version control at the time of the request, the request MUST NOT change the DAV:checked-in or DAV:checked-out property of that version-controlled resource.
    (DAV:new-version-history): If the request created a new version history, the request MUST have allocated a new server-defined URL for that version history that MUST NOT have previously identified any other resource, and MUST NOT ever identify a resource other than this version history.
    (DAV:new-version-controlled-resource): If the request-URL did NOT identify a resource, a new version-controlled resource exists at the request-URL whose content and dead properties are initialized by those of the version in the request body, and whose DAV:checked-in property identifies that version.
    (DAV:new-version-controlled-collection): If the request body identified a collection version, the collection at the request-URL MUST contain a version-controlled internal member for each DAV:version-controlled-binding specified in the DAV:version-controlled-binding-set of the collection version, where the name and DAV:version-history of the internal member MUST be the DAV:binding-name and the DAV:version-history specified by the DAV:version-controlled-binding.   If the internal member is a member of a workspace, and there is another member of the workspace for the same version history, those two members MUST identify the same version-controlled resource; otherwise, a VERSION-CONTROL request with a server selected version of the version history MUST have been applied to the URL for that internal member.

Method: REPORT
  Preconditions:
    (DAV:supported-report): The specified report MUST be supported by the resource identified by the request-URL.
    (DAV:acceptable-depth): A server MAY reject a non-zero Depth request that would match more resources than the server is willing to handle in a single request. 
  Postconditions:
    (DAV:no-modification): The REPORT method MUST NOT have changed the content or dead properties of any resource.

Method: REPORT (DAV:locate-by-history)
  Preconditions:
    (DAV:must-be-version-history): Each member of the DAV:version-history-set element in the request body MUST identify a version history resource.

Method: REPORT (DAV:compare-baseline)
  Preconditions:
    (DAV:must-be-baseline): The DAV:href in the request body MUST identify a baseline.
    (DAV:baselines-from-same-history): A server MAY require that the baselines being compared be from the same baseline history.

Method: REPORT (DAV:latest-activity-version)
  Preconditions:
    (DAV:must-be-activity): The DAV:href in the request body MUST identify an activity.

Method: PUT
  Preconditions:
    (DAV:cannot-modify-version-controlled-content): If the request-URL identifies a resource with a DAV:checked-in property, the request MUST fail unless DAV:auto-version semantics will automatically check out the resource.
    (DAV:cannot-modify-version): If the request-URL identifies a version, the request MUST fail.
  Postconditions:
    (DAV:auto-checkout): If the resource was a checked-in version-controlled resource whose DAV:auto-version property indicates it should be automatically checked out but not automatically checked in for a modification request, then the server MUST have automatically checked out the resource prior to executing the request.  In particular, the value of the DAV:checked-out property of the resource MUST be that of the DAV:checked-in property prior to the request, the DAV:checked-in property MUST have been removed, and the DAV:predecessor-set property MUST be initialized to be the same as the DAV:checked-out property.  If any part of the checkout/update sequence failed, the status from the failed part of the request MUST be returned, and the server state preceding the request sequence MUST be restored.
    (DAV:auto-checkout-checkin): If the resource was a checked-in version-controlled resource whose DAV:auto-version property indicates it should be automatically checked out and automatically checked in for a modification request, then the server MUST have automatically checked out the resource prior to executing the request and automatically checked it in after the request.  In particular, the DAV:checked-in property of the resource MUST identify a new version whose content and dead properties are the same as those of the resource.  The DAV:predecessor-set of the new version MUST identify the version identified by the DAV:checked-in property prior to the request.  If any part of the checkout/update/checkin sequence failed, the status from the failed part of the request MUST be returned, and the server state preceding the request sequence MUST be restored.

Method: PROPFIND
  Preconditions:
    (DAV:supported-live-property): If the request attempts to access a property defined by this document, the semantics of that property MUST be supported by the server.

Method: PROPPATCH
  Preconditions:
    (DAV:cannot-modify-version-controlled-property): If the request attempts to modify a dead property, same semantics as PUT (see Section 3.10).
    (DAV:cannot-modify-version): If the request attempts to modify a dead property, same semantics as PUT (see Section 3.10).
    (DAV:cannot-modify-protected-property): An attempt to modify a property defined by this document as being protected for that kind of resource MUST fail.
    (DAV:supported-live-property): An attempt to modify a property defined by this document whose semantics are not enforced by the server MUST fail.  This helps ensure that a client will be notified when it is trying to use a property whose semantics are not supported by the server.
  Postconditions:
    (DAV:auto-checkout): If the request modified a dead property, same semantics as PUT (see Section 3.10).
    (DAV:auto-checkout-checkin): If the request modified a dead property, same semantics as PUT (see Section 3.10).

Method: DELETE
  Preconditions:
    (DAV:no-version-delete): A server MAY fail an attempt to DELETE a version.
    (DAV:cannot-modify-checked-in-parent): If the request-URL identifies a version-controlled resource, the DELETE MUST fail when the collection containing the version-controlled resource is a checked-in version-controlled collection, unless DAV:auto-version semantics will automatically check out the version-controlled collection.
  Postconditions:
    (DAV:update-predecessor-set): If a version was deleted, the server MUST have replaced any reference to that version in a DAV:predecessor-set by a copy of the DAV:predecessor-set of the deleted version.
    (DAV:delete-version-set): If the request deleted a version history, the request MUST have deleted all versions in the DAV:version-set of that version history, and MUST have satisfied the postconditions for version deletion (see Section 3.13).
    (DAV:version-history-has-root): If the request deleted the root version of a version history, the request MUST have updated the DAV:root-version of the version history to refer to another version that is an ancestor of all other remaining versions in that version history.  A result of this postcondition is that every version history will have at least one version, and the only way to delete all versions is to delete the version history resource.
    (DAV:delete-workspace-members): If a workspace is deleted, any resource that identifies that workspace in its DAV:workspace property MUST be deleted.
    (DAV:delete-version-reference): If a version is deleted, any reference to that version in a DAV:merge-set or DAV:auto-merge-set property MUST be removed.
    (DAV:delete-activity-reference): If an activity is deleted, any reference to that activity in a DAV:activity-set, DAV:subactivity-set, or DAV:current-activity-set MUST be removed.
    (DAV:delete-working-collection-binding): If the request-URL identifies an internal member of a working collection that is a version history resource, the binding to the version history is removed from the working collection, but the version history itself is not deleted, and is still accessible from its server-assigned URL and from all other working collections that have bindings to that version history resource.

Method: COPY
  Preconditions:
    (*** all-off-version-control ***): If the request creates a new resource that is automatically placed under version control, all preconditions for VERSION-CONTROL apply to the request.
    (DAV:cannot-copy-history): If the request-URL identifies a version history, the request MUST fail.  In order to create another version history whose versions have the same content and dead properties, the appropriate sequence of VERSION-CONTROL, CHECKOUT, PUT, PROPPATCH, and CHECKIN requests must be made.
    (DAV:cannot-copy-collection-version): If the source of the request is a collection version, the request MUST fail.
  Postconditions:
    (DAV:must-not-copy-versioning-property): A property defined by this document MUST NOT have been copied to the new resource created by this request, but instead that property of the new resource MUST have the default initial value it would have had if the new resource had been created by a non-versioning method such as PUT or a MKCOL.
    (DAV:auto-checkout): If the destination is a version-controlled resource, same semantics as PUT (see Section 3.10).
    (DAV:auto-checkout-checkin): If the destination is a version-controlled resource, same semantics as PUT (see Section 3.10).
    (DAV:copy-creates-new-resource): If the source of a COPY is a version-controlled resource or version, and if there is no resource at the destination of the COPY, then the COPY creates a new non-version-controlled resource at the destination of the COPY.  The new resource MAY automatically be put under version control, but the resulting version-controlled resource MUST be associated with a new version history created for that new version-controlled resource, and all postconditions for VERSION-CONTROL apply to the request.
    (DAV:copy-creates-new-resource): The result of copying a working resource is a new non-version-controlled resource at the destination of the COPY.  The new resource MAY automatically be put under version control, but the resulting version-controlled resource MUST be associated with a new version history created for that new version-controlled resource.  
    (*** all-of-baseline-control ***): If the request creates a new collection at the Destination, and a server automatically puts a newly created collection under baseline control, all postconditions for BASELINE-CONTROL apply to the COPY.

Method: MOVE
  Preconditions:
    (DAV:cannot-rename-version): If the request-URL identifies a version, the request MUST fail.
    (DAV:cannot-rename-history): If the request-URL identifies a version history, the request MUST fail.
    (DAV:cannot-rename-working-resource): If the request-URL identifies a working resource, the request MUST fail.
    (DAV:cannot-modify-checked-in-parent): If the source of the request is a version-controlled resource, the request MUST fail when the collection containing the source is a checked-in version-controlled collection, unless DAV:auto-version semantics will automatically check out that version-controlled collection.
    (DAV:cannot-modify-destination-checked-in-parent): If the source of the request is a version-controlled resource, the request MUST fail when the collection containing the destination is a checked-in version-controlled collection, unless DAV:auto-version semantics will automatically check out that version-controlled collection.
  Postconditions:
    (DAV:preserve-versioning-properties): When a resource is moved from a source URL to a destination URL, a property defined by this document MUST have the same value at the destination URL as it had at the source URL.
    (DAV:workspace-member-moved): If the request-URL did not identify a workspace, the DAV:workspace of the destination MUST have been updated to have the same value as the DAV:workspace of the parent collection of the destination.
    (DAV:workspace-moved): If the request-URL identified a workspace, any reference to that workspace in a DAV:workspace property MUST have been updated to refer to the new location of that workspace.
    (DAV:update-auto-update): If the request-URL identified a version-controlled resource, any DAV:auto-update properties that identified that version-controlled resource MUST have been updated to contain the new location of that version-controlled resource.
    (DAV:update-checked-out-reference): If a checked-out resource is moved, any reference to that resource in a DAV:activity-checkout-set property MUST be updated to refer to the new location of that resource.
    (DAV:update-activity-reference): If the request-URL identifies an activity, any reference to that activity in a DAV:activity-set, DAV:subactivity-set, or DAV:current-activity-set MUST be updated to refer to the new location of that activity.
    (DAV:update-workspace-reference): If the request-URL identifies a workspace, any reference to that workspace in a DAV:current-workspace-set property MUST be updated to refer to the new location of that workspace.

Method: UNLOCK
  Preconditions:
    (DAV:version-history-is-tree): If the request-URL identifies a checked-out version-controlled resource that will be automatically checked in when the lock is removed, then the versions identified by the DAV:predecessor-set of the checked-out resource MUST be descendants of the root version of the version history for the DAV:checked-out version.
  Postconditions:
    (DAV:auto-checkin): If the request-URL identified a checked-out version-controlled resource that had been automatically checked out because of its DAV:auto-version property, the request MUST have created a new version in the version history of the DAV:checked-out version.  The request MUST have allocated a URL for the version that MUST NOT have previously identified any other resource, and MUST NOT ever identify a resource other than this version.  The content, dead properties, DAV:resourcetype, and DAV:predecessor-set of the new version MUST be copied from the checked-out resource.  The DAV:version-name of the new version MUST be set to a server-defined value distinct from all other DAV:version-name values of other versions in the same version history.  The request MUST have removed the DAV:checked-out property of the version-controlled resource, and MUST have added a DAV:checked-in property that identifies the new version.

Method: CHECKOUT (applied to a version-controlled resource)
  Preconditions:
    (DAV:must-be-checked-in): If a version-controlled resource is being checked out, it MUST have a non-empty DAV:checked-in property.
    (DAV:checkout-of-version-with-descendant-is-forbidden): If the DAV:checkout-fork property of the version being checked out is DAV:forbidden, the request MUST fail if a version identifies that version in its DAV:predecessor-set.
    (DAV:checkout-of-version-with-descendant-is-discouraged): If the DAV:checkout-fork property of the version being checked out is DAV:discouraged, the request MUST fail if a version identifies that version in its DAV:predecessor-set unless DAV:fork-ok is specified in the request body.
    (DAV:checkout-of-checked-out-version-is-forbidden): If the DAV:checkout-fork property of the version being checked out is DAV:forbidden, the request MUST fail if a checked-out resource identifies that version in its DAV:checked-out property.
    (DAV:checkout-of-checked-out-version-is-discouraged): If the DAV:checkout-fork property of the version being checked out is DAV:discouraged, the request MUST fail if a checked-out resource identifies that version in its DAV:checked-out property unless DAV:fork-ok is specified in the request body.
    (DAV:must-not-update-baseline-collection): If the request-URL identifies a member of the configuration rooted at the DAV:baseline-collection of a baseline, the request MUST fail.
    (DAV:one-checkout-per-activity-per-history): If there is a request activity set, unless DAV:unreserved is specified, another checkout from a version of that version history MUST NOT select an activity in that activity set.
    (DAV:linear-activity): If there is a request activity set, unless DAV:unreserved is specified, the selected version MUST be a descendant of all other versions of that version history that select that activity. 
  Postconditions:
    (DAV:is-checked-out): The checked-out resource MUST have a DAV:checked-out property that identifies the DAV:checked-in version preceding the checkout.  The version-controlled resource MUST NOT have a DAV:checked-in property.
    (DAV:initialize-predecessor-set): The DAV:predecessor-set property of the checked-out resource MUST be initialized to be the DAV:checked-out version.
    (DAV:initialize-activity-set): The DAV:activity-set of the checked-out resource is set as follows:- If DAV:new is specified as the DAV:activity-set in the request body, then a new activity created by the server is used.- Otherwise, if activities are specified in the request body, then those activities are used.- Otherwise, if the version-controlled resource is a member of a workspace and the DAV:current-activity-set of the workspace is set, then those activities are used.- Otherwise, the DAV:activity-set of the DAV:checked-out version is used. 
    (DAV:initialize-unreserved): If DAV:unreserved was specified in the request body, then the DAV:unreserved property of the checked-out resource MUST be "true".
    (DAV:initialize-version-history-bindings): If the request has been applied to a collection version, the new working collection MUST be initialized to contain a binding to each of the history resources identified in the DAV:version-controlled-binding-set of that collection version.  The binding name MUST be the DAV:binding-name specified in the DAV:version-controlled-binding-set of that collection version.

Method: CHECKOUT (applied to a version)
  Preconditions:
    (DAV:checkout-of-version-with-descendant-is-forbidden): See Section 4.3.
    (DAV:checkout-of-version-with-descendant-is-discouraged): See Section 4.3.
    (DAV:checkout-of-checked-out-version-is-forbidden): See Section 4.3.
    (DAV:checkout-of-checked-out-version-is-discouraged): See Section 4.3.
  Postconditions:
    (DAV:create-working-resource): If the request-URL identified a version, the Location response header MUST contain the URL of a new working resource.  The DAV:checked-out property and DAV:predecessor-set property of the new working resource MUST identify the version that was checked out.  The content, dead properties, and DAV:resourcetype property of the working resource MUST be copied from the checked out version.  The DAV:auto-update property of the working resource MUST NOT exist.
    (DAV:create-working-resource-from-checked-in-version): If the request-URL identified a version-controlled resource, and DAV:apply-to-version is specified in the request body, the CHECKOUT is applied to the DAV:checked-in version of the version-controlled resource, and not the version-controlled resource itself.  A new working resource is created and the version-controlled resource remains checked-in.  The DAV:auto-update property of the working resource MUST identify the version-controlled resource.

Method: CHECKIN (applied to a version-controlled resource)
  Preconditions:
    (DAV:must-be-checked-out): The request-URL MUST identify a resource with a non-empty DAV:checked-out property.
    (DAV:version-history-is-tree) The versions identified by the DAV:predecessor-set of the checked-out resource MUST be descendants of the root version of the version history for the DAV:checked-out version.
    (DAV:checkin-fork-forbidden): A CHECKIN request MUST fail if it would cause a version whose DAV:checkin-fork is DAV:forbidden to appear in the DAV:predecessor-set of more than one version.
    (DAV:checkin-fork-discouraged): A CHECKIN request MUST fail if it would cause a version whose DAV:checkin-fork is DAV:discouraged to appear in the DAV:predecessor-set of more than one version, unless DAV:fork-ok is specified in the request body.
    (DAV:merge-must-be-complete): The DAV:merge-set and DAV:auto-merge-set of the checked-out resource MUST be empty or not exist.
    (DAV:no-checked-out-baseline-controlled-collection-members): If the request-URL identifies a version-controlled configuration, all version-controlled members of the DAV:baseline-controlled-collection of the version-controlled configuration MUST be checked-in.
    (DAV:one-version-per-history-per-baseline): If the request-URL identifies a version-controlled configuration, the set of versions selected by that version-controlled configuration MUST contain at most one version from any version history, where a version is selected by a version-controlled configuration if the version is identified by the DAV:checked-in property of any member of the configuration rooted at the DAV:baseline-controlled collection of that version-controlled configuration, or is identified by the DAV:checked-in property of any member of the configuration rooted at the DAV:baseline-collection of any subbaseline of that version-controlled configuration.
    (DAV:cannot-modify-version-controlled-configuration): If the request-URL identifies a version-controlled member of a baseline-controlled collection whose version-controlled configuration is checked-in, the request MUST fail unless the DAV:auto-version property of the version-controlled configuration will automatically check out that version-controlled configuration when it is modified.
    (DAV:linear-activity): Any version which is in the version history of the checked-out resource and whose DAV:activity-set identifies an activity from the DAV:activity-set of the checked-out resource MUST be an ancestor of the checked-out resource. 
    (DAV:atomic-activity-checkin): If the request-URL identifies an activity, the server MAY fail the request if any of the checked-out resources in the DAV:activity-checkout-set of either that activity or any subactivity of that activity cannot be checked in.
  Postconditions:
    (DAV:create-version): The request MUST have created a new version in the version history of the DAV:checked-out version.  The request MUST have allocated a distinct new URL for the new version, and that URL MUST NOT ever identify any resource other than that version. The URL for the new version MUST be returned in a Location response header.
    (DAV:initialize-version-content-and-properties): The content, dead properties, DAV:resourcetype, and DAV:predecessor-set of the new version MUST be copied from the checked-out resource.  The DAV:version-name of the new version MUST be set to a server-defined value distinct from all other DAV:version-name values of other versions in the same version history.
    (DAV:checked-in): If the request-URL identifies a version-controlled resource and DAV:keep-checked-out is not specified in the request body, the DAV:checked-out property of the version-controlled resource MUST have been removed and a DAV:checked-in property that identifies the new version MUST have been added.
    (DAV:keep-checked-out): If DAV:keep-checked-out is specified in the request body, the DAV:checked-out property of the checked-out resource MUST have been updated to identify the new version.
    (DAV:add-to-history): A URL for the new version resource MUST have been added to the DAV:version-set of the version history of the DAV:checked-out version.
    (DAV:create-baseline-collection): If the request-URL identifies a version-controlled configuration, the DAV:baseline-collection of the new baseline identifies a collection whose members have the same relative name and DAV:checked-in version as the members of the DAV:baseline-controlled-collection of the version-controlled configuration at the time of the request.
    (DAV:modify-configuration): If the request-URL identifies a version-controlled member of a baseline-controlled collection, this is a modification to the version-controlled configuration of that baseline-controlled collection, and standard auto-versioning semantics apply.
    (DAV:initialize-activity-set): The DAV:activity-set of the new version MUST have been initialized to be the same as the DAV:activity-set of the checked-out resource. 
    (DAV:activity-checkin): If the request-URL identified an activity, the server MUST have applied the CHECKIN request to each checked-out resource in the DAV:activity-checkout-set of both that activity and any subactivity of that activity.
    (DAV:initialize-version-controlled-bindings): If the request-URL identified a version-controlled collection, then the DAV:version-controlled-binding-set of the new collection version MUST contain a DAV:version-controlled-binding that identifies the binding name and version history for each version-controlled binding of the version-controlled collection.
    (DAV:version-control-working-collection-members): If the request-URL identified a working collection, a VERSION-CONTROL request MUST have been automatically applied to every non-version-controlled member of the working collection, and each non-version-controlled member MUST have been replaced by its newly created version history.  If a working collection member was a non-version-controlled collection, every member of the non-version-controlled collection MUST have been placed under version control before the non-version-controlled collection was placed under version control.  The DAV:version-controlled-binding-set of the new collection version MUST contain a DAV:version-controlled-binding that identifies the binding name and the version history URL for each member of the working collection.

Method: CHECKIN (applied to a working resource)
  Preconditions:
    (DAV:must-be-checked-out): See Section 4.4.
    (DAV:version-history-is-tree) See Section 4.4.
    (DAV:checkin-fork-forbidden): See Section 4.4.
    (DAV:checkin-fork-discouraged): See Section 4.4.
    (DAV:no-overwrite-by-auto-update): If the DAV:auto-update property for the checked-out resource identifies a version-controlled resource, at least one of the versions identified by the DAV:predecessor-set property of the checked-out resource MUST identify a version that is either the same as or a descendant of the version identified by the DAV:checked-in property of that version-controlled resource.
  Postconditions:
    (DAV:create-version): See Section 4.4.
    (DAV:initialize-version-content-and-properties): See Section 4.4.
    (DAV:auto-update): If the DAV:auto-update property of the checked-out resource identified a version-controlled resource, an UPDATE request with the new version MUST have been applied to that version-controlled resource.
    (DAV:delete-working-resource): If the request-URL identifies a working resource and if DAV:keep-checked-out is not specified in the request body, the working resource is deleted.

Method: UNCHECKOUT
  Preconditions:
    (DAV:must-be-checked-out-version-controlled-resource): The request-URL MUST identify a version-controlled resource with a non-empty DAV:checked-out property.
  Postconditions:
    (DAV:cancel-checked-out): The value of the DAV:checked-in property is that of the DAV:checked-out property prior to the request, and the DAV:checked-out property has been removed.
    (DAV:restore-content-and-dead-properties): The content and dead properties of the version-controlled resource are copies of its DAV:checked-in version.
    (DAV:update-version-controlled-collection-members): If the request modified the DAV:checked-in version of a version-controlled collection, then the version-controlled members of that version-controlled collection MUST have been updated.  In particular:- A version-controlled internal member MUST have been deleted if its version history is not identified by the DAV:version-controlled-binding-set of the new DAV:checked-in version.- A version-controlled internal member for a given version history MUST have been renamed if its binding name differs from the DAV:binding-name for that version history in the DAV:version-controlled-binding-set of the new DAV:checked-in version.- A new version-controlled internal member MUST have been created when a version history is identified by the DAV:version-controlled-binding-set of the DAV:checked-in version, but there was no member of the version-controlled collection for that version history. If a new version-controlled member is in a workspace that already has a version-controlled resource for that version history, then the new version-controlled member MUST be just a binding (i.e. another name for) that existing version-controlled resource.  Otherwise, the content and dead properties of the new version-controlled member MUST have been initialized to be those of the version specified for that version history by the request.  If no version is specified for that version history by the request, the version selected is server defined.

Method: MKWORKSPACE
  Preconditions:
    (DAV:resource-must-be-null): A resource MUST NOT exist at the request-URL.
    (DAV:workspace-location-ok): The request-URL MUST identify a location where a workspace can be created.
  Postconditions:
    (DAV:initialize-workspace): A new workspace exists at the request-URL.  The DAV:resourcetype of the workspace MUST be DAV:collection.  The DAV:workspace of the workspace MUST identify the workspace.

Method: UPDATE
  Preconditions:
    (DAV:must-be-checked-in): The request-URL MUST identify a resource with a non-empty DAV:checked-in property.
    (DAV:baseline-controlled-members-must-be-checked-in): If the request-URL identifies a version-controlled configuration, then all version-controlled members of the DAV:baseline-controlled-collection of that version-controlled configuration MUST have a non-empty DAV:checked-in property.
    (DAV:must-not-update-baseline-collection): If the request-URL identifies a member of the configuration rooted at the DAV:baseline-collection of a baseline, the request MUST fail.
    (DAV:cannot-modify-version-controlled-configuration): If the request updates the DAV:checked-in property of any version-controlled member of a baseline-controlled collection whose version-controlled configuration is checked-in, the request MUST fail unless the DAV:auto-version property of the version-controlled configuration will automatically check out that version-controlled configuration when it is modified.
    (DAV:must-select-version-in-history): If the request includes a DAV:label-name element in the request body, the label MUST select a version in the version history of the version-controlled resource identified by the request-URL.
    (DAV:depth-update): If the request includes a Depth header, standard depth semantics apply, and the request is applied to the collection identified by the request-URL and to all members of the collection that satisfy the Depth value.  The request MUST be applied to a collection before being applied to any members of that collection, since an update of a version-controlled collection might change the membership of that collection.
  Postconditions:
    (DAV:update-content-and-properties): If the DAV:version element in the request body identified a version that is in the same version history as the DAV:checked-in version of a version-controlled resource identified by the request-URL, then the content and dead properties of that version-controlled resource MUST be the same as those of the version specified by the DAV:version element, and the DAV:checked-in property of the version-controlled resource MUST identify that version.  The request-URL MUST appear in a DAV:response element in the response body.
    (DAV:report-properties): If DAV:prop is specified in the request body, the properties specified in the DAV:prop element MUST be reported in the DAV:response elements in the response body.
    (DAV:set-baseline-controlled-collection-members): If the request updated the DAV:checked-in property of a version-controlled configuration, then the version-controlled members of the DAV:baseline-controlled-collection of that version-controlled configuration MUST have been updated so that they have the same relative name, content, and dead properties as the members of the DAV:baseline-collection of the baseline.  In particular:- A version-controlled member for a given version history MUST have been deleted if there is no version-controlled member for that version history in the DAV:baseline-collection of the baseline.- A version-controlled member for a given version history MUST have been renamed if its name relative to the baseline-controlled collection is different from that of the version-controlled member for that version history in the DAV:baseline-collection of the baseline.- A new version-controlled member MUST have been created for each member of the DAV:baseline-collection of the baseline for which there is no corresponding version-controlled member in the baseline-controlled collection.- An UPDATE request MUST have been applied to each version-controlled member for a given version history whose DAV:checked-in version is not the same as that of the version-controlled member for that version history in the DAV:baseline-collection of the baseline.
    (DAV:update-subbaselines): If the request updated a version-controlled configuration whose DAV:baseline-controlled-collection contains a baseline-controlled member for one of the subbaselines of the request baseline, then the DAV:checked-in property of the version-controlled configuration of that baseline-controlled member MUST have been updated to be that subbaseline.  If the request updated a version-controlled configuration whose DAV:baseline-controlled-collection is a member of a workspace that contains a baseline-controlled member for one of the subbaselines of the request baseline, then the DAV:checked-in property of the version-controlled configuration of that baseline-controlled member MUST have been updated to be that subbaseline.
    (DAV:modify-configuration): If the request updated the DAV:checked-in property of any version-controlled member of a baseline-controlled collection, and if this DAV:checked-in property differs from the DAV:checked-in property of the corresponding version-controlled member of the DAV:baseline-collection of the DAV:checked-in baseline of the DAV:version-controlled-configuration of the baseline-controlled collection, then this is a modification to that version-controlled configuration, and standard auto-versioning semantics apply.
    (DAV:update-version-controlled-collection-members): If the request modified the DAV:checked-in version of a version-controlled collection, then the version-controlled members of that version-controlled collection MUST have been updated.  In particular:- A version-controlled internal member MUST have been deleted if its version history is not identified by the DAV:version-controlled-binding-set of the new DAV:checked-in version.- A version-controlled internal member for a given version history MUST have been renamed if its binding name differs from the DAV:binding-name for that version history in the DAV:version-controlled-binding-set of the new DAV:checked-in version.- A new version-controlled internal member MUST have been created when a version history is identified by the DAV:version-controlled-binding-set of the DAV:checked-in version, but there was no member of the version-controlled collection for that version history. If a new version-controlled member is in a workspace that already has a version-controlled resource for that version history, then the new version-controlled member MUST be just a binding (i.e. another name for) that existing version-controlled resource.  Otherwise, the content and dead properties of the new version-controlled member MUST have been initialized to be those of the version specified for that version history by the request.  If no version is specified for that version history by the request, the version selected is server defined.
    (DAV:apply-request-to-labeled-version): If a DAV:label-name element appears in the request body, the content and dead properties of the version-controlled resource must have been updated to be those of the version selected by that label.

Method: LABEL
  Preconditions:
    (DAV:must-be-checked-in): The request-URL MUST identify a resource with a non-empty DAV:checked-in property.
    (DAV:add-must-be-new-label): If DAV:add is specified in the request body, the specified label MUST NOT appear in the DAV:label-name-set of any version in the version history of that version-controlled resource.
    (DAV:label-must-exist): If DAV:remove is specified in the request body, the specified label MUST appear in the DAV:label-name-set of that version.
  Postconditions:
    (DAV:add-or-set-label): If DAV:add or DAV:set is specified in the request body, the specified label MUST appear in the DAV:label-name-set of the specified version, and MUST NOT appear in the DAV:label-name-set of any other version in the version history of that version.
    (DAV:remove-label): If DAV:remove is specified in the request body, the specified label MUST NOT appear in the DAV:label-name-set of any version in the version history of that version.

Method: MERGE
  Preconditions:
    (DAV:cannot-merge-checked-out-resource): The DAV:source element MUST NOT identify a checked-out resource.  If the DAV:source element identifies a collection, the collection MUST NOT have a member that is a checked-out resource.
    (DAV:checkout-not-allowed): If DAV:no-checkout is specified in the request body, it MUST be possible to perform the merge without checking out any of the merge targets.
    (DAV:must-not-update-baseline-collection): Same semantics as UPDATE (see Section 12.13).
    (DAV:cannot-modify-version-controlled-configuration): Same semantics as UPDATE (see Section 12.13).
  Postconditions:
    (DAV:ancestor-version): If a merge target is a version-controlled or checked-out resource whose DAV:checked-in version or DAV:checked-out version is the merge source or is a descendant of the merge source, the merge target MUST NOT have been modified by the MERGE.
    (DAV:descendant-version): If the merge target was a checked-in version-controlled resource whose DAV:checked-in version was an ancestor of the merge source, an UPDATE operation MUST have been applied to the merge target to set its content and dead properties to be those of the merge source.  If the UPDATE method is not supported, the merge target MUST have been checked out, the content and dead properties of the merge target MUST have been set to those of the merge source, and the merge source MUST have been added to the DAV:auto-merge-set of the merge target.  The merge target MUST appear in a DAV:response XML element in the response body.
    (DAV:checked-out-for-merge): If the merge target was a checked-in version-controlled resource whose DAV:checked-in version was neither a descendant nor an ancestor of the merge source, a CHECKOUT MUST have been applied to the merge target.  All XML elements in the DAV:merge XML element that could appear in a DAV:checkout XML element MUST have been used as arguments to the CHECKOUT request.  The merge target MUST appear in a DAV:response XML element in the response body.  
    (DAV:update-merge-set): If the DAV:checked-out version of the merge target is not equal to or a descendant of the merge source, the merge source MUST be added to either the DAV:merge-set or the DAV:auto-merge-set of the merge target.  The merge target MUST appear in a DAV:response XML element in the response body.  If a merge source has been added to the DAV:auto-merge-set, the content and dead properties of the merge target MUST have been modified by the server to reflect the result of a logical merge of the merge source and the merge target.  If a merge source has been added to the DAV:merge-set, the content and dead properties of the merge target MUST NOT have been modified by the server.  If DAV:no-auto-merge is specified in the request body, the merge source MUST NOT have been added to the DAV:auto-merge-set.
    (DAV:report-properties): If DAV:prop is specified in the request body, the properties specified in the DAV:prop element MUST be reported in the DAV:response elements in the response body.
    (DAV:merge-baseline): If the merge target is a version-controlled configuration whose DAV:checked-out baseline is not a descendant of the merge baseline, then the merge baseline MUST have been added to the DAV:auto-merge-set of a version-controlled configuration.  The DAV:checked-in version of each member of the DAV:baseline-collection of that baseline MUST have been merged into the DAV:baseline-controlled-collection of that version-controlled configuration.
    (DAV:merge-subbaselines): If the merge target is a version-controlled configuration whose DAV:baseline-controlled-collection contains a baseline-controlled member for one of the subbaselines of the merge baseline, then that subbaseline MUST have been merged into the version-controlled configuration of that baseline-controlled member.  If the merge target is a version-controlled configuration whose DAV:baseline-controlled-collection is a member of a workspace that contains a baseline-controlled member for one of the subbaselines of the merge baseline, then that subbaseline MUST have been merged into the version-controlled configuration of that baseline-controlled member.
    (DAV:set-baseline-controlled-collection-members): Same semantics as UPDATE (see Section 12.13).
    (DAV:modify-configuration): Same semantics as UPDATE (see Section 12.13).
    (DAV:checkin-activity): If a DAV:checkin-activity element is specified in the request body, and if the DAV:source element in the request body identifies an activity, a CHECKIN request MUST have been successfully applied to that activity before the merge sources were determined.
    (DAV:update-version-controlled-collection-members): If the request modified the DAV:checked-in version of a version-controlled collection, then the version-controlled members of that version-controlled collection MUST have been updated.  In particular:- A version-controlled internal member MUST have been deleted if its version history is not identified by the DAV:version-controlled-binding-set of the new DAV:checked-in version.- A version-controlled internal member for a given version history MUST have been renamed if its binding name differs from the DAV:binding-name for that version history in the DAV:version-controlled-binding-set of the new DAV:checked-in version.- A new version-controlled internal member MUST have been created when a version history is identified by the DAV:version-controlled-binding-set of the DAV:checked-in version, but there was no member of the version-controlled collection for that version history. If a new version-controlled member is in a workspace that already has a version-controlled resource for that version history, then the new version-controlled member MUST be just a binding (i.e. another name for) that existing version-controlled resource.  Otherwise, the content and dead properties of the new version-controlled member MUST have been initialized to be those of the version specified for that version history by the request.  If no version is specified for that version history by the request, the version selected is server defined.

Method: BASELINE-CONTROL
  Preconditions:
    (DAV:version-controlled-configuration-must-not-exist): The DAV:version-controlled-configuration property of the collection identified by the request-URL MUST not exist.
    (DAV:must-be-baseline): The DAV:href of the DAV:baseline element in the request body MUST identify a baseline.
    (DAV:must-have-no-version-controlled-members): If a DAV:baseline element is specified in the request body, the collection identified by the request-URL MUST have no version-controlled members.
    (DAV:one-baseline-controlled-collection-per-history-per-workspace): If the request-URL identifies a workspace or a member of a workspace, and if a baseline is specified in a DAV:baseline element in the request body, then there MUST NOT be another collection in that workspace whose DAV:version-controlled-configuration property identifies a version-controlled configuration for the baseline history of that baseline. 
  Postconditions:
    (DAV:create-version-controlled-configuration): A new version-controlled configuration is created, whose DAV:baseline-controlled-collection property identifies the collection.
    (DAV:reference-version-controlled-configuration): The DAV:version-controlled-configuration of the collection identifies the new version-controlled configuration.
    (DAV:select-existing-baseline): If the request body specifies a baseline, the DAV:checked-in property of the new version-controlled configuration MUST have been set to identify this baseline.  A version-controlled member of the collection will be created for each version in the baseline, where the version-controlled member will have the content and dead properties of that version, and will have the same name relative to the collection as the corresponding version-controlled resource had when the baseline was created.  Any nested collections that are needed to provide the appropriate name for a version-controlled member will be created.
    (DAV:create-new-baseline): If no baseline is specified in the request body, the request MUST have created a new baseline history at a server-defined URL, and MUST have created a new baseline in that baseline history.  The DAV:baseline-collection of the new baseline MUST identify a collection whose members have the same relative name and DAV:checked-in version as the version-controlled members of the request collection.  The DAV:checked-in property of the new version-controlled configuration MUST identify the new baseline.

Method: MKCOL
  Preconditions:
    (*** all-of-version-control ***): If the request creates a new resource that is automatically placed under version control, all preconditions for VERSION-CONTROL apply to the request.
  Postconditions:
    (*** all-of-baseline-control ***): If a server automatically puts a newly created collection under baseline control, all postconditions for BASELINE-CONTROL apply to the MKCOL.
    (*** all-of-version-control ***): If the new collection is automatically put under version control, all postconditions for VERSION-CONTROL apply to the request.

Method: MKACTIVITY
  Preconditions:
    (DAV:resource-must-be-null): A resource MUST NOT exist at the request-URL.
    (DAV:activity-location-ok): The request-URL MUST identify a location where an activity can be created.
  Postconditions:
    (DAV:initialize-activity): A new activity exists at the request-URL.  The DAV:resourcetype of the activity MUST be DAV:activity.

