﻿<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://nczisk.sk/iszi/2011/11"
	elementFormDefault="qualified" xmlns:typens="http://nczisk.sk/iszi/2011/11"
	xmlns:sig="http://www.w3.org/2000/09/xmldsig#"
	xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:element name="receiveOperation" type="typens:ReceiveOperationType"/>
	<xsd:element name="receiveOperationResponse" type="typens:ReceiveOperationResponseType"/>
	<xsd:element name="receiveOperationFault" type="typens:ReceiveOperationFaultType"/>

	<xsd:element name="executionStatusOperation" type="typens:ExecutionStatusOperationType"/>
	<xsd:element name="executionStatusOperationResponse" type="typens:ExecutionStatusOperationResponseType"/>

	<xsd:element name="receive" type="typens:ReceiveOperationType"/>
	<xsd:element name="receiveResponse" type="typens:ExecutionStatusOperationResponseType"/>
	<xsd:element name="receiveFault" type="typens:ReceiveOperationFaultType"/>

	<xsd:element name="faultInfo" type="xsd:string">
	</xsd:element>

	<xsd:element name="Signature" type="xsd:base64Binary"
		xmime:expectedContentTypes="application/xml">
		<xsd:annotation>
			<xsd:documentation>
				xml signature element
			</xsd:documentation>
		</xsd:annotation>
	</xsd:element>

	<xsd:element name="statement" type="xsd:base64Binary"
		xmime:expectedContentTypes="application/octet-stream">
		<xsd:annotation>
			<xsd:documentation>
				samotny encodovany obsah vykazu
			</xsd:documentation>
		</xsd:annotation>
	</xsd:element>

	<xsd:element name="validations" type="typens:ValidationNotificationArray" />

	<xsd:element name="idEDSJ" type="xsd:string">
		<xsd:annotation>
			<xsd:documentation>
				Identifikátor elektronického dokumentu u
				Spravodajskej jednotky (vaša značka)
			</xsd:documentation>
		</xsd:annotation>
	</xsd:element>

	<xsd:element name="xmlStamp" type="xsd:string">
        <xsd:annotation>
        	<xsd:documentation>XML signature - Časová pečiatka prijatia XML dokumentu</xsd:documentation>
        </xsd:annotation>
	</xsd:element>

	<xsd:complexType name="ReceiveOperationType">
		<xsd:sequence>
			<xsd:element name="executionLevel" type="typens:FineExecutionLevelType">
				<xsd:annotation>
					<xsd:documentation>operácia spracovania</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element ref="typens:statement">
				<xsd:annotation>
					<xsd:documentation>xml výkaz</xsd:documentation>
				</xsd:annotation>
			</xsd:element>

			<xsd:element ref="typens:idEDSJ"/>

			<xsd:element name="notification" type="typens:NotificationType">
				<xsd:annotation>
					<xsd:documentation>Typ notifikácie - spôsob zaslania oznámenia o
						spracovaní výkazu</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="notificationAddress" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>e-mailová adresa alebo adresa endpointu web
						service spravodajskej jednotky.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ReceiveOperationResponseType">
		<xsd:sequence>
			<xsd:element ref="typens:xmlStamp"/>

			<xsd:element name="typSuboru"
				type="typens:TypSuboruType">
			</xsd:element>
			<xsd:element name="typZaznamu"
				type="typens:TypZaznamuType">
			</xsd:element>
			<xsd:element name="timeStamp" type="xsd:dateTime">
				<xsd:annotation>
					<xsd:documentation>
						Čas prijatia výkazu v nczi. Predstavuje
						hodnotu elementu TimeStamp, ktorý sa pridáva
						do envelope pri digitálnom podpise.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element ref="typens:Signature">
				<xsd:annotation>
					<xsd:documentation>
						Signature element elektronického podpisu
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ReceiveOperationFaultType">
		<xsd:sequence>
			<xsd:element name="error" type="xsd:string" />
			<xsd:element ref="typens:validations" />
			<xsd:element name="technicalInfo" type="xsd:string" />
			<xsd:element name="xsdURL" type="xsd:anyURI" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>URL xml schémy voči ktorej sa prevádza
						validácia xml</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ExecutionStatusOperationType">
		<xsd:choice>
			<xsd:element ref="typens:xmlStamp"/>
			<xsd:element ref="typens:idEDSJ"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="ExecutionStatusOperationResponseType">
		<xsd:sequence>
			<xsd:element name="status"
				type="typens:ExecutionStatusType">
			</xsd:element>
			<xsd:element ref="typens:idEDSJ"/>
			<xsd:element ref="typens:xmlStamp"/>
			<xsd:element name="results" type="typens:StatementExecutionResultType" maxOccurs="unbounded" minOccurs="0"></xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ValidationNotificationArray">
		<xsd:sequence>
			<xsd:element name="validationNotification" minOccurs="0"
				maxOccurs="unbounded" type="typens:ValidationNotificationType">
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ValidationNotificationType">
		<xsd:sequence>
			<xsd:element name="severity" minOccurs="1"
				type="typens:SeverityType">
			</xsd:element>
			<xsd:element name="fieldId" type="xsd:integer" minOccurs="0">
			</xsd:element>
			<xsd:element name="fieldXPath" type="xsd:string"
				minOccurs="0">
			</xsd:element>
			<xsd:element name="fieldName" type="xsd:string"
				minOccurs="0">
			</xsd:element>
			<xsd:element name="fieldDescription" type="xsd:string"
				minOccurs="0">
			</xsd:element>
			<xsd:element name="errorDescription" type="xsd:string">
			</xsd:element>
			<xsd:element name="checkDescription" type="xsd:string"
				maxOccurs="1" minOccurs="0"></xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="SeverityType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="ERROR"></xsd:enumeration>
			<xsd:enumeration value="WARNING"></xsd:enumeration>
			<xsd:enumeration value="INFO"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="FineExecutionLevelType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="VALIDATE_ALL">
				<xsd:annotation>
					<xsd:documentation>Zvaliduje vsetky vykazy v subore a neulozi
						ziadne data
					</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="ERRORLESS_INPROCESS_NOSTORE_ERROR">
				<xsd:annotation>
					<xsd:documentation>Bezchybne vykazy ulozit ako rozpracovane a
						chybne neukladat
					</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="STORE_ALL_INPROCESS">
				<xsd:annotation>
					<xsd:documentation>Ulozit vsetky vykazy (chybne aj bezchybne) ako
						rozpracovane
					</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="COMMIT_ERRORLESS_NOSTORE_ERROR">
				<xsd:annotation>
					<xsd:documentation>Bezchybne vykazy odoslat a chybne neukladat
					</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="COMMIT_ERRORLESS_INPROCESS_ERROR">
				<xsd:annotation>
					<xsd:documentation>Bezchybne vykazy odoslat a chybne ulozit ako
						rozpracovane
					</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="StatementExecutionStatusType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NOSTORE">
				<xsd:annotation>
					<xsd:documentation>neulozeny</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="STORED">
				<xsd:annotation>
					<xsd:documentation>ulozeny ako rozpracovany</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="COMMITED">
				<xsd:annotation>
					<xsd:documentation>potvrdeny - odoslany</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="PersistentType">
		<xsd:sequence>
			<xsd:element name="id" type="xsd:long"></xsd:element>
			<xsd:element name="className" type="xsd:string"></xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="TypZaznamuType">
		<xsd:complexContent>
			<xsd:extension base="typens:PersistentType">
				<xsd:sequence>
					<xsd:element name="kod" type="xsd:string"></xsd:element>
					<xsd:element name="nazov" type="xsd:string"></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="TypSuboruType">
		<xsd:complexContent>
			<xsd:extension base="typens:EnumerationType">
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="EnumerationType">
		<xsd:complexContent>
			<xsd:extension base="typens:PersistentType">
				<xsd:sequence>
					<xsd:element name="code" type="xsd:string"></xsd:element>
					<xsd:element name="label" type="xsd:string"></xsd:element>
					<xsd:element name="description" type="xsd:string"></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:simpleType name="NotificationType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="EMAIL">
			<xsd:annotation><xsd:documentation>e-mailová notifikácia</xsd:documentation></xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="NOTHING">
			<xsd:annotation><xsd:documentation>asynchronna notifikácia sa neuskutočný</xsd:documentation></xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ExecutionStatusType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NOT_PROCESSED"></xsd:enumeration>
			<xsd:enumeration value="PROCESSED"></xsd:enumeration>
			<xsd:enumeration value="IN_PROGRESS"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="StatementExecutionResultType">
        <xsd:annotation>
        	<xsd:documentation>Výsledok spracovania konkrétneho výkazu</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
			<xsd:element name="position" type="xsd:int">
				<xsd:annotation>
					<xsd:documentation>
						pozícia výkazu / hlásenky v xml dokumente
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="statementIDSJ" type="xsd:string" maxOccurs="1" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						Identifikátor výkazu u spravodajskej jednotky
						(vaša značka)
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="statementVersion" type="xsd:int">
				<xsd:annotation>
					<xsd:documentation>verzia výkazu</xsd:documentation>
				</xsd:annotation></xsd:element>
			<xsd:element name="status" type="typens:StatementExecutionStatusType">
			</xsd:element>
			<xsd:element ref="typens:validations">
				<xsd:annotation>
					<xsd:documentation>Výsledok kontroly výkazu</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
