The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:vzlt="http://www.swsoft.com/webservices/vzl/4.0.0/types" xmlns="http://www.swsoft.com/webservices/vzl/4.0.0/authm" xmlns:vzlp="http://www.swsoft.com/webservices/vzl/4.0.0/protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.swsoft.com/webservices/vzl/4.0.0/authm" elementFormDefault="qualified">
	<xs:import namespace="http://www.swsoft.com/webservices/vzl/4.0.0/types" schemaLocation="VZLCommonTypes.xsd"/>
	<xs:import namespace="http://www.swsoft.com/webservices/vzl/4.0.0/protocol" schemaLocation="VZLProtocol.xsd"/>
	<xs:element name="authm" type="authmType" substitutionGroup="vzlp:operator">
		<xs:annotation>
			<xs:documentation>Authentication Management.</xs:documentation>
			<xs:appinfo>
				<states>
					<nonexistent/>
					<down/>
					<mounted/>
					<running/>
					<repairing/>
				</states>
			</xs:appinfo>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="authmType" mixed="false">
		<xs:annotation>
			<xs:documentation>Authentication Management.</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="false">
			<xs:extension base="vzlp:operator_functionalType">
				<xs:choice>
					<xs:choice minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Input</xs:documentation>
						</xs:annotation>
						<xs:element ref="add_user"/>
						<xs:element ref="add_group"/>
						<xs:element ref="edit_user"/>
						<xs:element ref="edit_group"/>
						<xs:element ref="add_to_group"/>
						<xs:element ref="del_from_group"/>
						<xs:element ref="get_user"/>
						<xs:element ref="get_group"/>
						<xs:element ref="del_user"/>
						<xs:element ref="del_group"/>
						<xs:element ref="authenticate"/>
						<xs:element ref="add_realm"/>
						<xs:element ref="del_realm"/>
						<xs:element ref="get_realm"/>
						<xs:element ref="get_auth_name">
							<xs:annotation>
								<xs:documentation>Resolves sid into auth name. Returns auth_name and type.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element ref="get_sid"/>
					</xs:choice>
					<xs:choice minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Output</xs:documentation>
						</xs:annotation>
						<xs:element ref="group" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element ref="user" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element ref="id"/>
						<xs:element ref="realms"/>
						<xs:element ref="token"/>
						<xs:element ref="auth_name"/>
						<xs:element ref="sid"/>
						<xs:element ref="type"/>
					</xs:choice>
				</xs:choice>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="security_principalType" mixed="false">
		<xs:annotation>
			<xs:documentation>Security principal structure.</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="false">
			<xs:extension base="vzlt:auth_nameType">
				<xs:sequence>
					<xs:element name="group" type="vzlt:auth_nameType" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Groups.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="member_group" type="vzlt:auth_nameType" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>A list of member groups.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="member_user" type="vzlt:auth_nameType" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>A list of member users.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="data" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="attr" type="vzlt:named_listType" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>Attributes</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="sp_modType">
		<xs:annotation>
			<xs:documentation>Security principal mod structure.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name" type="xs:base64Binary" minOccurs="0">
				<xs:annotation>
					<xs:documentation>User/group name.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="domain" type="xs:base64Binary" minOccurs="0">
				<xs:annotation>
					<xs:documentation>User/group domain.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="data" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="mod" type="vzlt:modType" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Attributes to modify.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="add_group">
		<xs:annotation>
			<xs:documentation>Adds new group. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="group"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_user">
		<xs:annotation>
			<xs:documentation>Adds new user. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="user"/>
				<xs:element name="password" type="xs:base64Binary"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="edit_group">
		<xs:annotation>
			<xs:documentation>Edits group. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="false">
			<xs:complexContent mixed="false">
				<xs:extension base="vzlt:auth_nameType">
					<xs:sequence>
						<xs:element name="group" type="sp_modType"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="edit_user">
		<xs:annotation>
			<xs:documentation>Edits user. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="false">
			<xs:complexContent mixed="false">
				<xs:extension base="vzlt:auth_nameType">
					<xs:sequence>
						<xs:element name="user" type="sp_modType"/>
						<xs:element name="password" type="xs:base64Binary" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_to_group">
		<xs:annotation>
			<xs:documentation>Adds user/group to groups. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="false">
			<xs:complexContent mixed="false">
				<xs:extension base="vzlt:auth_nameType">
					<xs:sequence>
						<xs:element name="group" type="vzlt:auth_nameType" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Groups.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_from_group">
		<xs:annotation>
			<xs:documentation>Deletes user/group from groups. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="false">
			<xs:complexContent mixed="false">
				<xs:extension base="vzlt:auth_nameType">
					<xs:sequence>
						<xs:element name="group" type="vzlt:auth_nameType" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Groups.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_group">
		<xs:annotation>
			<xs:documentation>Gets group information. Returns "group"s or Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element name="group" type="vzlt:auth_nameType">
						<xs:annotation>
							<xs:documentation>The group to retrieve the information for.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="attr">
						<xs:annotation>
							<xs:documentation> The group's attribute to retrieve the information for the group.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="name" type="xs:string">
									<xs:annotation>
										<xs:documentation>Attribute name.</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="value" type="xs:base64Binary">
									<xs:annotation>
										<xs:documentation>Attribute value.</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="realm" type="vzlt:guid_type">
									<xs:annotation>
										<xs:documentation>Realm identifier.</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:choice>
				<xs:element name="attrs" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Skip "name" to get all of attributes. Skip "attrs" to get list of groups without "data".</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_user">
		<xs:annotation>
			<xs:documentation>Gets user information. Returns "user"s or Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element name="user" type="vzlt:auth_nameType">
						<xs:annotation>
							<xs:documentation>The user to retrieve the information for.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="attr">
						<xs:annotation>
							<xs:documentation> The user's attribute to retrieve the information for the user.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="name" type="xs:string">
									<xs:annotation>
										<xs:documentation>Attribute name.</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="value" type="xs:base64Binary">
									<xs:annotation>
										<xs:documentation>Attribute value.</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="realm" type="vzlt:guid_type">
									<xs:annotation>
										<xs:documentation>Identifier of realm to search in.</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:choice>
				<xs:element name="attrs" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Skip "name" to get all of attributes. Skip "attrs" to get list of users without "data".</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_group">
		<xs:annotation>
			<xs:documentation>Deletes group. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="group" type="vzlt:auth_nameType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_user">
		<xs:annotation>
			<xs:documentation>Deletes user. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="user" type="vzlt:auth_nameType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_realm">
		<xs:annotation>
			<xs:documentation>Adds realm. Returns id or Error.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="realm" type="vzlt:realmType"/>
				<xs:element name="password" type="xs:base64Binary" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="set_realm">
		<xs:annotation>
			<xs:documentation>Sets realm. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="realm" type="vzlt:realmType"/>
				<xs:element name="password" type="xs:base64Binary" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_realm">
		<xs:annotation>
			<xs:documentation>Deletes realm. Returns OK/Errors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="id"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_realm">
		<xs:annotation>
			<xs:documentation>Gets realms. Returns realms or Error.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="authenticate">
		<xs:annotation>
			<xs:documentation>Authenticates user. Returns token or Error.</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="false">
			<xs:complexContent mixed="false">
				<xs:extension base="vzlt:auth_nameType">
					<xs:sequence>
						<xs:element name="password" type="xs:base64Binary"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_auth_name">
		<xs:annotation>
			<xs:documentation>Resolves sid into auth name. Returns auth_name.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="sid"/>
				<xs:element name="realm" type="vzlt:guid_type" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Realm identifier.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="create_token">
		<xs:annotation>
			<xs:documentation>***INTERNAL*** Returns token by SID.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="sid"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_sid">
		<xs:annotation>
			<xs:documentation>Resolves auth name into sid. Returns "sid" or Error.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="auth_name"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="token" type="vzlt:tokenType">
		<xs:annotation>
			<xs:documentation>Result of the authenticate operation.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="group" type="security_principalType"/>
	<xs:element name="user" type="security_principalType"/>
	<xs:element name="sid" type="vzlt:sidType"/>
	<xs:element name="id" type="vzlt:guid_type"/>
	<xs:element name="realms">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="realm" type="vzlt:realmType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="auth_name" type="vzlt:auth_nameType">
		<xs:annotation>
			<xs:documentation>User/group name.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="get_groupResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="group" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_userResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="user" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_userResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_groupResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="edit_userResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="edit_groupResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_to_groupResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_from_groupResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_userResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_groupResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="authenticateResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="token"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="add_realmResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="id"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="del_realmResponse">
		<xs:complexType>
			<xs:sequence/>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_realmResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="realms"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="get_sidResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="sid"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="type" type="xs:int"/>
	<xs:complexType name="authm_configurationType">
		<xs:annotation>
			<xs:documentation>Parallels Agent configuration parameters.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="vzlp:configurationType">
				<xs:sequence>
					<xs:element ref="realms"/>
					<xs:element name="builtin_realm" type="vzlt:guid_type">
						<xs:annotation>
							<xs:documentation>Builtin realm identifier.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="create_tokenResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="token"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="loginType">
		<xs:sequence>
			<xs:element name="name" type="xs:base64Binary" minOccurs="0">
				<xs:annotation>
					<xs:documentation>User/group name.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="domain" type="xs:base64Binary" minOccurs="0">
				<xs:annotation>
					<xs:documentation>User/group domain.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="realm" type="vzlt:guid_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Realm identifier.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="dir_realmType" mixed="false">
		<xs:annotation>
			<xs:documentation>Directory realm structure.</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="false">
			<xs:extension base="vzlt:realmType">
				<xs:sequence>
					<xs:element name="address" type="xs:string">
						<xs:annotation>
							<xs:documentation>IP, hostname</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="port" type="xs:int"/>
					<xs:element name="base_dn" type="xs:string"/>
					<xs:element name="default_dn" type="xs:string">
						<xs:annotation>
							<xs:documentation>Default DN (example: "cn=*,cn=agent,dc=vzl")</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="login" type="loginType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>