commit e0512009c7e66e9882a1d5a741c1183b8ebc21dc
parent aa3fcd6fd1bb0497a4ab281370914ff55443be1d
Author: MS <ms@taler.net>
Date: Fri, 23 Jun 2023 14:25:35 +0200
Introducing EBICS 3.
Getting the <ebicsRequest> document to validate and
the switch between 2.5 and 3.0 based on the connection
dialect.
Diffstat:
17 files changed, 6472 insertions(+), 167 deletions(-)
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsClient.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsClient.kt
@@ -31,6 +31,7 @@ import org.slf4j.Logger
import org.slf4j.LoggerFactory
import tech.libeufin.nexus.NexusError
import tech.libeufin.util.*
+import tech.libeufin.util.ebics_h005.Ebics3Request
import java.util.*
private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.util")
@@ -107,12 +108,16 @@ class EbicsDownloadBankErrorResult(
suspend fun doEbicsDownloadTransaction(
client: HttpClient,
subscriberDetails: EbicsClientSubscriberDetails,
- orderType: String,
- orderParams: EbicsOrderParams
+ fetchSpec: EbicsFetchSpec
): EbicsDownloadResult {
// Initialization phase
- val initDownloadRequestStr = createEbicsRequestForDownloadInitialization(subscriberDetails, orderType, orderParams)
+ val initDownloadRequestStr = createEbicsRequestForDownloadInitialization(
+ subscriberDetails,
+ fetchSpec.orderType,
+ fetchSpec.orderParams,
+ fetchSpec.ebics3Service
+ )
val payloadChunks = LinkedList<String>()
val initResponseStr = client.postToBank(subscriberDetails.ebicsUrl, initDownloadRequestStr)
val initResponse = parseAndValidateEbicsResponse(subscriberDetails, initResponseStr)
@@ -133,7 +138,7 @@ suspend fun doEbicsDownloadTransaction(
HttpStatusCode.UnprocessableEntity,
"EBICS-technical error at init phase: " +
"${initResponse.technicalReturnCode} ${initResponse.reportText}," +
- " for order type $orderType and transaction ID: $transactionID.",
+ " for fetching level ${fetchSpec.originalLevel} and transaction ID: $transactionID.",
initResponse.technicalReturnCode
)
}
@@ -151,7 +156,7 @@ suspend fun doEbicsDownloadTransaction(
else -> {
logger.error(
"Bank-technical error at init phase: ${initResponse.bankReturnCode}" +
- ", for order type $orderType and transaction ID $transactionID."
+ ", for fetching level ${fetchSpec.originalLevel} and transaction ID $transactionID."
)
return EbicsDownloadBankErrorResult(initResponse.bankReturnCode)
}
@@ -162,14 +167,14 @@ suspend fun doEbicsDownloadTransaction(
?: throw NexusError(
HttpStatusCode.BadGateway,
"Initial response did not contain encryption info. " +
- "Order type $orderType, transaction ID $transactionID"
+ "Fetching level ${fetchSpec.originalLevel} , transaction ID $transactionID"
)
val initOrderDataEncChunk = initResponse.orderDataEncChunk
?: throw NexusError(
HttpStatusCode.BadGateway,
"Initial response for download transaction does not " +
- "contain data transfer. Order type $orderType, " +
+ "contain data transfer. Fetching level ${fetchSpec.originalLevel}, " +
"transaction ID $transactionID."
)
payloadChunks.add(initOrderDataEncChunk)
@@ -178,7 +183,7 @@ suspend fun doEbicsDownloadTransaction(
?: throw NexusError(
HttpStatusCode.FailedDependency,
"Missing segment number in EBICS download init response." +
- " Order type $orderType, transaction ID $transactionID"
+ " Fetching level ${fetchSpec.originalLevel}, transaction ID $transactionID"
)
// Transfer phase
for (x in 2 .. numSegments) {
@@ -201,7 +206,7 @@ suspend fun doEbicsDownloadTransaction(
HttpStatusCode.FailedDependency,
"EBICS-technical error at transfer phase: " +
"${transferResponse.technicalReturnCode} ${transferResponse.reportText}." +
- " Order type $orderType, transaction ID $transactionID"
+ " Fetching level ${fetchSpec.originalLevel}, transaction ID $transactionID"
)
}
}
@@ -212,7 +217,7 @@ suspend fun doEbicsDownloadTransaction(
else -> {
logger.error("Bank-technical error at transfer phase: " +
"${transferResponse.bankReturnCode}." +
- " Order type $orderType, transaction ID $transactionID")
+ " Fetching level ${fetchSpec.originalLevel}, transaction ID $transactionID")
return EbicsDownloadBankErrorResult(transferResponse.bankReturnCode)
}
}
@@ -220,7 +225,7 @@ suspend fun doEbicsDownloadTransaction(
?: throw NexusError(
HttpStatusCode.BadGateway,
"transfer response for download transaction " +
- "does not contain data transfer. Order type $orderType, transaction ID $transactionID"
+ "does not contain data transfer. Fetching level ${fetchSpec.originalLevel}, transaction ID $transactionID"
)
payloadChunks.add(transferOrderDataEncChunk)
logger.debug("Download transfer phase of ${transactionID}: bank acknowledges $x")
@@ -246,7 +251,7 @@ suspend fun doEbicsDownloadTransaction(
HttpStatusCode.InternalServerError,
"Unexpected EBICS return code" +
" at acknowledgement phase: ${ackResponse.technicalReturnCode.name}." +
- " Order type $orderType, transaction ID $transactionID"
+ " Fetching level ${fetchSpec.originalLevel}, transaction ID $transactionID"
)
}
}
@@ -258,9 +263,10 @@ suspend fun doEbicsDownloadTransaction(
suspend fun doEbicsUploadTransaction(
client: HttpClient,
subscriberDetails: EbicsClientSubscriberDetails,
- orderType: String,
+ orderType: String? = null,
payload: ByteArray,
- orderParams: EbicsOrderParams
+ orderParams: EbicsOrderParams,
+ ebics3OrderService: Ebics3Request.OrderDetails.Service? = null
) {
if (subscriberDetails.bankEncPub == null) {
throw NexusError(HttpStatusCode.BadRequest,
@@ -268,7 +274,13 @@ suspend fun doEbicsUploadTransaction(
)
}
val preparedUploadData = prepareUploadPayload(subscriberDetails, payload)
- val req = createEbicsRequestForUploadInitialization(subscriberDetails, orderType, orderParams, preparedUploadData)
+ val req = createEbicsRequestForUploadInitialization(
+ subscriberDetails,
+ orderType,
+ orderParams,
+ preparedUploadData,
+ ebics3OrderService = ebics3OrderService
+ )
logger.debug("EBICS upload message to: ${subscriberDetails.ebicsUrl}")
val responseStr = client.postToBank(subscriberDetails.ebicsUrl, req)
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt
@@ -55,6 +55,7 @@ import tech.libeufin.nexus.server.*
import tech.libeufin.util.*
import tech.libeufin.util.ebics_h004.EbicsTypes
import tech.libeufin.util.ebics_h004.HTDResponseOrderData
+import tech.libeufin.util.ebics_h005.Ebics3Request
import java.io.ByteArrayOutputStream
import java.security.interfaces.RSAPrivateCrtKey
import java.security.interfaces.RSAPublicKey
@@ -67,9 +68,17 @@ import java.util.*
import javax.crypto.EncryptedPrivateKeyInfo
-private data class EbicsFetchSpec(
- val orderType: String,
- val orderParams: EbicsOrderParams
+/**
+ * This type maps the abstract fetch specifications -- as for example
+ * they were given via the Nexus JSON API -- to the specific EBICS type.
+ */
+data class EbicsFetchSpec(
+ val orderType: String? = null, // unused for 3.0
+ val orderParams: EbicsOrderParams,
+ val ebics3Service: Ebics3Request.OrderDetails.Service? = null, // unused for 2.5
+ // Not always available, for example at raw POST /download/${ebicsMessageName} calls.
+ // It helps to trace back the original level.
+ val originalLevel: FetchLevel? = null
)
/**
@@ -128,22 +137,62 @@ private fun validateAndStoreCamt(
}
}
-/**
- * Fetch EBICS C5x and store it locally, but do not update bank accounts.
- */
-private suspend fun fetchEbicsC5x(
- historyType: String,
+private fun handleEbicsDownloadResult(
+ bankResponse: EbicsDownloadResult,
+ bankConnectionId: String,
+ fetchLevel: FetchLevel
+) {
+ when (bankResponse) {
+ is EbicsDownloadSuccessResult -> {
+ bankResponse.orderData.unzipWithLambda {
+ // logger.debug("Camt entry (filename (in the Zip archive): ${it.first}): ${it.second}")
+ validateAndStoreCamt(
+ bankConnectionId,
+ it.second,
+ fetchLevel,
+ transactionID = bankResponse.transactionID
+ )
+ }
+ }
+ is EbicsDownloadBankErrorResult -> {
+ throw NexusError(
+ HttpStatusCode.BadGateway,
+ bankResponse.returnCode.errorCode
+ )
+ }
+ is EbicsDownloadEmptyResult -> {
+ // no-op
+ }
+ }
+}
+
+// Fetch EBICS transactions according to the specifications
+// (fetchSpec) it finds in the parameters.
+private suspend fun fetchEbicsTransactions(
+ fetchSpec: EbicsFetchSpec,
client: HttpClient,
bankConnectionId: String,
- orderParams: EbicsOrderParams,
- subscriberDetails: EbicsClientSubscriberDetails
+ subscriberDetails: EbicsClientSubscriberDetails,
) {
- val response = try {
+ /**
+ * In this case Nexus will not be able to associate the future
+ * EBICS response with the fetch level originally requested by
+ * the caller, and therefore refuses to continue the execution.
+ * This condition is however in some cases allowed: for example
+ * along the "POST /download/$ebicsMessageType" call, where the result
+ * is not supposed to be stored in the database and therefore doesn't
+ * need its original level.
+ */
+ if (fetchSpec.originalLevel == null) {
+ throw internalServerError(
+ "Original fetch level missing, won't download from EBICS"
+ )
+ }
+ val response: EbicsDownloadResult = try {
doEbicsDownloadTransaction(
client,
subscriberDetails,
- historyType,
- orderParams
+ fetchSpec
)
} catch (e: EbicsProtocolError) {
/**
@@ -158,43 +207,11 @@ private suspend fun fetchEbicsC5x(
throw e
}
- when (historyType) {
- // default dialect
- "C52" -> {}
- "C53" -> {}
- // 'pf' dialect
- "Z52" -> {}
- "Z53" -> {}
- "Z54" -> {}
- else -> {
- throw NexusError(
- HttpStatusCode.BadRequest,
- "history type '$historyType' not supported"
- )
- }
- }
- when (response) {
- is EbicsDownloadSuccessResult -> {
- response.orderData.unzipWithLambda {
- // logger.debug("Camt entry (filename (in the Zip archive): ${it.first}): ${it.second}")
- validateAndStoreCamt(
- bankConnectionId,
- it.second,
- getFetchLevelFromEbicsOrder(historyType),
- transactionID = response.transactionID
- )
- }
- }
- is EbicsDownloadBankErrorResult -> {
- throw NexusError(
- HttpStatusCode.BadGateway,
- response.returnCode.errorCode
- )
- }
- is EbicsDownloadEmptyResult -> {
- // no-op
- }
- }
+ handleEbicsDownloadResult(
+ response,
+ bankConnectionId,
+ fetchSpec.originalLevel
+ )
}
/**
@@ -333,7 +350,12 @@ fun Route.ebicsBankConnectionRoutes(client: HttpClient) {
getEbicsSubscriberDetails(conn.connectionId)
}
val response = doEbicsDownloadTransaction(
- client, subscriberDetails, "HTD", EbicsStandardOrderParams()
+ client,
+ subscriberDetails,
+ EbicsFetchSpec(
+ orderType = "HTD",
+ orderParams = EbicsStandardOrderParams()
+ )
)
when (response) {
is EbicsDownloadEmptyResult -> {
@@ -394,8 +416,12 @@ fun Route.ebicsBankConnectionRoutes(client: HttpClient) {
val response = doEbicsDownloadTransaction(
client,
subscriberDetails,
- orderType,
- orderParams
+ EbicsFetchSpec(
+ orderType = orderType,
+ orderParams = orderParams,
+ ebics3Service = null,
+ originalLevel = null
+ )
)
when (response) {
is EbicsDownloadEmptyResult -> {
@@ -465,30 +491,64 @@ fun formatHex(ba: ByteArray): String {
return out
}
-private fun getSubmissionTypeAfterDialect(dialect: String? = null): String {
+// A null return value indicates that the connection uses EBICS 3.0
+private fun getSubmissionTypeAfterDialect(dialect: String? = null): String? {
return when (dialect) {
- "pf" -> "XE2"
+ "pf" -> null // "XE2"
else -> "CCT"
}
}
-private fun getReportTypeAfterDialect(dialect: String? = null): String {
+
+private fun getStatementSpecAfterDialect(dialect: String? = null, p: EbicsOrderParams): EbicsFetchSpec {
return when (dialect) {
- "pf" -> "Z52"
- else -> "C52"
+ "pf" -> EbicsFetchSpec(
+ orderType = "Z53",
+ orderParams = p,
+ ebics3Service = null,
+ originalLevel = FetchLevel.STATEMENT
+ )
+ else -> EbicsFetchSpec(
+ orderType = "C53",
+ orderParams = p,
+ ebics3Service = null,
+ originalLevel = FetchLevel.STATEMENT
+ )
}
}
-private fun getStatementTypeAfterDialect(dialect: String? = null): String {
+
+private fun getNotificationSpecAfterDialect(dialect: String? = null, p: EbicsOrderParams): EbicsFetchSpec {
return when (dialect) {
- "pf" -> "Z53"
- else -> "C53"
+ "pf" -> EbicsFetchSpec(
+ orderType = null, // triggers 3.0
+ orderParams = p,
+ ebics3Service = Ebics3Request.OrderDetails.Service().apply {
+ serviceName = "REP"
+ messageName = "camt.054"
+ scope = "CH"
+ },
+ originalLevel = FetchLevel.NOTIFICATION
+ )
+ else -> EbicsFetchSpec(
+ orderType = "C54",
+ orderParams = p,
+ ebics3Service = null,
+ originalLevel = FetchLevel.NOTIFICATION
+ )
}
}
-
-private fun getNotificationTypeAfterDialect(dialect: String? = null): String {
+private fun getReportSpecAfterDialect(dialect: String? = null, p: EbicsOrderParams): EbicsFetchSpec {
return when (dialect) {
- "pf" -> "Z54"
- else -> throw NotImplementedError(
- "Notifications not implemented in the 'default' EBICS dialect"
+ "pf" -> EbicsFetchSpec(
+ orderType = "Z52",
+ orderParams = p,
+ ebics3Service = null,
+ originalLevel = FetchLevel.REPORT
+ )
+ else -> EbicsFetchSpec(
+ orderType = "C52",
+ orderParams = p,
+ ebics3Service = null,
+ originalLevel = FetchLevel.REPORT
)
}
}
@@ -522,7 +582,8 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
is FetchSpecLatestJson -> {
EbicsFetchSpec(
orderType = "Z01", // PoFi specific.
- orderParams = EbicsStandardOrderParams()
+ orderParams = EbicsStandardOrderParams(),
+ originalLevel = fetchSpec.level
)
}
else -> throw NotImplementedError("Fetch spec '${fetchSpec::class}' not supported for payment receipts.")
@@ -532,8 +593,10 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
doEbicsDownloadTransaction(
client,
subscriberDetails,
- ebicsOrderInfo.orderType,
- ebicsOrderInfo.orderParams
+ EbicsFetchSpec(
+ orderType = ebicsOrderInfo.orderType,
+ orderParams = ebicsOrderInfo.orderParams
+ )
)
} catch (e: EbicsProtocolError) {
if (e.ebicsTechnicalCode == EbicsReturnCode.EBICS_NO_DOWNLOAD_DATA_AVAILABLE) {
@@ -579,17 +642,17 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
fun addForLevel(l: FetchLevel, p: EbicsOrderParams) {
when (l) {
FetchLevel.ALL -> {
- specs.add(EbicsFetchSpec(getReportTypeAfterDialect(subscriberDetails.dialect), p))
- specs.add(EbicsFetchSpec(getStatementTypeAfterDialect(subscriberDetails.dialect), p))
+ specs.add(getReportSpecAfterDialect(subscriberDetails.dialect, p))
+ specs.add(getStatementSpecAfterDialect(subscriberDetails.dialect, p))
}
FetchLevel.REPORT -> {
- specs.add(EbicsFetchSpec(getReportTypeAfterDialect(subscriberDetails.dialect), p))
+ specs.add(getReportSpecAfterDialect(subscriberDetails.dialect, p))
}
FetchLevel.STATEMENT -> {
- specs.add(EbicsFetchSpec(getStatementTypeAfterDialect(subscriberDetails.dialect), p))
+ specs.add(getStatementSpecAfterDialect(subscriberDetails.dialect, p))
}
FetchLevel.NOTIFICATION -> {
- specs.add(EbicsFetchSpec(getNotificationTypeAfterDialect(subscriberDetails.dialect), p))
+ specs.add(getNotificationSpecAfterDialect(subscriberDetails.dialect, p))
}
else -> {
logger.error("fetch level wrong in addForLevel() helper: ${fetchSpec.level}.")
@@ -646,32 +709,17 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
)
when (fetchSpec.level) {
FetchLevel.ALL -> {
- specs.add(EbicsFetchSpec(
- orderType = getReportTypeAfterDialect(dialect = subscriberDetails.dialect),
- orderParams = pRep
- ))
- specs.add(EbicsFetchSpec(
- orderType = getStatementTypeAfterDialect(dialect = subscriberDetails.dialect),
- orderParams = pStmt
- ))
+ specs.add(getReportSpecAfterDialect(subscriberDetails.dialect, pRep))
+ specs.add(getStatementSpecAfterDialect(subscriberDetails.dialect, pRep))
}
FetchLevel.REPORT -> {
- specs.add(EbicsFetchSpec(
- orderType = getReportTypeAfterDialect(dialect = subscriberDetails.dialect),
- orderParams = pRep
- ))
+ specs.add(getReportSpecAfterDialect(subscriberDetails.dialect, pRep))
}
FetchLevel.STATEMENT -> {
- specs.add(EbicsFetchSpec(
- orderType = getStatementTypeAfterDialect(dialect = subscriberDetails.dialect),
- orderParams = pStmt
- ))
+ specs.add(getStatementSpecAfterDialect(subscriberDetails.dialect, pStmt))
}
FetchLevel.NOTIFICATION -> {
- specs.add(EbicsFetchSpec(
- orderType = getNotificationTypeAfterDialect(dialect = subscriberDetails.dialect),
- orderParams = pNtfn
- ))
+ specs.add(getNotificationSpecAfterDialect(subscriberDetails.dialect, pNtfn))
}
else -> throw badRequest("Fetch level ${fetchSpec.level} " +
"not supported in the 'since last' EBICS time range.")
@@ -682,11 +730,10 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
val errors = mutableListOf<Exception>()
for (spec in specs) {
try {
- fetchEbicsC5x(
- spec.orderType,
+ fetchEbicsTransactions(
+ spec,
client,
bankConnectionId,
- spec.orderParams,
subscriberDetails
)
} catch (e: Exception) {
@@ -741,7 +788,14 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
dbData.subscriberDetails,
getSubmissionTypeAfterDialect(dbData.subscriberDetails.dialect),
dbData.painXml.toByteArray(Charsets.UTF_8),
- EbicsStandardOrderParams()
+ EbicsStandardOrderParams(),
+ ebics3OrderService = if (dbData.subscriberDetails.dialect == "pf") {
+ Ebics3Request.OrderDetails.Service().apply {
+ serviceName = "MCT"
+ scope = "CH"
+ messageName = "pain.001"
+ }
+ } else null
)
transaction {
val payment = getPaymentInitiation(paymentInitiationId)
@@ -1025,7 +1079,12 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol {
override suspend fun fetchAccounts(client: HttpClient, connId: String) {
val subscriberDetails = transaction { getEbicsSubscriberDetails(connId) }
val response = doEbicsDownloadTransaction(
- client, subscriberDetails, "HTD", EbicsStandardOrderParams()
+ client,
+ subscriberDetails,
+ EbicsFetchSpec(
+ orderType = "HTD",
+ orderParams = EbicsStandardOrderParams()
+ )
)
when (response) {
is EbicsDownloadEmptyResult -> {
diff --git a/nexus/src/test/kotlin/EbicsTest.kt b/nexus/src/test/kotlin/EbicsTest.kt
@@ -26,6 +26,7 @@ import tech.libeufin.util.*
import tech.libeufin.util.ebics_h004.EbicsRequest
import tech.libeufin.util.ebics_h004.EbicsResponse
import tech.libeufin.util.ebics_h004.EbicsTypes
+import tech.libeufin.util.ebics_h005.Ebics3Request
/**
* These test cases run EBICS CCT and C52, mixing ordinary operations
@@ -317,4 +318,40 @@ class DownloadAndSubmit {
}
}
}
+}
+
+class EbicsTest {
+
+ /**
+ * Tests the validity of EBICS 3.0 messages.
+ */
+ @Test
+ fun genEbics3() {
+ withTestDatabase {
+ prepNexusDb()
+ val foo = transaction { getEbicsSubscriberDetails("foo") }
+ val downloadDoc = createEbicsRequestForDownloadInitialization(
+ foo,
+ orderType = null, // triggers 3.0
+ EbicsStandardOrderParams(),
+ Ebics3Request.OrderDetails.Service().apply {
+ messageName = "camt.054"
+ scope = "CH"
+ serviceName = "REP"
+ }
+ )
+ assert(XMLUtil.validateFromString(downloadDoc))
+ val uploadDoc = createEbicsRequestForDownloadInitialization(
+ foo,
+ orderType = null, // triggers 3.0
+ EbicsStandardOrderParams(),
+ Ebics3Request.OrderDetails.Service().apply {
+ messageName = "pain.001"
+ scope = "EU"
+ serviceName = "MCT"
+ }
+ )
+ assert(XMLUtil.validateFromString(uploadDoc))
+ }
+ }
}
\ No newline at end of file
diff --git a/nexus/src/test/kotlin/PostFinance.kt b/nexus/src/test/kotlin/PostFinance.kt
@@ -5,7 +5,6 @@ import org.jetbrains.exposed.sql.transactions.transaction
import tech.libeufin.nexus.bankaccount.addPaymentInitiation
import tech.libeufin.nexus.bankaccount.fetchBankAccountTransactions
import tech.libeufin.nexus.bankaccount.getBankAccount
-import tech.libeufin.nexus.ebics.EbicsBankConnectionProtocol
import tech.libeufin.nexus.ebics.doEbicsUploadTransaction
import tech.libeufin.nexus.ebics.getEbicsSubscriberDetails
import tech.libeufin.nexus.getConnectionPlugin
diff --git a/util/src/main/kotlin/Ebics.kt b/util/src/main/kotlin/Ebics.kt
@@ -28,6 +28,8 @@ import io.ktor.http.HttpStatusCode
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import tech.libeufin.util.ebics_h004.*
+import tech.libeufin.util.ebics_h005.Ebics3Request
+import tech.libeufin.util.ebics_h005.Ebics3Types
import tech.libeufin.util.ebics_hev.HEVRequest
import tech.libeufin.util.ebics_hev.HEVResponse
import tech.libeufin.util.ebics_s001.UserSignatureData
@@ -133,6 +135,14 @@ private fun makeOrderParams(orderParams: EbicsOrderParams): EbicsRequest.OrderPa
}
}
+fun makeEbics3DateRange(ebicsDateRange: EbicsDateRange?): Ebics3Request.DateRange? {
+ return if (ebicsDateRange != null)
+ return Ebics3Request.DateRange().apply {
+ this.start = getXmlDate(ebicsDateRange.start)
+ this.end = getXmlDate(ebicsDateRange.end)
+ }
+ else null
+}
private fun signOrder(
orderBlob: ByteArray,
@@ -231,25 +241,49 @@ fun prepareUploadPayload(subscriberDetails: EbicsClientSubscriberDetails, payloa
*/
fun createEbicsRequestForUploadInitialization(
subscriberDetails: EbicsClientSubscriberDetails,
- orderType: String,
+ orderType: String? = null,
orderParams: EbicsOrderParams,
- preparedUploadData: PreparedUploadData
+ preparedUploadData: PreparedUploadData,
+ ebics3OrderService: Ebics3Request.OrderDetails.Service? = null
): String {
+ // Check if the call is consistent: (only) ONE instruction is expected.
+ if (orderType == null && ebics3OrderService == null)
+ throw internalServerError("Need exactly one upload instruction but zero was found.")
+ if (orderType != null && ebics3OrderService != null)
+ throw internalServerError("Need exactly one upload instruction but two were found")
val nonce = getNonce(128)
- val req = EbicsRequest.createForUploadInitializationPhase(
- preparedUploadData.transactionKey,
- preparedUploadData.userSignatureDataEncrypted,
- subscriberDetails.hostId,
- nonce,
- subscriberDetails.partnerId,
- subscriberDetails.userId,
- DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
- subscriberDetails.bankAuthPub!!,
- subscriberDetails.bankEncPub!!,
- BigInteger.ONE,
- orderType,
- makeOrderParams(orderParams)
- )
+ val doc = if (orderType != null) {
+ val req = EbicsRequest.createForUploadInitializationPhase(
+ preparedUploadData.transactionKey,
+ preparedUploadData.userSignatureDataEncrypted,
+ subscriberDetails.hostId,
+ nonce,
+ subscriberDetails.partnerId,
+ subscriberDetails.userId,
+ DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
+ subscriberDetails.bankAuthPub!!,
+ subscriberDetails.bankEncPub!!,
+ BigInteger.ONE,
+ orderType,
+ makeOrderParams(orderParams)
+ )
+ XMLUtil.convertJaxbToDocument(req)
+ } else {
+ val req = Ebics3Request.createForUploadInitializationPhase(
+ preparedUploadData.transactionKey,
+ preparedUploadData.userSignatureDataEncrypted,
+ subscriberDetails.hostId,
+ nonce,
+ subscriberDetails.partnerId,
+ subscriberDetails.userId,
+ DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
+ subscriberDetails.bankAuthPub!!,
+ subscriberDetails.bankEncPub!!,
+ BigInteger.ONE,
+ ebics3OrderService!!
+ )
+ XMLUtil.convertJaxbToDocument(req)
+ }
/**
* FIXME: this log should be made by the caller.
* That way, all the EBICS transaction steps would be logged in only one function,
@@ -259,45 +293,73 @@ fun createEbicsRequestForUploadInitialization(
*/
logger.debug("Created EBICS $orderType document for upload initialization," +
" nonce: ${nonce.toHexString()}")
- val doc = XMLUtil.convertJaxbToDocument(req)
- XMLUtil.signEbicsDocument(doc, subscriberDetails.customerAuthPriv)
+ XMLUtil.signEbicsDocument(
+ doc,
+ subscriberDetails.customerAuthPriv,
+ withEbics3 = ebics3OrderService != null
+ )
return XMLUtil.convertDomToString(doc)
}
fun createEbicsRequestForDownloadInitialization(
subscriberDetails: EbicsClientSubscriberDetails,
- orderType: String,
- orderParams: EbicsOrderParams
+ orderType: String? = null,
+ orderParams: EbicsOrderParams,
+ ebics3OrderService: Ebics3Request.OrderDetails.Service? = null
): String {
+ // Check if the call is consistent: (only) ONE instruction is expected.
+ if (orderType == null && ebics3OrderService == null)
+ throw internalServerError("Need exactly one download instruction but zero was found.")
+ if (orderType != null && ebics3OrderService != null)
+ throw internalServerError("Need exactly one download instruction but two were found")
val nonce = getNonce(128)
- val req = EbicsRequest.createForDownloadInitializationPhase(
- subscriberDetails.userId,
- subscriberDetails.partnerId,
- subscriberDetails.hostId,
- nonce,
- DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
- subscriberDetails.bankEncPub ?: throw EbicsProtocolError(
- HttpStatusCode.BadRequest,
- "Invalid subscriber state 'bankEncPub' missing, please send HPB first"
- ),
- subscriberDetails.bankAuthPub ?: throw EbicsProtocolError(
- HttpStatusCode.BadRequest,
- "Invalid subscriber state 'bankAuthPub' missing, please send HPB first"
- ),
- orderType,
- makeOrderParams(orderParams)
- )
- /**
- * FIXME: this log should be made by the caller.
- * That way, all the EBICS transaction steps would be logged in only one function,
- * as opposed to have them spread through the helpers here. This function
- * returning a string blocks now, since the caller should parse and stringify
- * again the message, only to get its nonce.
- */
+
+ val doc = if (orderType != null) {
+ val req = EbicsRequest.createForDownloadInitializationPhase(
+ subscriberDetails.userId,
+ subscriberDetails.partnerId,
+ subscriberDetails.hostId,
+ nonce,
+ DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
+ subscriberDetails.bankEncPub ?: throw EbicsProtocolError(
+ HttpStatusCode.BadRequest,
+ "Invalid subscriber state 'bankEncPub' missing, please send HPB first"
+ ),
+ subscriberDetails.bankAuthPub ?: throw EbicsProtocolError(
+ HttpStatusCode.BadRequest,
+ "Invalid subscriber state 'bankAuthPub' missing, please send HPB first"
+ ),
+ orderType,
+ makeOrderParams(orderParams)
+ )
+ XMLUtil.convertJaxbToDocument(req)
+ } else {
+ val req = Ebics3Request.createForDownloadInitializationPhase(
+ subscriberDetails.userId,
+ subscriberDetails.partnerId,
+ subscriberDetails.hostId,
+ nonce,
+ DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
+ subscriberDetails.bankEncPub ?: throw EbicsProtocolError(
+ HttpStatusCode.BadRequest,
+ "Invalid subscriber state 'bankEncPub' missing, please send HPB first"
+ ),
+ subscriberDetails.bankAuthPub ?: throw EbicsProtocolError(
+ HttpStatusCode.BadRequest,
+ "Invalid subscriber state 'bankAuthPub' missing, please send HPB first"
+ ),
+ ebics3OrderService!!
+ )
+ XMLUtil.convertJaxbToDocument(req)
+ }
+
logger.debug("Created EBICS $orderType document for download initialization," +
" nonce: ${nonce.toHexString()}")
- val doc = XMLUtil.convertJaxbToDocument(req)
- XMLUtil.signEbicsDocument(doc, subscriberDetails.customerAuthPriv)
+ XMLUtil.signEbicsDocument(
+ doc,
+ subscriberDetails.customerAuthPriv,
+ withEbics3 = ebics3OrderService != null
+ )
return XMLUtil.convertDomToString(doc)
}
diff --git a/util/src/main/kotlin/XMLUtil.kt b/util/src/main/kotlin/XMLUtil.kt
@@ -227,6 +227,7 @@ class XMLUtil private constructor() {
}
val schemaInputs: Array<Source> = listOf(
"xsd/ebics_H004.xsd",
+ "xsd/ebics_H005.xsd",
"xsd/ebics_hev.xsd",
"xsd/camt.052.001.02.xsd",
"xsd/camt.053.001.02.xsd",
@@ -404,12 +405,16 @@ class XMLUtil private constructor() {
/**
* Sign an EBICS document with the authentication and identity signature.
*/
- fun signEbicsDocument(doc: Document, signingPriv: PrivateKey): Unit {
+ fun signEbicsDocument(
+ doc: Document,
+ signingPriv: PrivateKey,
+ withEbics3: Boolean = false
+ ): Unit {
val xpath = XPathFactory.newInstance().newXPath()
xpath.namespaceContext = object : NamespaceContext {
override fun getNamespaceURI(p0: String?): String {
return when (p0) {
- "ebics" -> "urn:org:ebics:H004"
+ "ebics" -> if (withEbics3) "urn:org:ebics:H005" else "urn:org:ebics:H004"
else -> throw IllegalArgumentException()
}
}
@@ -452,12 +457,16 @@ class XMLUtil private constructor() {
authSigNode.removeChild(innerSig)
}
- fun verifyEbicsDocument(doc: Document, signingPub: PublicKey): Boolean {
+ fun verifyEbicsDocument(
+ doc: Document,
+ signingPub: PublicKey,
+ withEbics3: Boolean = false
+ ): Boolean {
val xpath = XPathFactory.newInstance().newXPath()
xpath.namespaceContext = object : NamespaceContext {
override fun getNamespaceURI(p0: String?): String {
return when (p0) {
- "ebics" -> "urn:org:ebics:H004"
+ "ebics" -> if (withEbics3) "urn:org:ebics:H005" else "urn:org:ebics:H004"
else -> throw IllegalArgumentException()
}
}
diff --git a/util/src/main/kotlin/ebics_h004/EbicsRequest.kt b/util/src/main/kotlin/ebics_h004/EbicsRequest.kt
@@ -5,7 +5,6 @@ import tech.libeufin.util.CryptoUtil
import java.math.BigInteger
import java.security.interfaces.RSAPublicKey
import java.util.*
-import javax.swing.text.Segment
import javax.xml.bind.annotation.*
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter
import javax.xml.bind.annotation.adapters.HexBinaryAdapter
@@ -315,7 +314,6 @@ class EbicsRequest {
}
}
}
-
}
fun createForDownloadInitializationPhase(
diff --git a/util/src/main/kotlin/ebics_h005/Ebics3Request.kt b/util/src/main/kotlin/ebics_h005/Ebics3Request.kt
@@ -0,0 +1,546 @@
+package tech.libeufin.util.ebics_h005
+
+import org.apache.xml.security.binding.xmldsig.SignatureType
+import tech.libeufin.util.CryptoUtil
+import tech.libeufin.util.EbicsStandardOrderParams
+import tech.libeufin.util.EbicsOrderParams
+import tech.libeufin.util.makeEbics3DateRange
+import java.math.BigInteger
+import java.security.interfaces.RSAPublicKey
+import java.util.*
+import javax.xml.bind.annotation.*
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
+import javax.xml.datatype.XMLGregorianCalendar
+
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlType(name = "", propOrder = ["header", "authSignature", "body"])
+@XmlRootElement(name = "ebicsRequest")
+class Ebics3Request {
+ @get:XmlAttribute(name = "Version", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var version: String
+
+ @get:XmlAttribute(name = "Revision")
+ var revision: Int? = null
+
+ @get:XmlElement(name = "header", required = true)
+ lateinit var header: Header
+
+ @get:XmlElement(name = "AuthSignature", required = true)
+ lateinit var authSignature: SignatureType
+
+ @get:XmlElement(name = "body")
+ lateinit var body: Body
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["static", "mutable"])
+ class Header {
+ @get:XmlElement(name = "static", required = true)
+ lateinit var static: StaticHeaderType
+
+ @get:XmlElement(required = true)
+ lateinit var mutable: MutableHeader
+
+ @get:XmlAttribute(name = "authenticate", required = true)
+ var authenticate: Boolean = false
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(
+ name = "",
+ propOrder = [
+ "hostID", "nonce", "timestamp", "partnerID", "userID", "systemID",
+ "product", "orderDetails", "bankPubKeyDigests", "securityMedium",
+ "numSegments", "transactionID"
+ ]
+ )
+ class StaticHeaderType {
+ @get:XmlElement(name = "HostID", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var hostID: String
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "Nonce", type = String::class)
+ @get:XmlJavaTypeAdapter(HexBinaryAdapter::class)
+ @get:XmlSchemaType(name = "hexBinary")
+ var nonce: ByteArray? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "Timestamp")
+ @get:XmlSchemaType(name = "dateTime")
+ var timestamp: XMLGregorianCalendar? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "PartnerID")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ var partnerID: String? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "UserID")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ var userID: String? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "SystemID")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ var systemID: String? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "Product")
+ var product: Ebics3Types.Product? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "OrderDetails")
+ var orderDetails: OrderDetails? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "BankPubKeyDigests")
+ var bankPubKeyDigests: BankPubKeyDigests? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "SecurityMedium")
+ var securityMedium: String? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "NumSegments")
+ var numSegments: BigInteger? = null
+
+ /**
+ * Present only in the transaction / finalization phase.
+ */
+ @get:XmlElement(name = "TransactionID")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ var transactionID: String? = null
+ }
+
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["transactionPhase", "segmentNumber"])
+ class MutableHeader {
+ @get:XmlElement(name = "TransactionPhase", required = true)
+ @get:XmlSchemaType(name = "token")
+ lateinit var transactionPhase: Ebics3Types.TransactionPhaseType
+
+ /**
+ * Number of the currently transmitted segment, if this message
+ * contains order data.
+ */
+ @get:XmlElement(name = "SegmentNumber")
+ var segmentNumber: Ebics3Types.SegmentNumber? = null
+
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(
+ name = "",
+ propOrder = ["adminOrderType", "btdOrderParams", "btuOrderParams", "orderID", "orderParams"]
+ )
+ class OrderDetails {
+ @get:XmlElement(name = "AdminOrderType", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var adminOrderType: String
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(propOrder = ["serviceName", "scope", "messageName"])
+
+ class Service {
+ @get:XmlElement(name = "ServiceName", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var serviceName: String
+
+ @get:XmlElement(name = "Scope", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var scope: String
+
+ @get:XmlElement(name = "MsgName", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var messageName: String
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class BTOrderParams {
+ @get:XmlElement(name = "Service", required = true)
+ lateinit var service: Service
+
+ @get:XmlElement(name = "DateRange", required = true)
+ var dateRange: DateRange? = null
+ }
+
+ @get:XmlElement(name = "BTUOrderParams", required = true)
+ var btuOrderParams: BTOrderParams? = null
+
+ @get:XmlElement(name = "BTDOrderParams", required = true)
+ var btdOrderParams: BTOrderParams? = null
+
+ /**
+ * Only present if this ebicsRequest is an upload order
+ * relating to an already existing order.
+ */
+ @get:XmlElement(name = "OrderID", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ var orderID: String? = null
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElements(
+ XmlElement(
+ name = "StandardOrderParams",
+ type = StandardOrderParams::class // OrderParams inheritor
+ ),
+ XmlElement(
+ name = "GenericOrderParams",
+ type = GenericOrderParams::class // OrderParams inheritor
+ )
+ )
+ // Same as the 2.5 version.
+ var orderParams: OrderParams? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(propOrder = ["preValidation", "dataTransfer", "transferReceipt"])
+ class Body {
+ @get:XmlElement(name = "PreValidation")
+ var preValidation: PreValidation? = null
+
+ @get:XmlElement(name = "DataTransfer")
+ var dataTransfer: DataTransfer? = null
+
+ @get:XmlElement(name = "TransferReceipt")
+ var transferReceipt: TransferReceipt? = null
+ }
+
+ /**
+ * FIXME: not implemented yet
+ */
+ @XmlAccessorType(XmlAccessType.NONE)
+ class PreValidation {
+ @get:XmlAttribute(name = "authenticate", required = true)
+ var authenticate: Boolean = false
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class SignatureData {
+ @get:XmlAttribute(name = "authenticate", required = true)
+ var authenticate: Boolean = false
+
+ @get:XmlValue
+ var value: ByteArray? = null
+ }
+
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(propOrder = ["dataEncryptionInfo", "signatureData", "orderData", "hostId"])
+ class DataTransfer {
+
+ @get:XmlElement(name = "DataEncryptionInfo")
+ var dataEncryptionInfo: Ebics3Types.DataEncryptionInfo? = null
+
+ @get:XmlElement(name = "SignatureData")
+ var signatureData: SignatureData? = null
+
+ @get:XmlElement(name = "OrderData")
+ var orderData: String? = null
+
+ @get:XmlElement(name = "HostID")
+ var hostId: String? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["receiptCode"])
+ class TransferReceipt {
+ @get:XmlAttribute(name = "authenticate", required = true)
+ var authenticate: Boolean = false
+
+ @get:XmlElement(name = "ReceiptCode")
+ var receiptCode: Int? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ abstract class OrderParams
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["dateRange"])
+ class StandardOrderParams : OrderParams() {
+ @get:XmlElement(name = "DateRange")
+ var dateRange: DateRange? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["parameterList"])
+ class GenericOrderParams : OrderParams() {
+ @get:XmlElement(type = Ebics3Types.Parameter::class)
+ var parameterList: List<Ebics3Types.Parameter> = LinkedList()
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["start", "end"])
+ class DateRange {
+ @get:XmlElement(name = "Start")
+ @get:XmlSchemaType(name = "date")
+ lateinit var start: XMLGregorianCalendar
+
+ @get:XmlElement(name = "End")
+ @get:XmlSchemaType(name = "date")
+ lateinit var end: XMLGregorianCalendar
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["authentication", "encryption"])
+ class BankPubKeyDigests {
+ @get:XmlElement(name = "Authentication")
+ lateinit var authentication: Ebics3Types.PubKeyDigest
+
+ @get:XmlElement(name = "Encryption")
+ lateinit var encryption: Ebics3Types.PubKeyDigest
+ }
+
+ companion object {
+
+ fun createForDownloadReceiptPhase(
+ transactionId: String?,
+ hostId: String
+
+ ): Ebics3Request {
+ return Ebics3Request().apply {
+ header = Header().apply {
+ version = "H005"
+ revision = 1
+ authenticate = true
+ static = StaticHeaderType().apply {
+ hostID = hostId
+ transactionID = transactionId
+ }
+ mutable = MutableHeader().apply {
+ transactionPhase = Ebics3Types.TransactionPhaseType.RECEIPT
+ }
+ }
+ authSignature = SignatureType()
+
+ body = Body().apply {
+ transferReceipt = TransferReceipt().apply {
+ authenticate = true
+ receiptCode = 0 // always true at this point.
+ }
+ }
+ }
+ }
+
+ fun createForDownloadInitializationPhase(
+ userId: String,
+ partnerId: String,
+ hostId: String,
+ nonceArg: ByteArray,
+ date: XMLGregorianCalendar,
+ bankEncPub: RSAPublicKey,
+ bankAuthPub: RSAPublicKey,
+ myOrderService: OrderDetails.Service,
+ myOrderParams: EbicsOrderParams? = null
+ ): Ebics3Request {
+ return Ebics3Request().apply {
+ version = "H005"
+ revision = 1
+ authSignature = SignatureType()
+ body = Body()
+ header = Header().apply {
+ authenticate = true
+ static = StaticHeaderType().apply {
+ userID = userId
+ partnerID = partnerId
+ hostID = hostId
+ nonce = nonceArg
+ timestamp = date
+ partnerID = partnerId
+ orderDetails = OrderDetails().apply {
+ this.adminOrderType = "BTD"
+ this.btdOrderParams = OrderDetails.BTOrderParams().apply {
+ service = myOrderService
+ // Order params only used for date ranges so far.
+ when (myOrderParams) {
+ is EbicsStandardOrderParams -> {
+ this.dateRange = makeEbics3DateRange(myOrderParams.dateRange)
+ }
+ else -> {}
+ }
+ }
+ }
+ bankPubKeyDigests = BankPubKeyDigests().apply {
+ authentication = Ebics3Types.PubKeyDigest().apply {
+ algorithm = "http://www.w3.org/2001/04/xmlenc#sha256"
+ version = "X002"
+ value = CryptoUtil.getEbicsPublicKeyHash(bankAuthPub)
+ }
+ encryption = Ebics3Types.PubKeyDigest().apply {
+ algorithm = "http://www.w3.org/2001/04/xmlenc#sha256"
+ version = "E002"
+ value = CryptoUtil.getEbicsPublicKeyHash(bankEncPub)
+ }
+ securityMedium = "0000"
+ }
+ }
+ mutable = MutableHeader().apply {
+ transactionPhase =
+ Ebics3Types.TransactionPhaseType.INITIALISATION
+ }
+ }
+ }
+ }
+
+ fun createForUploadInitializationPhase(
+ encryptedTransactionKey: ByteArray,
+ encryptedSignatureData: ByteArray,
+ hostId: String,
+ nonceArg: ByteArray,
+ partnerId: String,
+ userId: String,
+ date: XMLGregorianCalendar,
+ bankAuthPub: RSAPublicKey,
+ bankEncPub: RSAPublicKey,
+ segmentsNumber: BigInteger,
+ aOrderService: OrderDetails.Service,
+ // aOrderParams: OrderParamsEbics? = null
+ ): Ebics3Request {
+
+ return Ebics3Request().apply {
+ header = Header().apply {
+ version = "H005"
+ revision = 1
+ authenticate = true
+ static = StaticHeaderType().apply {
+ hostID = hostId
+ nonce = nonceArg
+ timestamp = date
+ partnerID = partnerId
+ userID = userId
+ orderDetails = OrderDetails().apply {
+ this.adminOrderType = "BTU"
+ this.btdOrderParams = OrderDetails.BTOrderParams().apply {
+ service = aOrderService
+ }
+ }
+ bankPubKeyDigests = BankPubKeyDigests().apply {
+ authentication = Ebics3Types.PubKeyDigest().apply {
+ algorithm = "http://www.w3.org/2001/04/xmlenc#sha256"
+ version = "X002"
+ value = CryptoUtil.getEbicsPublicKeyHash(bankAuthPub)
+ }
+ encryption = Ebics3Types.PubKeyDigest().apply {
+ algorithm = "http://www.w3.org/2001/04/xmlenc#sha256"
+ version = "E002"
+ value = CryptoUtil.getEbicsPublicKeyHash(bankEncPub)
+ }
+ }
+ securityMedium = "0000"
+ numSegments = segmentsNumber
+ }
+ mutable = MutableHeader().apply {
+ transactionPhase =
+ Ebics3Types.TransactionPhaseType.INITIALISATION
+ }
+ }
+ authSignature = SignatureType()
+ body = Body().apply {
+ dataTransfer = DataTransfer().apply {
+ signatureData = SignatureData().apply {
+ authenticate = true
+ value = encryptedSignatureData
+ }
+ dataEncryptionInfo = Ebics3Types.DataEncryptionInfo().apply {
+ transactionKey = encryptedTransactionKey
+ authenticate = true
+ encryptionPubKeyDigest = Ebics3Types.PubKeyDigest().apply {
+ algorithm = "http://www.w3.org/2001/04/xmlenc#sha256"
+ version = "E002"
+ value = CryptoUtil.getEbicsPublicKeyHash(bankEncPub)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ fun createForUploadTransferPhase(
+ hostId: String,
+ transactionId: String?,
+ segNumber: BigInteger,
+ encryptedData: String
+ ): Ebics3Request {
+ return Ebics3Request().apply {
+ header = Header().apply {
+ version = "H005"
+ revision = 1
+ authenticate = true
+ static = StaticHeaderType().apply {
+ hostID = hostId
+ transactionID = transactionId
+ }
+ mutable = MutableHeader().apply {
+ transactionPhase = Ebics3Types.TransactionPhaseType.TRANSFER
+ segmentNumber = Ebics3Types.SegmentNumber().apply {
+ lastSegment = true
+ value = segNumber
+ }
+ }
+ }
+
+ authSignature = SignatureType()
+ body = Body().apply {
+ dataTransfer = DataTransfer().apply {
+ orderData = encryptedData
+ }
+ }
+ }
+ }
+
+ fun createForDownloadTransferPhase(
+ hostID: String,
+ transactionID: String?,
+ segmentNumber: Int,
+ numSegments: Int
+ ): Ebics3Request {
+ return Ebics3Request().apply {
+ version = "H005"
+ revision = 1
+ authSignature = SignatureType()
+ body = Body()
+ header = Header().apply {
+ authenticate = true
+ static = StaticHeaderType().apply {
+ this.hostID = hostID
+ this.transactionID = transactionID
+ }
+ mutable = MutableHeader().apply {
+ transactionPhase =
+ Ebics3Types.TransactionPhaseType.TRANSFER
+ this.segmentNumber = Ebics3Types.SegmentNumber().apply {
+ this.value = BigInteger.valueOf(segmentNumber.toLong())
+ this.lastSegment = segmentNumber == numSegments
+ }
+ }
+ }
+ }
+ }
+ }
+}
+\ No newline at end of file
diff --git a/util/src/main/kotlin/ebics_h005/Ebics3Types.kt b/util/src/main/kotlin/ebics_h005/Ebics3Types.kt
@@ -0,0 +1,402 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2019 Stanisci and Dold.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
+package tech.libeufin.util.ebics_h005
+
+import org.apache.xml.security.binding.xmldsig.RSAKeyValueType
+import org.w3c.dom.Element
+import java.math.BigInteger
+import java.util.*
+import javax.xml.bind.annotation.*
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
+import javax.xml.datatype.XMLGregorianCalendar
+
+
+/**
+ * EBICS type definitions that are shared between other requests / responses / order types.
+ */
+object Ebics3Types {
+ /**
+ * EBICS client product. Identifies the software that accesses the EBICS host.
+ */
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "Product", propOrder = ["value"])
+ class Product {
+ @get:XmlValue
+ @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class)
+ lateinit var value: String
+
+ @get:XmlAttribute(name = "Language", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var language: String
+
+ @get:XmlAttribute(name = "InstituteID")
+ @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class)
+ var instituteID: String? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["value"])
+ class SegmentNumber {
+ @XmlValue
+ lateinit var value: BigInteger
+
+ @XmlAttribute(name = "lastSegment")
+ var lastSegment: Boolean? = null
+ }
+
+
+ @XmlType(name = "", propOrder = ["encryptionPubKeyDigest", "transactionKey"])
+ @XmlAccessorType(XmlAccessType.NONE)
+ class DataEncryptionInfo {
+ @get:XmlAttribute(name = "authenticate", required = true)
+ var authenticate: Boolean = false
+
+ @get:XmlElement(name = "EncryptionPubKeyDigest", required = true)
+ lateinit var encryptionPubKeyDigest: PubKeyDigest
+
+ @get:XmlElement(name = "TransactionKey", required = true)
+ lateinit var transactionKey: ByteArray
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["value"])
+ class PubKeyDigest {
+ /**
+ * Version of the *digest* of the public key.
+ */
+ @get:XmlAttribute(name = "Version", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var version: String
+
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ lateinit var algorithm: String
+
+ @get:XmlValue
+ lateinit var value: ByteArray
+ }
+
+ @Suppress("UNUSED_PARAMETER")
+ enum class TransactionPhaseType(value: String) {
+ @XmlEnumValue("Initialisation")
+ INITIALISATION("Initialisation"),
+
+ /**
+ * Auftragsdatentransfer
+ *
+ */
+ @XmlEnumValue("Transfer")
+ TRANSFER("Transfer"),
+
+ /**
+ * Quittungstransfer
+ *
+ */
+ @XmlEnumValue("Receipt")
+ RECEIPT("Receipt");
+ }
+
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "")
+ class TimestampBankParameter {
+ @get:XmlValue
+ lateinit var value: XMLGregorianCalendar
+
+ @get:XmlAttribute(name = "authenticate", required = true)
+ var authenticate: Boolean = false
+ }
+
+
+
+ @XmlType(
+ name = "PubKeyValueType", propOrder = [
+ "rsaKeyValue",
+ "timeStamp"
+ ]
+ )
+ @XmlAccessorType(XmlAccessType.NONE)
+ class PubKeyValueType {
+ @get:XmlElement(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
+ lateinit var rsaKeyValue: RSAKeyValueType
+
+ @get:XmlElement(name = "TimeStamp", required = false)
+ @get:XmlSchemaType(name = "dateTime")
+ var timeStamp: XMLGregorianCalendar? = null
+ }
+
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(
+ name = "AuthenticationPubKeyInfoType", propOrder = [
+ "x509Data",
+ "pubKeyValue",
+ "authenticationVersion"
+ ]
+ )
+ class AuthenticationPubKeyInfoType {
+ @get:XmlAnyElement()
+ var x509Data: Element? = null
+
+ @get:XmlElement(name = "PubKeyValue", required = true)
+ lateinit var pubKeyValue: PubKeyValueType
+
+ @get:XmlElement(name = "AuthenticationVersion", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ @get:XmlSchemaType(name = "token")
+ lateinit var authenticationVersion: String
+ }
+
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(
+ name = "EncryptionPubKeyInfoType", propOrder = [
+ "x509Data",
+ "pubKeyValue",
+ "encryptionVersion"
+ ]
+ )
+ class EncryptionPubKeyInfoType {
+ @get:XmlAnyElement()
+ var x509Data: Element? = null
+
+ @get:XmlElement(name = "PubKeyValue", required = true)
+ lateinit var pubKeyValue: PubKeyValueType
+
+ @get:XmlElement(name = "EncryptionVersion", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ @get:XmlSchemaType(name = "token")
+ lateinit var encryptionVersion: String
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class FileFormatType {
+ @get:XmlAttribute(name = "CountryCode")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var language: String
+
+ @get:XmlValue
+ @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class)
+ lateinit var value: String
+ }
+
+ /**
+ * Generic key-value pair.
+ */
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["name", "value"])
+ class Parameter {
+ @get:XmlAttribute(name = "Type", required = true)
+ lateinit var type: String
+
+ @get:XmlElement(name = "Name", required = true)
+ lateinit var name: String
+
+ @get:XmlElement(name = "Value", required = true)
+ lateinit var value: String
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["addressInfo", "bankInfo", "accountInfoList", "orderInfoList"])
+ class PartnerInfo {
+ @get:XmlElement(name = "AddressInfo", required = true)
+ lateinit var addressInfo: AddressInfo
+
+ @get:XmlElement(name = "BankInfo", required = true)
+ lateinit var bankInfo: BankInfo
+
+ @get:XmlElement(name = "AccountInfo", type = AccountInfo::class)
+ var accountInfoList: List<AccountInfo>? = LinkedList<AccountInfo>()
+
+ @get:XmlElement(name = "OrderInfo", type = AuthOrderInfoType::class)
+ var orderInfoList: List<AuthOrderInfoType> = LinkedList<AuthOrderInfoType>()
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(
+ name = "",
+ propOrder = ["orderType", "fileFormat", "transferType", "orderFormat", "description", "numSigRequired"]
+ )
+ class AuthOrderInfoType {
+ @get:XmlElement(name = "OrderType")
+ lateinit var orderType: String
+
+ @get:XmlElement(name = "FileFormat")
+ val fileFormat: FileFormatType? = null
+
+ @get:XmlElement(name = "TransferType")
+ lateinit var transferType: String
+
+ @get:XmlElement(name = "OrderFormat", required = false)
+ var orderFormat: String? = null
+
+ @get:XmlElement(name = "Description")
+ lateinit var description: String
+
+ @get:XmlElement(name = "NumSigRequired")
+ var numSigRequired: Int? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class UserIDType {
+ @get:XmlValue
+ lateinit var value: String;
+
+ @get:XmlAttribute(name = "Status")
+ var status: Int? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["userID", "name", "permissionList"])
+ class UserInfo {
+ @get:XmlElement(name = "UserID", required = true)
+ lateinit var userID: UserIDType
+
+ @get:XmlElement(name = "Name")
+ var name: String? = null
+
+ @get:XmlElement(name = "Permission", type = UserPermission::class)
+ var permissionList: List<UserPermission>? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["orderTypes", "fileFormat", "accountID", "maxAmount"])
+ class UserPermission {
+ @get:XmlAttribute(name = "AuthorizationLevel")
+ var authorizationLevel: String? = null
+
+ @get:XmlElement(name = "OrderTypes")
+ var orderTypes: String? = null
+
+ @get:XmlElement(name = "FileFormat")
+ val fileFormat: FileFormatType? = null
+
+ @get:XmlElement(name = "AccountID")
+ val accountID: String? = null
+
+ @get:XmlElement(name = "MaxAmount")
+ val maxAmount: String? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["name", "street", "postCode", "city", "region", "country"])
+ class AddressInfo {
+ @get:XmlElement(name = "Name")
+ var name: String? = null
+
+ @get:XmlElement(name = "Street")
+ var street: String? = null
+
+ @get:XmlElement(name = "PostCode")
+ var postCode: String? = null
+
+ @get:XmlElement(name = "City")
+ var city: String? = null
+
+ @get:XmlElement(name = "Region")
+ var region: String? = null
+
+ @get:XmlElement(name = "Country")
+ var country: String? = null
+ }
+
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class BankInfo {
+ @get:XmlElement(name = "HostID")
+ lateinit var hostID: String
+
+ @get:XmlElement(type = Parameter::class)
+ var parameters: List<Parameter>? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["accountNumberList", "bankCodeList", "accountHolder"])
+ class AccountInfo {
+ @get:XmlAttribute(name = "Currency")
+ var currency: String? = null
+
+ @get:XmlAttribute(name = "ID")
+ lateinit var id: String
+
+ @get:XmlAttribute(name = "Description")
+ var description: String? = null
+
+ @get:XmlElements(
+ XmlElement(name = "AccountNumber", type = GeneralAccountNumber::class),
+ XmlElement(name = "NationalAccountNumber", type = NationalAccountNumber::class)
+ )
+ var accountNumberList: List<AbstractAccountNumber>? = LinkedList<AbstractAccountNumber>()
+
+ @get:XmlElements(
+ XmlElement(name = "BankCode", type = GeneralBankCode::class),
+ XmlElement(name = "NationalBankCode", type = NationalBankCode::class)
+ )
+ var bankCodeList: List<AbstractBankCode>? = LinkedList<AbstractBankCode>()
+
+ @get:XmlElement(name = "AccountHolder")
+ var accountHolder: String? = null
+ }
+
+ interface AbstractAccountNumber
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class GeneralAccountNumber : AbstractAccountNumber {
+ @get:XmlAttribute(name = "international")
+ var international: Boolean = true
+
+ @get:XmlValue
+ lateinit var value: String
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class NationalAccountNumber : AbstractAccountNumber {
+ @get:XmlAttribute(name = "format")
+ lateinit var format: String
+
+ @get:XmlValue
+ lateinit var value: String
+ }
+
+ interface AbstractBankCode
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class GeneralBankCode : AbstractBankCode {
+ @get:XmlAttribute(name = "prefix")
+ var prefix: String? = null
+
+ @get:XmlAttribute(name = "international")
+ var international: Boolean = true
+
+ @get:XmlValue
+ lateinit var value: String
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ class NationalBankCode : AbstractBankCode {
+ @get:XmlValue
+ lateinit var value: String
+
+ @get:XmlAttribute(name = "format")
+ lateinit var format: String
+ }
+}
+\ No newline at end of file
diff --git a/util/src/main/kotlin/ebics_h005/package-info.java b/util/src/main/kotlin/ebics_h005/package-info.java
@@ -0,0 +1,12 @@
+/**
+ * This package-info.java file defines the default namespace for the JAXB bindings
+ * defined in the package.
+ */
+
+@XmlSchema(
+ namespace = "urn:org:ebics:H005",
+ elementFormDefault = XmlNsForm.QUALIFIED
+)
+package tech.libeufin.util.ebics_h005;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlSchema;
+\ No newline at end of file
diff --git a/util/src/main/resources/xsd/ebics_H005.xsd b/util/src/main/resources/xsd/ebics_H005.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <annotation>
+ <documentation xml:lang="de">ebics_H005.xsd inkludiert alle Schemadateien des EBICS-Protokolls, um die Eindeutigkeit von Element- und Typnamen im EBCIS Namespace zu erzwingen.</documentation>
+ <documentation xml:lang="en">ebics_H005.xsd includes all schema files for the EBICS protocol in order to enforce unique element and type names in the EBICS namespace.</documentation>
+ </annotation>
+ <include schemaLocation="ebics_request_H005.xsd"/>
+ <include schemaLocation="ebics_response_H005.xsd"/>
+ <include schemaLocation="ebics_keymgmt_request_H005.xsd"/>
+ <include schemaLocation="ebics_keymgmt_response_H005.xsd"/>
+</schema>
diff --git a/util/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd b/util/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2016 sp1 (x64) (http://www.altova.com) by EBICS Working Group - October 2016 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <annotation>
+ <documentation xml:lang="de">ebics_keymgmt_request_H005.xsd ist das EBICS-Protokollschema für Schlüsselmanagement-Anfragen (HIA, HPB, HSA, INI).</documentation>
+ </annotation>
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd">
+ <annotation>
+ <documentation xml:lang="de">XML-Signature.</documentation>
+ </annotation>
+ </import>
+ <include schemaLocation="ebics_types_H005.xsd"/>
+ <include schemaLocation="ebics_orders_H005.xsd"/>
+ <complexType name="StaticHeaderBaseType" abstract="true">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den statischen EBICS-Header (allgemein).</documentation>
+ </annotation>
+ <sequence>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Hostname des Banksystems.</documentation>
+ </annotation>
+ </element>
+ <element name="Nonce" type="ebics:NonceType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig; nur anzugeben, falls Authentifikationssignatur vorhanden.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung; nur anzugeben, falls Authentifikationssignatur vorhanden.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des serverseitig administrierten Kunden.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ <element name="SystemID" type="ebics:UserIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">technische User-ID für Multi-User-Systeme.</documentation>
+ </annotation>
+ </element>
+ <element name="Product" type="ebics:ProductElementType" nillable="true" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Kundenprodukts bzw. Herstellerkennung oder Name.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDetails" type="ebics:OrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdetails.</documentation>
+ </annotation>
+ </element>
+ <element name="SecurityMedium" type="ebics:SecurityMediumType">
+ <annotation>
+ <documentation xml:lang="de">Angabe des Sicherheitsmediums, das der Kunde verwendet.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="OrderDetailsType" abstract="true">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für OrderDetails im statischen EBICS-Header (allgemein).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AdminOrderType" type="ebics:OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsart.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <complexType name="ProductElementType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Element mit Kennung des Kundenprodukts bzw. Herstellerkennung oder Name.</documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="ebics:ProductType">
+ <attribute name="Language" type="ebics:LanguageType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Sprachkennzeichen der Kundenproduktversion (gemäß ISO 639).</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="InstituteID" type="ebics:InstituteIDType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Herausgebers des Kundenprodukts bzw. des betreuenden Kreditinstituts.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="EmptyMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den leeren variablen EBICS-Header von Key Managemen Aufträgen.</documentation>
+ </annotation>
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <element name="ebicsUnsecuredRequest">
+ <annotation>
+ <documentation>Anfragestruktur für ungesicherte Auftragsarten HIA (Authentifikations- und Verschlüsselungsschlüssel senden) und INI (bankfachllichen Schlüssel senden).</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="header">
+ <annotation>
+ <documentation xml:lang="de">enthält die technischen Transaktionsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="static" type="ebics:UnsecuredRequestStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enhält alle festen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ <element name="mutable" type="ebics:EmptyMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enthält alle variablen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </complexType>
+ </element>
+ <element name="body">
+ <annotation>
+ <documentation xml:lang="de">enthält die Auftragsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de"/>
+ </annotation>
+ <element name="DataTransfer">
+ <annotation>
+ <documentation xml:lang="de">Transfer von Auftragsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="OrderData">
+ <annotation>
+ <documentation xml:lang="de">enthält Auftragsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:OrderDataType">
+ <anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:VersionAttrGroup"/>
+ </complexType>
+ </element>
+ <complexType name="UnsecuredRequestStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den statischen EBICS-Header bei ungesicherten Sendeauftragsarten (Aufträge HIA und INI): kein Nonce, kein Timestamp, keine EU-Datei, keine X001 Authentifizierung, keine Verschlüsselung, keine Digests der öffentlichen Bankschlüssel, Nutzdaten komprimiert</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:StaticHeaderBaseType">
+ <sequence>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Hostname des Banksystems.</documentation>
+ </annotation>
+ </element>
+ <element name="Nonce" type="ebics:NonceType" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig; nicht anzugeben für ebicsUnsecuredRequest.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung; nicht anzugeben für ebicsUnsecuredRequest.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des serverseitig administrierten Kunden.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ <element name="SystemID" type="ebics:UserIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">technische User-ID für Multi-User-Systeme.</documentation>
+ </annotation>
+ </element>
+ <element name="Product" type="ebics:ProductElementType" nillable="true" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Kundenprodukts bzw. Herstellerkennung oder Name.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDetails" type="ebics:UnsecuredReqOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdetails.</documentation>
+ </annotation>
+ </element>
+ <element name="SecurityMedium" type="ebics:SecurityMediumType">
+ <annotation>
+ <documentation xml:lang="de">Angabe des Sicherheitsmediums, das der Kunde verwendet.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="UnsecuredReqOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für OrderDetails im statischen EBICS-Header von ebicsUnsecuredRequest.</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:OrderDetailsType">
+ <sequence>
+ <element name="AdminOrderType" type="ebics:OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsart.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <element name="ebicsNoPubKeyDigestsRequest">
+ <annotation>
+ <documentation>Anfragestruktur für Auftragsarten ohne Übertragung der Digests der öffentlichen Bankschlüssel (HPB Bankschlüssel abholen).</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="header">
+ <annotation>
+ <documentation xml:lang="de">enthält die technischen Transaktionsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="static" type="ebics:NoPubKeyDigestsRequestStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enhält alle festen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ <element name="mutable" type="ebics:EmptyMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enthält alle variablen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </complexType>
+ </element>
+ <element ref="ebics:AuthSignature">
+ <annotation>
+ <documentation xml:lang="de">Authentifikationssignatur.</documentation>
+ </annotation>
+ </element>
+ <element name="body">
+ <annotation>
+ <documentation xml:lang="de">enthält optionale Zertifikate (vorgesehen).</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de"/>
+ </annotation>
+ <element ref="ds:X509Data" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">X.509-Daten des Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:VersionAttrGroup"/>
+ </complexType>
+ </element>
+ <complexType name="NoPubKeyDigestsRequestStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den statischen EBICS-Header bei Aufträgen ohne Übertragung der Digests der Bankschlüssel (Auftrag HBP): keine Digests der öffentlichen Bankschlüssel, keine EU-Datei, keine Nutzdaten, OrderId optional!, Nonce, Timestamp, X001 Authentifizierung, Auftragsattribut DZHNN</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:StaticHeaderBaseType">
+ <sequence>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Hostname des Banksystems.</documentation>
+ </annotation>
+ </element>
+ <element name="Nonce" type="ebics:NonceType">
+ <annotation>
+ <documentation xml:lang="de">Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType">
+ <annotation>
+ <documentation xml:lang="de">aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des serverseitig administrierten Kunden.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ <element name="SystemID" type="ebics:UserIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">technische User-ID für Multi-User-Systeme.</documentation>
+ </annotation>
+ </element>
+ <element name="Product" type="ebics:ProductElementType" nillable="true" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Kundenprodukts bzw. Herstellerkennung oder Name.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDetails" type="ebics:NoPubKeyDigestsReqOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdetails.</documentation>
+ </annotation>
+ </element>
+ <element name="SecurityMedium" type="ebics:SecurityMediumType">
+ <annotation>
+ <documentation xml:lang="de">Angabe des Sicherheitsmediums, das der Kunde verwendet.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="NoPubKeyDigestsReqOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de"> Datentyp für OrderDetails im statischen EBICS-Header von ebicsNoPubKeyDigestsRequest.</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:OrderDetailsType">
+ <sequence>
+ <element name="AdminOrderType" type="ebics:OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsart.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <element name="ebicsUnsignedRequest">
+ <annotation>
+ <documentation xml:lang="en">The structure for uploads contains order data and the ESs, but without an authentication signature and data digest of bank keys.</documentation>
+ <documentation>Anfragestruktur für Sendeaufträge mit EU-Datei und Nutzdaten aber ohne Authentifizierungssignatur und Digests der Bankschlüssel.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="header">
+ <annotation>
+ <documentation xml:lang="en">Contains technical transaction data.</documentation>
+ <documentation xml:lang="de">enthält die technischen Transaktionsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="static" type="ebics:UnsignedRequestStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="en">Contains all fixed header entries.</documentation>
+ <documentation xml:lang="de">enhält alle festen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ <element name="mutable" type="ebics:EmptyMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="en">Contains all mutable header entries.</documentation>
+ <documentation xml:lang="de">enthält alle variablen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </complexType>
+ </element>
+ <element name="body">
+ <annotation>
+ <documentation xml:lang="en">Contains the order data and the ESs.</documentation>
+ <documentation xml:lang="de">enthält die Auftragsdaten und EUs.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de"/>
+ </annotation>
+ <element name="DataTransfer">
+ <annotation>
+ <documentation xml:lang="en">Transfer of order data and the ESs.</documentation>
+ <documentation xml:lang="de">Transfer von Auftragsdaten und EUs.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="SignatureData">
+ <annotation>
+ <documentation xml:lang="en">Contains the ESs.</documentation>
+ <documentation xml:lang="de">enthält Signaturdaten (EUs).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:SignatureDataType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="OrderData">
+ <annotation>
+ <documentation xml:lang="en">Contains the order data</documentation>
+ <documentation xml:lang="de">enthält Auftragsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:OrderDataType">
+ <anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:VersionAttrGroup"/>
+ </complexType>
+ </element>
+ <complexType name="UnsignedRequestStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den statischen EBICS-Header für ebicsUnsignedRequest.Datentyp für den statischen EBICS-Header bei Aufträgen ohne Authentifizierungssignatur (Auftrag HSA): keine X001 Authentifizierung, keine Digests der öffentlichen Bankschlüssel, EU-Datei, Nutzdaten, Nonce, Timestamp, OrderId, Auftragsattribut OZNNN</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:StaticHeaderBaseType">
+ <sequence>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Hostname des Banksystems.</documentation>
+ </annotation>
+ </element>
+ <element name="Nonce" type="ebics:NonceType" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig; nicht anzugeben bei ebicsUnsignedRequest.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung; nicht anzugeben bei ebicsUnsignedRequest.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des serverseitig administrierten Kunden.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ <element name="SystemID" type="ebics:UserIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">technische User-ID für Multi-User-Systeme.</documentation>
+ </annotation>
+ </element>
+ <element name="Product" type="ebics:ProductElementType" nillable="true" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Kundenprodukts bzw. Herstellerkennung oder Name.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDetails" type="ebics:UnsignedReqOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdetails.</documentation>
+ </annotation>
+ </element>
+ <element name="SecurityMedium" type="ebics:SecurityMediumType">
+ <annotation>
+ <documentation xml:lang="de">Angabe des Sicherheitsmediums, das der Kunde verwendet.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="UnsignedReqOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für OrderDetails im statischen EBICS-Header von ebicsUnsignedRequest.</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:OrderDetailsType">
+ <sequence>
+ <element name="AdminOrderType" type="ebics:OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsart.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/util/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd b/util/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2016 sp1 (x64) (http://www.altova.com) by EBICS Working Group - October 2016 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <annotation>
+ <documentation xml:lang="de">ebics_keymgmt_response_H005.xsd ist das EBICS-Protokollschema für Schlüsselmanagement-Antwortnachrichten (HIA, HPB, HSA, INI).</documentation>
+ </annotation>
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd">
+ <annotation>
+ <documentation xml:lang="de">XML-Signature.</documentation>
+ </annotation>
+ </import>
+ <include schemaLocation="ebics_types_H005.xsd"/>
+ <include schemaLocation="ebics_orders_H005.xsd"/>
+ <element name="ebicsKeyManagementResponse">
+ <annotation>
+ <documentation xml:lang="de">Electronic Banking Internet Communication Standard des Zentralen Kreditausschusses (ZKA): Multibankfähige Schnittstelle zur internetbasierten Kommunikation.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="header">
+ <annotation>
+ <documentation xml:lang="de">enthält die technischen Transaktionsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="static">
+ <annotation>
+ <documentation xml:lang="de">enhält alle festen Headereinträge.</documentation>
+ </annotation>
+ <complexType>
+ <sequence/>
+ </complexType>
+ </element>
+ <element name="mutable" type="ebics:KeyMgmntResponseMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enthält alle variablen Headereinträge.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </complexType>
+ </element>
+ <element name="body">
+ <annotation>
+ <documentation xml:lang="de">enthält die Auftragsdaten und den fachlichen ReturnCode.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="DataTransfer" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Transfer von Auftragsdaten; nur bei Download anzugeben (HPB).</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="DataEncryptionInfo">
+ <annotation>
+ <documentation xml:lang="de">Informationen zur Verschlüsselung der Auftragsdaten</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:DataEncryptionInfoType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="OrderData">
+ <annotation>
+ <documentation xml:lang="de">enthält Auftragsdaten.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:OrderDataType">
+ <anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="ReturnCode">
+ <annotation>
+ <documentation xml:lang="de">Antwortcode für den vorangegangenen Transfer.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:ReturnCodeType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="TimestampBankParameter" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zeitstempel der letzten Aktualisierung der Bankparameter; nur in der Initialisierungsphase anzugeben.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:TimestampType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:VersionAttrGroup"/>
+ </complexType>
+ </element>
+ <complexType name="KeyMgmntResponseMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den variablen EBICS-Header.</documentation>
+ </annotation>
+ <sequence>
+ <element name="OrderID" type="ebics:OrderIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Auftragsnummer von Sendeaufträgen gemäß DFÜ-Abkommen (used for all key management order types except download order type HPB).</documentation>
+ </annotation>
+ </element>
+ <element name="ReturnCode" type="ebics:ReturnCodeType">
+ <annotation>
+ <documentation xml:lang="de">Rückmeldung des Ausführungsstatus mit einer eindeutigen Fehlernummer.</documentation>
+ </annotation>
+ </element>
+ <element name="ReportText" type="ebics:ReportTextType">
+ <annotation>
+ <documentation xml:lang="de">Klartext der Rückmeldung des Ausführungsstatus.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+</schema>
diff --git a/util/src/main/resources/xsd/ebics_orders_H005.xsd b/util/src/main/resources/xsd/ebics_orders_H005.xsd
@@ -0,0 +1,2094 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2017 sp2 (http://www.altova.com) by EBICS Working Group (July 3rd 2017) - Compared to the status of March 27th 2017 only the element group standardOrderParams was reinserted (as used in schema version H004) and several annotations in English added -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:esig="http://www.ebics.org/S002" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <annotation>
+ <documentation xml:lang="en">ebics_orders_H005.xsd contains order-based reference elements and order-based type definitions for EBICS.</documentation>
+ <documentation xml:lang="de">ebics_orders_H005.xsd enthält auftragsbezogene Referenzelemente und auftragsbezogene Typdefinitionen für EBICS.</documentation>
+ </annotation>
+ <import namespace="http://www.ebics.org/S002" schemaLocation="ebics_signature_S002.xsd"/>
+ <include schemaLocation="ebics_types_H005.xsd"/>
+ <!--Element definitions for the new EBICS order types (Hxx) - Binary interpretation of the XML clear text structure in the context.-->
+ <element name="EBICSOrderData" abstract="true">
+ <annotation>
+ <documentation xml:lang="de">XML-Klartext-Auftragsdaten für neue EBICS-Auftragsarten.</documentation>
+ <documentation xml:lang="en">Order data in XML format for new EBICS order types.</documentation>
+ </annotation>
+ </element>
+ <element name="HAAResponseOrderData" type="ebics:HAAResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HAA (Antwort: abrufbare Auftragsarten abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HAA (response: receive downloadable order types).</documentation>
+ </annotation>
+ </element>
+ <element name="HCARequestOrderData" type="ebics:HCARequestOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HCA (Anfrage: Änderung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung).</documentation>
+ <documentation xml:lang="en">Order data for order type HCA (request: replace user's keys for authentication and encryption).</documentation>
+ </annotation>
+ </element>
+ <element name="HCSRequestOrderData" type="ebics:HCSRequestOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HCS (Anfrage: Schlüsselwechsel aller Schlüssel).</documentation>
+ <documentation xml:lang="en">Order data for order type HCS (request: replace all keys).</documentation>
+ </annotation>
+ </element>
+ <element name="HIARequestOrderData" type="ebics:HIARequestOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HIA (Anfrage: Initialisierung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung).</documentation>
+ <documentation xml:lang="en">Order data for order type HIA (request: initialise user's keys for authentication and encryption).</documentation>
+ </annotation>
+ </element>
+ <element name="H3KRequestOrderData" type="ebics:H3KRequestOrderDataType">
+ <annotation>
+ <documentation xml:lang="en">Order data for order type H3K (request: initialise all three user's keys).</documentation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart H3K (Anfrage: Initialisierung aller drei Teilnehmerschlüssel).</documentation>
+ </annotation>
+ </element>
+ <element name="HKDResponseOrderData" type="ebics:HKDResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HKD (Antwort: Kunden- und Teilnehmerdaten des Kunden abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HKD (response: receive customer-based information on the customer and the customer's users).</documentation>
+ </annotation>
+ <key name="HKDAccountKey">
+ <annotation>
+ <documentation xml:lang="de">Schlüssel zur Identifikation des Kontos.</documentation>
+ <documentation xml:lang="en">Key for the identification of the account.</documentation>
+ </annotation>
+ <selector xpath="./ebics:PartnerInfo/ebics:AccountInfo"/>
+ <field xpath="@ID"/>
+ </key>
+ <keyref name="HKDAccountRef" refer="ebics:HKDAccountKey">
+ <annotation>
+ <documentation xml:lang="de">Referenz auf die Konten-Identifikationsschlüssel.</documentation>
+ <documentation xml:lang="en">Reference to the account identification keys.</documentation>
+ </annotation>
+ <selector xpath="./ebics:UserInfo/ebics:Permission"/>
+ <field xpath="ebics:AccountID"/>
+ </keyref>
+ </element>
+ <element name="HPBResponseOrderData" type="ebics:HPBResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HPB (Antwort: Transfer der Bankschlüssel).</documentation>
+ <documentation xml:lang="en">Order data for order type HPB (response: receive bank's public keys).</documentation>
+ </annotation>
+ </element>
+ <element name="HPDResponseOrderData" type="ebics:HPDResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HPD (Antwort: Bankparameter abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HPD (response: receive bank parameters).</documentation>
+ </annotation>
+ </element>
+ <element name="HTDResponseOrderData" type="ebics:HTDReponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HTD (Antwort: Kunden- und Teilnehmerdaten des Teilnehmers abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HTD (response: receive user-based information on the user's customer and the user herself/himself).</documentation>
+ </annotation>
+ <key name="HTDAccountKey">
+ <annotation>
+ <documentation xml:lang="de">Schlüssel zur Identifikation des Kontos.</documentation>
+ <documentation xml:lang="en">Key for the identification of the account.</documentation>
+ </annotation>
+ <selector xpath="./ebics:PartnerInfo/ebics:AccountInfo"/>
+ <field xpath="@ID"/>
+ </key>
+ <keyref name="HTDAccountRef" refer="ebics:HTDAccountKey">
+ <annotation>
+ <documentation xml:lang="de">Referenz auf die Konten-Identifikationsschlüssel.</documentation>
+ <documentation xml:lang="en">Reference to the account identification keys.</documentation>
+ </annotation>
+ <selector xpath="./ebics:UserInfo/ebics:Permission"/>
+ <field xpath="ebics:AccountID"/>
+ </keyref>
+ </element>
+ <element name="HVDResponseOrderData" type="ebics:HVDResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HVD (Antwort: VEU-Status abrufen).</documentation>
+ <documentation xml:lang="en">Order data for order type HVD (response: receive the status of an order currently stored in the distributed signature processing unit).</documentation>
+ </annotation>
+ </element>
+ <element name="HVSRequestOrderData" type="ebics:HVSRequestOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HVS (Anfrage: VEU-Storno).</documentation>
+ <documentation xml:lang="en">Order data for order type HVS (request: reject an order currently stored in the distributed signature processing unit).</documentation>
+ </annotation>
+ </element>
+ <element name="HVTResponseOrderData" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HVT (Antwort: VEU-Transaktionsdetails abrufen).</documentation>
+ <documentation xml:lang="en">Order data for order type HVT (response: receive transaction details of an order currently stored in the distributed signature processing unit).</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:HVTResponseOrderDataType"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="HVUResponseOrderData" type="ebics:HVUResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HVU (Antwort: VEU-Übersicht abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HVU (response: receive summary of orders currently stored in the distributed signature processing unit).</documentation>
+ </annotation>
+ </element>
+ <element name="HVZResponseOrderData" type="ebics:HVZResponseOrderDataType" substitutionGroup="ebics:EBICSOrderData">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdaten für Auftragsart HVZ (Antwort: VEU-Übersicht mit Zusatzinformationen abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HVZ (response: receive summary of orders currently stored in the distributed signature processing unit with additional information).</documentation>
+ </annotation>
+ </element>
+ <!--Element definitions for the ES. Binary interpreation of the XML clear text structure within the signature context.-->
+ <element name="EBICSSignatureData" abstract="true">
+ <annotation>
+ <documentation xml:lang="de">XML-Strukturen für bankfachliche Elektronische Unterschriften (EUs).</documentation>
+ <documentation xml:lang="en">contains the digital signatures.</documentation>
+ </annotation>
+ </element>
+ <element name="BankSignatureData" type="ebics:BankSignatureDataSigBookType" substitutionGroup="ebics:EBICSSignatureData">
+ <annotation>
+ <documentation xml:lang="de">enthält die EU des Kreditinstituts.</documentation>
+ <documentation xml:lang="en">contains the digital signatures.</documentation>
+ </annotation>
+ </element>
+ <!--Element definitions for additional order parameters. XML clear text is embedded in the header data.-->
+ <element name="OrderParams" abstract="true">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter, die zur Ausführung des Auftrags notwendig sind.</documentation>
+ <documentation xml:lang="en">additional order parameters required to execute the order.</documentation>
+ </annotation>
+ </element>
+ <element name="HVDOrderParams" type="ebics:HVDOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart HVD.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type HVD.</documentation>
+ </annotation>
+ </element>
+ <element name="HVEOrderParams" type="ebics:HVEOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart HVE.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type HVE.</documentation>
+ </annotation>
+ </element>
+ <element name="HVSOrderParams" type="ebics:HVSOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart HVS.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type HVS.</documentation>
+ </annotation>
+ </element>
+ <element name="HVTOrderParams" type="ebics:HVTOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart HVT.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type HVT.</documentation>
+ </annotation>
+ </element>
+ <element name="HVUOrderParams" type="ebics:HVUOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart HVU.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type HVU.</documentation>
+ </annotation>
+ </element>
+ <element name="HVZOrderParams" type="ebics:HVZOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart HVZ.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type HVZ.</documentation>
+ </annotation>
+ </element>
+ <element name="StandardOrderParams" type="ebics:StandardOrderParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Auftragsparameter für Standard-Auftragsarten.</documentation>
+ <documentation xml:lang="en">additional order parameters for standard order types.</documentation>
+ </annotation>
+ </element>
+ <!--Element groups and structural information.-->
+ <group name="HVRequestStructure">
+ <annotation>
+ <documentation xml:lang="de">Standard-Requeststruktur für HVx-Aufträge (HVD, HVT, HVE, HVS).</documentation>
+ <documentation xml:lang="en">Standard request structure for HVx orders (HVD, HVT, HVE, HVS).</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Standard-Requestdaten.</documentation>
+ <documentation xml:lang="en">Standard request data.</documentation>
+ </annotation>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des Einreichers des ausgewählten Auftrags.</documentation>
+ <documentation xml:lang="en">Customer ID of the presenter of the selected order.</documentation>
+ </annotation>
+ </element>
+ <element name="Service" type="ebics:RestrictedServiceType">
+ <annotation>
+ <documentation xml:lang="de">BTF Service Parameter struktur im Falle von BTU/BTD</documentation>
+ <documentation xml:lang="en">Identification of the file format in the case of FUL/FDL</documentation>
+ </annotation>
+ </element>
+ <element name="OrderID" type="ebics:OrderIDType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsnummer des ausgewählten Auftrags.</documentation>
+ <documentation xml:lang="en">Order ID of the selected order.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </group>
+ <attributeGroup name="AuthenticationMarker">
+ <annotation>
+ <documentation xml:lang="de">Marker für Elemente und deren Substrukturen, die authentifiziert werden sollen.</documentation>
+ <documentation xml:lang="en">Marker for elements and their substructures that are to be authenticated.</documentation>
+ </annotation>
+ <attribute name="authenticate" type="boolean" use="required" fixed="true">
+ <annotation>
+ <documentation xml:lang="de">Das zugehörige Element ist mitsamt seinen Unterstrukturen zu authentifizieren.</documentation>
+ <documentation xml:lang="en">The element (and its substructures) that belongs to this attribute is to be authenticated.</documentation>
+ </annotation>
+ </attribute>
+ </attributeGroup>
+ <attributeGroup name="OptSupportFlag">
+ <annotation>
+ <documentation xml:lang="de">optionales Support-Flag, Default = true.</documentation>
+ <documentation xml:lang="en">optional support flag, default = true.</documentation>
+ </annotation>
+ <attribute name="supported" type="boolean" use="optional" default="true">
+ <annotation>
+ <documentation xml:lang="de">Wird die Funktion unterstützt?</documentation>
+ <documentation xml:lang="en">Is this function supported?</documentation>
+ </annotation>
+ </attribute>
+ <anyAttribute namespace="##targetNamespace" processContents="strict"/>
+ </attributeGroup>
+ <attributeGroup name="SignerPermission">
+ <annotation>
+ <documentation xml:lang="de">EU-Berechtigungsinformationen.</documentation>
+ <documentation xml:lang="en">permission information of a user's digital signature.</documentation>
+ </annotation>
+ <attribute name="AuthorisationLevel" type="ebics:AuthorisationLevelType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Unterschriftsberechtigung des Teilnehmers, der unterzeichnet hat.</documentation>
+ <documentation xml:lang="en">Authorisation level of the user that signed the order.</documentation>
+ </annotation>
+ </attribute>
+ <anyAttribute namespace="##targetNamespace" processContents="strict"/>
+ </attributeGroup>
+ <!--Type definitions and order-related complex types.-->
+ <complexType name="BankSignatureDataSigBookType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Signaturdaten des Kreditinstituts beim EU-Transfer.</documentation>
+ <documentation xml:lang="en">Data type for digital signature data transferred using EBICS.</documentation>
+ </annotation>
+ <sequence>
+ <element name="OrderSignature" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">bankfachliche Elektronische Unterschrift.</documentation>
+ <documentation xml:lang="en">Digital signature (either autorising an order or applied for transportation).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:SignatureType"/>
+ </simpleContent>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="PreValidationRequestType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Vorabprüfung (Anfrage).</documentation>
+ <documentation xml:lang="en">Data type for pre-validation (request).</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Client sendet den Hashwert der Auftragsdaten und alle weiteren Daten, die er im Rahmen der Vorabprüfung zur Verfügung stellen will</documentation>
+ </annotation>
+ <element name="DataDigest" type="ebics:DataDigestType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Hashwert der zu übertragenden Auftragsdatendatei für die Vorabprüfung.</documentation>
+ <documentation xml:lang="en">Hashvalue of the transmitted order data for the prevalidation.</documentation>
+ </annotation>
+ </element>
+ <element name="AccountAuthorisation" type="ebics:PreValidationAccountAuthType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Kontoangabe zur Kontoberechtigung für diesen Zahlungsverkehrsauftrag bei der Vorabprüfung.</documentation>
+ <documentation xml:lang="en">Account information for authorisation checks for the payment order within the prevalidation.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="PreValidationAccountAuthType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Kontenberechtigungsdaten zur Vorabprüfung.</documentation>
+ <documentation xml:lang="en">Data type for the account authorisation data for the prevalidation.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:AccountType">
+ <sequence>
+ <element name="Amount" type="ebics:AmountType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Summe der Zahlungsverkehrsaufträge dieses Kontos für die Höchstbetragsprüfung der EU.</documentation>
+ <documentation xml:lang="en">Total sum of the ordered payments regarding this account in order to check the maximum amount limit of the signature permission grades.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="DataTransferRequestType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Transfer von Auftragsdaten (Anfrage).</documentation>
+ <documentation xml:lang="en">Data type for the transfer of order data (request).</documentation>
+ </annotation>
+ <sequence>
+ <choice>
+ <annotation>
+ <documentation xml:lang="de">Transaktionsphase?</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Initialisierungsphase: Transfer der Signaturdaten (EUs) und des Transaktionsschlüssels.</documentation>
+ <documentation xml:lang="en">Inituialisation phase: Transfer of signatur data (ESs) and transaktion key.</documentation>
+ </annotation>
+ <element name="DataEncryptionInfo">
+ <annotation>
+ <documentation xml:lang="de">Information zur Verschlüsselung der Signatur- und Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Information regarding the encryption of signature and order data.</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:DataEncryptionInfoType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="SignatureData">
+ <annotation>
+ <documentation xml:lang="de">enthält Signaturdaten (EUs).</documentation>
+ <documentation xml:lang="en">contains signature data (ESs).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:SignatureDataType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="DataDigest" type="ebics:DataDigestType">
+ <annotation>
+ <documentation xml:lang="de">Hashwert der Auftragsdaten.</documentation>
+ <documentation xml:lang="de">Hashvalue of the order data.</documentation>
+ </annotation>
+ </element>
+ <element name="AdditionalOrderInfo" type="ebics:String255Type" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Additional Information about the order (unstructured, up to 255 characters).</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Transferphase: Transfer von Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Transferphase: Transfer of order data.</documentation>
+ </annotation>
+ <element name="OrderData">
+ <annotation>
+ <documentation xml:lang="de">enthält Auftragsdaten.</documentation>
+ <documentation xml:lang="en">contains order data.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:OrderDataType">
+ <anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </choice>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="DataTransferResponseType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Transfer von Auftragsdaten (Antwort).</documentation>
+ </annotation>
+ <sequence>
+ <sequence minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Transfer des Sitzungsschlüssels und (optional) der Signaturdaten (EUs); nur in der Initialisierungsphase anzugeben.</documentation>
+ <documentation xml:lang="en">Transfer of the session key and (optional) signature data (ESs); to be specified only in the initialisation phase.</documentation>
+ </annotation>
+ <element name="DataEncryptionInfo">
+ <annotation>
+ <documentation xml:lang="de">Information zur Verschlüsselung der Signatur- und Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Information regarding the encryption of signature and order data.</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:DataEncryptionInfoType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="SignatureData" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">enthält Signaturdaten (EUs).</documentation>
+ <documentation xml:lang="en">contains signature data (ESs).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:SignatureDataType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ <element name="OrderData">
+ <annotation>
+ <documentation xml:lang="de">enthält Auftragsdaten.</documentation>
+ <documentation xml:lang="en">contains order data.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:OrderDataType">
+ <anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="TransferReceiptRequestType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Transfer von Transferquittungen.</documentation>
+ <documentation xml:lang="en">Data type for the transfer of transfer receipts.</documentation>
+ </annotation>
+ <sequence>
+ <element name="ReceiptCode" type="ebics:ReceiptCodeType">
+ <annotation>
+ <documentation xml:lang="de">Quittierungscode für Auftragsdatentransfer.</documentation>
+ <documentation xml:lang="en">Receipt code fpr transfer of order data.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="TransferReceiptResponseType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Transfer von Antwortcodes.</documentation>
+ </annotation>
+ <sequence>
+ <element name="ReturnCodeReceipt" type="ebics:ReturnCodeType">
+ <annotation>
+ <documentation xml:lang="de">Antwortcode für den vorangegangenen Transfer.</documentation>
+ <documentation xml:lang="en">response code for the foregoing transfer.</documentation>
+ </annotation>
+ </element>
+ <element name="TimestampBankParameter" type="ebics:TimestampType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zeitstempel der letzten Aktualisierung der Bankparameter.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HAAResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HAA (Antwort: abrufbare Auftragsarten abholen).</documentation>
+ <documentation xml:lang="en">Data type for order data of order type HAA (Response: Download of available order data).</documentation>
+ </annotation>
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Liste von Auftragsarten, für die Daten bereit stehen.</documentation>
+ <documentation xml:lang="en">List of order types for which data are available.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HCARequestOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HCA (Anfrage: Änderung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung).</documentation>
+ <documentation xml:lang="en">Data type for order data regarding order type HCA (Request: Update of Subscriber's key for authentication and encryption).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation>
+ <documentation xml:lang="en">public key for authentication.</documentation>
+ </annotation>
+ </element>
+ <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation>
+ <documentation xml:lang="en">public key for encryption.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID.</documentation>
+ <documentation xml:lang="en">Partner-ID.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID.</documentation>
+ <documentation xml:lang="en">User-ID.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HCSRequestOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HCS (Anfrage: Schlüsselwechsel aller Schlüssel).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HCS (Request: Update of all keys).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation>
+ <documentation xml:lang="en">public key for authentication.</documentation>
+ </annotation>
+ </element>
+ <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation>
+ <documentation xml:lang="en">public key for encryption.</documentation>
+ </annotation>
+ </element>
+ <element ref="esig:SignaturePubKeyInfo"/>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID.</documentation>
+ <documentation xml:lang="en">Partner-ID.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID.</documentation>
+ <documentation xml:lang="en">User-ID.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HIARequestOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HIA (Anfrage: Initialisierung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HIA (Request: Initialisation of subcriber keys for authentication and encryption).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation>
+ <documentation xml:lang="en">public key for authentication.</documentation>
+ </annotation>
+ </element>
+ <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation>
+ <documentation xml:lang="en">public key for encryption.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID.</documentation>
+ <documentation xml:lang="en">Partner-ID.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID.</documentation>
+ <documentation xml:lang="en">User-ID.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="H3KRequestOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart H3K (Anfrage: Initialisierung aller drei Teilnehmerschlüssel).</documentation>
+ <documentation xml:lang="en">Order type for order data H3K (request: initialise all three user's keys).</documentation>
+ </annotation>
+ <sequence>
+ <element name="SignatureCertificateInfo" type="ebics:SignatureCertificateInfoType">
+ <annotation>
+ <documentation xml:lang="en">Key for electronic Signature</documentation>
+ <documentation xml:lang="de">Signaturschlüssel.</documentation>
+ </annotation>
+ </element>
+ <element name="AuthenticationCertificateInfo" type="ebics:AuthenticationCertificateInfoType">
+ <annotation>
+ <documentation xml:lang="en">Authentication key</documentation>
+ <documentation xml:lang="de">Authentifikationsschlüssel.</documentation>
+ </annotation>
+ </element>
+ <element name="EncryptionCertificateInfo" type="ebics:EncryptionCertificateInfoType">
+ <annotation>
+ <documentation xml:lang="en">Encryption key</documentation>
+ <documentation xml:lang="de">Verschlüsselungsschlüssel.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="en">PartnerID.</documentation>
+ <documentation xml:lang="de">Kunden-ID.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="en">UserID.</documentation>
+ <documentation xml:lang="de">Teilnehmer-ID.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <complexType name="HKDResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HKD (Antwort: Kunden- und Teilnehmerdaten des Kunden abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HKD (response: receive customer based information on the customer and the customer's user.</documentation>
+ </annotation>
+ <sequence>
+ <element name="PartnerInfo" type="ebics:PartnerInfoType">
+ <annotation>
+ <documentation xml:lang="de">Kundendaten.</documentation>
+ <documentation xml:lang="en">Customer data.</documentation>
+ </annotation>
+ </element>
+ <element name="UserInfo" type="ebics:UserInfoType" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmerdaten.</documentation>
+ <documentation xml:lang="en">User data.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HPBResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HPB (Antwort: Transfer der Bankschlüssel).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HPB (Response: Transfer of bank keys).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation>
+ <documentation xml:lang="en">public authentication key</documentation>
+ </annotation>
+ </element>
+ <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation>
+ <documentation xml:lang="en">public encryption key</documentation>
+ </annotation>
+ </element>
+ <element ref="esig:SignaturePubKeyInfo" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">öffentlicher EU-Signaturschlüssel.</documentation>
+ <documentation xml:lang="en">public ES key.</documentation>
+ </annotation>
+ </element>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Banksystem-ID.</documentation>
+ <documentation xml:lang="en">Host-ID.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HPDResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HPD (Antwort: Bankparameter abholen).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HPD (Response: Download bank parameters).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AccessParams" type="ebics:HPDAccessParamsType">
+ <annotation>
+ <documentation xml:lang="de">Zugangsparameter.</documentation>
+ <documentation xml:lang="en">Access Parameter.</documentation>
+ </annotation>
+ </element>
+ <element name="ProtocolParams" type="ebics:HPDProtocolParamsType">
+ <annotation>
+ <documentation xml:lang="de">Protokollparameter.</documentation>
+ <documentation xml:lang="en">Protocol Parameter.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <complexType name="HPDAccessParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HPD-Zugangsparameter.</documentation>
+ <documentation xml:lang="en">data type for HPD Access Parameter.</documentation>
+ </annotation>
+ <sequence>
+ <element name="URL" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">institutsspezifische IP-Adresse/URL.</documentation>
+ <documentation xml:lang="en">individual IP-address/URL of the bank.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="anyURI">
+ <attribute name="valid_from" type="ebics:TimestampType">
+ <annotation>
+ <documentation xml:lang="de">Gültigkeitsbeginn für die angegebene URL/IP.</documentation>
+ <documentation xml:lang="en">Valid-From-Date of the URL/IP.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Institute">
+ <annotation>
+ <documentation xml:lang="de">Institutsbezeichnung.</documentation>
+ <documentation xml:lang="en">Name of the bank.</documentation>
+ </annotation>
+ <simpleType>
+ <restriction base="normalizedString">
+ <maxLength value="80"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="HostID" type="ebics:HostIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Banksystem-ID.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HPDProtocolParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HPD-Protokollparameter.</documentation>
+ <documentation xml:lang="en">Data type for HPD's parameters regarding the EBICS protocol.</documentation>
+ </annotation>
+ <sequence>
+ <element name="Version" type="ebics:HPDVersionType">
+ <annotation>
+ <documentation xml:lang="de">Spezifikation unterstützter Versionen.</documentation>
+ <documentation xml:lang="en">Specification of supported versions..</documentation>
+ </annotation>
+ </element>
+ <element name="Recovery" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Parameter zur Recovery-Funktion (Wiederaufnahme abgebrochener Übertragungen).</documentation>
+ <documentation xml:lang="en">Parameter denoting the recovery function (recovery of aborted transmissions).</documentation>
+ </annotation>
+ <complexType>
+ <attributeGroup ref="ebics:OptSupportFlag"/>
+ </complexType>
+ </element>
+ <element name="PreValidation" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Parameter zur Vorabprüfung (über die Übermittlung der EU hinaus).</documentation>
+ <documentation xml:lang="en">Parameter denoting the pre-validation (beyond transmission of signatures).</documentation>
+ </annotation>
+ <complexType>
+ <annotation>
+ <documentation xml:lang="de">Optionales Support-Flag, Default = true.</documentation>
+ <documentation xml:lang="en">Optional support flag, default = true.</documentation>
+ </annotation>
+ <attributeGroup ref="ebics:OptSupportFlag"/>
+ </complexType>
+ </element>
+ <element name="ClientDataDownload" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Parameter zum Download von Kunden- und Teilnehmerdaten (Auftragsarten HKD/HTD).</documentation>
+ <documentation xml:lang="en">Parameter denoting the download of customer and user data (order types HKD/HTD).</documentation>
+ </annotation>
+ <complexType>
+ <attributeGroup ref="ebics:OptSupportFlag"/>
+ </complexType>
+ </element>
+ <element name="DownloadableOrderData" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Parameter zum Abruf von Auftragsarten, zu denen Auftragsdaten verfügbar sind (Auftragsart HAA).</documentation>
+ <documentation xml:lang="en">Parameter denoting the reception of order types which provides downloadable order data (order type HAA).</documentation>
+ </annotation>
+ <complexType>
+ <attributeGroup ref="ebics:OptSupportFlag"/>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HPDVersionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HPD-Versionsinformationen.</documentation>
+ <documentation xml:lang="en">Data type for HPD version information.</documentation>
+ </annotation>
+ <sequence>
+ <element name="Protocol">
+ <annotation>
+ <documentation xml:lang="de">unterstützte EBICS-Protokollversionen (H...).</documentation>
+ <documentation xml:lang="en">supported EBICS protocol versions. (H...).</documentation>
+ </annotation>
+ <simpleType>
+ <list itemType="ebics:ProtocolVersionType"/>
+ </simpleType>
+ </element>
+ <element name="Authentication">
+ <annotation>
+ <documentation xml:lang="de">unterstützte Versionen der Authentifikation (X...).</documentation>
+ <documentation xml:lang="en">supported version for authentication (X...).</documentation>
+ </annotation>
+ <simpleType>
+ <list itemType="ebics:AuthenticationVersionType"/>
+ </simpleType>
+ </element>
+ <element name="Encryption">
+ <annotation>
+ <documentation xml:lang="de">unterstützte Versionen der Verschlüsselung (E...).</documentation>
+ <documentation xml:lang="en">supported version for encryption (E...).</documentation>
+ </annotation>
+ <simpleType>
+ <list itemType="ebics:EncryptionVersionType"/>
+ </simpleType>
+ </element>
+ <element name="Signature">
+ <annotation>
+ <documentation xml:lang="de">unterstützte EU-Versionen (A...).</documentation>
+ <documentation xml:lang="en">supported version for ES (A...).</documentation>
+ </annotation>
+ <simpleType>
+ <list itemType="esig:SignatureVersionType"/>
+ </simpleType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HTDReponseOrderDataType">
+ <annotation>
+ <documentation>Datentyp für Auftragsdaten für Auftragsart HTD (Antwort: Kunden- und Teilnehmerdaten des Teilnehmers abholen).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HTD (Response: Download partner- and user data).</documentation>
+ </annotation>
+ <sequence>
+ <element name="PartnerInfo" type="ebics:PartnerInfoType">
+ <annotation>
+ <documentation xml:lang="de">Kundendaten.</documentation>
+ <documentation xml:lang="en">Customer data.</documentation>
+ </annotation>
+ </element>
+ <element name="UserInfo" type="ebics:UserInfoType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmerdaten.</documentation>
+ <documentation xml:lang="en">User data.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVDResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HVD (Antwort: VEU-Status abrufen).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HVD (Response: EDS-status).</documentation>
+ </annotation>
+ <sequence>
+ <element name="DataDigest" type="ebics:DataDigestType">
+ <annotation>
+ <documentation xml:lang="de">Hashwert der Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Hash value of the order data.</documentation>
+ </annotation>
+ </element>
+ <element name="DisplayFile" type="base64Binary">
+ <annotation>
+ <documentation xml:lang="de">Begleitzettel/"Displaydatei" (entspricht der Dateianzeige im Kundenprotokoll gemäß DFÜ-Abkommen).</documentation>
+ <documentation xml:lang="en">Accompanying ticket/"display file" (corresponds to the display file of the customer's journal according to the document "DFÜ-Abkommen").</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDataAvailable" type="boolean">
+ <annotation>
+ <documentation xml:lang="de">Kann die Auftragsdatei im Originalformat abgeholt werden? (HVT mit completeOrderData=true)</documentation>
+ <documentation xml:lang="en">Can the order file be downloaded in the original format? (HVT with completeOrderData=true)</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDataSize" type="positiveInteger">
+ <annotation>
+ <documentation xml:lang="de">Größe der unkomprimierten Auftragsdaten in Bytes.</documentation>
+ <documentation xml:lang="en">Size of the uncompressed order data (byte count).</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDetailsAvailable" type="boolean">
+ <annotation>
+ <documentation xml:lang="de">Können die Auftragsdetails als XML-Dokument HVTResponseOrderData abgeholt werden? (HVT mit completeOrderData=false)</documentation>
+ <documentation xml:lang="en">Can the order details be downloaded as XML document HVTResponseOrderData? (HVT with completeOrderData=false)</documentation>
+ </annotation>
+ </element>
+ <element name="BankSignature" type="ebics:SignatureType" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">bankfachliche Elektronische Unterschrift des Kreditinstituts über Hashwert und Displaydatei.</documentation>
+ <documentation xml:lang="en">Digital Signature issued by the bank, covering the hash value and the accompanying ticket.</documentation>
+ </annotation>
+ </element>
+ <element name="SignerInfo" type="ebics:SignerInfoType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den bisherigen Unterzeichnern.</documentation>
+ <documentation xml:lang="en">Information about the already existing signers.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVDOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart HVD.</documentation>
+ <documentation xml:lang="en">Data type for additional order parameters for order type HVD.</documentation>
+ </annotation>
+ <sequence>
+ <group ref="ebics:HVRequestStructure"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVEOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart HVE.</documentation>
+ <documentation xml:lang="en">Data type for additional order parameters for order type HVE.</documentation>
+ </annotation>
+ <sequence>
+ <group ref="ebics:HVRequestStructure"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVSOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart HVS.</documentation>
+ <documentation xml:lang="en">Data type for additional order parameters for order type HVS.</documentation>
+ </annotation>
+ <sequence>
+ <group ref="ebics:HVRequestStructure"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVSRequestOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HVS (Anfrage: VEU-Storno).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HVS (request: EDS cancellation).</documentation>
+ </annotation>
+ <sequence>
+ <element name="CancelledDataDigest" type="ebics:DataDigestType">
+ <annotation>
+ <documentation xml:lang="de">Hashwert der Auftragsdaten des stornierten Auftrags.</documentation>
+ <documentation xml:lang="en">Hash value of order data of cancelled order.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVTResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Antwort mit Einzelauftraginfos für Auftragsart HVT (Antwort VEU-Transaktionsdetails abrufen mit completeOrderData="false").</documentation>
+ <documentation xml:lang="en">Data type for a response containing information about single transactions for order type HVT (response: EDS transaction details with completeOrderData="false").</documentation>
+ </annotation>
+ <sequence>
+ <element name="NumOrderInfos" type="ebics:NumOrderInfosType">
+ <annotation>
+ <documentation xml:lang="de">Gesamtanzahl der Einzelaufträge für den Auftrag.</documentation>
+ <documentation xml:lang="en">Total number of order infos for the order.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderInfo" type="ebics:HVTOrderInfoType" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Einzelauftragsinfos.</documentation>
+ <documentation xml:lang="en">Particular order content information requested for display matters.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVTAccountInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HVT-Konteninformationen.</documentation>
+ <documentation xml:lang="en">Data type for account information regarding order type HVT.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:AttributedAccountType"/>
+ </complexContent>
+ </complexType>
+ <complexType name="HVTOrderInfoType">
+ <annotation>
+ <documentation xml:lang="de">//MODIFIED - Replaced Element OrderFormat with MsgName// Datentyp für HVT-Auftragsinformationen.</documentation>
+ </annotation>
+ <sequence>
+ <element name="MsgName" type="ebics:MessageType" minOccurs="0"/>
+ <element name="AccountInfo" type="ebics:HVTAccountInfoType" minOccurs="2" maxOccurs="3">
+ <annotation>
+ <documentation xml:lang="de">kontobezogene Details des Auftrags (Auftraggeber, Empfänger etc.).</documentation>
+ <documentation xml:lang="en">account related details of the order (ordering party, receiver etc.).</documentation>
+ </annotation>
+ </element>
+ <element name="ExecutionDate" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Ausführungsdatum.</documentation>
+ <documentation xml:lang="en">Execution date.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="date"/>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Amount">
+ <annotation>
+ <documentation xml:lang="de">Betrag.</documentation>
+ <documentation xml:lang="en">Amount.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:AmountValueType">
+ <attribute name="isCredit" type="boolean" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Gutschrift (isCredit = "true") oder Lastschrift (isCredit = "false")?</documentation>
+ <documentation xml:lang="en">Credit (isCredit = "true") or debit (isCredit = "false")?</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Currency" type="ebics:CurrencyBaseType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Währungscode.</documentation>
+ <documentation xml:lang="en">Currency code.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Description" minOccurs="0" maxOccurs="4">
+ <annotation>
+ <documentation xml:lang="de">Textfeld zur weiteren Beschreibung der Transaktion (Verwendungszweck, Auftragsdetails, Kommentar).</documentation>
+ <documentation xml:lang="en">text field for additional descriptions regarding the transaction (remittance information, order details, annotations).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="string">
+ <attribute name="Type" use="required">
+ <annotation>
+ <documentation xml:lang="de">Beschreibungstyp.</documentation>
+ <documentation xml:lang="en">Description type.</documentation>
+ </annotation>
+ <simpleType>
+ <restriction base="token">
+ <enumeration value="Purpose">
+ <annotation>
+ <documentation xml:lang="de">Verwendungszweck</documentation>
+ <documentation xml:lang="en">remittance information.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Details">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdetails</documentation>
+ <documentation xml:lang="en">Order details.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Comment">
+ <annotation>
+ <documentation xml:lang="de">Kommentar</documentation>
+ <documentation xml:lang="en">Annotation.</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVTOrderFlagsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HVT-Auftragsflags.</documentation>
+ <documentation xml:lang="en">Data type for HVT order flags.</documentation>
+ </annotation>
+ <attribute name="completeOrderData" type="boolean" use="required">
+ <annotation>
+ <documentation xml:lang="de">Sollen die Transaktionsdetails als Einzelauftragsinfos (completeOrderData=false) oder als komplette Originaldaten (completeOrderData=true) übertragen werden? (Vorschlag für Default=false)</documentation>
+ <documentation xml:lang="en">Are the transaction details so be transmitted as particular order content information requested for display matters or in complete order data file form? (Proposal for Default=false)</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="fetchLimit" use="required">
+ <annotation>
+ <documentation xml:lang="de">Limit für die zu liefernden Transaktionsdetails, bei completeOrderData=false maximale Anzahl zu liefernder Einzelauftragsinfos, 0 für unbegrenzt (Vorschlag für Default=100).</documentation>
+ <documentation xml:lang="en">Limit for the transaction details to be transmitted; if completeOrderData=false, maximum number of details of a particular order; 0 for unlimited number of details (Proposal for Default=100).</documentation>
+ </annotation>
+ <simpleType>
+ <restriction base="nonNegativeInteger">
+ <totalDigits value="10"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ <attribute name="fetchOffset" use="required">
+ <annotation>
+ <documentation xml:lang="de">Offset vom Anfang der Originalauftragsdatei für die zu liefernden Transaktionsdetails, bei completeOrderData=false bezogen auf laufende Nummer des Einzelauftrags (Vorschlag für Default=0).</documentation>
+ <documentation xml:lang="en">Offset position in the original order file which marks the starting point for the transaction details to be transmitted; applies to the sequential number of a particular order if completeOrderData=false (Proposal for Default=0).</documentation>
+ </annotation>
+ <simpleType>
+ <restriction base="nonNegativeInteger">
+ <totalDigits value="10"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ <anyAttribute namespace="##targetNamespace" processContents="strict"/>
+ </complexType>
+ <complexType name="HVTOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart HVT.</documentation>
+ <documentation xml:lang="en">Data type for additional order parameters for order type HVT.</documentation>
+ </annotation>
+ <sequence>
+ <group ref="ebics:HVRequestStructure"/>
+ <element name="OrderFlags">
+ <annotation>
+ <documentation xml:lang="de">spezielle Flags für HVT-Aufträge.</documentation>
+ <documentation xml:lang="en">Special order flags for orders of type HVT.</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:HVTOrderFlagsType"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Generische Schlüssel-Wert-Parameter</documentation>
+ <documentation xml:lang="en">Generic key-value parameters</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVUResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HVU (Antwort: VEU-Übersicht abholen).</documentation>
+ <documentation xml:lang="en">Data type for order data for order type HVU (Response: Download EDS overview).</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de"/>
+ </annotation>
+ <element name="OrderDetails" type="ebics:HVUOrderDetailsType" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Auftragsinformationen.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVUOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HVU-Auftragsdetails.</documentation>
+ <documentation xml:lang="en">Data type for HVU order details.</documentation>
+ </annotation>
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsart lt. DFÜ-Abkommen des ausgewählten Auftrags.</documentation>
+ <documentation xml:lang="en">Type of the order.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderID" type="ebics:OrderIDType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsnummer lt. DFÜ-Abkommen des ausgewählten Auftrags.</documentation>
+ <documentation xml:lang="en">Order number.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDataSize" type="positiveInteger">
+ <annotation>
+ <documentation xml:lang="de">Größe der unkomprimierten Auftragsdaten in Bytes.</documentation>
+ <documentation xml:lang="en">Order data size in bytes.</documentation>
+ </annotation>
+ </element>
+ <element name="SigningInfo" type="ebics:HVUSigningInfoType">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den Unterschriftsmodalitäten.</documentation>
+ <documentation xml:lang="en">Signing information.</documentation>
+ </annotation>
+ </element>
+ <element name="SignerInfo" type="ebics:SignerInfoType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den bisherigen Unterzeichnern.</documentation>
+ <documentation xml:lang="en">Information regarding the signer.</documentation>
+ </annotation>
+ </element>
+ <element name="OriginatorInfo" type="ebics:HVUOriginatorInfoType">
+ <annotation>
+ <documentation xml:lang="de">Informationen zum Einreicher.</documentation>
+ <documentation xml:lang="en">Information regarding the originator.</documentation>
+ </annotation>
+ </element>
+ <element name="AdditionalOrderInfo" type="ebics:String255Type" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Additional Information about the order (unstructured, up to 255 characters).</documentation>
+ <documentation xml:lang="en">Additional Information about the order (unstructured, up to 255 characters).</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVUOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart HVU.</documentation>
+ <documentation xml:lang="en">Data type for additional order parameters for order type HVU.</documentation>
+ </annotation>
+ <sequence>
+ <element name="ServiceFilter" type="ebics:ServiceType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Liste von Auftragsarten, für die zur Unterschrift vorliegende Aufträge abgerufen werden sollen; falls nicht angegeben, werden sämtliche für den Teilnehmer unterschriftsfähigen Aufträge abgerufen.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVZOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart HVZ.</documentation>
+ <documentation xml:lang="en">Data type for additional order parameters for order type HVZ.</documentation>
+ </annotation>
+ <sequence>
+ <element name="ServiceFilter" type="ebics:ServiceType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Liste von Auftragsarten, für die zur Unterschrift vorliegende Aufträge abgerufen werden sollen; falls nicht angegeben, werden sämtliche für den Teilnehmer unterschriftsfähigen Aufträge abgerufen.</documentation>
+ <documentation xml:lang="de">List of order types that the orders ready to be signed by the requesting user should match; if not specified, a list of all orders ready to be signed by the requesting user is returned.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVUSigningInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Informationen zu den HVU-Unterschriftsmodalitäten.</documentation>
+ </annotation>
+ <attribute name="readyToBeSigned" type="boolean" use="required">
+ <annotation>
+ <documentation xml:lang="de">Ist der Auftrag unterschriftsreif ("true") oder bereits vom Teilnehmer unterschrieben ("false")?</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="NumSigRequired" type="positiveInteger" use="required">
+ <annotation>
+ <documentation xml:lang="de">Anzahl der insgesamt zur Freigabe erforderlichen EUs.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="NumSigDone" type="nonNegativeInteger" use="required">
+ <annotation>
+ <documentation xml:lang="de">Anzahl der bereits geleisteten EUs.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType name="HVUOriginatorInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Informationen zum Ersteller eines HVU-Auftrags.</documentation>
+ </annotation>
+ <sequence>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des Einreichers.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des Einreichers.</documentation>
+ </annotation>
+ </element>
+ <element name="Name" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Name des Einreichers.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType">
+ <annotation>
+ <documentation xml:lang="de">Zeitstempel der Einreichung (d.h. der Übertragung der Auftragsdatei).</documentation>
+ </annotation>
+ </element>
+ <any namespace="##targetNamespace" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVZResponseOrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HVZ (Antwort: VEU-Übersicht mit Zusatzinformationen abholen).</documentation>
+ <documentation xml:lang="en">Order data for order type HVZ (response: receive summary of orders currently stored in the distributed signature processing unit with additional informations).</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de"/>
+ </annotation>
+ <element name="OrderDetails" type="ebics:HVZOrderDetailsType" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Auftragsinformationen.</documentation>
+ <documentation xml:lang="en">Summary of order information.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="HVZOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für HVZ-Auftragsdetails.</documentation>
+ </annotation>
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType">
+ <annotation>
+ <documentation xml:lang="de">BTF Service Parameter-Struktur des ausgewählten Auftrags.</documentation>
+ <documentation xml:lang="en">Type of the order.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderID" type="ebics:OrderIDType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsnummer lt. DFÜ-Abkommen des ausgewählten Auftrags.</documentation>
+ <documentation xml:lang="en">ID number of the order.</documentation>
+ </annotation>
+ </element>
+ <element name="DataDigest" type="ebics:DataDigestType">
+ <annotation>
+ <documentation xml:lang="de">Hashwert der Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Hash value of the order data.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDataAvailable" type="boolean">
+ <annotation>
+ <documentation xml:lang="de">Kann die Auftragsdatei im Originalformat abgeholt werden? (HVT mit completeOrderData=true).</documentation>
+ <documentation xml:lang="en">Can the order file be downloaded in the original format? (HVT with completeOrderData=true)</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDataSize" type="positiveInteger">
+ <annotation>
+ <documentation xml:lang="de">Größe der unkomprimierten Auftragsdaten in Bytes.</documentation>
+ <documentation xml:lang="en">Size of uncompressed order data in Bytes.</documentation>
+ </annotation>
+ </element>
+ <element name="OrderDetailsAvailable" type="boolean">
+ <annotation>
+ <documentation xml:lang="de">Können die Auftragsdetails als XML-Dokument HVTResponseOrderData abgeholt werden? (HVT mit completeOrderData=false).</documentation>
+ <documentation xml:lang="en">Can the order details be downloaded as XML document HVTResponseOrderData? (HVT with completeOrderData=false)</documentation>
+ </annotation>
+ </element>
+ <group ref="ebics:HVZPaymentOrderDetailsStructure" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zusätzliche Auftragsdetails nur für Zahlungsaufträge.</documentation>
+ <documentation xml:lang="en">Order details related to payment orders only.</documentation>
+ </annotation>
+ </group>
+ <element name="SigningInfo" type="ebics:HVUSigningInfoType">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den Unterschriftsmodalitäten.</documentation>
+ <documentation xml:lang="en">Information regarding the signing modalities of the order.</documentation>
+ </annotation>
+ </element>
+ <element name="SignerInfo" type="ebics:SignerInfoType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den bisherigen Unterzeichnern.</documentation>
+ <documentation xml:lang="en">Information regarding the users who already signed the order.</documentation>
+ </annotation>
+ </element>
+ <element name="OriginatorInfo" type="ebics:HVUOriginatorInfoType">
+ <annotation>
+ <documentation xml:lang="de">Informationen zum Einreicher.</documentation>
+ <documentation xml:lang="en">Information regarding the originator of the order.</documentation>
+ </annotation>
+ </element>
+ <element name="AdditionalOrderInfo" type="ebics:String255Type" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Additional Information about the order (unstructured, up to 255 characters).</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <group name="HVZPaymentOrderDetailsStructure">
+ <annotation>
+ <documentation xml:lang="de">Standard-Requeststruktur für HVx-Aufträge (HVD, HVT, HVE, HVS).</documentation>
+ <documentation xml:lang="en">Standard structure for HVZ OrderDetails related to payment orders</documentation>
+ </annotation>
+ <sequence>
+ <element name="TotalOrders" type="nonNegativeInteger" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Anzahl der Zahlungssätze über alle logische Dateien entsprechend Dateianzeige.</documentation>
+ <documentation xml:lang="en">Total transaction number for all logical files (from dispay file).</documentation>
+ </annotation>
+ </element>
+ <element name="TotalAmount" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Summe der Beträge über alle logische Dateien entsprechend Dateianzeige.</documentation>
+ <documentation xml:lang="en">Total transaction amount for all logical files (from dispay file).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:AmountValueType">
+ <attribute name="isCredit" type="boolean" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Nur Gutschriften (isCredit = "true") oder nur Lastschriften (isCredit = "false")? Sonst keine Nutzung des Elements.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Currency" type="ebics:CurrencyBaseType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Auftragswährung (nur bei sortenreinen Zahlungen, sonst keine Angabe).</documentation>
+ <documentation xml:lang="en">Order currency (only if identical across all transactions, ship otherwise).</documentation>
+ </annotation>
+ </element>
+ <element name="FirstOrderInfo" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Informationen aus Dateianzeige der ersten logischen Datei.</documentation>
+ <documentation xml:lang="en">Order details from display file for first logical file.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="OrderPartyInfo" type="normalizedString" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Auftraggeber entsprechend Dateianzeige.</documentation>
+ <documentation xml:lang="en">Order party information (from display file).</documentation>
+ </annotation>
+ </element>
+ <element name="AccountInfo" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Erstes Auftraggeberkonto entsprechend Dateianzeige.</documentation>
+ <documentation xml:lang="en">First order party account (from display file).</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <choice maxOccurs="2">
+ <element name="AccountNumber">
+ <annotation>
+ <documentation xml:lang="de">Kontonummer (deutsches Format oder international als IBAN).</documentation>
+ <documentation xml:lang="en">Account number (German format or international as IBAN).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:AccountNumberType">
+ <attribute name="international" type="boolean" use="optional" default="false">
+ <annotation>
+ <documentation xml:lang="de">Ist die Kontonummer im deutschen Format (international=false) oder im internationalen Format (international=true, IBAN) angegeben?</documentation>
+ <documentation xml:lang="en">Account number given in German format (international=false) or in international format (international=true, IBAN)?</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="NationalAccountNumber">
+ <annotation>
+ <documentation xml:lang="de">Kontonummer im freien Format.</documentation>
+ <documentation xml:lang="en">Account number in free format.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:NationalAccountNumberType">
+ <attribute name="format" type="token" use="required">
+ <annotation>
+ <documentation xml:lang="de">Formatkennung.</documentation>
+ <documentation xml:lang="en">Format type.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <choice minOccurs="0" maxOccurs="2">
+ <element name="BankCode">
+ <annotation>
+ <documentation xml:lang="de">Bankleitzahl (deutsches Format oder international als SWIFT-BIC).</documentation>
+ <documentation xml:lang="en">Bank sort code (German format or international as SWIFT-BIC).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:BankCodeType">
+ <attribute name="international" type="boolean" use="optional" default="false">
+ <annotation>
+ <documentation xml:lang="de">Ist die Bankleitzahl im deutschen Format (international=false, BLZ) oder im internationalen Format (international=true, SWIFT-BIC) angegeben?</documentation>
+ <documentation xml:lang="en">Bank sort code given in German format (international=false) or in international format (international=true, SWIFT-BIC)?</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Prefix" type="ebics:BankCodePrefixType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">nationales Präfix für Bankleitzahlen.</documentation>
+ <documentation xml:lang="en">National prefix for bank sort code.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="NationalBankCode">
+ <annotation>
+ <documentation xml:lang="de">Bankleitzahl im freien Format.</documentation>
+ <documentation xml:lang="en">Bank sort code in free format.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:NationalBankCodeType">
+ <attribute name="format" type="token" use="required">
+ <annotation>
+ <documentation xml:lang="de">Formatkennung.</documentation>
+ <documentation xml:lang="en">Format type.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </group>
+ <complexType name="SignerInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Informationen zu einem Unterzeichner eines VEU-Auftrags (HVU, HVD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des Unterzeichners.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des Unterzeichners.</documentation>
+ </annotation>
+ </element>
+ <element name="Name" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Name des Unterzeichners.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType">
+ <annotation>
+ <documentation xml:lang="de">Zeitstempel der Unterzeichnung (d.h. der Übertragung der Unterschrift).</documentation>
+ </annotation>
+ </element>
+ <element name="Permission">
+ <annotation>
+ <documentation xml:lang="de">zusätzliche Informationen zu den Berechtigungen des Teilnehmers, der unterzeichnet hat.</documentation>
+ </annotation>
+ <complexType>
+ <attributeGroup ref="ebics:SignerPermission"/>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="UserPermissionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für VEU-Berechtigungsinformationen des Teilnehmers (HKD, HTD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AdminOrderType" type="ebics:OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Liste von Auftragsarten, für die die Berechtigung des Teilnehmers gültig ist.</documentation>
+ <documentation xml:lang="en">List of order types which the user's permission belongs to.</documentation>
+ </annotation>
+ </element>
+ <element name="Service" type="ebics:RestrictedServiceType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">BTF Service Parameter struktur im Falle von BTU/BTD</documentation>
+ <documentation xml:lang="en">Identification of the file format in the case of FUL/FDL</documentation>
+ </annotation>
+ </element>
+ <element name="AccountID" type="ebics:AccountIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Verweis auf den Identifikationscode des berechtigten Kontos.</documentation>
+ <documentation xml:lang="en">Identification codes of the affected accounts.</documentation>
+ </annotation>
+ </element>
+ <element name="MaxAmount" type="ebics:AmountType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Betragshöchstgrenze, bis zu der die Berechtigung des Teilnehmers gültig ist.</documentation>
+ <documentation xml:lang="en">Maximum total amount which the user's permission is valid for.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="AuthorisationLevel" type="ebics:AuthorisationLevelType">
+ <annotation>
+ <documentation xml:lang="de">Unterschriftsklasse, für die der Teilnehmer berechtigt ist; nicht anzugeben bei Download-Auftragsarten.</documentation>
+ <documentation xml:lang="en">Authorization level of the user who signed the order; to be omitted for orders of type "download".</documentation>
+ </annotation>
+ </attribute>
+ <anyAttribute namespace="##targetNamespace" processContents="strict"/>
+ </complexType>
+ <complexType name="PartnerInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für VEU-Partnerdaten (HKD, HTD).</documentation>
+ <documentation xml:lang="en">Data type for customer data with regard to distributed signatures (order types HKD, HTD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AddressInfo" type="ebics:AddressInfoType">
+ <annotation>
+ <documentation xml:lang="de">Informationen zur Adresse des Kunden.</documentation>
+ <documentation xml:lang="en">Information about the customer's adress.</documentation>
+ </annotation>
+ </element>
+ <element name="BankInfo" type="ebics:BankInfoType">
+ <annotation>
+ <documentation xml:lang="de">Informationen zur Kreditinstitutsanbindung des Kunden.</documentation>
+ <documentation xml:lang="en">Information about the customer's banking access paramters.</documentation>
+ </annotation>
+ </element>
+ <element name="AccountInfo" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den Konten des Kunden.</documentation>
+ <documentation xml:lang="en">Information about the customer's accounts.</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:AccountType">
+ <sequence>
+ <element name="UsageOrderTypes" type="ebics:UsageOrderType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">//MODIFIED//Liste der Auftragsartenbeschränkungen; falls nicht angegeben, gibt es keine Auftragsartenbeschränkungen; falls das Element ohne Service-Element geliefert wird, ist das Konto für keine Auftragsart freigegeben.</documentation>
+ <documentation xml:lang="en">List containing the order types which contain this account is restricted to; if omitted, the account is unrestricted; if the list is empty the account is blocked for any order type.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="ID" type="ebics:AccountIDType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Identifikationscode des Kontos.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="OrderInfo" type="ebics:AuthOrderInfoType" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den Auftragsarten, für die der Kunde berechtigt ist.</documentation>
+ <documentation xml:lang="en">Information about order types which the customer is authorised to use.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <complexType name="AddressInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für VEU-Adressinformationen (HKD, HTD).</documentation>
+ <documentation xml:lang="en">Data type for address information with regard to distributed signature (order types HKD, HTD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="Name" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Name des Kunden.</documentation>
+ <documentation xml:lang="en">Customer's name.</documentation>
+ </annotation>
+ </element>
+ <element name="Street" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Straße und Hausnummer.</documentation>
+ <documentation xml:lang="en">Street and house number.</documentation>
+ </annotation>
+ </element>
+ <element name="PostCode" type="token" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Postleitzahl.</documentation>
+ <documentation xml:lang="en">Postal code.</documentation>
+ </annotation>
+ </element>
+ <element name="City" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Stadt.</documentation>
+ <documentation xml:lang="en">City.</documentation>
+ </annotation>
+ </element>
+ <element name="Region" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Region / Bundesland / Bundesstaat.</documentation>
+ <documentation xml:lang="en">Region / province / federal state.</documentation>
+ </annotation>
+ </element>
+ <element name="Country" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Land.</documentation>
+ <documentation xml:lang="en">Country.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="BankInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für VEU-Kreditinstitutsinformationen (HKD, HTD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Banksystem-ID.</documentation>
+ </annotation>
+ </element>
+ <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="UserInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für VEU-Teilnehmerinformationen (HKD, HTD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="UserID">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:UserIDType">
+ <attribute name="Status" type="ebics:UserStatusType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Status des Teilnehmers.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Name" type="ebics:NameType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Name des Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ <element name="Permission" type="ebics:UserPermissionType" maxOccurs="unbounded">
+ <annotation>
+ <documentation xml:lang="de">Informationen zu den Berechtigungen des Teilnehmers.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="AuthOrderInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für VEU-Berechtigungsinformationen zu Auftragsarten (HKD, HTD).</documentation>
+ <documentation xml:lang="en">Data type for user permissions with regard to distributed signatures (order types HKD, HTD).</documentation>
+ </annotation>
+ <sequence>
+ <element name="AdminOrderType" type="ebics:OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Administrative EBICS Auftragsart.</documentation>
+ </annotation>
+ </element>
+ <element name="Service" type="ebics:RestrictedServiceType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">BTF Service Parameter struktur im Falle von BTU/BTD</documentation>
+ <documentation xml:lang="en">Identification of the file format in the case of FUL/FDL</documentation>
+ </annotation>
+ </element>
+ <element name="Description" type="ebics:OrderDescriptionType">
+ <annotation>
+ <documentation xml:lang="de">Beschreibung der Auftragsart.</documentation>
+ </annotation>
+ </element>
+ <element name="NumSigRequired" type="nonNegativeInteger" default="0" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Anzahl erforderlicher EUs (Default=0).</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="StandardOrderParamsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter bei Standard-Auftragsarten.</documentation>
+ </annotation>
+ <sequence>
+ <element name="DateRange" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Datumsbereich (von-bis).</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="Start" type="ebics:DateType">
+ <annotation>
+ <documentation xml:lang="de">Startdatum (inkl.).</documentation>
+ </annotation>
+ </element>
+ <element name="End" type="ebics:DateType">
+ <annotation>
+ <documentation xml:lang="de">Enddatum (inkl.).</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ <attributeGroup name="VersionAttrGroup">
+ <annotation>
+ <documentation xml:lang="de">Attribute zur EBICS-Protokollversion und -revision.</documentation>
+ <documentation xml:lang="en">Attributes regarding the protocol version and revision of EBICS.</documentation>
+ </annotation>
+ <attribute name="Version" type="ebics:ProtocolVersionType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Version des EBICS-Protokolls (z.B. "H00x").</documentation>
+ <documentation xml:lang="en">Version of the EBICS protocol (e.g. "H00x").</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Revision" type="ebics:ProtocolRevisionType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Revision des EBICS-Protokolls (z.B. 1).</documentation>
+ <documentation xml:lang="en">Revision of the EBICS protocol (e.g. 1).</documentation>
+ </annotation>
+ </attribute>
+ </attributeGroup>
+ <!--Following ComplexTypes are used for BTF-->
+ <element name="BTDOrderParams" type="ebics:BTDParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation>zusätzliche Auftragsparameter für Auftragsart BTD.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type BTD.</documentation>
+ </annotation>
+ </element>
+ <element name="BTUOrderParams" type="ebics:BTUParamsType" substitutionGroup="ebics:OrderParams">
+ <annotation>
+ <documentation>zusätzliche Auftragsparameter für Auftragsart BTU.</documentation>
+ <documentation xml:lang="en">additional order parameters for order type BTU.</documentation>
+ </annotation>
+ </element>
+ <complexType name="BTDParamsType">
+ <annotation>
+ <documentation>Datentyp für BTF Download Parameter</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:BTFParamsTyp">
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType">
+ <annotation>
+ <documentation>Service name - target system for the further processing of the order</documentation>
+ </annotation>
+ </element>
+ <element name="DateRange" type="ebics:DateRangeType" minOccurs="0"/>
+ <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="fileName" type="ebics:FileNameStringType" use="prohibited">
+ <annotation>
+ <documentation>The file name on the client It can be transmitted optionally</documentation>
+ </annotation>
+ </attribute>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="BTUParamsType">
+ <annotation>
+ <documentation>Datentyp für BTF Upload Parameter</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:BTFParamsTyp">
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType">
+ <annotation>
+ <documentation>Service name - target system for the further processing of the order</documentation>
+ </annotation>
+ </element>
+ <element name="SignatureFlag" type="ebics:SignatureFlagType" minOccurs="0">
+ <annotation>
+ <documentation>If not present the order doesn't contain any ES and shall be authorised outside EBICS
+If present the order shall be autorised within EBICS:
+1. If the attribute VEU is also present the sender desires spooling into the VEU - hence in this case the order is not rejected in the case of not sufficient number of ES
+2. If the attribute is not present all necessary ES must be inside the order (else: rejection of the order) </documentation>
+ </annotation>
+ </element>
+ <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="fileName" type="ebics:FileNameStringType">
+ <annotation>
+ <documentation>The file name on the client It can be transmitted optionally</documentation>
+ </annotation>
+ </attribute>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="BTFParamsTyp" abstract="true">
+ <annotation>
+ <documentation>Abstract Type containing all BTF params structures</documentation>
+ </annotation>
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType">
+ <annotation>
+ <documentation>Service name - target system for the further processing of the order</documentation>
+ </annotation>
+ </element>
+ <element name="SignatureFlag" type="ebics:SignatureFlagType" minOccurs="0">
+ <annotation>
+ <documentation>If not present the order doesn't contain any ES and shall be authorised outside EBICS
+If present the order shall be autorised within EBICS:
+1. If the attribute VEU is also present the sender desires spooling into the VEU - hence in this case the order is not rejected in the case of not sufficient number of ES
+2. If the attribute is not present all necessary ES must be inside the order (else: rejection of the order) </documentation>
+ </annotation>
+ </element>
+ <element name="DateRange" type="ebics:DateRangeType" minOccurs="0"/>
+ <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="fileName" type="ebics:FileNameStringType">
+ <annotation>
+ <documentation>The file name on the client It can be transmitted optionally</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType name="DateRangeType">
+ <annotation>
+ <documentation>Datentyp für die Angabe eines (Berichts-) Zeitraums</documentation>
+ </annotation>
+ <sequence>
+ <element name="Start" type="ebics:DateType"/>
+ <element name="End" type="ebics:DateType"/>
+ </sequence>
+ </complexType>
+ <complexType name="FlagAttribType">
+ <annotation>
+ <documentation>Basis-Datentyp für Kennzeichen mit optionalem Attribut</documentation>
+ </annotation>
+ <anyAttribute/>
+ </complexType>
+ <complexType name="MessageType">
+ <annotation>
+ <documentation>Datentyp für Meldungstyp-String mit optionalen Attributen</documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="ebics:MessageNameStringType">
+ <attribute name="variant" type="ebics:NumStringType" use="optional">
+ <annotation>
+ <documentation>Variant number of the message type (usable for ISO20022 messages)</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="version" type="ebics:NumStringType" use="optional">
+ <annotation>
+ <documentation>Version number of the message type (usable for ISO20022 messages)</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="format" use="optional">
+ <annotation>
+ <documentation>Encoding format of the message (e.g. XML, ASN1, JSON, PDF)</documentation>
+ </annotation>
+ <simpleType>
+ <restriction base="ebics:CodeStringType">
+ <maxLength value="4"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="ServiceType">
+ <annotation>
+ <documentation>Basisdatentyp für BTF-Service Parameter Set</documentation>
+ </annotation>
+ <sequence>
+ <element name="ServiceName" type="ebics:ServiceNameStringType" minOccurs="0">
+ <annotation>
+ <documentation>Service Code name: External list specified and maintained by EBICS. Basis is the "SWIFT-list" for the field "description" (SCT, DCT, XCT, SDD, DDD, STM, REP...) plus additional codes needed for further services </documentation>
+ </annotation>
+ </element>
+ <element name="Scope" type="ebics:ScopeStringType" minOccurs="0">
+ <annotation>
+ <documentation>Specifies whose rules have to be taken into account for the service. This means which market / comminity has defined the rules.
+If the element is absent a global definition for the service is assumed.
+External list specified and maintained by EBICS. In addition the following codes may be used:
+2-character ISO country code or a 3-character issuer code (defined by EBICS)</documentation>
+ </annotation>
+ </element>
+ <element name="ServiceOption" type="ebics:ServiceOptionStringType" minOccurs="0">
+ <annotation>
+ <documentation>Service Option Code
+Additional option for the service (also depends on used scope)</documentation>
+ </annotation>
+ </element>
+ <element name="Container" type="ebics:ContainerFlagType" minOccurs="0">
+ <annotation>
+ <documentation>Container flag. If present, data is provided/requested in a container format specified in the attribute of the flag</documentation>
+ </annotation>
+ </element>
+ <element name="MsgName" type="ebics:MessageType" minOccurs="0">
+ <annotation>
+ <documentation>Name of the message, e.g. pain.001 or mt101 National message names (issued by DK, CFONB or SIC are also allowed)</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <complexType name="RestrictedServiceType">
+ <annotation>
+ <documentation>Type is arestriction of the generic ServiceType, defining the mandatory elements</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:ServiceType">
+ <sequence>
+ <element name="ServiceName" type="ebics:ServiceNameStringType">
+ <annotation>
+ <documentation>Service Code name: External list specified and maintained by EBICS. Basis is the "SWIFT-list" for the field "description" (SCT, DCT, XCT, SDD, DDD, STM, REP...) plus additional codes needed for further services </documentation>
+ </annotation>
+ </element>
+ <element name="Scope" type="ebics:ScopeStringType" minOccurs="0">
+ <annotation>
+ <documentation>Specifies whose rules have to be taken into account for the service. This means which market / comminity has defined the rules.
+If the element is absent a global definition for the service is assumed.
+External list specified and maintained by EBICS.
+In addition the following codes may be used:
+2-character ISO country code or a 3-character issuer code (defined by EBICS)</documentation>
+ </annotation>
+ </element>
+ <element name="ServiceOption" type="ebics:ServiceOptionStringType" minOccurs="0">
+ <annotation>
+ <documentation>Service Option Code
+ Additional option for the service (also depends on used scope)</documentation>
+ </annotation>
+ </element>
+ <element name="Container" type="ebics:ContainerFlagType" minOccurs="0">
+ <annotation>
+ <documentation>Container flag. If present, data is provided/requested in a container format specified in the attribute of the flag</documentation>
+ </annotation>
+ </element>
+ <element name="MsgName" type="ebics:MessageType">
+ <annotation>
+ <documentation>Name of the message, e.g. pain.001 or mt101 National message names (issued by DK, CFONB or SIC are also allowed)</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="ContainerFlagType">
+ <annotation>
+ <documentation>Container flag. If present, data is provided/requested in a container format specified in the attribute of the flag</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:FlagAttribType">
+ <attribute name="containerType" type="ebics:ContainerStringType" use="required">
+ <annotation>
+ <documentation>Specifies the container type - External Codelist defined by EBICS (starting values: XML, ZIP, SVC)</documentation>
+ </annotation>
+ </attribute>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="SignatureFlagType">
+ <annotation>
+ <documentation>Datentyp für BTF Signatur-Flag (ersetzt Orderkennzeichen)</documentation>
+ </annotation>
+ <complexContent>
+ <restriction base="ebics:FlagAttribType">
+ <attribute name="requestEDS" type="boolean" use="optional">
+ <annotation>
+ <documentation>If present the sender desires spooling into EBICS distributed signature queue, only "true" is allowed</documentation>
+ </annotation>
+ </attribute>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="UsageOrderType">
+ <annotation>
+ <documentation>Datentyp zur Kennzeichnung von Auftragsartenbeschränkungen</documentation>
+ </annotation>
+ <sequence>
+ <element name="Service" type="ebics:RestrictedServiceType" minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation>Service Parameter-Sets von nicht unterstützten BTF-Auftragsarten</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <!--END BTF-->
+</schema>
diff --git a/util/src/main/resources/xsd/ebics_request_H005.xsd b/util/src/main/resources/xsd/ebics_request_H005.xsd
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2016 sp1 (x64) (http://www.altova.com) by EBICS Working Group - March 2017 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <annotation>
+ <documentation xml:lang="de">ebics_request_H005.xsd ist das EBICS-Protokollschema für Anfragen.</documentation>
+ <documentation xml:lang="en">ebics_request_H005.xsd is the appropriate EBICS protocol schema for standard requests.</documentation>
+ </annotation>
+ <include schemaLocation="ebics_types_H005.xsd"/>
+ <include schemaLocation="ebics_orders_H005.xsd"/>
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
+ <element name="ebicsRequest">
+ <annotation>
+ <documentation xml:lang="de">Electronic Banking Internet Communication Standard of the EBICS SCRL: Multibankfähige Schnittstelle zur internetbasierten Kommunikation.</documentation>
+ <documentation xml:lang="en">Electronic Banking Internet Communication Standard der EBICS SCRL: multi-bank capable interface for internet-based communication.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="header">
+ <annotation>
+ <documentation xml:lang="de">enthält die technischen Transaktionsdaten.</documentation>
+ <documentation xml:lang="en">contains the transaction-driven data.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="static" type="ebics:StaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enhält alle festen Headereinträge.</documentation>
+ <documentation xml:lang="en">contains the static header entries.</documentation>
+ </annotation>
+ </element>
+ <element name="mutable" type="ebics:MutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enthält alle variablen Headereinträge.</documentation>
+ <documentation xml:lang="en">contains the mutable header entries.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </complexType>
+ </element>
+ <element ref="ebics:AuthSignature"/>
+ <element name="body">
+ <annotation>
+ <documentation xml:lang="de">enthält die Auftragsdaten, EU(s) und weitere Nutzdaten.</documentation>
+ <documentation xml:lang="en">contains order data, order signature(s) and further data referring to the current order.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de"/>
+ </annotation>
+ <element ref="ds:X509Data" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">X.509-Daten des Teilnehmers.</documentation>
+ <documentation xml:lang="en">X.509 data of the user.</documentation>
+ </annotation>
+ </element>
+ <choice>
+ <annotation>
+ <documentation xml:lang="de">Welche Transaktionsphase?</documentation>
+ <documentation xml:lang="en">Which transaction phase?</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Initialisierungs- und Transferphase.</documentation>
+ <documentation xml:lang="en">Initialisation or transfer phase.</documentation>
+ </annotation>
+ <element name="PreValidation" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Daten zur Vorabprüfung; nur anzugeben in der Initialisierungsphase bei Uploads mit Auftragsattribut OZH (EUs + Auftragsdaten).</documentation>
+ <documentation xml:lang="en">Data sent for pre-validation; mandatory for initialisation phase during uploads using order attribute OZH (order signature(s) + order data).</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:PreValidationRequestType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="DataTransfer" type="ebics:DataTransferRequestType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Transfer von Signatur- bzw. Auftragsdaten; nur bei Upload anzugeben.</documentation>
+ <documentation xml:lang="en">Transfer of signature or order data; mandatory for uploads only.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Quittierungsphase nach Download.</documentation>
+ <documentation xml:lang="en">Receipt phase after download.</documentation>
+ </annotation>
+ <element name="TransferReceipt">
+ <annotation>
+ <documentation xml:lang="de">Quittierung des Transfers.</documentation>
+ <documentation xml:lang="en">Receipt of transfer.</documentation>
+ </annotation>
+ <complexType>
+ <complexContent>
+ <extension base="ebics:TransferReceiptRequestType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ </sequence>
+ </choice>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:VersionAttrGroup"/>
+ <anyAttribute namespace="##targetNamespace" processContents="strict"/>
+ </complexType>
+ </element>
+ <complexType name="StaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den statischen EBICS-Header.</documentation>
+ <documentation xml:lang="en">Data type for the static EBICS header.</documentation>
+ </annotation>
+ <sequence>
+ <element name="HostID" type="ebics:HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Hostname des Banksystems.</documentation>
+ </annotation>
+ </element>
+ <choice>
+ <annotation>
+ <documentation xml:lang="de">Transaktionsphase?</documentation>
+ <documentation xml:lang="en">Transaction phase?</documentation>
+ </annotation>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Initialisierungsphase.</documentation>
+ <documentation xml:lang="en">Initialisation phase.</documentation>
+ </annotation>
+ <element name="Nonce" type="ebics:NonceType">
+ <annotation>
+ <documentation xml:lang="de">Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig.</documentation>
+ <documentation xml:lang="en">Random value, ensures the uniqueness of the client's message during initialisation phase.</documentation>
+ </annotation>
+ </element>
+ <element name="Timestamp" type="ebics:TimestampType">
+ <annotation>
+ <documentation xml:lang="de">aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung.</documentation>
+ <documentation xml:lang="en">current timestamp, used to limit storage space for nonces on the server.</documentation>
+ </annotation>
+ </element>
+ <element name="PartnerID" type="ebics:PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Kunden-ID des serverseitig administrierten Kunden.</documentation>
+ <documentation xml:lang="en">ID of the partner = customer, administered on the server.</documentation>
+ </annotation>
+ </element>
+ <element name="UserID" type="ebics:UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers.</documentation>
+ <documentation xml:lang="en">ID of the user that is assigned to the given customer, administered on the server.</documentation>
+ </annotation>
+ </element>
+ <element name="SystemID" type="ebics:UserIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">technische User-ID für Multi-User-Systeme.</documentation>
+ <documentation xml:lang="en">ID of the system for multi-user systems.</documentation>
+ </annotation>
+ </element>
+ <element name="Product" nillable="true" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Kundenprodukts bzw. Herstellerkennung oder Name.</documentation>
+ <documentation xml:lang="en">software ID / manufacturer ID / manufacturer's name of the customer's software package.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:ProductType">
+ <attribute name="Language" type="ebics:LanguageType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Sprachkennzeichen der Kundenproduktversion (gemäß ISO 639).</documentation>
+ <documentation xml:lang="en">Language code of the customer's software package according to ISO 639.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="InstituteID" type="ebics:InstituteIDType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Kennung des Herausgebers des Kundenprodukts bzw. des betreuenden Kreditinstituts.</documentation>
+ <documentation xml:lang="en">ID of the manufacturer / financial institute providing support for the customer's software package.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="OrderDetails" type="ebics:StaticHeaderOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdetails.</documentation>
+ <documentation xml:lang="en">order details.</documentation>
+ </annotation>
+ </element>
+ <element name="BankPubKeyDigests">
+ <annotation>
+ <documentation xml:lang="de">Hashwerte der erwarteten öffentlichen Schlüssel (Verschlüsselung, Signatur, Authentifikation) des Kreditinstituts.</documentation>
+ <documentation xml:lang="en">Digest values of the expected public keys (authentication, encryption, signature) owned by the financial institute.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="Authentication">
+ <annotation>
+ <documentation xml:lang="de">Hashwert des Authentifikationsschlüssels.</documentation>
+ <documentation xml:lang="en">Digest value of the public authentication key.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:PubKeyDigestType">
+ <attribute name="Version" type="ebics:AuthenticationVersionType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Version des Authentifikationsverfahrens.</documentation>
+ <documentation xml:lang="en">Version of the algorithm used for authentication.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Encryption">
+ <annotation>
+ <documentation xml:lang="de">Hashwert des Verschlüsselungsschlüssels.</documentation>
+ <documentation xml:lang="en">Digest value of the public encryption key.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:PubKeyDigestType">
+ <attribute name="Version" type="ebics:EncryptionVersionType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Version des Verschlüsselungsverfahrens.</documentation>
+ <documentation xml:lang="en">Version of the algorithm used for encryption.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="Signature" minOccurs="0" maxOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Hashwert des Signaturschlüssels.</documentation>
+ <documentation xml:lang="en">Digest value of the public signature key.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:PubKeyDigestType">
+ <attribute name="Version" type="ebics:SignatureVersionType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Version des Signaturverfahrens.</documentation>
+ <documentation xml:lang="en">Version of the algorithm used for signature creation.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="SecurityMedium" type="ebics:SecurityMediumType">
+ <annotation>
+ <documentation xml:lang="de">Angabe des Sicherheitsmediums, das der Kunde verwendet.</documentation>
+ <documentation xml:lang="en">Classification of the security medium used by the customer.</documentation>
+ </annotation>
+ </element>
+ <element name="NumSegments" type="ebics:NumSegmentsType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Gesamtsegmentanzahl für diese Transaktion; nur bei Uploads anzugeben.</documentation>
+ <documentation xml:lang="en">Total number of segments for this transaction; mandatory for uploads only.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <sequence>
+ <annotation>
+ <documentation xml:lang="de">Transfer- und Quittierungsphase.</documentation>
+ <documentation xml:lang="en">Transfer or receipt phase.</documentation>
+ </annotation>
+ <element name="TransactionID" type="ebics:TransactionIDType">
+ <annotation>
+ <documentation xml:lang="de">eindeutige, technische Transaktions-ID; wird vom Server vergeben.</documentation>
+ <documentation xml:lang="en">unique transaction ID, provided by the server.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </choice>
+ </sequence>
+ </complexType>
+ <complexType name="MutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den variablen EBICS-Header.</documentation>
+ <documentation xml:lang="en">Data type for the mutable EBICS header.</documentation>
+ </annotation>
+ <sequence>
+ <element name="TransactionPhase" type="ebics:TransactionPhaseType">
+ <annotation>
+ <documentation xml:lang="de">Phase, in der sich die Transaktion gerade befindet; wird bei jedem Transaktionsschritt vom Client gesetzt und vom Server übernommen.</documentation>
+ <documentation xml:lang="en">Current phase of the transaction; this information is provided by the client for each step of the transaction, and the server adopts the setting.</documentation>
+ </annotation>
+ </element>
+ <element name="SegmentNumber" nillable="true" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">enthält die Nummer des aktuellen Segments, welches gerade übertragen oder angefordert wird; nur anzugeben bei TransactionPhase=Transfer.</documentation>
+ <documentation xml:lang="en">contains the number of the segment which is currently being transmitted or requested; mandatory for transaction phase 'Transfer' only.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:SegmentNumberType">
+ <attribute name="lastSegment" type="boolean" use="required">
+ <annotation>
+ <documentation xml:lang="de">Ist dies das letzte Segment der Übertragung?</documentation>
+ <documentation xml:lang="en">Is this segment meant to be the last one regarding this transmission?</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="StaticHeaderOrderDetailsType">
+ <annotation>
+ <documentation xml:lang="de">//MODIFIED - Removed OrderAtribute ELEMENT// Datentyp für Auftragsdetails im statischen EBICS-Header.</documentation>
+ <documentation xml:lang="en">Data type for order details stored in the static EBICS header.</documentation>
+ </annotation>
+ <sequence>
+ <element name="AdminOrderType">
+ <annotation>
+ <documentation xml:lang="de">//MODIFIED - Umbenannt von OrderType// Auftragsart.</documentation>
+ <documentation xml:lang="en">type code of the order.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:OrderTBaseType"/>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="OrderID" type="ebics:OrderIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Auftragsnummer für Sendeaufträge gemäß DFÜ-Abkommen.</documentation>
+ <documentation xml:lang="en">ID of the (upload) order, formatted in accordance with the document "DFÜ-Abkommen".</documentation>
+ </annotation>
+ </element>
+ <element ref="ebics:OrderParams"/>
+ </sequence>
+ </complexType>
+</schema>
diff --git a/util/src/main/resources/xsd/ebics_response_H005.xsd b/util/src/main/resources/xsd/ebics_response_H005.xsd
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2016 sp1 (x64) (http://www.altova.com) by EBICS Working Group - October 2016 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <annotation>
+ <documentation xml:lang="de">ebics_response_H005.xsd ist das EBICS-Protokollschema für Antwortnachrichten.</documentation>
+ <documentation xml:lang="en">ebics_response_H005.xsd is the appropriate EBICS protocol schema for standard responses.</documentation>
+ </annotation>
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd">
+ <annotation>
+ <documentation xml:lang="de">XML-Signature.</documentation>
+ </annotation>
+ </import>
+ <include schemaLocation="ebics_types_H005.xsd"/>
+ <include schemaLocation="ebics_orders_H005.xsd"/>
+ <element name="ebicsResponse">
+ <annotation>
+ <documentation xml:lang="de">Electronic Banking Internet Communication Standard des Zentralen Kreditausschusses (ZKA): Multibankfähige Schnittstelle zur internetbasierten Kommunikation.</documentation>
+ <documentation xml:lang="en">Electronic Banking Internet Communication Standard of the "Zentraler Kreditausschuss (ZKA)": multi-bank capable interface for internet-based communication.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="header">
+ <annotation>
+ <documentation xml:lang="de">enthält die technischen Transaktionsdaten.</documentation>
+ <documentation xml:lang="en">contains the transaction-driven data.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="static" type="ebics:ResponseStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enhält alle festen Headereinträge.</documentation>
+ <documentation xml:lang="en">contains the static header entries.</documentation>
+ </annotation>
+ </element>
+ <element name="mutable" type="ebics:ResponseMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">enthält alle variablen Headereinträge.</documentation>
+ <documentation xml:lang="en">contains the mutable header entries.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </complexType>
+ </element>
+ <element ref="ebics:AuthSignature">
+ <annotation>
+ <documentation xml:lang="de">Authentifikationssignatur.</documentation>
+ <documentation xml:lang="en">Authentication signature.</documentation>
+ </annotation>
+ </element>
+ <element name="body">
+ <annotation>
+ <documentation xml:lang="de">enthält die Auftragsdaten, EU(s) und weitere Nutzdaten.</documentation>
+ <documentation xml:lang="en">contains order data, order signature(s) and further data referring to the current order.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="DataTransfer" type="ebics:DataTransferResponseType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Transfer von Auftragsdaten; nur bei Download anzugeben.</documentation>
+ <documentation xml:lang="en">Transfer of signature or order data; mandatory for downloads only.</documentation>
+ </annotation>
+ </element>
+ <element name="ReturnCode">
+ <annotation>
+ <documentation xml:lang="de">fachlicher Antwortcode für den vorangegangenen Request.</documentation>
+ <documentation xml:lang="en">order-related return code of the previous request.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:ReturnCodeType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="TimestampBankParameter" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Zeitstempel der letzten Aktualisierung der Bankparameter; nur in der Initialisierungsphase anzugeben.</documentation>
+ <documentation xml:lang="en">timestamp indicating the latest update of the bank parameters; may be set during initialisation phase only.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:TimestampType">
+ <attributeGroup ref="ebics:AuthenticationMarker"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ <attributeGroup ref="ebics:VersionAttrGroup"/>
+ <anyAttribute namespace="##targetNamespace" processContents="strict"/>
+ </complexType>
+ </element>
+ <complexType name="ResponseStaticHeaderType">
+ <annotation>
+ <documentation xml:lang="de">//TODO - Modify anotation TransactionID// Datentyp für den statischen EBICS-Header.</documentation>
+ <documentation xml:lang="en">Data type for the static EBICS header.</documentation>
+ </annotation>
+ <sequence>
+ <element name="TransactionID" type="ebics:TransactionIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">eindeutige, technische Transaktions-ID; wird vom Server vergeben, falls OrderAttribute entweder gleich "OZHNN" oder gleich "DZHNN" ist und falls tatsächlich eine Transaktion erzeugt wurde.</documentation>
+ <documentation xml:lang="en">unique transaction ID, provided by the server if and only if the order attribute is set to either "OZHNN" or "DZHNN" and if a transaction has been established actually.</documentation>
+ </annotation>
+ </element>
+ <element name="NumSegments" type="ebics:SegmentNumberType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Gesamtsegmentanzahl für diese Transaktion; nur bei Downloads in der Initialisierungsphase anzugeben.</documentation>
+ <documentation xml:lang="en">Total number of segments for this transaction; mandatory for downloads in initialisation phase only.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+ <complexType name="ResponseMutableHeaderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den variablen EBICS-Header.</documentation>
+ <documentation xml:lang="en">Data type for the mutable EBICS header.</documentation>
+ </annotation>
+ <sequence>
+ <element name="TransactionPhase" type="ebics:TransactionPhaseType">
+ <annotation>
+ <documentation xml:lang="de">Phase, in der sich die Transaktion gerade befindet; wird bei jedem Transaktionsschritt vom Client gesetzt und vom Server übernommen.</documentation>
+ <documentation xml:lang="en">Current phase of the transaction; this information is provided by the client for each step of the transaction, and the server adopts the setting.</documentation>
+ </annotation>
+ </element>
+ <element name="SegmentNumber" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">enthält die Nummer des aktuellen Segments, welches gerade übertragen oder angefordert wird; nur anzugeben bei TransactionPhase=Transfer und (bei Download) TransactionPhase=Initialisation.</documentation>
+ <documentation xml:lang="en">contains the number of the segment which is currently being transmitted or requested; mandatory for transaction phases 'Transfer' and (for downloads) 'Initialisation' only.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:SegmentNumberType">
+ <attribute name="lastSegment" type="boolean" use="required">
+ <annotation>
+ <documentation xml:lang="de">Ist dies das letzte Segment der Übertragung?</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="OrderID" type="ebics:OrderIDType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Auftragsnummer von Sendeaufträgen gemäß DFÜ-Abkommen.</documentation>
+ </annotation>
+ </element>
+ <element name="ReturnCode" type="ebics:ReturnCodeType">
+ <annotation>
+ <documentation xml:lang="de">Rückmeldung des technischen Status mit einer eindeutigen Fehlernummer.</documentation>
+ <documentation xml:lang="en">Return code indicating the technical status.</documentation>
+ </annotation>
+ </element>
+ <element name="ReportText" type="ebics:ReportTextType">
+ <annotation>
+ <documentation xml:lang="de">Klartext der Rückmeldung des technischen Status.</documentation>
+ <documentation xml:lang="en">Textual interpretation of the returned technical status code.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+</schema>
diff --git a/util/src/main/resources/xsd/ebics_types_H005.xsd b/util/src/main/resources/xsd/ebics_types_H005.xsd
@@ -0,0 +1,1885 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2017 sp1 (x64) (http://www.altova.com) by EBICS Working Group - March 2017 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:esig="http://www.ebics.org/S002" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H005" targetNamespace="urn:org:ebics:H005" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <import namespace="http://www.ebics.org/S002" schemaLocation="ebics_signature_S002.xsd"/>
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
+ <annotation>
+ <documentation xml:lang="de">ebics_types_H005.xsd enthält einfache Typdefinitionen für EBICS.</documentation>
+ </annotation>
+ <simpleType name="ProtocolVersionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für EBICS-Versionsnummern.</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="4"/>
+ <pattern value="H\d{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ProtocolRevisionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für EBICS-Revisionsnummern.</documentation>
+ </annotation>
+ <restriction base="positiveInteger">
+ <maxInclusive value="99"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="EncryptionVersionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Versionsnummern zur Verschlüsselung.</documentation>
+ </annotation>
+ <restriction base="token">
+ <pattern value="E\d{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="SignatureVersionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Versionsnummern zur Elektronischen Unterschrift (EU).</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="4"/>
+ <pattern value="A\d{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="AuthenticationVersionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Versionsnummern zur Authentifikation.</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="4"/>
+ <pattern value="X\d{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="CryptoVersionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Versionsnummern zur Verschlüsselung, Signatur und Authentifkation.</documentation>
+ </annotation>
+ <union memberTypes="ebics:EncryptionVersionType ebics:SignatureVersionType ebics:AuthenticationVersionType"/>
+ </simpleType>
+ <simpleType name="CurrencyBaseType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Währungen (Grundtyp).</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="3"/>
+ <pattern value="[A-Z]{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="CurrencyCode">
+ <annotation>
+ <documentation xml:lang="de">dreistelliger Währungscode gemäß ISO 4217.</documentation>
+ </annotation>
+ <restriction base="ebics:CurrencyBaseType">
+ <length value="3"/>
+ <enumeration value="AFN">
+ <annotation>
+ <documentation xml:lang="de">Afghanistan: Afghani</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ALL">
+ <annotation>
+ <documentation xml:lang="de">Albanien: Lek</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="AMD">
+ <annotation>
+ <documentation xml:lang="de">Armenien: Dram</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ANG">
+ <annotation>
+ <documentation xml:lang="de">Niederländische Antillen: Gulden</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="AOA">
+ <annotation>
+ <documentation xml:lang="de">Angola: Kwanza</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ARS">
+ <annotation>
+ <documentation xml:lang="de">Argentinien: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="AUD">
+ <annotation>
+ <documentation xml:lang="de">Australien: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="AWG">
+ <annotation>
+ <documentation xml:lang="de">Aruba: Florin</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="AZM">
+ <annotation>
+ <documentation xml:lang="de">Aserbaidschan: Manat</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BAM">
+ <annotation>
+ <documentation xml:lang="de">Bosnien und Herzegowina: Konvertible Mark</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BBD">
+ <annotation>
+ <documentation xml:lang="de">Barbados: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BDT">
+ <annotation>
+ <documentation xml:lang="de">Bangladesch: Taka</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BGN">
+ <annotation>
+ <documentation xml:lang="de">Bulgarien: Lew</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BHD">
+ <annotation>
+ <documentation xml:lang="de">Bahrain: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BMD">
+ <annotation>
+ <documentation xml:lang="de">Bermuda: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BND">
+ <annotation>
+ <documentation xml:lang="de">Brunei: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BOB">
+ <annotation>
+ <documentation xml:lang="de">Bolivien: Boliviano</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BRL">
+ <annotation>
+ <documentation xml:lang="de">Brasilien: Real</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BSD">
+ <annotation>
+ <documentation xml:lang="de">Bahamas: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BTN">
+ <annotation>
+ <documentation xml:lang="de">Bhutan: Ngultrum</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BWP">
+ <annotation>
+ <documentation xml:lang="de">Botswana: Pula</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BYR">
+ <annotation>
+ <documentation xml:lang="de">Weißrussland (Belarus): Rubel</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="BZD">
+ <annotation>
+ <documentation xml:lang="de">Belize: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CAD">
+ <annotation>
+ <documentation xml:lang="de">Kanada: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CDF">
+ <annotation>
+ <documentation xml:lang="de">Demokratische Republik Kongo: Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CHF">
+ <annotation>
+ <documentation xml:lang="de">Schweiz: Franken</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CLP">
+ <annotation>
+ <documentation xml:lang="de">Chile: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CNY">
+ <annotation>
+ <documentation xml:lang="de">China (Volksrepublik): Renminbi Yuan</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="COP">
+ <annotation>
+ <documentation xml:lang="de">Kolumbien: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CRC">
+ <annotation>
+ <documentation xml:lang="de">Costa Rica: Colón</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CSD">
+ <annotation>
+ <documentation xml:lang="de">Serbien: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CUP">
+ <annotation>
+ <documentation xml:lang="de">Kuba: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CVE">
+ <annotation>
+ <documentation xml:lang="de">Kap Verde: Escudo</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CYP">
+ <annotation>
+ <documentation xml:lang="de">Zypern (griechischer Teil): Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="CZK">
+ <annotation>
+ <documentation xml:lang="de">Tschechien: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="DJV">
+ <annotation>
+ <documentation xml:lang="de">Dschibuti: Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="DKK">
+ <annotation>
+ <documentation xml:lang="de">Dänemark: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="DOP">
+ <annotation>
+ <documentation xml:lang="de">Dominikanische Republik: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="DZD">
+ <annotation>
+ <documentation xml:lang="de">Algerien: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ECS">
+ <annotation>
+ <documentation xml:lang="de">Ecuador (bis 2000): Sucre</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="EEK">
+ <annotation>
+ <documentation xml:lang="de">Estland: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="EGP">
+ <annotation>
+ <documentation xml:lang="de">Ägypten: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ETB">
+ <annotation>
+ <documentation xml:lang="de">Äthiopien: Birr</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="EUR">
+ <annotation>
+ <documentation xml:lang="de">Europäische Währungsunion: Euro</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="FJD">
+ <annotation>
+ <documentation xml:lang="de">Fidschi: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="FKP">
+ <annotation>
+ <documentation xml:lang="de">Falklandinseln: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GBP">
+ <annotation>
+ <documentation xml:lang="de">Vereinigtes Königreich: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GEL">
+ <annotation>
+ <documentation xml:lang="de">Georgien: Lari</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GHC">
+ <annotation>
+ <documentation xml:lang="de">Ghana: Cedi</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GIP">
+ <annotation>
+ <documentation xml:lang="de">Gibraltar: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GMD">
+ <annotation>
+ <documentation xml:lang="de">Gambia: Dalasi</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GNF">
+ <annotation>
+ <documentation xml:lang="de">Guinea: Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GTQ">
+ <annotation>
+ <documentation xml:lang="de">Guatemala: Quetzal</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="GYD">
+ <annotation>
+ <documentation xml:lang="de">Guyana: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="HKD">
+ <annotation>
+ <documentation xml:lang="de">Hongkong: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="HNL">
+ <annotation>
+ <documentation xml:lang="de">Honduras: Lempira</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="HRK">
+ <annotation>
+ <documentation xml:lang="de">Kroatien: Kuna</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="HTG">
+ <annotation>
+ <documentation xml:lang="de">Haiti: Gourde</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="HUF">
+ <annotation>
+ <documentation xml:lang="de">Ungarn: Forint</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="IDR">
+ <annotation>
+ <documentation xml:lang="de">Indonesien: Rupiah</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ILS">
+ <annotation>
+ <documentation xml:lang="de">Israel: Schekel</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="INR">
+ <annotation>
+ <documentation xml:lang="de">Indien: Rupie</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="IQD">
+ <annotation>
+ <documentation xml:lang="de">Irak: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="IRR">
+ <annotation>
+ <documentation xml:lang="de">Iran: Rial</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ISK">
+ <annotation>
+ <documentation xml:lang="de">Island: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="JMD">
+ <annotation>
+ <documentation xml:lang="de">Jamaika: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="JOD">
+ <annotation>
+ <documentation xml:lang="de">Jordanien: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="JPY">
+ <annotation>
+ <documentation xml:lang="de">Japan: Yen</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KES">
+ <annotation>
+ <documentation xml:lang="de">Kenia: Schilling</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KGS">
+ <annotation>
+ <documentation xml:lang="de">Kirgisistan: Som</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KHR">
+ <annotation>
+ <documentation xml:lang="de">Kambodscha: Riel</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KMF">
+ <annotation>
+ <documentation xml:lang="de">Komoren: Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KPW">
+ <annotation>
+ <documentation xml:lang="de">Nordkorea: Won</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KRW">
+ <annotation>
+ <documentation xml:lang="de">Südkorea: Won</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KWD">
+ <annotation>
+ <documentation xml:lang="de">Kuwait: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KYD">
+ <annotation>
+ <documentation xml:lang="de">Kaimaninseln: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="KZT">
+ <annotation>
+ <documentation xml:lang="de">Kasachstan: Tenge</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LAK">
+ <annotation>
+ <documentation xml:lang="de">Laos: Kip</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LBP">
+ <annotation>
+ <documentation xml:lang="de">Libanon: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LKR">
+ <annotation>
+ <documentation xml:lang="de">Sri Lanka: Rupie</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LRD">
+ <annotation>
+ <documentation xml:lang="de">Liberia: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LSL">
+ <annotation>
+ <documentation xml:lang="de">Lesotho: Loti</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LTL">
+ <annotation>
+ <documentation xml:lang="de">Litauen: Litas</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LVL">
+ <annotation>
+ <documentation xml:lang="de">Lettland: Lats</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="LYD">
+ <annotation>
+ <documentation xml:lang="de">Libyen: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MAD">
+ <annotation>
+ <documentation xml:lang="de">Marokko: Dirham</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MDL">
+ <annotation>
+ <documentation xml:lang="de">Moldawien: Leu</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MGF">
+ <annotation>
+ <documentation xml:lang="de">Madagaskar: Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MKD">
+ <annotation>
+ <documentation xml:lang="de">Mazedonien: Denar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MMK">
+ <annotation>
+ <documentation xml:lang="de">Myanmar: Kyat</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MNT">
+ <annotation>
+ <documentation xml:lang="de">Mongolei: Tugrik</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MOP">
+ <annotation>
+ <documentation xml:lang="de">Macau: Pataca</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MRO">
+ <annotation>
+ <documentation xml:lang="de">Mauretanien: Ouguiya</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MTL">
+ <annotation>
+ <documentation xml:lang="de">Malta: Lira</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MUR">
+ <annotation>
+ <documentation xml:lang="de">Mauritius: Rupie</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MVR">
+ <annotation>
+ <documentation xml:lang="de">Malediven: Rufiyaa</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MWK">
+ <annotation>
+ <documentation xml:lang="de">Malawi: Kwacha</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MXN">
+ <annotation>
+ <documentation xml:lang="de">Mexiko: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MYR">
+ <annotation>
+ <documentation xml:lang="de">Malaysia: Ringgit</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="MZM">
+ <annotation>
+ <documentation xml:lang="de">Mosambik: Metical</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NAD">
+ <annotation>
+ <documentation xml:lang="de">Namibia: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NGN">
+ <annotation>
+ <documentation xml:lang="de">Nigeria: Naira</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NIO">
+ <annotation>
+ <documentation xml:lang="de">Nicaragua: Cordoba Oro</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NOK">
+ <annotation>
+ <documentation xml:lang="de">Norwegen: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NPR">
+ <annotation>
+ <documentation xml:lang="de">Nepal: Rupie</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NZD">
+ <annotation>
+ <documentation xml:lang="de">Neuseeland: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="OMR">
+ <annotation>
+ <documentation xml:lang="de">Oman: Rial</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PAB">
+ <annotation>
+ <documentation xml:lang="de">Panama: Balboa</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PEN">
+ <annotation>
+ <documentation xml:lang="de">Peru: Nuevo Sol</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PGK">
+ <annotation>
+ <documentation xml:lang="de">Papua-Neuguinea: Kina</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PHP">
+ <annotation>
+ <documentation xml:lang="de">Philippinen: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PKR">
+ <annotation>
+ <documentation xml:lang="de">Pakistan: Rupie</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PLN">
+ <annotation>
+ <documentation xml:lang="de">Polen: Zloty</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="PYG">
+ <annotation>
+ <documentation xml:lang="de">Paraguay: Guaraní</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="QAR">
+ <annotation>
+ <documentation xml:lang="de">Katar: Riyal</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ROL">
+ <annotation>
+ <documentation xml:lang="de">Rumänien: Leu</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="RUB">
+ <annotation>
+ <documentation xml:lang="de">Russland: Rubel</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="RWF">
+ <annotation>
+ <documentation xml:lang="de">Ruanda: Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SAR">
+ <annotation>
+ <documentation xml:lang="de">Saudi-Arabien: Riyal</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SBD">
+ <annotation>
+ <documentation xml:lang="de">Salomonen: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SCR">
+ <annotation>
+ <documentation xml:lang="de">Seychellen: Rupie</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SDD">
+ <annotation>
+ <documentation xml:lang="de">Sudan: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SEK">
+ <annotation>
+ <documentation xml:lang="de">Schweden: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SGD">
+ <annotation>
+ <documentation xml:lang="de">Singapur: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SHP">
+ <annotation>
+ <documentation xml:lang="de">St. Helena: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SIT">
+ <annotation>
+ <documentation xml:lang="de">Slowenien: Tolar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SKK">
+ <annotation>
+ <documentation xml:lang="de">Slowakei: Krone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SLL">
+ <annotation>
+ <documentation xml:lang="de">Sierra Leone: Leone</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SOS">
+ <annotation>
+ <documentation xml:lang="de">Somalia: Schilling</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SRD">
+ <annotation>
+ <documentation xml:lang="de">Suriname: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="STD">
+ <annotation>
+ <documentation xml:lang="de">São Tomé und Príncipe: Dobra</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SVC">
+ <annotation>
+ <documentation xml:lang="de">El Salvador: Colón</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SYP">
+ <annotation>
+ <documentation xml:lang="de">Syrien: Pfund</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SZL">
+ <annotation>
+ <documentation xml:lang="de">Swasiland: Lilangeni</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="THB">
+ <annotation>
+ <documentation xml:lang="de">Thailand: Baht</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TJS">
+ <annotation>
+ <documentation xml:lang="de">Tadschikistan: Somoni</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TMM">
+ <annotation>
+ <documentation xml:lang="de">Turkmenistan: Manat</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TND">
+ <annotation>
+ <documentation xml:lang="de">Tunesien: Dinar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TOP">
+ <annotation>
+ <documentation xml:lang="de">Tonga: Pa'anga</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TRL">
+ <annotation>
+ <documentation xml:lang="de">Türkei: Lira</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TRY">
+ <annotation>
+ <documentation xml:lang="de">Türkei: Neue Lira (ab 2005)</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TTD">
+ <annotation>
+ <documentation xml:lang="de">Trinidad und Tobago: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TWD">
+ <annotation>
+ <documentation xml:lang="de">Taiwan: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TZS">
+ <annotation>
+ <documentation xml:lang="de">Tansania: Schilling</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="UAH">
+ <annotation>
+ <documentation xml:lang="de">Ukraine: Hrywnja</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="UGX">
+ <annotation>
+ <documentation xml:lang="de">Uganda: Shilling</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="USD">
+ <annotation>
+ <documentation xml:lang="de">USA: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="UYU">
+ <annotation>
+ <documentation xml:lang="de">Uruguay: Peso</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="UZS">
+ <annotation>
+ <documentation xml:lang="de">Usbekistan: Sum</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="VEB">
+ <annotation>
+ <documentation xml:lang="de">Venezuela: Bolivar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="VND">
+ <annotation>
+ <documentation xml:lang="de">Vietnam: Dong</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="VUV">
+ <annotation>
+ <documentation xml:lang="de">Vanuatu: Vatu</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="WST">
+ <annotation>
+ <documentation xml:lang="de">Samoa: Tala</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="XAF">
+ <annotation>
+ <documentation xml:lang="de">Zentralafrikanische Wirtschafts- und Währungsunion: CFA-Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="XCD">
+ <annotation>
+ <documentation xml:lang="de">Ostkaribische Währungsunion: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="XOF">
+ <annotation>
+ <documentation xml:lang="de">Westafrikanische Wirtschafts- und Währungsunion: CFA-Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="XPF">
+ <annotation>
+ <documentation xml:lang="de">Neukaledonien: CFP-Franc</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="XTS">
+ <annotation>
+ <documentation xml:lang="de">Spezialcode für Testzwecke; keine existierende Währung</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="XXX">
+ <annotation>
+ <documentation xml:lang="de">keine Währung</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="YER">
+ <annotation>
+ <documentation xml:lang="de">Jemen: Rial</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ZAR">
+ <annotation>
+ <documentation xml:lang="de">Südafrika: Rand</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ZMK">
+ <annotation>
+ <documentation xml:lang="de">Sambia: Kwacha</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ZWD">
+ <annotation>
+ <documentation xml:lang="de">Simbabwe: Dollar</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name="AmountValueType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für einen Betragswert (ohne Währung).</documentation>
+ </annotation>
+ <restriction base="decimal">
+ <totalDigits value="24"/>
+ <fractionDigits value="4"/>
+ </restriction>
+ </simpleType>
+ <complexType name="AmountType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für einen Betrag inkl. Währungscode-Attribut (Default = "EUR").</documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="ebics:AmountValueType">
+ <attribute name="Currency" type="ebics:CurrencyBaseType" use="optional" default="EUR">
+ <annotation>
+ <documentation xml:lang="de">Währungscode, Default="EUR".</documentation>
+ <documentation xml:lang="en">Currency code, default setting is "EUR".</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <simpleType name="TransactionIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Transaktions-ID.</documentation>
+ </annotation>
+ <restriction base="hexBinary">
+ <length value="16"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NonceType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Nonces.</documentation>
+ </annotation>
+ <restriction base="hexBinary">
+ <length value="16"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="InstituteIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Instituts-ID.</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="64"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="HostIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Host-ID.</documentation>
+ </annotation>
+ <restriction base="token">
+ <maxLength value="35"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ProductType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Kundenprodukt-ID.</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="64"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="LanguageType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für das Sprachkennzeichen des Kundenprodukts.</documentation>
+ </annotation>
+ <restriction base="language">
+ <length value="2"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="OrderTBaseType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für allgemeine Auftragsarten (Grundtyp).</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="3"/>
+ <pattern value="[A-Z0-9]{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="OrderIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Auftragsnummer lt. DFÜ-Abkommen.</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="4"/>
+ <pattern value="[A-Z][A-Z0-9]{3}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="SecurityMediumType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für das Sicherheitsmedium.</documentation>
+ </annotation>
+ <restriction base="string">
+ <length value="4"/>
+ <pattern value="\d{4}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="SegmentNumberType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Segmentnummer.</documentation>
+ </annotation>
+ <restriction base="positiveInteger">
+ <totalDigits value="10"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NumSegmentsType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Gesamtsegmentanzahl.</documentation>
+ </annotation>
+ <restriction base="nonNegativeInteger">
+ <totalDigits value="10"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NumOrderInfosType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Gesamtanzahl der Einzelauftraginfos.</documentation>
+ </annotation>
+ <restriction base="nonNegativeInteger">
+ <totalDigits value="10"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="TransactionPhaseType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Transaktionsphase.</documentation>
+ </annotation>
+ <restriction base="token">
+ <enumeration value="Initialisation">
+ <annotation>
+ <documentation xml:lang="de">Transaktionsinitialisierung</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Transfer">
+ <annotation>
+ <documentation xml:lang="de">Auftragsdatentransfer</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Receipt">
+ <annotation>
+ <documentation xml:lang="de">Quittungstransfer</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name="TimestampType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Zeitstempel.</documentation>
+ </annotation>
+ <restriction base="dateTime"/>
+ </simpleType>
+ <simpleType name="DateType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Datumswerte.</documentation>
+ </annotation>
+ <restriction base="date"/>
+ </simpleType>
+ <simpleType name="UserIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Teilnehmer-ID.</documentation>
+ </annotation>
+ <restriction base="token">
+ <maxLength value="35"/>
+ <pattern value="[a-zA-Z0-9,=]{1,35}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="PartnerIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Kunden-ID.</documentation>
+ </annotation>
+ <restriction base="token">
+ <maxLength value="35"/>
+ <pattern value="[a-zA-Z0-9,=]{1,35}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="AccountIDType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Konten-ID.</documentation>
+ </annotation>
+ <restriction base="token">
+ <maxLength value="64"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="AccountNumberType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Kontonummer (national/international).</documentation>
+ </annotation>
+ <restriction base="token">
+ <maxLength value="40"/>
+ <pattern value="\d{3,10}|([A-Z]{2}\d{2}[A-Za-z0-9]{3,30})"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="BankCodeType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Bankleitzahl (national/international).</documentation>
+ </annotation>
+ <restriction base="token">
+ <maxLength value="11"/>
+ <pattern value="\d{8}|([A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="BankCodePrefixType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für ein nationales BLZ-Präfix.</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="2"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NationalAccountNumberType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Kontonummer (freies Format).</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="40"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NationalBankCodeType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für eine Bankleitzahl (freies Format).</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="30"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="AccountHolderType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Namen des Kontoinhabers.</documentation>
+ </annotation>
+ <restriction base="normalizedString"/>
+ </simpleType>
+ <simpleType name="AccountDescriptionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Kontobeschreibung.</documentation>
+ </annotation>
+ <restriction base="normalizedString"/>
+ </simpleType>
+ <complexType name="AccountType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Kontoinformationen.</documentation>
+ </annotation>
+ <sequence>
+ <choice maxOccurs="2">
+ <element name="AccountNumber">
+ <annotation>
+ <documentation xml:lang="de">Kontonummer (deutsches Format und/oder international als IBAN).</documentation>
+ <documentation xml:lang="en">Account number (German format and/or international=IBAN).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:AccountNumberType">
+ <attribute name="international" type="boolean" use="optional" default="false">
+ <annotation>
+ <documentation xml:lang="de">Ist die Kontonummer im deutschen Format (international=false) oder im internationalen Format (international=true, IBAN) angegeben?</documentation>
+ <documentation xml:lang="en">Is the account number specified using the national=German or the international=IBAN format?</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="NationalAccountNumber">
+ <annotation>
+ <documentation xml:lang="de">Kontonummer im freien Format.</documentation>
+ <documentation xml:lang="en">Account in free format.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:NationalAccountNumberType">
+ <attribute name="format" type="token" use="required">
+ <annotation>
+ <documentation xml:lang="de">Formatkennung.</documentation>
+ <documentation xml:lang="en">Format identification.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <choice minOccurs="0" maxOccurs="2">
+ <element name="BankCode">
+ <annotation>
+ <documentation xml:lang="de">Bankleitzahl (deutsches Format und/oder international als SWIFT-BIC).</documentation>
+ <documentation xml:lang="en">Bank code (German and/or international=SWIFT-BIC).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:BankCodeType">
+ <attribute name="international" type="boolean" use="optional" default="false">
+ <annotation>
+ <documentation xml:lang="de">Ist die Bankleitzahl im deutschen Format (international=false, BLZ) oder im internationalen Format (international=true, SWIFT-BIC) angegeben?</documentation>
+ <documentation xml:lang="en">Is the bank code specified using the national=German or the international SWIFT-BIC format?</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Prefix" type="ebics:BankCodePrefixType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">nationales Präfix für Bankleitzahlen.</documentation>
+ <documentation xml:lang="en">National=German prefix for bank codes.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="NationalBankCode">
+ <annotation>
+ <documentation xml:lang="de">Bankleitzahl im freien Format.</documentation>
+ <documentation xml:lang="en">Bank code in free format.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:NationalBankCodeType">
+ <attribute name="format" type="token" use="required">
+ <annotation>
+ <documentation xml:lang="de">Formatkennung.</documentation>
+ <documentation xml:lang="en">Format identification.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <element name="AccountHolder" type="ebics:AccountHolderType" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Name des Kontoinhabers.</documentation>
+ <documentation xml:lang="de">Name of the account holder.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attribute name="Currency" type="ebics:CurrencyBaseType" use="optional" default="EUR">
+ <annotation>
+ <documentation xml:lang="de">Währungscode für dieses Konto, Default=EUR.</documentation>
+ <documentation xml:lang="en">Currency code for this account, Default=EUR.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="ebics:AccountDescriptionType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">Kontobeschreibung.</documentation>
+ <documentation xml:lang="en">Description of this account.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <simpleType name="AccountNumberRoleType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Rolle eines Zahlungsverkehrskontos innerhalb einer Transaktion.</documentation>
+ </annotation>
+ <restriction base="token">
+ <enumeration value="Originator">
+ <annotation>
+ <documentation xml:lang="de">Auftraggeberkonto</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Recipient">
+ <annotation>
+ <documentation xml:lang="de">Empfängerkonto</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Charges">
+ <annotation>
+ <documentation xml:lang="de">Gebührenkonto</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Other">
+ <annotation>
+ <documentation xml:lang="de">andere Kontorolle</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name="BankCodeRoleType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Rolle eines Kreditinstituts innerhalb einer Transaktion (repräsentiert durch die Bankleitzahl).</documentation>
+ </annotation>
+ <restriction base="token">
+ <enumeration value="Originator">
+ <annotation>
+ <documentation xml:lang="de">Auftraggeberbank</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Recipient">
+ <annotation>
+ <documentation xml:lang="de">Empfängerbank</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Correspondent">
+ <annotation>
+ <documentation xml:lang="de">Korrespondenzbank</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Other">
+ <annotation>
+ <documentation xml:lang="de">andere Bankrolle</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name="AccountHolderRoleType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Rolle eines Kontoinhabers innerhalb einer Transaktion.</documentation>
+ </annotation>
+ <restriction base="token">
+ <enumeration value="Originator">
+ <annotation>
+ <documentation xml:lang="de">Auftraggeber</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Recipient">
+ <annotation>
+ <documentation xml:lang="de">Empfänger</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Presenter">
+ <annotation>
+ <documentation xml:lang="de">Überbringer, Einreicher</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="Other">
+ <annotation>
+ <documentation xml:lang="de">andere Rolle</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <complexType name="AttributedAccountType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Kontoinformationen inkl. der Eigenschaftszuordnung innerhalb einer Zahlungstransaktion.</documentation>
+ </annotation>
+ <sequence>
+ <choice maxOccurs="2">
+ <element name="AccountNumber">
+ <annotation>
+ <documentation xml:lang="de">Kontonummer (deutsches Format oder international als IBAN).</documentation>
+ <documentation xml:lang="en">Kontonummer (Account number (German format and/or international = IBAN).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:AccountNumberType">
+ <attribute name="Role" type="ebics:AccountNumberRoleType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Rolle des Kontos innerhalb der Zahlungstransaktion.</documentation>
+ <documentation xml:lang="en">Role of the account during the transaction.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="normalizedString">
+ <annotation>
+ <documentation xml:lang="de">Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird.</documentation>
+ <documentation xml:lang="en">Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="international" type="boolean" use="optional" default="false">
+ <annotation>
+ <documentation xml:lang="de">Ist die Kontonummer im deutschen Format (international=false) oder im internationalen Format (international=true, IBAN) angegeben?</documentation>
+ <documentation xml:lang="en">Is the account number specified using the national=German or the international=IBAN format?</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="NationalAccountNumber">
+ <annotation>
+ <documentation xml:lang="de">Kontonummer im freien Format.</documentation>
+ <documentation xml:lang="en">Account in free format.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:NationalAccountNumberType">
+ <attribute name="Role" type="ebics:AccountNumberRoleType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Rolle des Kontos innerhalb der Zahlungstransaktion.</documentation>
+ <documentation xml:lang="en">Role of the account during the transaction.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="normalizedString">
+ <annotation>
+ <documentation xml:lang="de">Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird.</documentation>
+ <documentation xml:lang="en">Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="format" type="token" use="required">
+ <annotation>
+ <documentation xml:lang="de">Formatkennung.</documentation>
+ <documentation xml:lang="en">Format identification.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <choice minOccurs="0" maxOccurs="2">
+ <element name="BankCode">
+ <annotation>
+ <documentation xml:lang="de">Bankleitzahl (deutsches Format oder international als SWIFT-BIC).</documentation>
+ <documentation xml:lang="en">Bank code (German and/or international=SWIFT-BIC).</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:BankCodeType">
+ <attribute name="Role" type="ebics:BankCodeRoleType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Rolle des kontoführenden Instituts innerhalb der Zahlungstransaktion.</documentation>
+ <documentation xml:lang="en">Role of the bank during the transaction.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="normalizedString">
+ <annotation>
+ <documentation xml:lang="de">Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird.</documentation>
+ <documentation xml:lang="en">Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="international" type="boolean" use="optional" default="false">
+ <annotation>
+ <documentation xml:lang="de">Ist die Bankleitzahl im deutschen Format (international=false, BLZ) oder im internationalen Format (international=true, SWIFT-BIC) angegeben?</documentation>
+ <documentation xml:lang="en">Is the bank code specified using the national=German or the international=SWIFT-BIC format?</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Prefix" type="ebics:BankCodePrefixType" use="optional">
+ <annotation>
+ <documentation xml:lang="de">nationales Präfix für Bankleitzahlen.</documentation>
+ <documentation xml:lang="en">National=German prefix for bank codes.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="NationalBankCode">
+ <annotation>
+ <documentation xml:lang="de">Bankleitzahl im freien Format.</documentation>
+ <documentation xml:lang="en">Bank code in free format.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:NationalBankCodeType">
+ <attribute name="Role" type="ebics:BankCodeRoleType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Rolle des kontoführenden Instituts innerhalb der Zahlungstransaktion.</documentation>
+ <documentation xml:lang="en">Role of the bank during the transaction.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="normalizedString">
+ <annotation>
+ <documentation xml:lang="de">Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird.</documentation>
+ <documentation xml:lang="en">Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="format" type="token" use="required">
+ <annotation>
+ <documentation xml:lang="de">Formatkennung.</documentation>
+ <documentation xml:lang="en">Format identification.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <element name="AccountHolder" minOccurs="0">
+ <annotation>
+ <documentation xml:lang="de">Name des Kontoinhabers.</documentation>
+ <documentation xml:lang="de">Name of the account holder.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:AccountHolderType">
+ <attribute name="Role" type="ebics:AccountHolderRoleType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Rolle des Kontoinhabers innerhalb der Zahlungstransaktion.</documentation>
+ <documentation xml:lang="en">Role of the account holder during the transaction.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="normalizedString">
+ <annotation>
+ <documentation xml:lang="de">Textuelle Beschreibung der Rolle, falls role=Other ausgewählt wird.</documentation>
+ <documentation xml:lang="en">Textual description of the role the account holder place during the transaction; use only if the corresponding 'role' field is set to 'other'.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="Currency" type="ebics:CurrencyBaseType" use="optional" default="EUR">
+ <annotation>
+ <documentation xml:lang="de">Währungscode für dieses Konto, Default=EUR.</documentation>
+ <documentation xml:lang="en">Currency code for this account, Default=EUR.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="Description" type="ebics:AccountDescriptionType">
+ <annotation>
+ <documentation xml:lang="de">Kontobeschreibung.</documentation>
+ <documentation xml:lang="en">Description of this account.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <simpleType name="SignatureDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für binäre Signaturdaten (komprimiert, verschlüsselt und kodiert).</documentation>
+ </annotation>
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <simpleType name="OrderDataType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für binäre Auftragsdaten (komprimiert, verschlüsselt und kodiert).</documentation>
+ </annotation>
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <simpleType name="AuthorisationLevelType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Berechtigungsklassen zur Elektronischen Unterschrift.</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="1"/>
+ <enumeration value="E">
+ <annotation>
+ <documentation xml:lang="de">Einzelunterschrift</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="A">
+ <annotation>
+ <documentation xml:lang="de">Erstunterschrift</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="B">
+ <annotation>
+ <documentation xml:lang="de">Zweitunterschrift</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="T">
+ <annotation>
+ <documentation xml:lang="de">Transportunterschrift</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name="AuthorisationLevelListType">
+ <annotation>
+ <documentation xml:lang="de">Listentyp für Berechtigungsklassen zur Elektronischen Unterschrift.</documentation>
+ </annotation>
+ <list itemType="ebics:AuthorisationLevelType"/>
+ </simpleType>
+ <simpleType name="DigestAlgorithmType">
+ <annotation>
+ <documentation>Datentyp für Hashfunktionen.</documentation>
+ </annotation>
+ <restriction base="anyURI"/>
+ </simpleType>
+ <simpleType name="DigestType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Hashwerte.</documentation>
+ </annotation>
+ <restriction base="ds:DigestValueType"/>
+ </simpleType>
+ <complexType name="DataDigestType">
+ <simpleContent>
+ <extension base="ebics:DigestType">
+ <attribute name="SignatureVersion" type="ebics:SignatureVersionType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Version des Signaturverfahrens.</documentation>
+ <documentation xml:lang="en">Version of the algorithm used for signature creation.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <simpleType name="SignatureType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für kryptographische Unterschriften.</documentation>
+ </annotation>
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <simpleType name="SymmetricKeyType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für symmetrische Schlüssel.</documentation>
+ </annotation>
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <complexType name="PubKeyDigestType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Hashwerte und Attribute von öffentlichen Schlüsseln.</documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="ebics:DigestType">
+ <attribute name="Algorithm" type="anyURI" use="required">
+ <annotation>
+ <documentation xml:lang="de">Hashalgorithmus.</documentation>
+ <documentation xml:lang="en">Name of the used hash algorithm.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="PubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Darstellung eines öffentlichen RSA-Schlüssels als Exponent-Modulus-Kombination oder als X509-Zertifikat.</documentation>
+ </annotation>
+ <sequence>
+ <element ref="ds:X509Data"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="EncryptionPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für öffentliche Verschlüsselungsschlüssel.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:PubKeyInfoType">
+ <sequence>
+ <element name="EncryptionVersion" type="ebics:EncryptionVersionType">
+ <annotation>
+ <documentation xml:lang="de">Version des Verschlüsselungsverfahrens.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="AuthenticationPubKeyInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für öffentlichen Authentfikationsschlüssel.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:PubKeyInfoType">
+ <sequence>
+ <element name="AuthenticationVersion" type="ebics:AuthenticationVersionType">
+ <annotation>
+ <documentation xml:lang="de">Version des Authentifikationsverfahrens.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignatureCertificateInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für öffentliche bankfachliche Schlüssel.</documentation>
+ <documentation xml:lang="en">Data type for public authorisation (ES) key.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:CertificateInfoType">
+ <sequence>
+ <element name="SignatureVersion" type="ebics:SignatureVersionType">
+ <annotation>
+ <documentation xml:lang="de">Version des EU-Signaturverfahrens.</documentation>
+ <documentation xml:lang="en">ES-Version.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="AuthenticationCertificateInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für öffentlichen Schlüssel zur Authentisierung.</documentation>
+ <documentation xml:lang="en">Data type for public for identification and authentication.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:CertificateInfoType">
+ <sequence>
+ <element name="AuthenticationVersion" type="ebics:AuthenticationVersionType">
+ <annotation>
+ <documentation xml:lang="de">Version des Authentifikationsverfahrens.</documentation>
+ <documentation xml:lang="de">Authentication version.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="EncryptionCertificateInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für öffentlichen Verschlüsselungsschlüssel.</documentation>
+ <documentation xml:lang="en">Data type for encryption key.</documentation>
+ </annotation>
+ <complexContent>
+ <extension base="ebics:CertificateInfoType">
+ <sequence>
+ <element name="EncryptionVersion" type="ebics:EncryptionVersionType">
+ <annotation>
+ <documentation xml:lang="de">Version des Verschlüsselungsverfahrens.</documentation>
+ <documentation xml:lang="en">Encryption Version.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="CertificateInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Zertifikate hinsichtlich der "bank-technical signature for authorisation" (ES).</documentation>
+ <documentation xml:lang="en">Data Type for Certificates for the bank-technical signature for authorisation (ES)</documentation>
+ </annotation>
+ <sequence>
+ <element ref="ds:X509Data"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <simpleType name="ReturnCodeType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Antwortcodes.</documentation>
+ </annotation>
+ <restriction base="token">
+ <length value="6"/>
+ <pattern value="\d{6}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ReportTextType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Erklärungstext zum Antwortcode.</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="256"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ReceiptCodeType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Quittierungscodes.</documentation>
+ </annotation>
+ <restriction base="nonNegativeInteger">
+ <maxInclusive value="1"/>
+ <minInclusive value="0"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NameType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für Kunden-, Teilnehmer-, Straßen- oder Ortsnamen.</documentation>
+ </annotation>
+ <restriction base="normalizedString"/>
+ </simpleType>
+ <simpleType name="OrderDescriptionType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Beschreibung von Auftragsarten.</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="128"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="UserStatusType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für den Teilnehmerstatus.</documentation>
+ </annotation>
+ <restriction base="nonNegativeInteger">
+ <maxInclusive value="99"/>
+ </restriction>
+ </simpleType>
+ <element name="Parameter">
+ <annotation>
+ <documentation xml:lang="de">generic parameter</documentation>
+ <documentation xml:lang="en">Generic key value parameters.</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="Name" type="token">
+ <annotation>
+ <documentation xml:lang="de">name of parameter</documentation>
+ <documentation xml:lang="en">Name of the parameter (= key).</documentation>
+ </annotation>
+ </element>
+ <element name="Value">
+ <annotation>
+ <documentation xml:lang="de">value of parameter</documentation>
+ <documentation xml:lang="en">Value of the parameter.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="anySimpleType">
+ <attribute name="Type" type="NCName" use="required">
+ <annotation>
+ <documentation xml:lang="de">XML-Typ des Parameterwerts (Vorschlag für default ist string).</documentation>
+ <documentation xml:lang="en">XML type of the parameter value (Proposal for default is string).</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ <complexType name="DataEncryptionInfoType">
+ <annotation>
+ <documentation xml:lang="de">Datentyp für die Darstellung von Information zur Verschlüsselung der Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Data type for the modelling of information regarding the encryption of signature and order data.</documentation>
+ </annotation>
+ <sequence>
+ <element name="EncryptionPubKeyDigest">
+ <annotation>
+ <documentation xml:lang="de">Hashwert des öffentlichen Verschlüsselungsschlüssels des Empfängers der verschlüsselten Auftragsdaten.</documentation>
+ <documentation xml:lang="en">Hash value of the public encryption key owned by the receipient of the encrypted order data.</documentation>
+ </annotation>
+ <complexType>
+ <simpleContent>
+ <extension base="ebics:PubKeyDigestType">
+ <attribute name="Version" type="ebics:EncryptionVersionType" use="required">
+ <annotation>
+ <documentation xml:lang="de">Version des Verschlüsselungsverfahrens.</documentation>
+ <documentation xml:lang="en">Version of the encryption method.</documentation>
+ </annotation>
+ </attribute>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ <element name="TransactionKey" type="ebics:SymmetricKeyType">
+ <annotation>
+ <documentation xml:lang="de">Asymmetrisch verschlüsselter symmetrischer Transaktionsschlüssel.</documentation>
+ <documentation xml:lang="en">The asymmetrically encrypted symmetric transaction key.</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <element name="AuthSignature" type="ds:SignatureType">
+ <annotation>
+ <documentation xml:lang="de">Authentifikationssignatur.</documentation>
+ <documentation xml:lang="en">Authentication signature.</documentation>
+ </annotation>
+ </element>
+ <simpleType name="String255Type">
+ <annotation>
+ <documentation xml:lang="de">String up to 255 characters.</documentation>
+ </annotation>
+ <restriction base="normalizedString">
+ <maxLength value="255"/>
+ </restriction>
+ </simpleType>
+ <!--Following types are BTF required type definitions-->
+ <simpleType name="CodeStringType">
+ <restriction base="string">
+ <minLength value="1"/>
+ <maxLength value="10"/>
+ <pattern value="[A-Z0-9]*"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="NumStringType">
+ <annotation>
+ <documentation>Type is used for ISO variant and version</documentation>
+ </annotation>
+ <restriction base="string">
+ <minLength value="2"/>
+ <maxLength value="3"/>
+ <pattern value="[0-9]*"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="FileNameStringType">
+ <annotation>
+ <documentation>Type ist used for original file name</documentation>
+ </annotation>
+ <restriction base="string">
+ <minLength value="1"/>
+ <maxLength value="256"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="MessageNameStringType">
+ <annotation>
+ <documentation>Type ist used for name or rather kind of Message</documentation>
+ </annotation>
+ <restriction base="token">
+ <minLength value="1"/>
+ <maxLength value="10"/>
+ <pattern value="[a-z\.0-9]*"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ServiceNameStringType">
+ <annotation>
+ <documentation>Service Code name: External list specified and maintained by EBICS. Basis is the "SWIFT-list" for the field "description" (SCT, DCT, XCT, SDD, DDD, STM, REP...) plus additional codes needed for further services </documentation>
+ </annotation>
+ <restriction base="ebics:CodeStringType">
+ <maxLength value="3"/>
+ <minLength value="3"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ScopeStringType">
+ <restriction base="ebics:CodeStringType">
+ <maxLength value="3"/>
+ <minLength value="2"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ServiceOptionStringType">
+ <restriction base="ebics:CodeStringType">
+ <minLength value="3"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="ContainerStringType">
+ <restriction base="ebics:CodeStringType">
+ <maxLength value="3"/>
+ <minLength value="3"/>
+ <enumeration value="SVC"/>
+ <enumeration value="XML"/>
+ <enumeration value="ZIP"/>
+ </restriction>
+ </simpleType>
+</schema>