<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 1999-2022. Plesk International GmbH. All rights reserved. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:include schemaLocation="plesk_common.xsd"/>
	<xs:complexType name="VDirInputType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="create" type="CreateVDirInputType"/>
            <xs:element name="update" type="UpdateVDirInputType"/>
			<xs:element name="remove" type="RemoveVDirInputType"/>
			<xs:element name="get" type="GetVDirInputType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="VDirOutputType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="create" type="VDirResultType"/>
            <xs:element name="update" type="VDirResultType"/>
			<xs:element name="remove" type="VDirResultType"/>
			<xs:element name="get" type="VDirGetResultType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="VDirResultType">
		<xs:sequence>
			<xs:element name="result" type="resultType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="VDirGetResultType">
		<xs:sequence>
			<xs:element name="result" maxOccurs="unbounded">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="resultFilterType">
							<xs:sequence minOccurs="0">
								<xs:element name="properties" type="VDirProperties"/>
							</xs:sequence>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CreateVDirInputType">
		<xs:sequence>
			<xs:choice>
				<xs:element name="site-id" type="id_type"/>
				<xs:element name="subdomain-id" type="id_type"/>
			</xs:choice>
			<xs:element name="name" type="VDirPath">
				<xs:annotation>
					<xs:documentation>Virtual directory name</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="properties" type="VDirProperties"/>
		</xs:sequence>
	</xs:complexType>
    <xs:complexType name="UpdateVDirInputType">
        <xs:sequence>
            <xs:choice>
                <xs:element name="site-id" type="id_type"/>
                <xs:element name="subdomain-id" type="id_type"/>
            </xs:choice>
            <xs:element name="name" type="VDirPath">
                <xs:annotation>
                    <xs:documentation>Virtual directory name</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="properties" type="VDirProperties"/>
        </xs:sequence>
    </xs:complexType>
	<xs:complexType name="RemoveVDirInputType">
		<xs:sequence>
			<xs:choice>
				<xs:element name="site-id" type="id_type"/>
				<xs:element name="subdomain-id" type="id_type"/>
			</xs:choice>
			<xs:element name="name" type="VDirPath"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="GetVDirInputType">
		<xs:sequence>
			<xs:choice>
				<xs:element name="site-id" type="id_type"/>
				<xs:element name="subdomain-id" type="id_type"/>
			</xs:choice>
			<xs:element name="name" type="VDirPath">
				<xs:annotation>
					<xs:documentation>Virtual directory name</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="VDirPath">
		<xs:restriction base="xs:string">
			<xs:pattern value="[/0-9a-zA-Z_\-]+"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="VDirProperties">
		<xs:annotation>
			<xs:documentation>Virtual directory properties</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="real-path" type="RealDirPath" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Real filesystem path of virtual directory, relative to the parent directory (default: equal to name)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="access-source" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Script source access (default: false)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="access-read" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Read permission (default: true)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="access-write" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Write permission (default: false)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="dir-browsing" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Directory browsing (default: false)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="log-visits" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Log visits (default: true)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="application" type="VDirAppType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Virtual directory's application properties</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="execute-perm" type="VDirExecutePermissionsType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Execute permissions (default: script)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="default-doc" type="VDirDefaultDocType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Default content page and search order</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="access-anonymous" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Enable anonymous authentication</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="access-windows" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Enable Windows authentication</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="require-ssl" type="boolean" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Require SSL</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="asp-buffering-limit" type="int" minOccurs="0"/>
			<xs:element name="asp-max-request-entity-allowed" type="int" minOccurs="0"/>
			<xs:element name="asp-enabled-server-debug" type="boolean" minOccurs="0"/>
			<xs:element name="asp-enabled-client-debug" type="boolean" minOccurs="0"/>
            <xs:element name="ip-allow" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ip-deny" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="mime-type" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="is-deny-by-concurrent-requests" type="boolean" minOccurs="0"/>
			<xs:element name="max-concurrent-requests" type="int" minOccurs="0"/>
			<xs:element name="is-deny-by-request-rate" type="boolean" minOccurs="0"/>
			<xs:element name="max-requests" type="int" minOccurs="0"/>
			<xs:element name="request-interval" type="int" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="VDirExecutePermissionsType">
		<xs:annotation>
			<xs:documentation>Execute permissions</xs:documentation>
		</xs:annotation>
		<xs:restriction base="string">
			<xs:enumeration value="none"/>
			<xs:enumeration value="script"/>
			<xs:enumeration value="script_execute"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="VDirAppType">
		<xs:annotation>
			<xs:documentation>Virtual directory application characteristics</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:sequence>
				<xs:element name="enabled">
					<xs:complexType/>
				</xs:element>
				<xs:element name="parent-paths" type="boolean" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Enable parent paths (default: false)</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="run-in-mta" type="boolean">
					<xs:annotation>
						<xs:documentation>Enable to run in MTA (default: false)</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="aspnet-version" type="string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Microsoft ASP.NET version</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:element name="disabled">
				<xs:complexType/>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="VDirDefaultDocType">
		<xs:annotation>
			<xs:documentation>Default content page and documents search order</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:sequence>
				<xs:element name="enabled">
					<xs:complexType/>
				</xs:element>
				<xs:element name="search" type="xs:string" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Document search order. You may specify several elements. Their appearance in XML will define the search order</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:element name="disabled">
				<xs:complexType/>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:simpleType name="RealDirPath">
		<xs:restriction base="string"/>
	</xs:simpleType>
</xs:schema>
