<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="DummyService" targetNamespace="DummyService" xmlns:iat="DummyService" xmlns:tns="DummyService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<wsdl:types>
		<xs:schema targetNamespace="DummyService" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:iat="DummyService" elementFormDefault="qualified" attributeFormDefault="unqualified">
			<xs:simpleType name="UserName">
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
			<xs:simpleType name="UserEmailAddress">
				<xs:restriction base="xs:string">
					<xs:pattern value="^([0-9a-zA-Z]([\-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][\-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType name="UserFullName">
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
			<xs:simpleType name="UserPassword">
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
			<xs:simpleType name="DeclineMsg">
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
			<xs:simpleType name="SynStatus">
				<xs:restriction base="xs:NCName">
					<xs:enumeration value="done"/>
					<xs:enumeration value="decline"/>
					<xs:enumeration value="drop"/>
					<xs:enumeration value="fail"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType name="BasicStatus">
				<xs:restriction base="xs:NCName">
					<xs:enumeration value="done"/>
					<xs:enumeration value="drop"/>
					<xs:enumeration value="fail"/>
				</xs:restriction>
			</xs:simpleType>

			<xs:complexType name="UserInfo">
				<xs:sequence>
					<xs:element name="username" type="iat:UserName"/>
					<xs:element name="fullname" type="iat:UserFullName"/>
					<xs:element name="email" type="iat:UserEmailAddress"/>
					<xs:element name="isAdmin" type="xs:boolean"/>
				</xs:sequence>
			</xs:complexType>

			<xs:complexType name="ListOfUserInfos">
				<xs:sequence>
					<xs:element name="user" type="iat:UserInfo" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="CreateUserIn" type="iat:CreateUserInMsgType"/>
			<xs:complexType name="CreateUserInMsgType">
				<xs:sequence>
					<xs:element name="userFullName" type="iat:UserFullName"/>
					<xs:element name="userEmail" type="iat:UserEmailAddress"/>
					<xs:element name="username" type="iat:UserName"/>
					<xs:element name="pwd" type="iat:UserPassword"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="CreateUserOut" type="iat:CreateUserOutMsgType"/>
			<xs:complexType name="CreateUserOutMsgType">
				<xs:sequence>
					<xs:element name="status" type="iat:SynStatus"/>
					<xs:element name="msg" type="iat:DeclineMsg" minOccurs="0"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="DeleteUserIn" type="iat:DeleteUserInMsgType"/>
			<xs:complexType name="DeleteUserInMsgType">
				<xs:sequence>
					<xs:element name="username" type="iat:UserName"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="DeleteUserOut" type="iat:DeleteUserOutMsgType"/>
			<xs:complexType name="DeleteUserOutMsgType">
				<xs:sequence>
					<xs:element name="status" type="iat:SynStatus"/>
					<xs:element name="msg" type="iat:DeclineMsg" minOccurs="0"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="ListUsersIn" type="iat:ListUsersInMsgType"/>
			<xs:complexType name="ListUsersInMsgType">
			<xs:sequence/>
			</xs:complexType>

			<xs:element name="ListUsersOut" type="iat:ListUsersOutMsgType"/>
			<xs:complexType name="ListUsersOutMsgType">
				<xs:sequence>
					<xs:element name="userInfos" type="iat:ListOfUserInfos" />
					<xs:element name="status" type="iat:BasicStatus"/>
					<xs:element name="msg" type="iat:DeclineMsg" minOccurs="0"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="VerifyUserIn" type="iat:VerifyUserInMsgType"/>
			<xs:complexType name="VerifyUserInMsgType">
				<xs:sequence>
					<xs:element name="username" type="iat:UserName"/>
					<xs:element name="pwd" type="iat:UserPassword"/>
				</xs:sequence>
			</xs:complexType>

			<xs:element name="VerifyUserOut" type="iat:VerifyUserOutMsgType"/>
			<xs:complexType name="VerifyUserOutMsgType">
				<xs:sequence>
					<xs:element name="status" type="iat:SynStatus"/>
					<xs:element name="msg" type="iat:DeclineMsg" minOccurs="0"/>
                    <xs:element name="userInfo" type="iat:UserInfo" minOccurs="0"/>
				</xs:sequence>
			</xs:complexType>

		</xs:schema>
	</wsdl:types>

	<wsdl:message name="CreateUserInMsg">
		<wsdl:part name="content" element="iat:CreateUserIn"/>
	</wsdl:message>
	<wsdl:message name="CreateUserOutMsg">
		<wsdl:part name="content" element="iat:CreateUserOut"/>
	</wsdl:message>

	<wsdl:message name="DeleteUserInMsg">
		<wsdl:part name="content" element="iat:DeleteUserIn"/>
	</wsdl:message>
	<wsdl:message name="DeleteUserOutMsg">
		<wsdl:part name="content" element="iat:DeleteUserOut"/>
	</wsdl:message>

	<wsdl:message name="ListUsersInMsg">
		<wsdl:part name="content" element="iat:ListUsersIn"/>
	</wsdl:message>
	<wsdl:message name="ListUsersOutMsg">
		<wsdl:part name="content" element="iat:ListUsersOut"/>
	</wsdl:message>

	<wsdl:message name="VerifyUserInMsg">
		<wsdl:part name="content" element="iat:VerifyUserIn"/>
	</wsdl:message>
	<wsdl:message name="VerifyUserOutMsg">
		<wsdl:part name="content" element="iat:VerifyUserOut"/>
	</wsdl:message>

	<wsdl:portType name="DummyServicePortType">
		<wsdl:operation name="createUser">
			<wsdl:input name="CreateUserInMsg" message="tns:CreateUserInMsg"/>
			<wsdl:output name="CreateUserOutMsg" message="tns:CreateUserOutMsg"/>
		</wsdl:operation>
		<wsdl:operation name="deleteUser">
			<wsdl:input name="DeleteUserInMsg" message="tns:DeleteUserInMsg"/>
			<wsdl:output name="DeleteUserOutMsg" message="tns:DeleteUserOutMsg"/>
		</wsdl:operation>
		<wsdl:operation name="listUsers">
			<wsdl:input name="ListUsersInMsg" message="tns:ListUsersInMsg"/>
			<wsdl:output name="ListUsersOutMsg" message="tns:ListUsersOutMsg"/>
		</wsdl:operation>
		<wsdl:operation name="verifyUser">
			<wsdl:input name="VerifyUserInMsg" message="tns:VerifyUserInMsg"/>
			<wsdl:output name="VerifyUserOutMsg" message="tns:VerifyUserOutMsg"/>
		</wsdl:operation>
	</wsdl:portType>

	<wsdl:binding name="DummyServiceSOAPBinding" type="tns:DummyServicePortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="createUser">
			<soap:operation style="document"/>
			<wsdl:input name="CreateUserInMsg">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="CreateUserOutMsg">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="deleteUser">
			<soap:operation style="document"/>
			<wsdl:input name="DeleteUserInMsg">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="DeleteUserOutMsg">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="listUsers">
			<soap:operation style="document"/>
			<wsdl:input name="ListUsersInMsg">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="ListUsersOutMsg">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="verifyUser">
			<soap:operation style="document"/>
			<wsdl:input name="VerifyUserInMsg">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="VerifyUserOutMsg">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>

	<wsdl:service name="DummyService">
		<wsdl:port name="DummyServiceSOAPPort" binding="tns:DummyServiceSOAPBinding">
			<soap:address location="DummyServiceSOAPPort"/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>
