<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="urn:at.vvo.omds.types.omds3types.v1-3-0.on1basisfunktionen" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:omds="urn:omds20" xmlns:cst="urn:omds3CommonServiceTypes-1-1-0" targetNamespace="urn:at.vvo.omds.types.omds3types.v1-3-0.on1basisfunktionen" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.3.0">
	<xsd:import namespace="urn:omds20" schemaLocation="omds29-00.xsd"/>
	<xsd:import namespace="urn:omds3CommonServiceTypes-1-1-0" schemaLocation="omds3CommonServiceTypes.xsd"/>
	<xsd:annotation>
		<xsd:documentation>State-Changes</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="GetStateChangesRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Typ des Requestobjektes um Geschäftsfalle abzuholen</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="cst:CommonSearchRequest_Type">
				<xsd:sequence>
					<xsd:element name="GeschaeftsobjektArt" type="cst:GeschaeftsobjektArt_Type" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Vorgabe einer Geschäftsobjektart, z.B. Vertrag, Schaden oder Antrag</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="GetStateChangesResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Typ des Responseobjektes um Geschäftsfalle abzuholen</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="cst:CommonSearchResponse_Type">
				<xsd:sequence>
					<xsd:element name="Event" type="AbstractStateChangeEvent_Type" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="GetStateChangesRequest" type="GetStateChangesRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Requestobjekt fuer die Abfrage von Statusänderungen</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="GetStateChangesResponse" type="GetStateChangesResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Responseobjekt fuer die Abfrage von Statusänderungen</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="DeclareStateChangesRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Typ fuer die Bekanntgabe von Statusänderungen</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="StateChange" type="AbstractStateChangeEvent_Type" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="DeclareStateChangesResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Typ fuer die Annahme von Statusänderungen</xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:element name="DeclareStateChangesRequest" type="DeclareStateChangesRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Requestobjekt fuer die Übermittlung von Statusänderungen</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="DeclareStateChangesResponse" type="DeclareStateChangesResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Responseobjekt für die Übermittlung von Statusänderungen</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="AbstractStateChangeEvent_Type" abstract="true">
		<xsd:annotation>
			<xsd:documentation>Abstraktes Event einer Statusänderung </xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:complexType name="StateChangeEvent_Type">
		<xsd:annotation>
			<xsd:documentation>Standard-Event einer Statusänderung</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractStateChangeEvent_Type">
				<xsd:sequence>
					<xsd:element name="Objektart" type="cst:GeschaeftsobjektArt_Type">
						<xsd:annotation>
							<xsd:documentation>Die Art des Objekts, z.B. Vertrag</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ObjektId" type="cst:ObjektId_Type">
						<xsd:annotation>
							<xsd:documentation>Die Id des Objekts als ObjektId_Type</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="Geschaeftsfallnummer" type="cst:ObjektId_Type" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Eine Geschäftsfall-Id als String, wenn dem Servicenutzer eine solche zugeordnet ist.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="GeschaeftsfallArt" type="cst:GeschaeftsfallArt_Type" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Die Art des Geschaeftsfalls der zur Statusänderung geführt hat.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="Aenderungsdatum" type="omds:Datum-Zeit">
						<xsd:annotation>
							<xsd:documentation>Das Datum ab wann die Statusänderung feststeht.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="StatusGueltigAbDatum" type="omds:Datum-Zeit">
						<xsd:annotation>
							<xsd:documentation>Das Datum ab welchem die Statusänderung wirksam wird.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="BisherigerStatus" type="AbstractStatusGeschaeftsfall_Type" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Optional der bisherige Status</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="NeuerStatus" type="AbstractStatusGeschaeftsfall_Type">
						<xsd:annotation>
							<xsd:documentation>Der neue Status</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="AbstractStatusGeschaeftsfall_Type" abstract="true">
		<xsd:annotation>
			<xsd:documentation>Abstrakter Status eines Geschaeftsfalls</xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:complexType name="StatusAntragsGeschaeftsfall">
		<xsd:annotation>
			<xsd:documentation>Status eines Antrags</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractStatusGeschaeftsfall_Type">
				<xsd:sequence>
					<xsd:element name="Antragstatus" type="cst:SubmitApplicationStatus_Type"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>


	<!-- Grundlagen Notifikationsservices -->
	<xsd:element name="DeclareEndpointRequest" type="DeclareEndpointRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Request um als Makler der VU einen Endpoint bekannt zu geben</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="DeclareEndpointRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Typ für den DeclareEndpointRequest</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="VUNr" type="omds:VUNr"/>
			<xsd:element name="BasisUrlEndpoint">
				<xsd:annotation>
					<xsd:documentation>Die BasisURL unter welcher z.B. die VU die SOAP-Webservices des Vermittlers aufrufen kann. Die maximale Länge beträgt 1000 Zeichen</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="1000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element ref="ArtAuthentifizierung"/>
			<xsd:element name="Credentials" type="Credentials_Type">
				<xsd:annotation>
					<xsd:documentation>Ein abstrakter Credentials-Type, für den z.B. der UsernamePasswordCredentials_Type eingesetzt werden kann.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="AuthorizationFilter" type="cst:AuthorizationFilter" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Die Zuordnung des Endpoints zu bestimmten fachlichen Nutzern, z.B. Vermittlernummern.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="ArtAuthentifizierung">
		<xsd:annotation>
			<xsd:documentation>Gibt vor, wie die Authentifizierung beim einzelnen Serviceaufruf erfolgt. Derzeit werden die Typen Username-Token und Security-Context-Token unterstützt.</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleType>
			<xsd:restriction base="xsd:string">
				<xsd:enumeration value="UsernameToken"/>
				<xsd:enumeration value="Security-Context-Token"/>
				<!--<xsd:enumeration value="Security-Context-Token"/> -->
			</xsd:restriction>
		</xsd:simpleType>
	</xsd:element>
	<xsd:complexType name="Credentials_Type" abstract="true">
		<xsd:annotation>
			<xsd:documentation>Ein abstrakter Typ, dessen konkrete Implementierungen unterschiedliche Credentials aufnehmen können. </xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:complexType name="UsernamePasswordCredentials_Type">
		<xsd:annotation>
			<xsd:documentation>Konkrete Implementierung von Credentials mit Username und Password</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="Username" type="xsd:string" use="required">
			<xsd:annotation>
				<xsd:documentation>Der Username, wobei keine vorschriften bezüglich des Usernames gemacht werden.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="Password" type="xsd:string" use="required">
			<xsd:annotation>
				<xsd:documentation>Das Passwort, wobei keine Anforderungen an die Passwort-Stärke gemacht werden.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:element name="DeclareEndpointResponse" type="DeclareEndpointResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Response um als Makler der VU einen Endpoint bekannt zu geben</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="DeclareEndpointResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Response um als Makler der VU einen Endpoint bekannt zu geben</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="RegistrierteBasisUrlMaklerEndpoint" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Die von der VU zuletzt erfolgreich registrierte BasisUrl</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="1000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="ServiceFault" type="cst:ServiceFault" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="SecurityContextTokenRequest" type="SecurityContextTokenRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Request zum Bezug eines Security-Context-Token</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="SecurityContextTokenRequest_Type">
		<xsd:annotation>
			<xsd:documentation>Request-Type zum Bezug eines Security-Context-Tokens</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Credentials" type="Credentials_Type"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="SecurityContextTokenResponse" type="SecurityContextTokenResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Response des Bezug eines Security-Context-Tokens</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="SecurityContextTokenResponse_Type">
		<xsd:annotation>
			<xsd:documentation>Response-Type zum Bezug eines Securtity-Context-Tokens</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Token" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>Der Token selbst als String</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DauerhaftGueltig" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation>Wahr, wenn der Token eine zeitlich unbeschränkte Gültigkeit aufweist, sonst falsch.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="GueltigBis" type="omds:Datum-Zeit" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Optional: Das Ablaufdatum des Tokens</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>


</xsd:schema>
