<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/02657/v1.28.1#/RetainedData" targetNamespace="http://uri.etsi.org/02657/v1.28.1#/RetainedData" elementFormDefault="qualified">
	<xs:include schemaLocation="RDMessage,ver26.xsd"/>
	<xs:include schemaLocation="NatParas3_01.28.01.08.1.01.xsd"/>
	<!-- Natparas Version: 01.28.01.08.1.01 -->
	<xs:simpleType name="Date">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="MacAddress">
		<xs:restriction base="xs:hexBinary">
			<xs:length value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="UserName">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:complexType name="Target">
		<xs:choice>
			<xs:element name="telephonyPartyInformation" type="TelephonyPartyInformation"/>
			<xs:element name="telephonySubscriber" type="TelephonySubscriber"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="LegalBasis">
		<xs:choice>
			<!-- Freitextfeld das zur zusätzlichen Übermittlung rechtlicher Grundlagen zu verwenden ist -->
			<xs:element name="other_LegalBasis" type="xs:string" minOccurs="0"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="WarrantTarget">
		<xs:sequence>
			<!-- 'targetNumber' identifiziert ein Target in den Metadaten des warrantRequests -->
			<xs:element name="targetNumber" type="xs:integer"/>
			<xs:element name="deactivateTarget" type="xs:boolean" minOccurs="0"/>
			<xs:element name="target" type="Target"/>
			<xs:element name="startDateTime" type="GeneralizedTime"/>
			<xs:element name="endDateTime" type="GeneralizedTime"/>
			<xs:element name="targetType">
				<xs:complexType>
					<xs:choice>
						<xs:element name="usageData" type="UsageData"/>
						<xs:element name="subscriberData" type="SubscriberData"/>
						<xs:element name="lawfulInterception" type="InterceptionCriteria"/>
						<xs:element name="locating" type="Locating"/>
						<!-- TR 8.1 Auch bei Anfragen zur Struktur von Funkzellen soll nun ein Warrant mitgeschickt werden -->
						<xs:element name="radioStructure" type="RadioStructure"/>
					</xs:choice>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="WarrantTextform">
		<xs:sequence>
			<xs:element name="originator" type="xs:string"/>
			<xs:element name="originatorContactDetails" type="xs:string"/>
			<xs:element name="text" type="xs:string"/>
			<xs:element name="endOfText" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Warrant">
		<xs:sequence>
			<xs:element name="warrantType">
				<xs:complexType>
					<xs:choice>
						<xs:element name="warrantTIFF" type="xs:string"/>
						<!-- TR 8.1 Ab dieser Version darf der Warrant auch als PDF mitgeschickt werden. Wie auch bei warrantTIFF sollte die Datei base64 encoded sein. -->
						<xs:element name="warrantPDF" type="xs:string"/>
						<xs:element name="warrantTextform" type="WarrantTextform"/>
					</xs:choice>
				</xs:complexType>
			</xs:element>
			<xs:element name="warrantDate" type="Date"/>
			<!-- Das Flag 'needsConfirmation' ist zu setzen, falls noch eine Bestätigung, wie bspw. bei einer Eilanordnung TKÜ, benötigt wird -->
			<xs:element name="needsConfirmation" type="NULL" minOccurs="0"/>
			<!-- TR 7.2: ist zu setzen wenn es sich um eine Bestätigung handelt zu einem Beschluss der needsConfirmation gesetzt hat -->
			<xs:element name="isConfirmation" type="NULL" minOccurs="0"/>
			<!-- TR 7.2: Ein Beschluss, der eine Ungenauigkeit korrigiert, wie z.B. fehlendes Endedatum im Beschluss -->
			<xs:element name="isCorrection" type="NULL" minOccurs="0"/>
			<!-- TR 8.1: Gibt an, ob die Targets dieses Beschlusses als Verkehrsdaten in Echtzeit behandelt werden sollen -->
			<xs:element name="usageDataInRealTime" type="UsageDataInRealtime" minOccurs="0"/>
			<!-- TR 8.1: Gibt an, ob die Anordnung als Verschlusssache nur für den Dienstgebrauch gilt -->
			<xs:element name="isVsnfd" type="NULL" minOccurs="0"/>
			<xs:element name="warrantTargets">
				<xs:complexType>
					<xs:sequence maxOccurs="unbounded">
						<xs:element name="WarrantTarget" type="WarrantTarget"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="legalBases">
				<xs:complexType>
					<xs:sequence maxOccurs="unbounded">
						<xs:element name="LegalBasis" type="LegalBasis"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="UsageData">
		<xs:sequence>
			<!-- Hier ist eine Auswahl zu treffen, ob die Anfrage den Telefondienst oder -datendienst betrifft und ob ein Late-record gewuenscht ist 'true' oder 'false' -->
			<xs:element name="telephonyService" type="xs:boolean"/>
			<xs:element name="dataService" type="xs:boolean"/>
			<xs:element name="lateRecordRequest" type="xs:boolean"/>
			<xs:element name="zielwahlRequest" type="xs:boolean"/>
			<!-- TR 7.2: Zur Angabe ob Standortortdaten gewünscht sind und ob Vergangenheit oder Zukunft -->
			<xs:element name="locationCriteria" type="LocationCriteria"/>
			<!-- TR 7.2: Welche Art von Verkehrsdaten soll angefragt werden. Wir benutzen hier den bereits vorhandenen Typ aus den NatParas3. Gff. Feldnamen anpassen? -->
			<xs:element name="typeOfData" type="TypeOfData"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="RequestedData">
		<xs:sequence>
			<xs:element name="pIN" type="NULL" minOccurs="0"/>
			<xs:element name="pUK" type="NULL" minOccurs="0"/>
			<xs:element name="billingMethod" type="NULL" minOccurs="0"/>
			<xs:element name="bankAccount" type="NULL" minOccurs="0"/>
			<xs:element name="billingAddress" type="NULL" minOccurs="0"/>
			<xs:element name="contractPeriod" type="NULL" minOccurs="0"/>
			<!-- TR 7.2: Ergänzend zur Auswahl in x-Path ob alle Rufnummern bzw. Kennungen zum Kunden oder zum Vertrag angefragt werden -->
			<xs:element name="scope" type="ScopeForSubscriberData"/>
			<!-- Das Feld 'other' ist ein Freitextfeld -->
			<xs:element name="other" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="UsageDataInRealtime">
		<xs:choice>
			<!-- TR 8.1: Gibt an, ob die Targets dieses Beschlusses als Verkehrsdaten in Echtzeit mit Locationdata behandelt werden sollen -->
			<xs:element name="withLocData" type="NULL"/>
			<!-- TR 8.1: Gibt an, ob die Targets dieses Beschlusses als Verkehrsdaten in Echtzeit ohne Locationdata behandelt werden sollen -->
			<xs:element name="withoutLocData" type="NULL"/>
			<!-- TR 8.1: Gibt an, ob die Targets dieses Beschlusses als Verkehrsdaten in Echtzeit nur Locationdata behandelt werden sollen -->
			<xs:element name="onlyLocData" type="NULL"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="ScopeForSubscriberData">
		<xs:choice>
			<!-- TR 7.2: Zusätzlich zur Auswahl in x-Path alle Rufnummern bzw. Kennungen zum Vertrag -->
			<xs:element name="contract" type="NULL" minOccurs="0"/>
			<!-- TR 7.2: Zusätzlich zur Auswahl in x-Path alle Rufnummern bzw. Kennungen zu allen zu dem ermittelten Kunden gehörenden Verträge -->
			<xs:element name="customer" type="NULL" minOccurs="0"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="SubscriberData">
		<xs:sequence>
			<xs:element name="requestedData" type="RequestedData" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Locating">
		<xs:sequence>
			<xs:element name="mSISDN" type="PartyNumber" minOccurs="0"/>
			<xs:element name="iMSI" type="IMSI" minOccurs="0"/>
			<xs:element name="vLR" type="PartyNumber" minOccurs="0"/>
			<xs:element name="startDateTime" type="GeneralizedTime" minOccurs="0"/>
			<xs:element name="endDateTime" type="GeneralizedTime" minOccurs="0"/>
			<!-- TR 7.2: Abfragen zur Abwehr von Gefahr für Leib und Leben, bei der anhand der von der berechtigten Stelle anzugebenden dynamischen IP-Adresse und dem Abfragezeitpunkt in Deutscher Ortszeit der Anschlussinhaber beauskunftet wird -->
			<xs:element name="iP" type="IPAddress" minOccurs="0"/>
			<!-- TR 7.2: Abfragen zur Abwehr von Gefahr für Leib und Leben, bei der anhand der von der berechtigten Stelle anzugebenden LineID die physikalische Adresse des Anschlusses beauskunftet wird -->
			<xs:element name="lineID" type="xs:string" minOccurs="0"/>
			<!-- TR 7.2: Abfragen zur Abwehr von Gefahr für Leib und Leben, bei der anhand der von der berechtigten Stelle anzugebenden OtherID beauskunftet wird. Die OtherID wird durch einen zusätzlichen Type definiert -->
			<xs:element name="otherID" type="xs:string" minOccurs="0"/>
			<xs:element name="otherIDtype" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="RadioStructure">
		<!-- Da alle Parameter in den Feldern von ETSI TS 102 657 übermittelt werden, bleibt dieser Datentyp leer -->
	</xs:complexType>
	<xs:complexType name="InterceptionCriteria">
		<xs:sequence>
			<!-- Für IRI-only müssen die Elemente 'interceptVoice' und 'interceptData'auf 'false' gesetzt werden -->
			<xs:element name="interceptVoice" type="xs:boolean"/>
			<xs:element name="interceptData" type="xs:boolean"/>
			<xs:element name="interceptIdlemodeHandover" type="xs:boolean" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MonitoringCenter">
		<xs:sequence>
			<xs:element name="destinationNumber" type="PartyNumber" minOccurs="0"/>
			<xs:element name="ipAddress" type="IPAddress" minOccurs="0"/>
			<xs:element name="portNumber" type="xs:integer" minOccurs="0"/>
			<xs:element name="ftpAddress" type="xs:string" minOccurs="0"/>
			<xs:element name="ftpUsername" type="xs:string" minOccurs="0"/>
			<xs:element name="ftpPassword" type="xs:string" minOccurs="0"/>
			<xs:element name="x25address" type="PartyNumber" minOccurs="0"/>
			<xs:element name="x31address" type="PartyNumber" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Activation">
		<xs:sequence>
			<xs:element name="target" type="Target"/>
			<xs:element name="internetLeitungskennung" type="InternetLeitungskennung" minOccurs="0"/>		
			<xs:element name="lIID" type="xs:string" minOccurs="0"/>
			<xs:element name="interceptionCriteria" type="InterceptionCriteria"/>
			<xs:element name="monitoringCenter" type="MonitoringCenter"/>
			<xs:element name="startDateTime" type="GeneralizedTime" minOccurs="0"/>
			<xs:element name="endDateTime" type="GeneralizedTime"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Renewal">
		<xs:sequence>
			<xs:element name="lIID" type="xs:string"/>
			<xs:element name="endDateTime" type="GeneralizedTime"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Modification">
		<xs:sequence>
			<xs:element name="lIID" type="xs:string"/>
			<xs:element name="newLIID" type="xs:string" minOccurs="0"/>
			<xs:element name="newInterceptionCriteria" type="InterceptionCriteria" minOccurs="0"/>
			<xs:element name="newMonitoringCenter" type="MonitoringCenter" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Deactivation">
		<xs:sequence>
			<xs:element name="lIID" type="xs:string"/>
			<xs:element name="endDateTime" type="GeneralizedTime" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="LawfulInterception">
		<xs:choice>
			<xs:element name="activation" type="Activation"/>
			<xs:element name="renewal" type="Renewal"/>
			<xs:element name="modification" type="Modification"/>
			<xs:element name="deactivation" type="Deactivation"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="NationalTelephonyPartyInformation">
		<xs:sequence>
			<xs:element name="countryCode" type="xs:string" default="DE"/>
			<xs:element name="headerID" type="xs:string"/>
			<xs:element name="partyNumberAKUE" type="xs:string" minOccurs="0"/>
			<xs:element name="voipID" type="xs:string" minOccurs="0"/>
			<xs:element name="lineID" type="xs:string" minOccurs="0"/>
			<xs:element name="userName" type="UserName" minOccurs="0"/>
			<xs:element name="postBoxAddress" type="xs:string" minOccurs="0"/>
			<xs:element name="macAddress" type="MacAddress" minOccurs="0"/>
			<xs:element name="ipAddress" type="IPAddress" minOccurs="0"/>
			<!-- TR 7.2: hostMacAddress is used for WIFI / hotspot interception-->
			<xs:element name="hostMacAddress" type="MacAddress" minOccurs="0"/>
			<!-- TR 7.2: mailboxID is used instead of the E-Mail address when mailbox operations are of interest like checking e-mails, downloading or deleting e-mails-->
			<xs:element name="mailboxID" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!-- TR 7.2: Aus Natparas3 umgezogen wegen neuer Suchkriterien für BDAs-->
	<xs:complexType name="NationalTelephonySubscriberInfo">
      <xs:sequence>
        <xs:element name="countryCode" type="xs:string" default="DE"/>
		<xs:element name="headerID" type="xs:string"/>
		<xs:element name="nASubscriber" type="NASubscriber" minOccurs="0"/>
		<xs:element name="multimediaSubscriber" type="MultimediaSubscriber" minOccurs="0"/>
		<xs:element name="msgSubscriber" type="MsgSubscriber" minOccurs="0"/>
		<!-- TR 7.2: Dieses Anfragekritierium soll dazu verwendet werden, um aus technischen Kennungen den dazugehörigen Anschluss zu identifizieren.-->
		<xs:element name="internetLeitungskennung" type="InternetLeitungskennung" minOccurs="0"/>
		<!-- TR 7.2: Dieses Anfragekriterium soll dazu verwendet werden, um aus technischen Kennungen den dazugehörigen Teilnehmer zu identifizieren. Z.B. DSL Account, MAC Modem etc.-->
		<xs:element name="Zugangsnummer" type="xs:string" minOccurs="0"/>
		<xs:element name="Vouchernummer" type="xs:string" minOccurs="0"/>
      </xs:sequence>
   </xs:complexType>
	<xs:complexType name="NationalRequestParameters">
		<xs:sequence>
			<xs:element name="countryCode" type="xs:string" default="DE"/>
			<xs:element name="headerID" type="xs:string"/>
			<xs:element name="referencedRequestNumber" type="xs:string" minOccurs="0"/>
			<xs:element name="targetNumber" type="xs:integer" minOccurs="0"/>
			<xs:element name="groupID" type="xs:string" minOccurs="0"/>
			<xs:element name="additionalInformation" type="xs:string" minOccurs="0"/>
			<xs:element name="requestDetails">
				<xs:complexType>
					<xs:choice>
						<xs:element name="warrant" type="Warrant"/>
						<xs:element name="usageData" type="UsageData"/>
						<xs:element name="subscriberData" type="SubscriberData"/>
						<xs:element name="locating" type="Locating"/>
						<xs:element name="radioStructure" type="RadioStructure"/>
						<xs:element name="lawfulInterception" type="LawfulInterception"/>
						<xs:element name="compensation" type="Compensation"/>
					</xs:choice>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="JVEG2017">
		<!-- Datentypen für die Geltendmachung von Entschädigungsansprüchen -->
		<xs:choice>
			<xs:element name="jVEG_Nummer_100" type="NULL"/>
			<xs:element name="jVEG_Nummer_101" type="NULL"/>
			<xs:element name="jVEG_Nummer_102" type="NULL"/>
			<xs:element name="jVEG_Nummer_103" type="NULL"/>
			<xs:element name="jVEG_Nummer_104" type="NULL"/>
			<xs:element name="jVEG_Nummer_105" type="NULL"/>
			<xs:element name="jVEG_Nummer_106" type="NULL"/>
			<xs:element name="jVEG_Nummer_107" type="NULL"/>
			<xs:element name="jVEG_Nummer_108" type="NULL"/>
			<xs:element name="jVEG_Nummer_109" type="NULL"/>
			<xs:element name="jVEG_Nummer_110" type="NULL"/>
			<xs:element name="jVEG_Nummer_111" type="NULL"/>
			<xs:element name="jVEG_Nummer_112" type="NULL"/>
			<xs:element name="jVEG_Nummer_113" type="NULL"/>
			<xs:element name="jVEG_Nummer_200" type="NULL"/>
			<xs:element name="jVEG_Nummer_201" type="NULL"/>
			<xs:element name="jVEG_Nummer_202" type="NULL"/>
			<xs:element name="jVEG_Nummer_300" type="NULL"/>
			<xs:element name="jVEG_Nummer_301" type="NULL"/>
			<xs:element name="jVEG_Nummer_302" type="NULL"/>
			<xs:element name="jVEG_Nummer_303" type="NULL"/>
			<xs:element name="jVEG_Nummer_304" type="NULL"/>
			<xs:element name="jVEG_Nummer_305" type="NULL"/>
			<xs:element name="jVEG_Nummer_306" type="NULL"/>
			<xs:element name="jVEG_Nummer_307" type="NULL"/>
			<xs:element name="jVEG_Nummer_308" type="NULL"/>
			<xs:element name="jVEG_Nummer_309" type="NULL"/>
			<xs:element name="jVEG_Nummer_310" type="NULL"/>
			<xs:element name="jVEG_Nummer_311" type="NULL"/>
			<xs:element name="jVEG_Nummer_312" type="NULL"/>
			<xs:element name="jVEG_Nummer_313" type="NULL"/>
			<xs:element name="jVEG_Nummer_314" type="NULL"/>
			<xs:element name="jVEG_Nummer_315" type="NULL"/>
			<xs:element name="jVEG_Nummer_316" type="NULL"/>
			<xs:element name="jVEG_Nummer_317" type="NULL"/>
			<xs:element name="jVEG_Nummer_318" type="NULL"/>
			<xs:element name="jVEG_Nummer_319" type="NULL"/>
			<xs:element name="jVEG_Nummer_320" type="NULL"/>
			<xs:element name="jVEG_Nummer_321" type="NULL"/>
			<xs:element name="jVEG_Nummer_322" type="NULL"/>
			<xs:element name="jVEG_Nummer_323" type="NULL"/>
			<xs:element name="jVEG_Nummer_324" type="NULL"/>
			<xs:element name="jVEG_Nummer_325" type="NULL"/>
			<xs:element name="jVEG_Nummer_400" type="NULL"/>
			<xs:element name="jVEG_Nummer_401" type="NULL"/>
			<xs:element name="jVEG_Nummer_402" type="NULL"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CompensationItem">
		<xs:sequence>
			<xs:element name="requestNumber" type="xs:string"/>
			<!-- Nummer des Data-, Aktivierungs- oder Renewal-Requests -->
			<xs:element name="groupID" type="xs:string" minOccurs="0"/>
			<xs:element name="jVEG2017" type="JVEG2017"/>
			<xs:element name="rebate" type="xs:boolean"/>
			<!-- Angabe, ob 20% Rabatt zutrifft, 'true' oder 'false' -->
			<xs:element name="quantity" type="xs:integer"/>
			<!-- Außer in Fällen wie bspw. Leitungskosten, ist die Menge gewoehnlich immer '1' -->
			<xs:element name="price" type="xs:double"/>
			<!-- Preis und Menge inkl. Rabatt-->
			<xs:element name="comment" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Compensation">
		<xs:sequence>
			<xs:element name="compensationName" type="xs:string"/>
			<xs:element name="compensation">
				<xs:complexType>
					<xs:sequence minOccurs="0" maxOccurs="unbounded">
						<xs:element name="CompensationItem" type="CompensationItem"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<!-- TR 7.2: s.o.-->
	<xs:complexType name="LocationCriteria">
		<xs:sequence>
			<xs:element name="retrogradLocation" type="xs:boolean"/>
			<xs:element name="anterogradLocation" type="xs:boolean"/>
		</xs:sequence>
	</xs:complexType>

</xs:schema>
