<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:icsy:venice:types:sso" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:basic="urn:icsy:venice:types:basic" xmlns:domain="urn:icsy:venice:types:domain" targetNamespace="urn:icsy:venice:types:sso">
	<import namespace="urn:icsy:venice:types:basic" schemaLocation="http://www.v-grid.info/types/basic.xsd"/>
	<import namespace="urn:icsy:venice:types:domain" schemaLocation="http://www.v-grid.info/types/domain.xsd"/>
	<simpleType name="Password">
		<annotation>
			<documentation>A generic password type.</documentation>
		</annotation>
		<restriction base="string">
			<minLength value="8"/>
			<maxLength value="64"/>
		</restriction>
	</simpleType>
	<complexType name="Service">
		<annotation>
			<documentation>Represents a service within the domain.</documentation>
		</annotation>
		<all>
			<element name="name">
				<simpleType>
					<restriction base="basic:SimpleName"/>
				</simpleType>
			</element>
			<element name="id" type="int" minOccurs="0"/>
			<element name="password" type="tns:Password" minOccurs="0"/>
		</all>
	</complexType>
	<element name="Service" type="tns:Service">
		<annotation>
			<documentation>Represents a service within the domain.</documentation>
		</annotation>
	</element>
	<complexType name="ServiceArray">
		<annotation>
			<documentation>An array of Service.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:Service" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="ServiceArray" type="tns:ServiceArray">
		<annotation>
			<documentation>An array of Service.</documentation>
		</annotation>
	</element>
	<complexType name="User">
		<annotation>
			<documentation>Represents a user within the domain.</documentation>
		</annotation>
		<all>
			<element name="id" type="int" minOccurs="0"/>
			<element name="name">
				<simpleType>
					<restriction base="basic:SimpleName"/>
				</simpleType>
			</element>
			<element name="password" type="tns:Password" minOccurs="0"/>
		</all>
	</complexType>
	<element name="User" type="tns:User">
		<annotation>
			<documentation>Represents a user within the domain.</documentation>
		</annotation>
	</element>
	<complexType name="UserArray">
		<annotation>
			<documentation>An array of User.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:User" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="UserArray" type="tns:UserArray">
		<annotation>
			<documentation>An array of User.</documentation>
		</annotation>
	</element>
	<complexType name="Connection">
		<annotation>
			<documentation>A connection to another domain.</documentation>
		</annotation>
		<all>
			<element name="id" type="int" minOccurs="0"/>
			<element name="domainName" type="domain:DomainName"/>
			<element name="domainInformationService" type="anyURI"/>
		</all>
	</complexType>
	<element name="Connection" type="tns:Connection">
		<annotation>
			<documentation>A connection to another domain.</documentation>
		</annotation>
	</element>
	<complexType name="ConnectionArray">
		<annotation>
			<documentation>An array of Connection.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:Connection" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="ConnectionArray" type="tns:ConnectionArray">
		<annotation>
			<documentation>An array of Connection.</documentation>
		</annotation>
	</element>
	<complexType name="Role">
		<annotation>
			<documentation>Represents a role within the domain.</documentation>
		</annotation>
		<all>
			<element name="name">
				<simpleType>
					<restriction base="basic:SimpleName"/>
				</simpleType>
			</element>
			<element name="id" type="int" minOccurs="0"/>
		</all>
	</complexType>
	<element name="Role" type="tns:Role">
		<annotation>
			<documentation>Represents a role within the domain.</documentation>
		</annotation>
	</element>
	<complexType name="RoleArray">
		<annotation>
			<documentation>An array of Role.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:Role" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="RoleArray" type="tns:RoleArray">
		<annotation>
			<documentation>An array of Role.</documentation>
		</annotation>
	</element>
	<complexType name="RoleMapping">
		<annotation>
			<documentation>A mapping from a user's role in another domain to own domain.</documentation>
		</annotation>
		<sequence>
			<element name="id" type="int" minOccurs="0"/>
			<element name="remoteDomainName" type="domain:DomainName"/>
			<element name="remoteRole" type="domain:RoleName"/>
			<element name="localRoleID" type="int"/>
		</sequence>
	</complexType>
	<element name="RoleMapping" type="tns:RoleMapping">
		<annotation>
			<documentation>A mapping from a user's role in another domain to own domain.</documentation>
		</annotation>
	</element>
	<complexType name="RoleMappingArray">
		<annotation>
			<documentation>An array of RoleMapping.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:RoleMapping" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="RoleMappingArray" type="tns:RoleMappingArray">
		<annotation>
			<documentation>An array of RoleMapping.</documentation>
		</annotation>
	</element>
	<complexType name="AuthorizationInformation">
		<annotation>
			<documentation>Generic but encoded authorization data.</documentation>
		</annotation>
		<simpleContent>
			<extension base="base64Binary"/>
		</simpleContent>
	</complexType>
	<element name="AuthorizationInformation" type="tns:AuthorizationInformation">
		<annotation>
			<documentation>Generic but encoded authorization data.</documentation>
		</annotation>
	</element>
	<complexType name="AuthorizationProperty">
		<annotation>
			<documentation>A property authorizing someone for something.</documentation>
		</annotation>
		<all>
			<element name="type" type="basic:PropertyType"/>
			<element name="options" type="basic:StringArray" minOccurs="0"/>
			<element name="name" type="string"/>
			<element name="value" type="string"/>
			<element name="displayName" type="string"/>
			<element name="displayNameLocalization" type="string" minOccurs="0"/>
			<element name="defaultValue" type="string"/>
		</all>
	</complexType>
	<element name="AuthorizationProperty" type="tns:AuthorizationProperty">
		<annotation>
			<documentation>A property authorizing someone for something.</documentation>
		</annotation>
	</element>
	<complexType name="AuthorizationPropertyArray">
		<annotation>
			<documentation>An array of AuthorizationProperty.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:AuthorizationProperty" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="AuthorizationPropertyArray" type="tns:AuthorizationPropertyArray">
		<annotation>
			<documentation>An array of AuthorizationProperty.</documentation>
		</annotation>
	</element>
	<complexType name="TGT">
		<annotation>
			<documentation>Ticket Granting Token.</documentation>
		</annotation>
		<simpleContent>
			<extension base="base64Binary"/>
		</simpleContent>
	</complexType>
	<element name="TGT" type="tns:TGT">
		<annotation>
			<documentation>Ticket Granting Token.</documentation>
		</annotation>
	</element>
	<complexType name="ST">
		<annotation>
			<documentation>Service Token.</documentation>
		</annotation>
		<simpleContent>
			<extension base="base64Binary"/>
		</simpleContent>
	</complexType>
	<element name="ST" type="tns:ST">
		<annotation>
			<documentation>Service Token.</documentation>
		</annotation>
	</element>
	<complexType name="PasswordChangeToken">
		<annotation>
			<documentation>A Token that changes a user's password.</documentation>
		</annotation>
		<simpleContent>
			<extension base="base64Binary"/>
		</simpleContent>
	</complexType>
	<element name="PasswordChangeToken" type="tns:PasswordChangeToken">
		<annotation>
			<documentation>A Token that changes a user's password.</documentation>
		</annotation>
	</element>
	<complexType name="Authenticator">
		<annotation>
			<documentation>Authenticator for mutual authentication.</documentation>
		</annotation>
		<simpleContent>
			<extension base="base64Binary"/>
		</simpleContent>
	</complexType>
	<element name="Authenticator" type="tns:Authenticator">
		<annotation>
			<documentation>Authenticator for mutual authentication.</documentation>
		</annotation>
	</element>
	<complexType name="DomainToken">
		<annotation>
			<documentation>A token identifying a domain.</documentation>
		</annotation>
		<simpleContent>
			<extension base="base64Binary"/>
		</simpleContent>
	</complexType>
	<element name="DomainToken" type="tns:DomainToken">
		<annotation>
			<documentation>A token identifying a domain.</documentation>
		</annotation>
	</element>
	<complexType name="AccountCreationRequest">
		<annotation>
			<documentation>An account creation request data type.</documentation>
		</annotation>
		<sequence>
			<element name="name" type="basic:String"/>
			<element name="email" type="basic:String"/>
			<element name="login" type="basic:String"/>
			<element name="password" type="basic:String"/>
			<element name="roles" type="domain:RoleName" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="AccountCreationRequest" type="tns:AccountCreationRequest">
		<annotation>
			<documentation>An account creation request data type.</documentation>
		</annotation>
	</element>
	<complexType name="DelegationInformation">
		<annotation>
			<documentation>Info about a delegation.</documentation>
		</annotation>
		<sequence>
			<element name="uuid" type="basic:UUID" minOccurs="0">
				<annotation>
					<documentation>The unique identifier of the delegation.</documentation>
				</annotation>
			</element>
			<element name="userName" type="domain:UserName">
				<annotation>
					<documentation>The user the delegation is intended for.</documentation>
				</annotation>
			</element>
			<element name="userDomain" type="domain:DomainName">
				<annotation>
					<documentation>The domain of the user the delegation is intended for.</documentation>
				</annotation>
			</element>
			<element name="serviceName" type="domain:ServiceName">
				<annotation>
					<documentation>The service the delegation is targeted for.</documentation>
				</annotation>
			</element>
			<element name="serviceDomain" type="domain:DomainName">
				<annotation>
					<documentation>The service domain the delegation is targeted for.</documentation>
				</annotation>
			</element>
			<element name="validUntil" type="dateTime" minOccurs="0">
				<annotation>
					<documentation>The maximum valitidy of the delegation.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<element name="DelegationInformation" type="tns:DelegationInformation">
		<annotation>
			<documentation>Info about a delegation.</documentation>
		</annotation>
	</element>
	<complexType name="DelegationInformationArray">
		<annotation>
			<documentation>An array of DelegationInformation.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:DelegationInformation" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="DelegationInformationArray" type="tns:DelegationInformationArray">
		<annotation>
			<documentation>An array of DelegationInformation.</documentation>
		</annotation>
	</element>
</schema>

