<!--

    WebDAV configuration schema.

    Please do not edit this file. To add configuration sections to the schema,
    put them in .xml files similar to this one, in this directory. They will
    be picked up automatically at application pool startup.

-->

<configSchema>

  <!--

    These settings are always access from the top-level
    <system.webServer/webdav> section.

  -->

  <sectionSchema name="system.webServer/webdav/globalSettings">

    <element name="propertyStores">
      <collection addElement="add" allowUnrecognizedAttributes="true">
        <attribute name="name" type="string" required="true" isUniqueKey="true" />
        <attribute name="image" type="string" required="true" expanded="true" />
        <attribute name="image32" type="string" expanded="true" />
      </collection>
    </element>

    <element name="lockStores">
      <collection addElement="add" allowUnrecognizedAttributes="true">
        <attribute name="name" type="string" required="true" isUniqueKey="true" />
        <attribute name="image" type="string" required="true" expanded="true" />
        <attribute name="image32" type="string" expanded="true" />
      </collection>
    </element>

  </sectionSchema>


  <!--

    These settings are always accessed using a query path similar
    to "MACHINE/WEBROOT/APPHOST/{sitename}". Thus, there is no
    inheritance from lower levels in the URI hierarchy.

  -->

  <sectionSchema name="system.webServer/webdav/authoring">

    <attribute name="enabled" type="bool" defaultValue="false" />

    <attribute name="requireSsl" type="bool" defaultValue="false" />

    <attribute name="compatFlags" type="flags" defaultValue="MsAuthorVia, MultiProp, CompactXml, IsHidden, IsCollection">
      <flag name="None" value="0" />
      <flag name="MsAuthorVia" value="1" />
      <flag name="MultiProp" value="2" />
      <flag name="CompactXml" value="4" />
      <flag name="IsHidden" value="8" />
      <flag name="IsCollection" value="16" />
    </attribute>

    <attribute name="maxAllowedXmlRequestLength" type="uint" defaultValue="1000000" />

    <element name="fileSystem">
      <attribute name="allowHiddenFiles" type="bool" defaultValue="false" />
      <attribute name="useTransactionalIo" type="bool" defaultValue="false" />
      <attribute name="hideChildVirtualDirectories" type="bool" defaultValue="false" />
    </element>

    <element name="properties">
      <attribute name="allowAnonymousPropfind" type="bool" defaultValue="false" />
      <attribute name="allowInfinitePropfindDepth" type="bool" defaultValue="false" />
      <attribute name="allowCustomProperties" type="bool" defaultValue="true" />
      <collection addElement="add" removeElement="remove" clearElement="clear" allowUnrecognizedAttributes="true">
        <attribute name="xmlNamespace" type="string" isUniqueKey="true" required="true" validationType="nonEmptyString" />
        <attribute name="propertyStore" type="string" required="true" validationType="nonEmptyString" />
      </collection>
    </element>

    <element name="locks" allowUnrecognizedAttributes="true">
      <attribute name="enabled" type="bool" defaultValue="false" />
      <attribute name="lockStore" type="string" />
      <attribute name="requireLockForWriting" type="bool" defaultValue="false" />
    </element>

  </sectionSchema>


  <!--

    These settings are always accessed using a URI-based query
    path similar to "MACHINE/WEBROOT/APPHOST/{sitename}/{uri}".
    Settings are inherited from lower levels in the URI hierarchy.

  -->

  <sectionSchema name="system.webServer/webdav/authoringRules">

   <attribute name="defaultAccess" type="flags" defaultValue="None">
     <flag name="None" value="0" />
     <flag name="Read" value="1" />
     <flag name="Write" value="2" />
     <flag name="Source" value="16" />
   </attribute>
   <attribute name="allowNonMimeMapFiles" type="bool" defaultValue="true" />
   <attribute name="defaultMimeType" type="string" defaultValue="application/octet-stream" />
   <collection addElement="add" clearElement="clear" removeElement="remove">
     <attribute name="users" type="string" isCombinedKey="true" />
     <attribute name="roles" type="string" isCombinedKey="true" />
     <attribute name="path" type="string" isCombinedKey="true" validationType="nonEmptyString" />
     <attribute name="access" type="flags" defaultValue="Read">
       <flag name="None" value="0" />
       <flag name="Read" value="1" />
       <flag name="Write" value="2" />
       <flag name="Source" value="16" />
     </attribute>
   </collection>

  </sectionSchema>

</configSchema>

