libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

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:
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsClient.kt | 42+++++++++++++++++++++++++++---------------
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt | 257++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Mnexus/src/test/kotlin/EbicsTest.kt | 37+++++++++++++++++++++++++++++++++++++
Mnexus/src/test/kotlin/PostFinance.kt | 1-
Mutil/src/main/kotlin/Ebics.kt | 154+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Mutil/src/main/kotlin/XMLUtil.kt | 17+++++++++++++----
Mutil/src/main/kotlin/ebics_h004/EbicsRequest.kt | 2--
Autil/src/main/kotlin/ebics_h005/Ebics3Request.kt | 547+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/kotlin/ebics_h005/Ebics3Types.kt | 403+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/kotlin/ebics_h005/package-info.java | 13+++++++++++++
Autil/src/main/resources/xsd/ebics_H005.xsd | 11+++++++++++
Autil/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd | 523+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd | 137+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/resources/xsd/ebics_orders_H005.xsd | 2094+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/resources/xsd/ebics_request_H005.xsd | 349+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/resources/xsd/ebics_response_H005.xsd | 167+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autil/src/main/resources/xsd/ebics_types_H005.xsd | 1885+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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>