libeufin

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

commit 3b0aa4610772ef5ace8442532b247f917e59af3a
parent 90e9e6804f01793628b2abe0c2771fb96bf318e3
Author: Antoine A <>
Date:   Tue, 12 Mar 2024 11:02:45 +0100

Clean EBICS implementation, replace JAXB code with Kotlin DSL XML combinators

Diffstat:
MMakefile | 4----
Mcommon/src/main/kotlin/Cli.kt | 2+-
Dcommon/src/main/kotlin/Stream.kt | 56--------------------------------------------------------
Mcommon/src/main/kotlin/crypto/utils.kt | 48++++++++++++++++++++++--------------------------
Acommon/src/main/kotlin/helpers.kt | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dcommon/src/main/kotlin/strings.kt | 91-------------------------------------------------------------------------------
Mcommon/src/test/kotlin/CryptoUtilTest.kt | 18+++++++++---------
Debics/build.gradle | 29-----------------------------
Debics/codegen.py | 72------------------------------------------------------------------------
Debics/src/main/kotlin/Ebics.kt | 439-------------------------------------------------------------------------------
Debics/src/main/kotlin/EbicsOrderUtil.kt | 88-------------------------------------------------------------------------------
Debics/src/main/kotlin/Iso20022CodeSets.kt | 330-------------------------------------------------------------------------------
Debics/src/main/kotlin/Iso20022Constants.kt | 36------------------------------------
Debics/src/main/kotlin/XMLUtil.kt | 549-------------------------------------------------------------------------------
Debics/src/main/kotlin/XmlCombinators.kt | 143-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt | 102-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt | 136-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/EbicsRequest.kt | 505-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/EbicsResponse.kt | 348-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/EbicsTypes.kt | 403-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/EbicsUnsecuredRequest.kt | 223-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h004/HIARequestOrderData.kt | 34----------------------------------
Debics/src/main/kotlin/ebics_h004/HKDResponseOrderData.kt | 14--------------
Debics/src/main/kotlin/ebics_h004/HPBResponseOrderData.kt | 22----------------------
Debics/src/main/kotlin/ebics_h004/HTDResponseOrderData.kt | 14--------------
Debics/src/main/kotlin/ebics_h004/package-info.java | 14--------------
Debics/src/main/kotlin/ebics_h005/Ebics3Request.kt | 588-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h005/Ebics3Response.kt | 347-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h005/Ebics3Types.kt | 402-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_h005/package-info.java | 14--------------
Debics/src/main/kotlin/ebics_hev/EbicsMessages.kt | 92-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_hev/package-info.java | 13-------------
Debics/src/main/kotlin/ebics_s001/SignatureTypes.kt | 93-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_s001/UserSignatureData.kt | 28----------------------------
Debics/src/main/kotlin/ebics_s001/package-info.java | 14--------------
Debics/src/main/kotlin/ebics_s002/SignatureTypes.kt | 92-------------------------------------------------------------------------------
Debics/src/main/kotlin/ebics_s002/UserSignatureDataEbics3.kt | 28----------------------------
Debics/src/main/kotlin/ebics_s002/package-info.java | 14--------------
Debics/src/main/resources/version.txt | 2--
Debics/src/main/resources/xsd/camt.052.001.02.xsd | 1299-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/camt.053.001.02.xsd | 1299-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/camt.054.001.02.xsd | 1240-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_H004.xsd | 11-----------
Debics/src/main/resources/xsd/ebics_H005.xsd | 11-----------
Debics/src/main/resources/xsd/ebics_hev.xsd | 135-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_keymgmt_request_H004.xsd | 543-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd | 523-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_keymgmt_response_H004.xsd | 137-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd | 137-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_orders_H004.xsd | 1892-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_orders_H005.xsd | 2094-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_request_H004.xsd | 355-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_request_H005.xsd | 349-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_response_H004.xsd | 166-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_response_H005.xsd | 167-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_signature_S002.xsd | 177-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_signatures.xsd | 217-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_types_H004.xsd | 2426-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/ebics_types_H005.xsd | 1885-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/pain.001.001.03.ch.02.xsd | 1212-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/pain.001.001.03.xsd | 923-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/pain.001.001.09.ch.03.xsd | 1733-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/pain.002.001.13.xsd | 1253-------------------------------------------------------------------------------
Debics/src/main/resources/xsd/xmldsig-core-schema.xsd | 318-------------------------------------------------------------------------------
Debics/src/test/kotlin/EbicsMessagesTest.kt | 366-------------------------------------------------------------------------------
Debics/src/test/kotlin/EbicsOrderUtilTest.kt | 309-------------------------------------------------------------------------------
Debics/src/test/kotlin/SignatureDataTest.kt | 98-------------------------------------------------------------------------------
Debics/src/test/kotlin/XmlCombinatorsTest.kt | 67-------------------------------------------------------------------
Debics/src/test/kotlin/XmlUtilTest.kt | 192-------------------------------------------------------------------------------
Debics/src/test/resources/ebics_hev.xml | 4----
Debics/src/test/resources/ebics_ini_inner_key.xml | 15---------------
Debics/src/test/resources/ebics_ini_request_sample.xml | 26--------------------------
Debics/src/test/resources/hia_request.xml | 26--------------------------
Debics/src/test/resources/hia_request_order_data.xml | 24------------------------
Debics/src/test/resources/hpb_request.xml | 43-------------------------------------------
Mnexus/build.gradle | 4----
Anexus/codegen.py | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mnexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt | 74+++++++++++++++++---------------------------------------------------------
Mnexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt | 136+++++++++++++++++++++++++++++++++++--------------------------------------------
Mnexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt | 114+++++++++++++++----------------------------------------------------------------
Mnexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt | 5++---
Anexus/src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt | 330+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anexus/src/main/kotlin/tech/libeufin/nexus/Iso20022Constants.kt | 36++++++++++++++++++++++++++++++++++++
Mnexus/src/main/kotlin/tech/libeufin/nexus/Log.kt | 4++--
Anexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt | 116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt | 176+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt | 204+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dnexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt | 380-------------------------------------------------------------------------------
Dnexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt | 444-------------------------------------------------------------------------------
Anexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt | 348+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt | 616+++++++++++++++++++++++++++++++------------------------------------------------
Anexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt | 211+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsOrder.kt | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dnexus/src/test/kotlin/Ebics.kt | 91-------------------------------------------------------------------------------
Anexus/src/test/kotlin/EbicsTest.kt | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anexus/src/test/kotlin/XmlCombinatorsTest.kt | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anexus/src/test/kotlin/XmlUtilTest.kt | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rebics/src/test/resources/signature1/doc.xml -> nexus/src/test/resources/signature1/doc.xml | 0
Rebics/src/test/resources/signature1/public_key.txt -> nexus/src/test/resources/signature1/public_key.txt | 0
Msettings.gradle | 5++---
Mtestbench/src/main/kotlin/Main.kt | 3+--
101 files changed, 2255 insertions(+), 28614 deletions(-)

diff --git a/Makefile b/Makefile @@ -103,10 +103,6 @@ bank-test: install-nobuild-files nexus-test: install-nobuild-files ./gradlew :nexus:test --tests $(test) -i -.PHONY: ebics-test -ebics-test: install-nobuild-files - ./gradlew :ebics:test --tests $(test) -i - .PHONY: common-test common-test: install-nobuild-files ./gradlew :common:test --tests $(test) -i diff --git a/common/src/main/kotlin/Cli.kt b/common/src/main/kotlin/Cli.kt @@ -46,7 +46,7 @@ fun Throwable.fmtLog(logger: Logger) { cause = cause.cause } logger.error(msg.toString()) - logger.debug("{}", this) + logger.trace("", this) } fun cliCmd(logger: Logger, level: Level, lambda: suspend () -> Unit) { diff --git a/common/src/main/kotlin/Stream.kt b/common/src/main/kotlin/Stream.kt @@ -1,55 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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.common - -import java.io.FilterInputStream -import java.io.InputStream -import java.util.* -import java.util.zip.DeflaterInputStream -import java.util.zip.InflaterInputStream -import java.util.zip.ZipInputStream - -/** Unzip an input stream and run [lambda] over each entry */ -fun InputStream.unzipEach(lambda: (String, InputStream) -> Unit) { - ZipInputStream(this).use { zip -> - while (true) { - val entry = zip.getNextEntry() - if (entry == null) break - val entryStream = object: FilterInputStream(zip) { - override fun close() { - zip.closeEntry() - } - } - lambda(entry.name, entryStream) - } - } -} - -/** Decode a base64 an input stream */ -fun InputStream.decodeBase64(): InputStream - = Base64.getDecoder().wrap(this) - -/** Deflate an input stream */ -fun InputStream.deflate(): DeflaterInputStream - = DeflaterInputStream(this) - -/** Inflate an input stream */ -fun InputStream.inflate(): InflaterInputStream - = InflaterInputStream(this) -\ No newline at end of file diff --git a/common/src/main/kotlin/crypto/utils.kt b/common/src/main/kotlin/crypto/utils.kt @@ -50,10 +50,7 @@ object CryptoUtil { val encryptedTransactionKey: ByteArray, val pubKeyDigest: ByteArray, val encryptedData: ByteArray, - /** - * This key needs to be reused between different upload phases. - */ - val plainTransactionKey: SecretKey? = null + val plainTransactionKey: SecretKey ) private val bouncyCastleProvider = BouncyCastleProvider() @@ -81,6 +78,22 @@ object CryptoUtil { } /** + * Load an RSA public key from its components. + * + * @param exponent + * @param modulus + * @return key + */ + fun loadRsaPublicKeyFromComponents(modulus: ByteArray, exponent: ByteArray): RSAPublicKey { + val modulusBigInt = BigInteger(1, modulus) + val exponentBigInt = BigInteger(1, exponent) + + val keyFactory = KeyFactory.getInstance("RSA") + val tmp = RSAPublicKeySpec(modulusBigInt, exponentBigInt) + return keyFactory.generatePublic(tmp) as RSAPublicKey + } + + /** * Load an RSA public key from its binary X509 encoding. */ fun getRsaPublicFromPrivate(rsaPrivateCrtKey: RSAPrivateCrtKey): RSAPublicKey { @@ -110,35 +123,18 @@ object CryptoUtil { } /** - * Load an RSA public key from its components. - * - * @param exponent - * @param modulus - * @return key - */ - fun loadRsaPublicKeyFromComponents(modulus: ByteArray, exponent: ByteArray): RSAPublicKey { - val modulusBigInt = BigInteger(1, modulus) - val exponentBigInt = BigInteger(1, exponent) - - val keyFactory = KeyFactory.getInstance("RSA") - val tmp = RSAPublicKeySpec(modulusBigInt, exponentBigInt) - return keyFactory.generatePublic(tmp) as RSAPublicKey - } - - /** * Hash an RSA public key according to the EBICS standard (EBICS 2.5: 4.4.1.2.3). */ fun getEbicsPublicKeyHash(publicKey: RSAPublicKey): ByteArray { val keyBytes = ByteArrayOutputStream() - keyBytes.writeBytes(publicKey.publicExponent.toUnsignedHexString().lowercase().trimStart('0').toByteArray()) + keyBytes.writeBytes(publicKey.publicExponent.encodeHex().trimStart('0').toByteArray()) keyBytes.write(' '.code) - keyBytes.writeBytes(publicKey.modulus.toUnsignedHexString().lowercase().trimStart('0').toByteArray()) - // println("buffer before hashing: '${keyBytes.toString(Charsets.UTF_8)}'") + keyBytes.writeBytes(publicKey.modulus.encodeHex().trimStart('0').toByteArray()) val digest = MessageDigest.getInstance("SHA-256") return digest.digest(keyBytes.toByteArray()) } - fun encryptEbicsE002(data: ByteArray, encryptionPublicKey: RSAPublicKey): EncryptionResult { + fun encryptEbicsE002(data: InputStream, encryptionPublicKey: RSAPublicKey): EncryptionResult { val keygen = KeyGenerator.getInstance("AES", bouncyCastleProvider) keygen.init(128) val transactionKey = keygen.generateKey() @@ -152,7 +148,7 @@ object CryptoUtil { * Encrypt data according to the EBICS E002 encryption process. */ fun encryptEbicsE002withTransactionKey( - data: ByteArray, + data: InputStream, encryptionPublicKey: RSAPublicKey, transactionKey: SecretKey ): EncryptionResult { @@ -162,7 +158,7 @@ object CryptoUtil { ) val ivParameterSpec = IvParameterSpec(ByteArray(16)) symmetricCipher.init(Cipher.ENCRYPT_MODE, transactionKey, ivParameterSpec) - val encryptedData = symmetricCipher.doFinal(data) + val encryptedData = CipherInputStream(data, symmetricCipher).readAllBytes() val asymmetricCipher = Cipher.getInstance( "RSA/None/PKCS1Padding", bouncyCastleProvider diff --git a/common/src/main/kotlin/helpers.kt b/common/src/main/kotlin/helpers.kt @@ -0,0 +1,100 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.common + +import java.math.BigInteger +import java.util.* +import java.util.zip.DeflaterInputStream +import java.util.zip.InflaterInputStream +import java.util.zip.ZipInputStream +import java.io.FilterInputStream +import java.io.InputStream +import java.io.ByteArrayOutputStream + +fun getQueryParam(uriQueryString: String, param: String): String? { + // TODO replace with ktor API ? + uriQueryString.split('&').forEach { + val kv = it.split('=') + if (kv[0] == param) + return kv[1] + } + return null +} + +/* ----- String ----- */ + +fun String.decodeBase64(): ByteArray = Base64.getDecoder().decode(this) +fun String.decodeUpHex(): ByteArray = HexFormat.of().withUpperCase().parseHex(this) + +fun String.splitOnce(pat: String): Pair<String, String>? { + val split = split(pat, limit=2) + if (split.size != 2) return null + return Pair(split[0], split[1]) +} + +/* ----- BigInteger -----*/ + +fun BigInteger.encodeHex(): String = this.toByteArray().encodeHex() +fun BigInteger.encodeBase64(): String = this.toByteArray().encodeBase64() + +/* ----- ByteArray ----- */ + +fun ByteArray.encodeHex(): String = HexFormat.of().formatHex(this) +fun ByteArray.encodeUpHex(): String = HexFormat.of().withUpperCase().formatHex(this) +fun ByteArray.encodeBase64(): String = Base64.getEncoder().encodeToString(this) + +/* ----- InputStream ----- */ + +/** Unzip an input stream and run [lambda] over each entry */ +fun InputStream.unzipEach(lambda: (String, InputStream) -> Unit) { + ZipInputStream(this).use { zip -> + while (true) { + val entry = zip.getNextEntry() + if (entry == null) break + val entryStream = object: FilterInputStream(zip) { + override fun close() { + zip.closeEntry() + } + } + lambda(entry.name, entryStream) + } + } +} + +/** Decode a base64 an input stream */ +fun InputStream.decodeBase64(): InputStream + = Base64.getDecoder().wrap(this) + +/** Decode a base64 an input stream */ +fun InputStream.encodeBase64(): String { + val w = ByteArrayOutputStream() + val encoded = Base64.getEncoder().wrap(w) + transferTo(encoded) + encoded.close() + return w.toString(Charsets.UTF_8) +} + +/** Deflate an input stream */ +fun InputStream.deflate(): DeflaterInputStream + = DeflaterInputStream(this) + +/** Inflate an input stream */ +fun InputStream.inflate(): InflaterInputStream + = InflaterInputStream(this) +\ No newline at end of file diff --git a/common/src/main/kotlin/strings.kt b/common/src/main/kotlin/strings.kt @@ -1,90 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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.common - -import java.math.BigInteger -import java.util.* - -fun ByteArray.toHexString(): String { - return this.joinToString("") { - java.lang.String.format("%02X", it) - } -} - -private fun toDigit(hexChar: Char): Int { - val digit = Character.digit(hexChar, 16) - require(digit != -1) { "Invalid Hexadecimal Character: $hexChar" } - return digit -} - -private fun hexToByte(hexString: String): Byte { - val firstDigit: Int = toDigit(hexString[0]) - val secondDigit: Int = toDigit(hexString[1]) - return ((firstDigit shl 4) + secondDigit).toByte() -} - -fun decodeHexString(hexString: String): ByteArray { - val hs = hexString.replace(" ", "").replace("\n", "") - require(hs.length % 2 != 1) { "Invalid hexadecimal String supplied." } - val bytes = ByteArray(hs.length / 2) - var i = 0 - while (i < hs.length) { - bytes[i / 2] = hexToByte(hs.substring(i, i + 2)) - i += 2 - } - return bytes -} - - -fun ByteArray.encodeBase64(): String { - return Base64.getEncoder().encodeToString(this) -} - -fun String.decodeBase64(): ByteArray { - return Base64.getDecoder().decode(this) -} - -// used mostly in RSA math, never as amount. -fun BigInteger.toUnsignedHexString(): String { - val signedValue = this.toByteArray() - require(this.signum() > 0) { "number must be positive" } - val start = if (signedValue[0] == 0.toByte()) { - 1 - } else { - 0 - } - val bytes = Arrays.copyOfRange(signedValue, start, signedValue.size) - return bytes.toHexString() -} - -fun getQueryParam(uriQueryString: String, param: String): String? { - uriQueryString.split('&').forEach { - val kv = it.split('=') - if (kv[0] == param) - return kv[1] - } - return null -} - -fun String.splitOnce(pat: String): Pair<String, String>? { - val split = split(pat, limit=2) - if (split.size != 2) return null - return Pair(split[0], split[1]) -} -\ No newline at end of file diff --git a/common/src/test/kotlin/CryptoUtilTest.kt b/common/src/test/kotlin/CryptoUtilTest.kt @@ -66,7 +66,7 @@ class CryptoUtilTest { fun testEbicsE002() { val data = "Hello, World!".toByteArray() val keyPair = CryptoUtil.generateRsaKeyPair(1024) - val enc = CryptoUtil.encryptEbicsE002(data, keyPair.public) + val enc = CryptoUtil.encryptEbicsE002(data.inputStream(), keyPair.public) val dec = CryptoUtil.decryptEbicsE002(enc, keyPair.private) assertTrue(data.contentEquals(dec)) } @@ -86,7 +86,7 @@ class CryptoUtilTest { /* encrypt with original key */ val data = "Hello, World!".toByteArray(Charsets.UTF_8) - val secret = CryptoUtil.encryptEbicsE002(data, keyPair.public) + val secret = CryptoUtil.encryptEbicsE002(data.inputStream(), keyPair.public) /* encrypt and decrypt private key */ val encPriv = CryptoUtil.encryptKey(keyPair.private.encoded, "secret") @@ -103,7 +103,7 @@ class CryptoUtilTest { @Test fun testEbicsPublicKeyHashing() { - val exponentStr = "01 00 01" + val exponentStr = "01 00 01".replace(" ", "") val moduloStr = """ EB BD B8 E3 73 45 60 06 44 A1 AD 6A 25 33 65 F5 9C EB E5 93 E0 51 72 77 90 6B F0 58 A8 89 EB 00 @@ -121,7 +121,7 @@ class CryptoUtilTest { D5 BE 0D 0E F8 E7 E0 A9 C3 10 51 A1 3E A4 4F 67 5E 75 8C 9D E6 FE 27 B6 3C CF 61 9B 31 D4 D0 22 B9 2E 4C AF 5F D6 4B 1F F0 4D 06 5F 68 EB 0B 71 - """.trimIndent() + """.trimIndent().replace(" ", "").replace("\n", "") val expectedHashStr = """ 72 71 D5 83 B4 24 A6 DA 0B 7B 22 24 3B E2 B8 8C 6E A6 0F 9F 76 11 FD 18 BE 2C E8 8B 21 03 A9 41 @@ -129,17 +129,17 @@ class CryptoUtilTest { val expectedHash = expectedHashStr.replace(" ", "").replace("\n", "").toByteArray(Charsets.UTF_8) - val pub = CryptoUtil.loadRsaPublicKeyFromComponents(decodeHexString(moduloStr), decodeHexString(exponentStr)) + val pub = CryptoUtil.loadRsaPublicKeyFromComponents(moduloStr.decodeUpHex(), exponentStr.decodeUpHex()) - println("echoed pub exp: ${pub.publicExponent.toUnsignedHexString()}") - println("echoed pub mod: ${pub.modulus.toUnsignedHexString()}") + println("echoed pub exp: ${pub.publicExponent.encodeHex()}") + println("echoed pub mod: ${pub.modulus.encodeHex()}") val pubHash = CryptoUtil.getEbicsPublicKeyHash(pub) - println("our pubHash: ${pubHash.toHexString()}") + println("our pubHash: ${pubHash.encodeUpHex()}") println("expected pubHash: ${expectedHash.toString(Charsets.UTF_8)}") - assertEquals(expectedHash.toString(Charsets.UTF_8), pubHash.toHexString()) + assertEquals(expectedHash.toString(Charsets.UTF_8), pubHash.encodeUpHex()) } @Test diff --git a/ebics/build.gradle b/ebics/build.gradle @@ -1,28 +0,0 @@ -plugins { - id("java") - id("kotlin") -} - -version = rootProject.version - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -compileKotlin.kotlinOptions.jvmTarget = "17" -compileTestKotlin.kotlinOptions.jvmTarget = "17" - -sourceSets.main.java.srcDirs = ["src/main/kotlin"] - -dependencies { - implementation(project(":common")) - - // XML Stuff - implementation("jakarta.xml.bind:jakarta.xml.bind-api:2.3.3") - implementation("org.glassfish.jaxb:jaxb-runtime:2.3.9") - implementation("org.apache.santuario:xmlsec:2.3.4") - - implementation("io.ktor:ktor-http:$ktor_version") - implementation("org.jetbrains.kotlin:kotlin-test:$kotlin_version") -} -\ No newline at end of file diff --git a/ebics/codegen.py b/ebics/codegen.py @@ -1,72 +0,0 @@ -# Update EBICS constants file using latest external code sets files - -import polars as pl -import requests -from io import BytesIO -from zipfile import ZipFile - - -def iso20022codegen(): - # Get XLSX zip file from server - r = requests.get( - "https://www.iso20022.org/sites/default/files/media/file/ExternalCodeSets_XLSX.zip" - ) - assert r.status_code == 200 - - # Unzip the XLSX file - zip = ZipFile(BytesIO(r.content)) - files = zip.namelist() - assert len(files) == 1 - file = zip.open(files[0]) - - # Parse excel - df = pl.read_excel(file, sheet_name="AllCodeSets") - - def extractCodeSet(setName: str, className: str) -> str: - out = f"enum class {className}(val isoCode: String, val description: String) {{" - - for row in df.filter(pl.col("Code Set") == setName).sort("Code Value").rows(named=True): - (value, isoCode, description) = ( - row["Code Value"], - row["Code Name"], - row["Code Definition"].split("\n", 1)[0].strip(), - ) - out += f'\n\t{value}("{isoCode}", "{description}"),' - - out += "\n}" - return out - - # Write kotlin file - kt = f"""/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -// THIS FILE IS GENERATED, DO NOT EDIT - -package tech.libeufin.ebics - -{extractCodeSet("ExternalStatusReason1Code", "ExternalStatusReasonCode")} - -{extractCodeSet("ExternalPaymentGroupStatus1Code", "ExternalPaymentGroupStatusCode")} - -{extractCodeSet("ExternalPaymentTransactionStatus1Code", "ExternalPaymentTransactionStatusCode")} -""" - with open("src/main/kotlin/Iso20022CodeSets.kt", "w") as file1: - file1.write(kt) - -iso20022codegen() diff --git a/ebics/src/main/kotlin/Ebics.kt b/ebics/src/main/kotlin/Ebics.kt @@ -1,438 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -/** - * This is the main "EBICS library interface". Functions here are stateless helpers - * used to implement both an EBICS server and EBICS client. - */ - -package tech.libeufin.ebics - -import io.ktor.http.* -import org.w3c.dom.Document -import tech.libeufin.common.crypto.CryptoUtil -import tech.libeufin.ebics.ebics_h004.EbicsRequest -import tech.libeufin.ebics.ebics_h004.EbicsResponse -import tech.libeufin.ebics.ebics_h004.EbicsTypes -import tech.libeufin.ebics.ebics_h004.HPBResponseOrderData -import tech.libeufin.ebics.ebics_h005.Ebics3Response -import tech.libeufin.ebics.ebics_s001.UserSignatureData -import java.io.InputStream -import java.security.SecureRandom -import java.security.interfaces.RSAPrivateCrtKey -import java.security.interfaces.RSAPublicKey -import java.time.Instant -import java.time.ZoneId -import java.time.ZonedDateTime -import javax.xml.bind.JAXBElement -import javax.xml.datatype.DatatypeFactory -import javax.xml.datatype.XMLGregorianCalendar - -data class EbicsProtocolError( - val httpStatusCode: HttpStatusCode, - val reason: String, - /** - * This class is also used when Nexus finds itself - * in an inconsistent state, without interacting with the - * bank. In this case, the EBICS code below can be left - * null. - */ - val ebicsTechnicalCode: EbicsReturnCode? = null -) : Exception(reason) - -data class EbicsDateRange( - val start: Instant, - val end: Instant -) - -sealed interface EbicsOrderParams -data class EbicsStandardOrderParams( - val dateRange: EbicsDateRange? = null -) : EbicsOrderParams - -data class EbicsGenericOrderParams( - val params: Map<String, String> = mapOf() -) : EbicsOrderParams - -enum class EbicsInitState { - SENT, NOT_SENT, UNKNOWN -} - -/** - * This class is a mere container that keeps data found - * in the database and that is further needed to sign / verify - * / make messages. And not all the values are needed all - * the time. - */ -data class EbicsClientSubscriberDetails( - val partnerId: String, - val userId: String, - var bankAuthPub: RSAPublicKey?, - var bankEncPub: RSAPublicKey?, - val ebicsUrl: String, - val hostId: String, - val customerEncPriv: RSAPrivateCrtKey, - val customerAuthPriv: RSAPrivateCrtKey, - val customerSignPriv: RSAPrivateCrtKey, - val ebicsIniState: EbicsInitState, - val ebicsHiaState: EbicsInitState, - var dialect: String? = null -) - -/** - * @param size in bits - */ -fun getNonce(size: Int): ByteArray { - val sr = SecureRandom() - val ret = ByteArray(size / 8) - sr.nextBytes(ret) - return ret -} - -fun getXmlDate(i: Instant): XMLGregorianCalendar { - val zonedTimestamp = ZonedDateTime.ofInstant(i, ZoneId.of("UTC")) - return getXmlDate(zonedTimestamp) -} -fun getXmlDate(d: ZonedDateTime): XMLGregorianCalendar { - return DatatypeFactory.newInstance() - .newXMLGregorianCalendar( - d.year, - d.monthValue, - d.dayOfMonth, - 0, - 0, - 0, - 0, - d.offset.totalSeconds / 60 - ) -} - -fun makeOrderParams(orderParams: EbicsOrderParams): EbicsRequest.OrderParams { - return when (orderParams) { - is EbicsStandardOrderParams -> { - EbicsRequest.StandardOrderParams().apply { - val r = orderParams.dateRange - if (r != null) { - this.dateRange = EbicsRequest.DateRange().apply { - this.start = getXmlDate(r.start) - this.end = getXmlDate(r.end) - } - } - } - } - is EbicsGenericOrderParams -> { - EbicsRequest.GenericOrderParams().apply { - this.parameterList = orderParams.params.map { entry -> - EbicsTypes.Parameter().apply { - this.name = entry.key - this.value = entry.value - this.type = "string" - } - } - } - } - } -} - -fun signOrder( - orderBlob: ByteArray, - signKey: RSAPrivateCrtKey, - partnerId: String, - userId: String -): UserSignatureData { - val ES_signature = CryptoUtil.signEbicsA006( - CryptoUtil.digestEbicsOrderA006(orderBlob), - signKey - ) - val userSignatureData = UserSignatureData().apply { - orderSignatureList = listOf( - UserSignatureData.OrderSignatureData().apply { - signatureVersion = "A006" - signatureValue = ES_signature - partnerID = partnerId - userID = userId - } - ) - } - return userSignatureData -} - -fun signOrderEbics3( - orderBlob: ByteArray, - signKey: RSAPrivateCrtKey, - partnerId: String, - userId: String -): tech.libeufin.ebics.ebics_s002.UserSignatureDataEbics3 { - val ES_signature = CryptoUtil.signEbicsA006( - CryptoUtil.digestEbicsOrderA006(orderBlob), - signKey - ) - val userSignatureData = tech.libeufin.ebics.ebics_s002.UserSignatureDataEbics3().apply { - orderSignatureList = listOf( - tech.libeufin.ebics.ebics_s002.UserSignatureDataEbics3.OrderSignatureData().apply { - signatureVersion = "A006" - signatureValue = ES_signature - partnerID = partnerId - userID = userId - } - ) - } - return userSignatureData -} - -data class PreparedUploadData( - val transactionKey: ByteArray, - val userSignatureDataEncrypted: ByteArray, - val dataDigest: ByteArray, - val encryptedPayloadChunks: List<String> -) { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (javaClass != other?.javaClass) return false - - other as PreparedUploadData - - if (!transactionKey.contentEquals(other.transactionKey)) return false - if (!userSignatureDataEncrypted.contentEquals(other.userSignatureDataEncrypted)) return false - if (encryptedPayloadChunks != other.encryptedPayloadChunks) return false - - return true - } - - override fun hashCode(): Int { - var result = transactionKey.contentHashCode() - result = 31 * result + userSignatureDataEncrypted.contentHashCode() - result = 31 * result + encryptedPayloadChunks.hashCode() - return result - } -} - -data class DataEncryptionInfo( - val transactionKey: ByteArray, - val bankPubDigest: ByteArray -) { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (javaClass != other?.javaClass) return false - - other as DataEncryptionInfo - - if (!transactionKey.contentEquals(other.transactionKey)) return false - if (!bankPubDigest.contentEquals(other.bankPubDigest)) return false - - return true - } - - override fun hashCode(): Int { - var result = transactionKey.contentHashCode() - result = 31 * result + bankPubDigest.contentHashCode() - return result - } -} - - -// TODO import missing using a script -@Suppress("SpellCheckingInspection") -enum class EbicsReturnCode(val errorCode: String) { - EBICS_OK("000000"), - EBICS_DOWNLOAD_POSTPROCESS_DONE("011000"), - EBICS_DOWNLOAD_POSTPROCESS_SKIPPED("011001"), - EBICS_TX_SEGMENT_NUMBER_UNDERRUN("011101"), - EBICS_AUTHENTICATION_FAILED("061001"), - EBICS_INVALID_REQUEST("061002"), - EBICS_INTERNAL_ERROR("061099"), - EBICS_TX_RECOVERY_SYNC("061101"), - EBICS_AUTHORISATION_ORDER_IDENTIFIER_FAILED("090003"), - EBICS_NO_DOWNLOAD_DATA_AVAILABLE("090005"), - EBICS_INVALID_USER_OR_USER_STATE("091002"), - EBICS_USER_UNKNOWN("091003"), - EBICS_EBICS_INVALID_USER_STATE("091004"), - EBICS_INVALID_ORDER_IDENTIFIER("091005"), - EBICS_UNSUPPORTED_ORDER_TYPE("091006"), - EBICS_INVALID_XML("091010"), - EBICS_TX_MESSAGE_REPLAY("091103"), - EBICS_PROCESSING_ERROR("091116"), - EBICS_ACCOUNT_AUTHORISATION_FAILED("091302"), - EBICS_AMOUNT_CHECK_FAILED("091303"); - - companion object { - fun lookup(errorCode: String): EbicsReturnCode { - for (x in entries) { - if (x.errorCode == errorCode) { - return x - } - } - throw Exception( - "Unknown EBICS status code: $errorCode" - ) - } - } -} - -data class EbicsResponseContent( - val transactionID: String?, - val orderID: String?, - val dataEncryptionInfo: DataEncryptionInfo?, - val orderDataEncChunk: String?, - val technicalReturnCode: EbicsReturnCode, - val bankReturnCode: EbicsReturnCode, - val reportText: String, - val segmentNumber: Int?, - // Only present in init phase - val numSegments: Int? -) - -data class EbicsKeyManagementResponseContent( - val technicalReturnCode: EbicsReturnCode, - val bankReturnCode: EbicsReturnCode?, - val orderData: ByteArray? -) - - -class HpbResponseData( - val hostID: String, - val encryptionPubKey: RSAPublicKey, - val encryptionVersion: String, - val authenticationPubKey: RSAPublicKey, - val authenticationVersion: String -) - -fun parseEbicsHpbOrder(orderDataRaw: InputStream): HpbResponseData { - val resp = try { - XMLUtil.convertToJaxb<HPBResponseOrderData>(orderDataRaw) - } catch (e: Exception) { - throw EbicsProtocolError(HttpStatusCode.InternalServerError, "Invalid XML (as HPB response) received from bank") - } - val encPubKey = CryptoUtil.loadRsaPublicKeyFromComponents( - resp.value.encryptionPubKeyInfo.pubKeyValue.rsaKeyValue.modulus, - resp.value.encryptionPubKeyInfo.pubKeyValue.rsaKeyValue.exponent - ) - val authPubKey = CryptoUtil.loadRsaPublicKeyFromComponents( - resp.value.authenticationPubKeyInfo.pubKeyValue.rsaKeyValue.modulus, - resp.value.authenticationPubKeyInfo.pubKeyValue.rsaKeyValue.exponent - ) - return HpbResponseData( - hostID = resp.value.hostID, - encryptionPubKey = encPubKey, - encryptionVersion = resp.value.encryptionPubKeyInfo.encryptionVersion, - authenticationPubKey = authPubKey, - authenticationVersion = resp.value.authenticationPubKeyInfo.authenticationVersion - ) -} - -fun ebics3toInternalRepr(response: Document): EbicsResponseContent { - // logger.debug("Converting bank resp to internal repr.: $response") - val resp: JAXBElement<Ebics3Response> = try { - XMLUtil.convertDomToJaxb(response) - } catch (e: Exception) { - throw EbicsProtocolError( - HttpStatusCode.InternalServerError, - "Could not transform string-response from bank into JAXB" - ) - } - val bankReturnCodeStr = resp.value.body.returnCode.value - val bankReturnCode = EbicsReturnCode.lookup(bankReturnCodeStr) - - val techReturnCodeStr = resp.value.header.mutable.returnCode - val techReturnCode = EbicsReturnCode.lookup(techReturnCodeStr) - - val reportText = resp.value.header.mutable.reportText - - val daeXml = resp.value.body.dataTransfer?.dataEncryptionInfo - val dataEncryptionInfo = if (daeXml == null) { - null - } else { - DataEncryptionInfo(daeXml.transactionKey, daeXml.encryptionPubKeyDigest.value) - } - - return EbicsResponseContent( - transactionID = resp.value.header._static.transactionID, - orderID = resp.value.header.mutable.orderID, - bankReturnCode = bankReturnCode, - technicalReturnCode = techReturnCode, - reportText = reportText, - orderDataEncChunk = resp.value.body.dataTransfer?.orderData?.value, - dataEncryptionInfo = dataEncryptionInfo, - numSegments = resp.value.header._static.numSegments?.toInt(), - segmentNumber = resp.value.header.mutable.segmentNumber?.value?.toInt() - ) -} - -fun ebics25toInternalRepr(response: Document): EbicsResponseContent { - val resp: JAXBElement<EbicsResponse> = try { - XMLUtil.convertDomToJaxb(response) - } catch (e: Exception) { - throw EbicsProtocolError( - HttpStatusCode.InternalServerError, - "Could not transform string-response from bank into JAXB" - ) - } - val bankReturnCodeStr = resp.value.body.returnCode.value - val bankReturnCode = EbicsReturnCode.lookup(bankReturnCodeStr) - - val techReturnCodeStr = resp.value.header.mutable.returnCode - val techReturnCode = EbicsReturnCode.lookup(techReturnCodeStr) - - val reportText = resp.value.header.mutable.reportText - - val daeXml = resp.value.body.dataTransfer?.dataEncryptionInfo - val dataEncryptionInfo = if (daeXml == null) { - null - } else { - DataEncryptionInfo(daeXml.transactionKey, daeXml.encryptionPubKeyDigest.value) - } - - return EbicsResponseContent( - transactionID = resp.value.header._static.transactionID, - orderID = resp.value.header.mutable.orderID, - bankReturnCode = bankReturnCode, - technicalReturnCode = techReturnCode, - reportText = reportText, - orderDataEncChunk = resp.value.body.dataTransfer?.orderData?.value, - dataEncryptionInfo = dataEncryptionInfo, - numSegments = resp.value.header._static.numSegments?.toInt(), - segmentNumber = resp.value.header.mutable.segmentNumber?.value?.toInt() - ) -} - -/** - * Get the private key that matches the given public key digest. - */ -fun getDecryptionKey(subscriberDetails: EbicsClientSubscriberDetails, pubDigest: ByteArray): RSAPrivateCrtKey { - val authPub = CryptoUtil.getRsaPublicFromPrivate(subscriberDetails.customerAuthPriv) - val encPub = CryptoUtil.getRsaPublicFromPrivate(subscriberDetails.customerEncPriv) - val authPubDigest = CryptoUtil.getEbicsPublicKeyHash(authPub) - val encPubDigest = CryptoUtil.getEbicsPublicKeyHash(encPub) - if (pubDigest.contentEquals(authPubDigest)) { - return subscriberDetails.customerAuthPriv - } - if (pubDigest.contentEquals(encPubDigest)) { - return subscriberDetails.customerEncPriv - } - throw EbicsProtocolError(HttpStatusCode.NotFound, "Could not find customer's public key") -} - -data class EbicsVersionSpec( - val protocol: String, - val version: String -) - -data class EbicsHevDetails( - val versions: List<EbicsVersionSpec> -) -\ No newline at end of file diff --git a/ebics/src/main/kotlin/EbicsOrderUtil.kt b/ebics/src/main/kotlin/EbicsOrderUtil.kt @@ -1,88 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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.ebics - -import tech.libeufin.common.deflate -import tech.libeufin.common.inflate -import tech.libeufin.common.toHexString -import java.security.SecureRandom - -/** - * Helpers for dealing with order compression, encryption, decryption, chunking and re-assembly. - */ -object EbicsOrderUtil { - - inline fun <reified T> decodeOrderDataXml(encodedOrderData: ByteArray): T { - return encodedOrderData.inputStream().inflate().use { - XMLUtil.convertToJaxb<T>(it).value - } - } - - inline fun <reified T> encodeOrderDataXml(obj: T): ByteArray { - val bytes = XMLUtil.convertJaxbToBytes(obj) - return bytes.inputStream().deflate().readAllBytes() - } - - @ExperimentalStdlibApi - fun generateTransactionId(): String { - val rng = SecureRandom() - val res = ByteArray(16) - rng.nextBytes(res) - return res.toHexString().uppercase() - } - - /** - * Calculate the resulting size of base64-encoding data of the given length, - * including padding. - */ - fun calculateBase64EncodedLength(dataLength: Int): Int { - val blocks = (dataLength + 3 - 1) / 3 - return blocks * 4 - } - - fun checkOrderIDOverflow(n: Int): Boolean { - if (n <= 0) - throw IllegalArgumentException() - val base = 10 + 26 - return n >= base * base - } - - private fun getDigitChar(x: Int): Char { - if (x < 10) { - return '0' + x - } - return 'A' + (x - 10) - } - - fun computeOrderIDFromNumber(n: Int): String { - if (n <= 0) - throw IllegalArgumentException() - if (checkOrderIDOverflow(n)) - throw IllegalArgumentException() - var ni = n - val base = 10 + 26 - val x1 = ni % base - ni = ni / base - val x2 = ni % base - val c1 = getDigitChar(x1) - val c2 = getDigitChar(x2) - return String(charArrayOf('O', 'R', c2, c1)) - } -} diff --git a/ebics/src/main/kotlin/Iso20022CodeSets.kt b/ebics/src/main/kotlin/Iso20022CodeSets.kt @@ -1,330 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -// THIS FILE IS GENERATED, DO NOT EDIT - -package tech.libeufin.ebics - -enum class ExternalStatusReasonCode(val isoCode: String, val description: String) { - AB01("AbortedClearingTimeout", "Clearing process aborted due to timeout."), - AB02("AbortedClearingFatalError", "Clearing process aborted due to a fatal error."), - AB03("AbortedSettlementTimeout", "Settlement aborted due to timeout."), - AB04("AbortedSettlementFatalError", "Settlement process aborted due to a fatal error."), - AB05("TimeoutCreditorAgent", "Transaction stopped due to timeout at the Creditor Agent."), - AB06("TimeoutInstructedAgent", "Transaction stopped due to timeout at the Instructed Agent."), - AB07("OfflineAgent", "Agent of message is not online."), - AB08("OfflineCreditorAgent", "Creditor Agent is not online."), - AB09("ErrorCreditorAgent", "Transaction stopped due to error at the Creditor Agent."), - AB10("ErrorInstructedAgent", "Transaction stopped due to error at the Instructed Agent."), - AB11("TimeoutDebtorAgent", "Transaction stopped due to timeout at the Debtor Agent."), - AC01("IncorrectAccountNumber", "Account number is invalid or missing."), - AC02("InvalidDebtorAccountNumber", "Debtor account number invalid or missing"), - AC03("InvalidCreditorAccountNumber", "Creditor account number invalid or missing"), - AC04("ClosedAccountNumber", "Account number specified has been closed on the bank of account's books."), - AC05("ClosedDebtorAccountNumber", "Debtor account number closed"), - AC06("BlockedAccount", "Account specified is blocked, prohibiting posting of transactions against it."), - AC07("ClosedCreditorAccountNumber", "Creditor account number closed"), - AC08("InvalidBranchCode", "Branch code is invalid or missing"), - AC09("InvalidAccountCurrency", "Account currency is invalid or missing"), - AC10("InvalidDebtorAccountCurrency", "Debtor account currency is invalid or missing"), - AC11("InvalidCreditorAccountCurrency", "Creditor account currency is invalid or missing"), - AC12("InvalidAccountType", "Account type missing or invalid."), - AC13("InvalidDebtorAccountType", "Debtor account type missing or invalid"), - AC14("InvalidCreditorAccountType", "Creditor account type missing or invalid"), - AC15("AccountDetailsChanged", "The account details for the counterparty have changed."), - AC16("CardNumberInvalid", "Credit or debit card number is invalid."), - AEXR("AlreadyExpiredRTP", "Request-to-pay Expiry Date and Time has already passed."), - AG01("TransactionForbidden", "Transaction forbidden on this type of account (formerly NoAgreement)"), - AG02("InvalidBankOperationCode", "Bank Operation code specified in the message is not valid for receiver"), - AG03("TransactionNotSupported", "Transaction type not supported/authorized on this account"), - AG04("InvalidAgentCountry", "Agent country code is missing or invalid."), - AG05("InvalidDebtorAgentCountry", "Debtor agent country code is missing or invalid"), - AG06("InvalidCreditorAgentCountry", "Creditor agent country code is missing or invalid"), - AG07("UnsuccesfulDirectDebit", "Debtor account cannot be debited for a generic reason."), - AG08("InvalidAccessRights", "Transaction failed due to invalid or missing user or access right"), - AG09("PaymentNotReceived", "Original payment never received."), - AG10("AgentSuspended", "Agent of message is suspended from the Real Time Payment system."), - AG11("CreditorAgentSuspended", "Creditor Agent of message is suspended from the Real Time Payment system."), - AG12("NotAllowedBookTransfer", "Payment orders made by transferring funds from one account to another at the same financial institution (bank or payment institution) are not allowed."), - AG13("ForbiddenReturnPayment", "Returned payments derived from previously returned transactions are not allowed."), - AGNT("IncorrectAgent", "Agent in the payment workflow is incorrect"), - ALAC("AlreadyAcceptedRTP", "Request-to-pay has already been accepted by the Debtor."), - AM01("ZeroAmount", "Specified message amount is equal to zero"), - AM02("NotAllowedAmount", "Specific transaction/message amount is greater than allowed maximum"), - AM03("NotAllowedCurrency", "Specified message amount is an non processable currency outside of existing agreement"), - AM04("InsufficientFunds", "Amount of funds available to cover specified message amount is insufficient."), - AM05("Duplication", "Duplication"), - AM06("TooLowAmount", "Specified transaction amount is less than agreed minimum."), - AM07("BlockedAmount", "Amount specified in message has been blocked by regulatory authorities."), - AM09("WrongAmount", "Amount received is not the amount agreed or expected"), - AM10("InvalidControlSum", "Sum of instructed amounts does not equal the control sum."), - AM11("InvalidTransactionCurrency", "Transaction currency is invalid or missing"), - AM12("InvalidAmount", "Amount is invalid or missing"), - AM13("AmountExceedsClearingSystemLimit", "Transaction amount exceeds limits set by clearing system"), - AM14("AmountExceedsAgreedLimit", "Transaction amount exceeds limits agreed between bank and client"), - AM15("AmountBelowClearingSystemMinimum", "Transaction amount below minimum set by clearing system"), - AM16("InvalidGroupControlSum", "Control Sum at the Group level is invalid"), - AM17("InvalidPaymentInfoControlSum", "Control Sum at the Payment Information level is invalid"), - AM18("InvalidNumberOfTransactions", "Number of transactions is invalid or missing."), - AM19("InvalidGroupNumberOfTransactions", "Number of transactions at the Group level is invalid or missing"), - AM20("InvalidPaymentInfoNumberOfTransactions", "Number of transactions at the Payment Information level is invalid"), - AM21("LimitExceeded", "Transaction amount exceeds limits agreed between bank and client."), - AM22("ZeroAmountNotApplied", "Unable to apply zero amount to designated account. For example, where the rules of a service allow the use of zero amount payments, however the back-office system is unable to apply the funds to the account. If the rules of a service prohibit the use of zero amount payments, then code AM01 is used to report the error condition."), - AM23("AmountExceedsSettlementLimit", "Transaction amount exceeds settlement limit."), - APAR("AlreadyPaidRTP", "Request To Pay has already been paid by the Debtor."), - ARFR("AlreadyRefusedRTP", "Request-to-pay has already been refused by the Debtor."), - ARJR("AlreadyRejectedRTP", "Request-to-pay has already been rejected."), - ATNS("AttachementsNotSupported", "Attachments to the request-to-pay are not supported."), - BE01("InconsistenWithEndCustomer", "Identification of end customer is not consistent with associated account number. (formerly CreditorConsistency)."), - BE04("MissingCreditorAddress", "Specification of creditor's address, which is required for payment, is missing/not correct (formerly IncorrectCreditorAddress)."), - BE05("UnrecognisedInitiatingParty", "Party who initiated the message is not recognised by the end customer"), - BE06("UnknownEndCustomer", "End customer specified is not known at associated Sort/National Bank Code or does no longer exist in the books"), - BE07("MissingDebtorAddress", "Specification of debtor's address, which is required for payment, is missing/not correct."), - BE08("MissingDebtorName", "Debtor name is missing"), - BE09("InvalidCountry", "Country code is missing or Invalid."), - BE10("InvalidDebtorCountry", "Debtor country code is missing or invalid"), - BE11("InvalidCreditorCountry", "Creditor country code is missing or invalid"), - BE12("InvalidCountryOfResidence", "Country code of residence is missing or Invalid."), - BE13("InvalidDebtorCountryOfResidence", "Country code of debtor's residence is missing or Invalid"), - BE14("InvalidCreditorCountryOfResidence", "Country code of creditor's residence is missing or Invalid"), - BE15("InvalidIdentificationCode", "Identification code missing or invalid."), - BE16("InvalidDebtorIdentificationCode", "Debtor or Ultimate Debtor identification code missing or invalid"), - BE17("InvalidCreditorIdentificationCode", "Creditor or Ultimate Creditor identification code missing or invalid"), - BE18("InvalidContactDetails", "Contact details missing or invalid"), - BE19("InvalidChargeBearerCode", "Charge bearer code for transaction type is invalid"), - BE20("InvalidNameLength", "Name length exceeds local rules for payment type."), - BE21("MissingName", "Name missing or invalid. Generic usage if cannot specifically identify debtor or creditor."), - BE22("MissingCreditorName", "Creditor name is missing"), - BE23("AccountProxyInvalid", "Phone number or email address, or any other proxy, used as the account proxy is unknown or invalid."), - CERI("CheckERI", "Credit transfer is not tagged as an Extended Remittance Information (ERI) transaction but contains ERI."), - CH03("RequestedExecutionDateOrRequestedCollectionDateTooFarInFuture", "Value in Requested Execution Date or Requested Collection Date is too far in the future"), - CH04("RequestedExecutionDateOrRequestedCollectionDateTooFarInPast", "Value in Requested Execution Date or Requested Collection Date is too far in the past"), - CH07("ElementIsNotToBeUsedAtB-andC-Level", "Element is not to be used at B- and C-Level"), - CH09("MandateChangesNotAllowed", "Mandate changes are not allowed"), - CH10("InformationOnMandateChangesMissing", "Information on mandate changes are missing"), - CH11("CreditorIdentifierIncorrect", "Value in Creditor Identifier is incorrect"), - CH12("CreditorIdentifierNotUnambiguouslyAtTransaction-Level", "Creditor Identifier is ambiguous at Transaction Level"), - CH13("OriginalDebtorAccountIsNotToBeUsed", "Original Debtor Account is not to be used"), - CH14("OriginalDebtorAgentIsNotToBeUsed", "Original Debtor Agent is not to be used"), - CH15("ElementContentIncludesMoreThan140Characters", "Content Remittance Information/Structured includes more than 140 characters"), - CH16("ElementContentFormallyIncorrect", "Content is incorrect"), - CH17("ElementNotAdmitted", "Element is not allowed"), - CH19("ValuesWillBeSetToNextTARGETday", "Values in Interbank Settlement Date or Requested Collection Date will be set to the next TARGET day"), - CH20("DecimalPointsNotCompatibleWithCurrency", "Number of decimal points not compatible with the currency"), - CH21("RequiredCompulsoryElementMissing", "Mandatory element is missing"), - CH22("COREandB2BwithinOnemessage", "SDD CORE and B2B not permitted within one message"), - CHQC("ChequeSettledOnCreditorAccount", "Cheque has been presented in cheque clearing and settled on the creditor’s account."), - CN01("AuthorisationCancelled", "Authorisation is cancelled."), - CNOR("CreditorBankIsNotRegistered", "Creditor bank is not registered under this BIC in the CSM"), - CURR("IncorrectCurrency", "Currency of the payment is incorrect"), - CUST("RequestedByCustomer", "Cancellation requested by the Debtor"), - DC02("SettlementNotReceived", "Rejection of a payment due to covering FI settlement not being received."), - DNOR("DebtorBankIsNotRegistered", "Debtor bank is not registered under this BIC in the CSM"), - DS01("ElectronicSignaturesCorrect", "The electronic signature(s) is/are correct"), - DS02("OrderCancelled", "An authorized user has cancelled the order"), - DS03("OrderNotCancelled", "The user’s attempt to cancel the order was not successful"), - DS04("OrderRejected", "The order was rejected by the bank side (for reasons concerning content)"), - DS05("OrderForwardedForPostprocessing", "The order was correct and could be forwarded for postprocessing"), - DS06("TransferOrder", "The order was transferred to VEU"), - DS07("ProcessingOK", "All actions concerning the order could be done by the EBICS bank server"), - DS08("DecompressionError", "The decompression of the file was not successful"), - DS09("DecryptionError", "The decryption of the file was not successful"), - DS0A("DataSignRequested", "Data signature is required."), - DS0B("UnknownDataSignFormat", "Data signature for the format is not available or invalid."), - DS0C("SignerCertificateRevoked", "The signer certificate is revoked."), - DS0D("SignerCertificateNotValid", "The signer certificate is not valid (revoked or not active)."), - DS0E("IncorrectSignerCertificate", "The signer certificate is not present."), - DS0F("SignerCertificationAuthoritySignerNotValid", "The authority of the signer certification sending the certificate is unknown."), - DS0G("NotAllowedPayment", "Signer is not allowed to sign this operation type."), - DS0H("NotAllowedAccount", "Signer is not allowed to sign for this account."), - DS0K("NotAllowedNumberOfTransaction", "The number of transaction is over the number allowed for this signer."), - DS10("Signer1CertificateRevoked", "The certificate is revoked for the first signer."), - DS11("Signer1CertificateNotValid", "The certificate is not valid (revoked or not active) for the first signer."), - DS12("IncorrectSigner1Certificate", "The certificate is not present for the first signer."), - DS13("SignerCertificationAuthoritySigner1NotValid", "The authority of signer certification sending the certificate is unknown for the first signer."), - DS14("UserDoesNotExist", "The user is unknown on the server"), - DS15("IdenticalSignatureFound", "The same signature has already been sent to the bank"), - DS16("PublicKeyVersionIncorrect", "The public key version is not correct. This code is returned when a customer sends signature files to the financial institution after conversion from an older program version (old ES format) to a new program version (new ES format) without having carried out re-initialisation with regard to a public key change."), - DS17("DifferentOrderDataInSignatures", "Order data and signatures don’t match"), - DS18("RepeatOrder", "File cannot be tested, the complete order has to be repeated. This code is returned in the event of a malfunction during the signature check, e.g. not enough storage space."), - DS19("ElectronicSignatureRightsInsufficient", "The user’s rights (concerning his signature) are insufficient to execute the order"), - DS20("Signer2CertificateRevoked", "The certificate is revoked for the second signer."), - DS21("Signer2CertificateNotValid", "The certificate is not valid (revoked or not active) for the second signer."), - DS22("IncorrectSigner2Certificate", "The certificate is not present for the second signer."), - DS23("SignerCertificationAuthoritySigner2NotValid", "The authority of signer certification sending the certificate is unknown for the second signer."), - DS24("WaitingTimeExpired", "Waiting time expired due to incomplete order"), - DS25("OrderFileDeleted", "The order file was deleted by the bank server"), - DS26("UserSignedMultipleTimes", "The same user has signed multiple times"), - DS27("UserNotYetActivated", "The user is not yet activated (technically)"), - DT01("InvalidDate", "Invalid date (eg, wrong or missing settlement date)"), - DT02("InvalidCreationDate", "Invalid creation date and time in Group Header (eg, historic date)"), - DT03("InvalidNonProcessingDate", "Invalid non bank processing date (eg, weekend or local public holiday)"), - DT04("FutureDateNotSupported", "Future date not supported"), - DT05("InvalidCutOffDate", "Associated message, payment information block or transaction was received after agreed processing cut-off date, i.e., date in the past."), - DT06("ExecutionDateChanged", "Execution Date has been modified in order for transaction to be processed"), - DU01("DuplicateMessageID", "Message Identification is not unique."), - DU02("DuplicatePaymentInformationID", "Payment Information Block is not unique."), - DU03("DuplicateTransaction", "Transaction is not unique."), - DU04("DuplicateEndToEndID", "End To End ID is not unique."), - DU05("DuplicateInstructionID", "Instruction ID is not unique."), - DUPL("DuplicatePayment", "Payment is a duplicate of another payment"), - ED01("CorrespondentBankNotPossible", "Correspondent bank not possible."), - ED03("BalanceInfoRequest", "Balance of payments complementary info is requested"), - ED05("SettlementFailed", "Settlement of the transaction has failed."), - ED06("SettlementSystemNotAvailable", "Interbank settlement system not available."), - EDTL("ExpiryDateTooLong", "Expiry date time of the request-to-pay is too far in the future."), - EDTR("ExpiryDateTimeReached", "Expiry date time of the request-to-pay is already reached."), - ERIN("ERIOptionNotSupported", "Extended Remittance Information (ERI) option is not supported."), - FF01("InvalidFileFormat", "File Format incomplete or invalid"), - FF02("SyntaxError", "Syntax error reason is provided as narrative information in the additional reason information."), - FF03("InvalidPaymentTypeInformation", "Payment Type Information is missing or invalid."), - FF04("InvalidServiceLevelCode", "Service Level code is missing or invalid"), - FF05("InvalidLocalInstrumentCode", "Local Instrument code is missing or invalid"), - FF06("InvalidCategoryPurposeCode", "Category Purpose code is missing or invalid"), - FF07("InvalidPurpose", "Purpose is missing or invalid"), - FF08("InvalidEndToEndId", "End to End Id missing or invalid"), - FF09("InvalidChequeNumber", "Cheque number missing or invalid"), - FF10("BankSystemProcessingError", "File or transaction cannot be processed due to technical issues at the bank side"), - FF11("ClearingRequestAborted", "Clearing request rejected due it being subject to an abort operation."), - FF12("OriginalTransactionNotEligibleForRequestedReturn", "Original payment is not eligible to be returned given its current status."), - FF13("RequestForCancellationNotFound", "No record of request for cancellation found."), - FOCR("FollowingCancellationRequest", "Return following a cancellation request."), - FR01("Fraud", "Returned as a result of fraud."), - FRAD("FraudulentOrigin", "Cancellation requested following a transaction that was originated fraudulently. The use of the FraudulentOrigin code should be governed by jurisdictions."), - G000("PaymentTransferredAndTracked", "In an FI To FI Customer Credit Transfer: The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is tracked. No further updates will follow from the Status Originator."), - G001("PaymentTransferredAndNotTracked", "In an FI To FI Customer Credit Transfer: The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is not tracked. No further updates will follow from the Status Originator."), - G002("CreditDebitNotConfirmed", "In a FIToFI Customer Credit Transfer: Credit to the creditor’s account may not be confirmed same day. Update will follow from the Status Originator."), - G003("CreditPendingDocuments", "In a FIToFI Customer Credit Transfer: Credit to creditor’s account is pending receipt of required documents. The Status Originator has requested creditor to provide additional documentation. Update will follow from the Status Originator."), - G004("CreditPendingFunds", "In a FIToFI Customer Credit Transfer: Credit to the creditor’s account is pending, status Originator is waiting for funds provided via a cover. Update will follow from the Status Originator."), - G005("DeliveredWithServiceLevel", "Payment has been delivered to creditor agent with service level."), - G006("DeliveredWIthoutServiceLevel", "Payment has been delivered to creditor agent without service level."), - ID01("CorrespondingOriginalFileStillNotSent", "Signature file was sent to the bank but the corresponding original file has not been sent yet."), - IEDT("IncorrectExpiryDateTime", "Expiry date time of the request-to-pay is incorrect."), - IRNR("InitialRTPNeverReceived", "No initial request-to-pay has been received."), - MD01("NoMandate", "No Mandate"), - MD02("MissingMandatoryInformationInMandate", "Mandate related information data required by the scheme is missing."), - MD05("CollectionNotDue", "Creditor or creditor's agent should not have collected the direct debit"), - MD06("RefundRequestByEndCustomer", "Return of funds requested by end customer"), - MD07("EndCustomerDeceased", "End customer is deceased."), - MS02("NotSpecifiedReasonCustomerGenerated", "Reason has not been specified by end customer"), - MS03("NotSpecifiedReasonAgentGenerated", "Reason has not been specified by agent."), - NARR("Narrative", "Reason is provided as narrative information in the additional reason information."), - NERI("NoERI", "Credit transfer is tagged as an Extended Remittance Information (ERI) transaction but does not contain ERI."), - NOAR("NonAgreedRTP", "No existing agreement for receiving request-to-pay messages."), - NOAS("NoAnswerFromCustomer", "No response from Beneficiary."), - NOCM("NotCompliantGeneric", "Customer account is not compliant with regulatory requirements, for example FICA (in South Africa) or any other regulatory requirements which render an account inactive for certain processing."), - NOPG("NoPaymentGuarantee", "Requested payment guarantee (by Creditor) related to a request-to-pay cannot be provided."), - NRCH("PayerOrPayerRTPSPNotReachable", "Recipient side of the request-to-pay (payer or its request-to-pay service provider) is not reachable."), - PINS("TypeOfPaymentInstrumentNotSupported", "Type of payment requested in the request-to-pay is not supported by the payer."), - RC01("BankIdentifierIncorrect", "Bank identifier code specified in the message has an incorrect format (formerly IncorrectFormatForRoutingCode)."), - RC02("InvalidBankIdentifier", "Bank identifier is invalid or missing."), - RC03("InvalidDebtorBankIdentifier", "Debtor bank identifier is invalid or missing"), - RC04("InvalidCreditorBankIdentifier", "Creditor bank identifier is invalid or missing"), - RC05("InvalidBICIdentifier", "BIC identifier is invalid or missing."), - RC06("InvalidDebtorBICIdentifier", "Debtor BIC identifier is invalid or missing"), - RC07("InvalidCreditorBICIdentifier", "Creditor BIC identifier is invalid or missing"), - RC08("InvalidClearingSystemMemberIdentifier", "ClearingSystemMemberidentifier is invalid or missing."), - RC09("InvalidDebtorClearingSystemMemberIdentifier", "Debtor ClearingSystemMember identifier is invalid or missing"), - RC10("InvalidCreditorClearingSystemMemberIdentifier", "Creditor ClearingSystemMember identifier is invalid or missing"), - RC11("InvalidIntermediaryAgent", "Intermediary Agent is invalid or missing"), - RC12("MissingCreditorSchemeId", "Creditor Scheme Id is invalid or missing"), - RCON("RMessageConflict", "Conflict with R-Message"), - RECI("ReceiverCustomerInformation", "Further information regarding the intended recipient."), - REPR("RTPReceivedCanBeProcessed", "Request-to-pay has been received and can be processed further."), - RF01("NotUniqueTransactionReference", "Transaction reference is not unique within the message."), - RR01("MissingDebtorAccountOrIdentification", "Specification of the debtor’s account or unique identification needed for reasons of regulatory requirements is insufficient or missing"), - RR02("MissingDebtorNameOrAddress", "Specification of the debtor’s name and/or address needed for regulatory requirements is insufficient or missing."), - RR03("MissingCreditorNameOrAddress", "Specification of the creditor’s name and/or address needed for regulatory requirements is insufficient or missing."), - RR04("RegulatoryReason", "Regulatory Reason"), - RR05("RegulatoryInformationInvalid", "Regulatory or Central Bank Reporting information missing, incomplete or invalid."), - RR06("TaxInformationInvalid", "Tax information missing, incomplete or invalid."), - RR07("RemittanceInformationInvalid", "Remittance information structure does not comply with rules for payment type."), - RR08("RemittanceInformationTruncated", "Remittance information truncated to comply with rules for payment type."), - RR09("InvalidStructuredCreditorReference", "Structured creditor reference invalid or missing."), - RR10("InvalidCharacterSet", "Character set supplied not valid for the country and payment type."), - RR11("InvalidDebtorAgentServiceID", "Invalid or missing identification of a bank proprietary service."), - RR12("InvalidPartyID", "Invalid or missing identification required within a particular country or payment type."), - RTNS("RTPNotSupportedForDebtor", "Debtor does not support request-to-pay transactions."), - RUTA("ReturnUponUnableToApply", "Return following investigation request and no remediation possible."), - S000("ValidRequestForCancellationAcknowledged", "Request for Cancellation is acknowledged following validation."), - S001("UETRFlaggedForCancellation", "Unique End-to-end Transaction Reference (UETR) relating to a payment has been identified as being associated with a Request for Cancellation."), - S002("NetworkStopOfUETR", "Unique End-to-end Transaction Reference (UETR) relating to a payment has been prevent from traveling across a messaging network."), - S003("RequestForCancellationForwarded", "Request for Cancellation has been forwarded to the payment processing/last payment processing agent."), - S004("RequestForCancellationDeliveryAcknowledgement", "Request for Cancellation has been acknowledged as delivered to payment processing/last payment processing agent."), - SL01("SpecificServiceOfferedByDebtorAgent", "Due to specific service offered by the Debtor Agent."), - SL02("SpecificServiceOfferedByCreditorAgent", "Due to specific service offered by the Creditor Agent."), - SL03("ServiceofClearingSystem", "Due to a specific service offered by the clearing system."), - SL11("CreditorNotOnWhitelistOfDebtor", "Whitelisting service offered by the Debtor Agent; Debtor has not included the Creditor on its “Whitelist” (yet). In the Whitelist the Debtor may list all allowed Creditors to debit Debtor bank account."), - SL12("CreditorOnBlacklistOfDebtor", "Blacklisting service offered by the Debtor Agent; Debtor included the Creditor on his “Blacklist”. In the Blacklist the Debtor may list all Creditors not allowed to debit Debtor bank account."), - SL13("MaximumNumberOfDirectDebitTransactionsExceeded", "Due to Maximum allowed Direct Debit Transactions per period service offered by the Debtor Agent."), - SL14("MaximumDirectDebitTransactionAmountExceeded", "Due to Maximum allowed Direct Debit Transaction amount service offered by the Debtor Agent."), - SPII("RTPServiceProviderIdentifierIncorrect", "Identifier of the request-to-pay service provider is incorrect."), - TA01("TransmissonAborted", "The transmission of the file was not successful – it had to be aborted (for technical reasons)"), - TD01("NoDataAvailable", "There is no data available (for download)"), - TD02("FileNonReadable", "The file cannot be read (e.g. unknown format)"), - TD03("IncorrectFileStructure", "The file format is incomplete or invalid"), - TK01("TokenInvalid", "Token is invalid."), - TK02("SenderTokenNotFound", "Token used for the sender does not exist."), - TK03("ReceiverTokenNotFound", "Token used for the receiver does not exist."), - TK09("TokenMissing", "Token required for request is missing."), - TKCM("TokenCounterpartyMismatch", "Token found with counterparty mismatch."), - TKSG("TokenSingleUse", "Single Use Token already used."), - TKSP("TokenSuspended", "Token found with suspended status."), - TKVE("TokenValueLimitExceeded", "Token found with value limit rule violation."), - TKXP("TokenExpired", "Token expired."), - TM01("InvalidCutOffTime", "Associated message, payment information block, or transaction was received after agreed processing cut-off time."), - TS01("TransmissionSuccessful", "The (technical) transmission of the file was successful."), - TS04("TransferToSignByHand", "The order was transferred to pass by accompanying note signed by hand"), - UCRD("UnknownCreditor", "Unknown Creditor."), - UPAY("UnduePayment", "Payment is not justified."), -} - -enum class ExternalPaymentGroupStatusCode(val isoCode: String, val description: String) { - ACCC("AcceptedSettlementCompletedCreditorAccount", "Settlement on the creditor's account has been completed."), - ACCP("AcceptedCustomerProfile", "Preceding check of technical validation was successful. Customer profile check was also successful."), - ACSC("AcceptedSettlementCompletedDebitorAccount", "Settlement on the debtor's account has been completed."), - ACSP("AcceptedSettlementInProcess", "All preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been accepted for execution."), - ACTC("AcceptedTechnicalValidation", "Authentication and syntactical and semantical validation are successful"), - ACWC("AcceptedWithChange", "Instruction is accepted but a change will be made, such as date or remittance not sent."), - PART("PartiallyAccepted", "A number of transactions have been accepted, whereas another number of transactions have not yet achieved"), - PDNG("Pending", "Payment initiation or individual transaction included in the payment initiation is pending. Further checks and status update will be performed."), - RCVD("Received", "Payment initiation has been received by the receiving agent"), - RJCT("Rejected", "Payment initiation or individual transaction included in the payment initiation has been rejected."), -} - -enum class ExternalPaymentTransactionStatusCode(val isoCode: String, val description: String) { - ACCC("AcceptedSettlementCompletedCreditorAccount", "Settlement on the creditor's account has been completed."), - ACCP("AcceptedCustomerProfile", "Preceding check of technical validation was successful. Customer profile check was also successful."), - ACFC("AcceptedFundsChecked", "Preceding check of technical validation and customer profile was successful and an automatic funds check was positive."), - ACIS("AcceptedandChequeIssued", "Payment instruction to issue a cheque has been accepted, and the cheque has been issued but not yet been deposited or cleared."), - ACPD("AcceptedClearingProcessed", "Status of transaction released from the Debtor Agent and accepted by the clearing."), - ACSC("AcceptedSettlementCompletedDebitorAccount", "Settlement completed."), - ACSP("AcceptedSettlementInProcess", "All preceding checks such as technical validation and customer profile were successful and therefore the payment instruction has been accepted for execution."), - ACTC("AcceptedTechnicalValidation", "Authentication and syntactical and semantical validation are successful"), - ACWC("AcceptedWithChange", "Instruction is accepted but a change will be made, such as date or remittance not sent."), - ACWP("AcceptedWithoutPosting", "Payment instruction included in the credit transfer is accepted without being posted to the creditor customer’s account."), - BLCK("Blocked", "Payment transaction previously reported with status 'ACWP' is blocked, for example, funds will neither be posted to the Creditor's account, nor be returned to the Debtor."), - CANC("Cancelled", "Payment initiation has been successfully cancelled after having received a request for cancellation."), - CPUC("CashPickedUpByCreditor", "Cash has been picked up by the Creditor."), - PATC("PartiallyAcceptedTechnicalCorrect", "Payment initiation needs multiple authentications, where some but not yet all have been performed. Syntactical and semantical validations are successful."), - PDNG("Pending", "Payment instruction is pending. Further checks and status update will be performed."), - PRES("Presented", "Request for Payment has been presented to the Debtor."), - RCVD("Received", "Payment instruction has been received."), - RJCT("Rejected", "Payment instruction has been rejected."), -} diff --git a/ebics/src/main/kotlin/Iso20022Constants.kt b/ebics/src/main/kotlin/Iso20022Constants.kt @@ -1,35 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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.ebics - -enum class HacAction(val description: String) { - FILE_UPLOAD("File submitted to the bank"), - FILE_DOWNLOAD("File downloaded from the bank"), - ES_UPLOAD("Electronic signature submitted to the bank"), - ES_DOWNLOAD("Electronic signature downloaded from the bank"), - ES_VERIFICATION("Signature verification"), - VEU_FORWARDING("Forwarding to EDS"), - VEU_VERIFICATION("EDS signature verification"), - VEU_VERIFICATION_END("VEU_VERIFICATION_END"), - VEU_CANCEL_ORDER("Cancellation of EDS order"), - ADDITIONAL("Additional information"), - ORDER_HAC_FINAL_POS("HAC end of order (positive)"), - ORDER_HAC_FINAL_NEG("ORDER_HAC_FINAL_NEG") -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/XMLUtil.kt b/ebics/src/main/kotlin/XMLUtil.kt @@ -1,548 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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.ebics - -import com.sun.xml.bind.marshaller.NamespacePrefixMapper -import io.ktor.http.* -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.w3c.dom.Document -import org.w3c.dom.Node -import org.w3c.dom.NodeList -import org.w3c.dom.ls.LSInput -import org.w3c.dom.ls.LSResourceResolver -import org.xml.sax.ErrorHandler -import org.xml.sax.InputSource -import org.xml.sax.SAXException -import org.xml.sax.SAXParseException -import tech.libeufin.ebics.ebics_h004.EbicsResponse -import java.io.* -import java.security.PrivateKey -import java.security.PublicKey -import java.security.interfaces.RSAPrivateCrtKey -import javax.xml.XMLConstants -import javax.xml.bind.JAXBContext -import javax.xml.bind.JAXBElement -import javax.xml.bind.Marshaller -import javax.xml.crypto.* -import javax.xml.crypto.dom.DOMURIReference -import javax.xml.crypto.dsig.* -import javax.xml.crypto.dsig.dom.DOMSignContext -import javax.xml.crypto.dsig.dom.DOMValidateContext -import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec -import javax.xml.crypto.dsig.spec.TransformParameterSpec -import javax.xml.namespace.NamespaceContext -import javax.xml.parsers.DocumentBuilderFactory -import javax.xml.transform.OutputKeys -import javax.xml.transform.Source -import javax.xml.transform.TransformerFactory -import javax.xml.transform.dom.DOMSource -import javax.xml.transform.stream.StreamResult -import javax.xml.transform.stream.StreamSource -import javax.xml.validation.SchemaFactory -import javax.xml.validation.Validator -import javax.xml.xpath.XPath -import javax.xml.xpath.XPathConstants -import javax.xml.xpath.XPathFactory - -private val logger: Logger = LoggerFactory.getLogger("libeufin-xml") - -class DefaultNamespaces : NamespacePrefixMapper() { - override fun getPreferredPrefix(namespaceUri: String?, suggestion: String?, requirePrefix: Boolean): String? { - if (namespaceUri == "http://www.w3.org/2000/09/xmldsig#") return "ds" - if (namespaceUri == XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI) return "xsi" - return null - } -} - -class DOMInputImpl : LSInput { - var fPublicId: String? = null - var fSystemId: String? = null - var fBaseSystemId: String? = null - var fByteStream: InputStream? = null - var fCharStream: Reader? = null - var fData: String? = null - var fEncoding: String? = null - var fCertifiedText = false - - override fun getByteStream(): InputStream? { - return fByteStream - } - - override fun setByteStream(byteStream: InputStream) { - fByteStream = byteStream - } - - override fun getCharacterStream(): Reader? { - return fCharStream - } - - override fun setCharacterStream(characterStream: Reader) { - fCharStream = characterStream - } - - override fun getStringData(): String? { - return fData - } - - override fun setStringData(stringData: String) { - fData = stringData - } - - override fun getEncoding(): String? { - return fEncoding - } - - override fun setEncoding(encoding: String) { - fEncoding = encoding - } - - override fun getPublicId(): String? { - return fPublicId - } - - override fun setPublicId(publicId: String) { - fPublicId = publicId - } - - override fun getSystemId(): String? { - return fSystemId - } - - override fun setSystemId(systemId: String) { - fSystemId = systemId - } - - override fun getBaseURI(): String? { - return fBaseSystemId - } - - override fun setBaseURI(baseURI: String) { - fBaseSystemId = baseURI - } - - override fun getCertifiedText(): Boolean { - return fCertifiedText - } - - override fun setCertifiedText(certifiedText: Boolean) { - fCertifiedText = certifiedText - } -} - - -/** - * Helpers for dealing with XML in EBICS. - */ -class XMLUtil private constructor() { - /** - * This URI dereferencer allows handling the resource reference used for - * XML signatures in EBICS. - */ - private class EbicsSigUriDereferencer : URIDereferencer { - override fun dereference(myRef: URIReference?, myCtx: XMLCryptoContext?): Data { - val ebicsXpathExpr = "//*[@authenticate='true']" - if (myRef !is DOMURIReference) - throw Exception("invalid type") - if (myRef.uri != "#xpointer($ebicsXpathExpr)") - throw Exception("invalid EBICS XML signature URI: '${myRef.uri}'") - val xp: XPath = XPathFactory.newInstance().newXPath() - val nodeSet = xp.compile("//*[@authenticate='true']/descendant-or-self::node()").evaluate( - myRef.here.ownerDocument, XPathConstants.NODESET - ) - if (nodeSet !is NodeList) - throw Exception("invalid type") - if (nodeSet.length <= 0) { - throw Exception("no nodes to sign") - } - val nodeList = ArrayList<Node>() - for (i in 0 until nodeSet.length) { - val node = nodeSet.item(i) - nodeList.add(node) - } - return NodeSetData { nodeList.iterator() } - } - } - - companion object { - private var cachedEbicsValidator: Validator? = null - private fun getEbicsValidator(): Validator { - val currentValidator = cachedEbicsValidator - if (currentValidator != null) - return currentValidator - val classLoader = ClassLoader.getSystemClassLoader() - val sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI) - sf.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "file") - sf.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "") - sf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true) - sf.errorHandler = object : ErrorHandler { - override fun warning(p0: SAXParseException?) { - println("Warning: $p0") - } - - override fun error(p0: SAXParseException?) { - println("Error: $p0") - } - - override fun fatalError(p0: SAXParseException?) { - println("Fatal error: $p0") - } - } - sf.resourceResolver = object : LSResourceResolver { - override fun resolveResource( - type: String?, - namespaceURI: String?, - publicId: String?, - systemId: String?, - baseUri: String? - ): LSInput? { - if (type != "http://www.w3.org/2001/XMLSchema") { - return null - } - val res = classLoader.getResourceAsStream("xsd/$systemId") ?: return null - return DOMInputImpl().apply { - fPublicId = publicId - fSystemId = systemId - fBaseSystemId = baseUri - fByteStream = res - fEncoding = "UTF-8" - } - } - } - 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", - "xsd/camt.054.001.02.xsd", - "xsd/pain.001.001.03.xsd", - // "xsd/pain.001.001.03.ch.02.xsd", // Swiss 2013 version. - "xsd/pain.001.001.09.ch.03.xsd" // Swiss 2019 version. - ).map { - val stream = - classLoader.getResourceAsStream(it) ?: throw FileNotFoundException("Schema file $it not found.") - StreamSource(stream) - }.toTypedArray() - val bundle = sf.newSchema(schemaInputs) - val newValidator = bundle.newValidator() - cachedEbicsValidator = newValidator - return newValidator - } - - /** - * - * @param xmlDoc the XML document to validate - * @return true when validation passes, false otherwise - */ - @Synchronized fun validate(xmlDoc: StreamSource): Boolean { - try { - getEbicsValidator().validate(xmlDoc) - } catch (e: Exception) { - /** - * Would be convenient to return also the error - * message to the caller, so that it can link it - * to a document ID in the logs. - */ - logger.warn("Validation failed: ${e}") - return false - } - return true - } - - /** - * Validates the DOM against the Schema(s) of this object. - * @param domDocument DOM to validate - * @return true/false if the document is valid/invalid - */ - @Synchronized fun validateFromDom(domDocument: Document): Boolean { - try { - getEbicsValidator().validate(DOMSource(domDocument)) - } catch (e: SAXException) { - e.printStackTrace() - return false - } - return true - } - - /** - * Craft object to be passed to the XML validator. - * @param xmlString XML body, as read from the POST body. - * @return InputStream object, as wanted by the validator. - */ - fun validateFromBytes(xml: ByteArray): Boolean { - return validate(StreamSource(xml.inputStream())) - } - - inline fun <reified T> convertJaxbToBytes( - obj: T, - withSchemaLocation: String? = null - ): ByteArray { - val w = ByteArrayOutputStream() - val jc = JAXBContext.newInstance(T::class.java) - val m = jc.createMarshaller() - m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) - if (withSchemaLocation != null) { - m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, withSchemaLocation) - } - m.setProperty("com.sun.xml.bind.namespacePrefixMapper", DefaultNamespaces()) - m.marshal(obj, w) - return w.toByteArray() - } - - inline fun <reified T> convertJaxbToDocument( - obj: T, - withSchemaLocation: String? = null - ): Document { - val dbf: DocumentBuilderFactory = DocumentBuilderFactory.newInstance() - dbf.isNamespaceAware = true - val doc = dbf.newDocumentBuilder().newDocument() - val jc = JAXBContext.newInstance(T::class.java) - val m = jc.createMarshaller() - m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) - if (withSchemaLocation != null) { - m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, withSchemaLocation) - } - m.setProperty("com.sun.xml.bind.namespacePrefixMapper", DefaultNamespaces()) - m.marshal(obj, doc) - return doc - } - - /** - * Convert XML bytes to the JAXB representation. - * - * @param documentBytes the bytes to convert into JAXB. - * @return the JAXB object reflecting the original XML document. - */ - inline fun <reified T> convertToJaxb(documentBytes: InputStream): JAXBElement<T> { - val jc = JAXBContext.newInstance(T::class.java) - val u = jc.createUnmarshaller() - return u.unmarshal( /* Marshalling the object into the document. */ - StreamSource(documentBytes), - T::class.java - ) - } - - fun convertDomToBytes(document: Document): ByteArray { - /* Make Transformer. */ - val tf = TransformerFactory.newInstance() - val t = tf.newTransformer() - - /* Make bytes writer. */ - val w = ByteArrayOutputStream() - - /* Extract string. */ - t.transform(DOMSource(document), StreamResult(w)) - return w.toByteArray() - } - - /** - * Convert a node to a string without the XML declaration or - * indentation. - */ - fun convertNodeToString(node: Node): String { - /* Make Transformer. */ - val tf = TransformerFactory.newInstance() - val t = tf.newTransformer() - t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes") - /* Make string writer. */ - val sw = StringWriter() - /* Extract string. */ - t.transform(DOMSource(node), StreamResult(sw)) - return sw.toString() - } - - /** - * Convert a DOM document to the JAXB representation. - * - * @param document the document to convert into JAXB. - * @return the JAXB object reflecting the original XML document. - */ - inline fun <reified T> convertDomToJaxb(document: Document): JAXBElement<T> { - val jc = JAXBContext.newInstance(T::class.java) - /* Marshalling the object into the document. */ - val m = jc.createUnmarshaller() - return m.unmarshal(document, T::class.java) // document "went" into Jaxb - } - - /** Parse [xml] into a XML DOM */ - fun parseIntoDom(xml: InputStream): Document { - val factory = DocumentBuilderFactory.newInstance().apply { - isNamespaceAware = true - } - val builder = factory.newDocumentBuilder() - return xml.use { - builder.parse(InputSource(it)) - } - } - - fun signEbicsResponse(ebicsResponse: EbicsResponse, privateKey: RSAPrivateCrtKey): ByteArray { - val doc = convertJaxbToDocument(ebicsResponse) - signEbicsDocument(doc, privateKey) - val signedDoc = convertDomToBytes(doc) - // logger.debug("response: $signedDoc") - return signedDoc - } - - /** - * Sign an EBICS document with the authentication and identity signature. - */ - fun signEbicsDocument( - doc: Document, - signingPriv: PrivateKey, - withEbics3: Boolean = false - ) { - val xpath = XPathFactory.newInstance().newXPath() - xpath.namespaceContext = object : NamespaceContext { - override fun getNamespaceURI(p0: String?): String { - return when (p0) { - "ebics" -> if (withEbics3) "urn:org:ebics:H005" else "urn:org:ebics:H004" - else -> throw IllegalArgumentException() - } - } - - override fun getPrefix(p0: String?): String { - throw UnsupportedOperationException() - } - - override fun getPrefixes(p0: String?): MutableIterator<String> { - throw UnsupportedOperationException() - } - } - val authSigNode = xpath.compile("/*[1]/ebics:AuthSignature").evaluate(doc, XPathConstants.NODE) - if (authSigNode !is Node) - throw java.lang.Exception("no AuthSignature") - val fac = XMLSignatureFactory.getInstance("DOM") - val c14n = fac.newTransform(CanonicalizationMethod.INCLUSIVE, null as TransformParameterSpec?) - val ref: Reference = - fac.newReference( - "#xpointer(//*[@authenticate='true'])", - fac.newDigestMethod(DigestMethod.SHA256, null), - listOf(c14n), - null, - null - ) - val canon: CanonicalizationMethod = - fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, null as C14NMethodParameterSpec?) - val signatureMethod = fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null) - val si: SignedInfo = fac.newSignedInfo(canon, signatureMethod, listOf(ref)) - val sig: XMLSignature = fac.newXMLSignature(si, null) - val dsc = DOMSignContext(signingPriv, authSigNode) - dsc.defaultNamespacePrefix = "ds" - dsc.uriDereferencer = EbicsSigUriDereferencer() - dsc.setProperty("javax.xml.crypto.dsig.cacheReference", true) - sig.sign(dsc) - val innerSig = authSigNode.firstChild - while (innerSig.hasChildNodes()) { - authSigNode.appendChild(innerSig.firstChild) - } - authSigNode.removeChild(innerSig) - } - - 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" -> if (withEbics3) "urn:org:ebics:H005" else "urn:org:ebics:H004" - else -> throw IllegalArgumentException() - } - } - - override fun getPrefix(p0: String?): String { - throw UnsupportedOperationException() - } - - override fun getPrefixes(p0: String?): MutableIterator<String> { - throw UnsupportedOperationException() - } - } - val doc2: Document = doc.cloneNode(true) as Document - val authSigNode = xpath.compile("/*[1]/ebics:AuthSignature").evaluate(doc2, XPathConstants.NODE) - if (authSigNode !is Node) - throw java.lang.Exception("no AuthSignature") - val sigEl = doc2.createElementNS("http://www.w3.org/2000/09/xmldsig#", "ds:Signature") - authSigNode.parentNode.insertBefore(sigEl, authSigNode) - while (authSigNode.hasChildNodes()) { - sigEl.appendChild(authSigNode.firstChild) - } - authSigNode.parentNode.removeChild(authSigNode) - val fac = XMLSignatureFactory.getInstance("DOM") - val dvc = DOMValidateContext(signingPub, sigEl) - dvc.setProperty("javax.xml.crypto.dsig.cacheReference", true) - dvc.uriDereferencer = EbicsSigUriDereferencer() - val sig = fac.unmarshalXMLSignature(dvc) - // FIXME: check that parameters are okay! - val valResult = sig.validate(dvc) - sig.signedInfo.references[0].validate(dvc) - return valResult - } - - fun getNodeFromXpath(doc: Document, query: String): Node { - val xpath = XPathFactory.newInstance().newXPath() - val ret = xpath.evaluate(query, doc, XPathConstants.NODE) - ?: throw EbicsProtocolError(HttpStatusCode.NotFound, "Unsuccessful XPath query string: $query") - return ret as Node - } - - fun getStringFromXpath(doc: Document, query: String): String { - val xpath = XPathFactory.newInstance().newXPath() - val ret = xpath.evaluate(query, doc, XPathConstants.STRING) as String - if (ret.isEmpty()) { - throw EbicsProtocolError(HttpStatusCode.NotFound, "Unsuccessful XPath query string: $query") - } - return ret - } - } -} - -fun Document.pickString(xpath: String): String { - return XMLUtil.getStringFromXpath(this, xpath) -} - -fun Document.pickStringWithRootNs(xpathQuery: String): String { - val doc = this - val xpath = XPathFactory.newInstance().newXPath() - xpath.namespaceContext = object : NamespaceContext { - override fun getNamespaceURI(p0: String?): String { - return when (p0) { - "root" -> doc.documentElement.namespaceURI - else -> throw IllegalArgumentException() - } - } - - override fun getPrefix(p0: String?): String { - throw UnsupportedOperationException() - } - - override fun getPrefixes(p0: String?): MutableIterator<String> { - throw UnsupportedOperationException() - } - } - val ret = xpath.evaluate(xpathQuery, this, XPathConstants.STRING) as String - if (ret.isEmpty()) { - throw EbicsProtocolError(HttpStatusCode.NotFound, "Unsuccessful XPath query string: $xpathQuery") - } - return ret -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/XmlCombinators.kt b/ebics/src/main/kotlin/XmlCombinators.kt @@ -1,143 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2020, 2024 Taler Systems S.A. - * - * 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.ebics - -import org.w3c.dom.Element -import java.io.InputStream -import java.io.StringWriter -import java.time.LocalDate -import java.time.LocalDateTime -import java.time.format.DateTimeFormatter -import javax.xml.stream.XMLOutputFactory -import javax.xml.stream.XMLStreamWriter - -class XmlBuilder(private val w: XMLStreamWriter) { - fun el(path: String, lambda: XmlBuilder.() -> Unit = {}) { - path.splitToSequence('/').forEach { - w.writeStartElement(it) - } - lambda() - path.splitToSequence('/').forEach { - w.writeEndElement() - } - } - - fun el(path: String, content: String) { - el(path) { - text(content) - } - } - - fun attr(name: String, value: String) { - w.writeAttribute(name, value) - } - - fun text(content: String) { - w.writeCharacters(content) - } -} - -fun constructXml(root: String, f: XmlBuilder.() -> Unit): String { - val factory = XMLOutputFactory.newFactory() - val stream = StringWriter() - var writer = factory.createXMLStreamWriter(stream) - /** - * NOTE: commenting out because it wasn't obvious how to output the - * "standalone = 'yes' directive". Manual forge was therefore preferred. - */ - stream.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>") - XmlBuilder(writer).el(root) { - this.f() - } - writer.writeEndDocument() - return stream.buffer.toString() -} - -class DestructionError(m: String) : Exception(m) - -private fun Element.childrenByTag(tag: String): Sequence<Element> = sequence { - for (i in 0..childNodes.length) { - val el = childNodes.item(i) - if (el !is Element) { - continue - } - if (el.localName != tag) { - continue - } - yield(el) - } -} - -class XmlDestructor internal constructor(private val el: Element) { - fun each(path: String, f: XmlDestructor.() -> Unit) { - el.childrenByTag(path).forEach { - f(XmlDestructor(it)) - } - } - - fun <T> map(path: String, f: XmlDestructor.() -> T): List<T> { - return el.childrenByTag(path).map { - f(XmlDestructor(it)) - }.toList() - } - - fun one(path: String): XmlDestructor { - val children = el.childrenByTag(path).iterator() - if (!children.hasNext()) { - throw DestructionError("expected a single $path child, got none instead at $el") - } - val el = children.next() - if (children.hasNext()) { - throw DestructionError("expected a single $path child, got ${children.asSequence() + 1} instead at $el") - } - return XmlDestructor(el) - } - fun opt(path: String): XmlDestructor? { - val children = el.childrenByTag(path).iterator() - if (!children.hasNext()) { - return null - } - val el = children.next() - if (children.hasNext()) { - throw DestructionError("expected an optional $path child, got ${children.asSequence().count() + 1} instead at $el") - } - return XmlDestructor(el) - } - - fun <T> one(path: String, f: XmlDestructor.() -> T): T = f(one(path)) - fun <T> opt(path: String, f: XmlDestructor.() -> T): T? = opt(path)?.run(f) - - fun text(): String = el.textContent - fun bool(): Boolean = el.textContent.toBoolean() - fun date(): LocalDate = LocalDate.parse(text(), DateTimeFormatter.ISO_DATE) - fun dateTime(): LocalDateTime = LocalDateTime.parse(text(), DateTimeFormatter.ISO_DATE_TIME) - inline fun <reified T : Enum<T>> enum(): T = java.lang.Enum.valueOf(T::class.java, text()) - - fun attr(index: String): String = el.getAttribute(index) -} - -fun <T> destructXml(xml: InputStream, root: String, f: XmlDestructor.() -> T): T { - val doc = XMLUtil.parseIntoDom(xml) - if (doc.documentElement.tagName != root) { - throw DestructionError("expected root '$root' got '${doc.documentElement.tagName}'") - } - val destr = XmlDestructor(doc.documentElement) - return f(destr) -} diff --git a/ebics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt b/ebics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt @@ -1,102 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -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 - - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["header", "body"]) -@XmlRootElement(name = "ebicsKeyManagementResponse") -class EbicsKeyManagementResponse { - @get:XmlElement(required = true) - lateinit var header: Header - - @get:XmlElement(required = true) - lateinit var body: Body - - @get:XmlAttribute(name = "Version", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var version: String - - @get:XmlAttribute(name = "Revision") - var revision: Int? = null - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["_static", "mutable"]) - class Header { - @get:XmlElement(name = "static", required = true) - lateinit var _static: EmptyStaticHeader - - @get:XmlElement(required = true) - lateinit var mutable: MutableHeaderType - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["orderID", "returnCode", "reportText"]) - class MutableHeaderType { - @get:XmlElement(name = "OrderID") - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - var orderID: String? = null - - @get:XmlElement(name = "ReturnCode", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var returnCode: String - - @get:XmlElement(name = "ReportText", required = true) - @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class) - @get:XmlSchemaType(name = "normalizedString") - lateinit var reportText: String - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "") - class EmptyStaticHeader - - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["dataTransfer", "returnCode", "timestampBankParameter"]) - class Body { - @get:XmlElement(name = "DataTransfer") - var dataTransfer: DataTransfer? = null - - @get:XmlElement(name = "ReturnCode", required = true) - lateinit var returnCode: ReturnCode - - @get:XmlElement(name = "TimestampBankParameter") - var timestampBankParameter: EbicsTypes.TimestampBankParameter? = null - } - - - @XmlAccessorType(XmlAccessType.NONE) - class ReturnCode { - @get:XmlValue - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var value: String - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["dataEncryptionInfo", "orderData"]) - class DataTransfer { - @get:XmlElement(name = "DataEncryptionInfo") - var dataEncryptionInfo: EbicsTypes.DataEncryptionInfo? = null - - @get:XmlElement(name = "OrderData", required = true) - lateinit var orderData: OrderData - } - - @XmlAccessorType(XmlAccessType.NONE) - class OrderData { - @get:XmlValue - lateinit var value: String - } -} diff --git a/ebics/src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt b/ebics/src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt @@ -1,135 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import org.apache.xml.security.binding.xmldsig.SignatureType -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 = "ebicsNoPubKeyDigestsRequest") -class EbicsNpkdRequest { - @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(required = true) - lateinit var body: EmptyBody - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["static", "mutable"]) - class Header { - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - - @get:XmlElement(name = "static", required = true) - lateinit var static: StaticHeaderType - - @get:XmlElement(required = true) - lateinit var mutable: EmptyMutableHeader - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "StaticHeader", - propOrder = ["hostID", "nonce", "timestamp", "partnerID", "userID", "systemID", "product", "orderDetails", "securityMedium"] - ) - class StaticHeaderType { - @get:XmlElement(name = "HostID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var hostID: String - - @get:XmlElement(name = "Nonce", type = String::class) - @get:XmlJavaTypeAdapter(HexBinaryAdapter::class) - @get:XmlSchemaType(name = "hexBinary") - lateinit var nonce: ByteArray - - @get:XmlElement(name = "Timestamp") - @get:XmlSchemaType(name = "dateTime") - var timestamp: XMLGregorianCalendar? = null - - @get:XmlElement(name = "PartnerID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var partnerID: String - - @get:XmlElement(name = "UserID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var userID: String - - @get:XmlElement(name = "SystemID") - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - var systemID: String? = null - - @get:XmlElement(name = "Product") - val product: EbicsTypes.Product? = null - - @get:XmlElement(name = "OrderDetails", required = true) - lateinit var orderDetails: OrderDetails - - @get:XmlElement(name = "SecurityMedium", required = true) - lateinit var securityMedium: String - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["orderType", "orderAttribute"]) - class OrderDetails { - @get:XmlElement(name = "OrderType", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderType: String - - @get:XmlElement(name = "OrderAttribute", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderAttribute: String - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "") - class EmptyMutableHeader - - @XmlAccessorType(XmlAccessType.NONE) - class EmptyBody - - companion object { - fun createRequest( - hostId: String, - partnerId: String, - userId: String, - aNonce: ByteArray, - date: XMLGregorianCalendar - ): EbicsNpkdRequest { - return EbicsNpkdRequest().apply { - version = "H004" - revision = 1 - header = Header().apply { - authenticate = true - mutable = EmptyMutableHeader() - static = StaticHeaderType().apply { - hostID = hostId - partnerID = partnerId - userID = userId - securityMedium = "0000" - orderDetails = OrderDetails() - orderDetails.orderType = "HPB" - orderDetails.orderAttribute = "DZHNN" - nonce = aNonce - timestamp = date - } - } - body = EmptyBody() - authSignature = SignatureType() - } - } - } -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_h004/EbicsRequest.kt b/ebics/src/main/kotlin/ebics_h004/EbicsRequest.kt @@ -1,504 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import org.apache.xml.security.binding.xmldsig.SignatureType -import tech.libeufin.common.crypto.CryptoUtil -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 EbicsRequest { - @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: EbicsTypes.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: EbicsTypes.TransactionPhaseType - - /** - * Number of the currently transmitted segment, if this message - * contains order data. - */ - @get:XmlElement(name = "SegmentNumber") - var segmentNumber: EbicsTypes.SegmentNumber? = null - - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = ["orderType", "orderID", "orderAttribute", "orderParams"] - ) - class OrderDetails { - @get:XmlElement(name = "OrderType", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderType: String - - /** - * 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 - - @get:XmlElement(name = "OrderAttribute", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderAttribute: String - - /** - * Present only in the initialization phase. - */ - @get:XmlElements( - XmlElement( - name = "StandardOrderParams", - type = StandardOrderParams::class - ), - XmlElement( - name = "GenericOrderParams", - type = GenericOrderParams::class - ) - ) - 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: EbicsTypes.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 = EbicsTypes.Parameter::class) - var parameterList: List<EbicsTypes.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: EbicsTypes.PubKeyDigest - - @get:XmlElement(name = "Encryption") - lateinit var encryption: EbicsTypes.PubKeyDigest - } - - companion object { - fun createForDownloadReceiptPhase( - transactionId: String, - hostId: String, - success: Boolean - ): EbicsRequest { - return EbicsRequest().apply { - header = Header().apply { - version = "H004" - revision = 1 - authenticate = true - static = StaticHeaderType().apply { - hostID = hostId - transactionID = transactionId - } - mutable = MutableHeader().apply { - transactionPhase = EbicsTypes.TransactionPhaseType.RECEIPT - } - } - authSignature = SignatureType() - - body = Body().apply { - transferReceipt = TransferReceipt().apply { - authenticate = true - receiptCode = if (success) 0 else 1 - } - } - } - } - - fun createForDownloadInitializationPhase( - userId: String, - partnerId: String, - hostId: String, - nonceArg: ByteArray, - date: XMLGregorianCalendar, - bankEncPub: RSAPublicKey, - bankAuthPub: RSAPublicKey, - myOrderType: String, - myOrderParams: OrderParams - ): EbicsRequest { - return EbicsRequest().apply { - version = "H004" - 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 { - orderType = myOrderType - orderAttribute = "DZHNN" - orderParams = myOrderParams - } - bankPubKeyDigests = BankPubKeyDigests().apply { - authentication = EbicsTypes.PubKeyDigest().apply { - algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - version = "X002" - value = CryptoUtil.getEbicsPublicKeyHash(bankAuthPub) - } - encryption = EbicsTypes.PubKeyDigest().apply { - algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - version = "E002" - value = CryptoUtil.getEbicsPublicKeyHash(bankEncPub) - } - securityMedium = "0000" - } - } - mutable = MutableHeader().apply { - transactionPhase = - EbicsTypes.TransactionPhaseType.INITIALISATION - } - } - } - } - - fun createForUploadInitializationPhase( - encryptedTransactionKey: ByteArray, - encryptedSignatureData: ByteArray, - hostId: String, - nonceArg: ByteArray, - partnerId: String, - userId: String, - date: XMLGregorianCalendar, - bankAuthPub: RSAPublicKey, - bankEncPub: RSAPublicKey, - segmentsNumber: BigInteger, - aOrderType: String, - aOrderParams: OrderParams - ): EbicsRequest { - - return EbicsRequest().apply { - header = Header().apply { - version = "H004" - revision = 1 - authenticate = true - static = StaticHeaderType().apply { - hostID = hostId - nonce = nonceArg - timestamp = date - partnerID = partnerId - userID = userId - orderDetails = OrderDetails().apply { - orderType = aOrderType - orderAttribute = "OZHNN" - orderParams = aOrderParams - } - bankPubKeyDigests = BankPubKeyDigests().apply { - authentication = EbicsTypes.PubKeyDigest().apply { - algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - version = "X002" - value = CryptoUtil.getEbicsPublicKeyHash(bankAuthPub) - } - encryption = EbicsTypes.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 = - EbicsTypes.TransactionPhaseType.INITIALISATION - } - } - authSignature = SignatureType() - body = Body().apply { - dataTransfer = DataTransfer().apply { - signatureData = SignatureData().apply { - authenticate = true - value = encryptedSignatureData - } - dataEncryptionInfo = EbicsTypes.DataEncryptionInfo().apply { - transactionKey = encryptedTransactionKey - authenticate = true - encryptionPubKeyDigest = EbicsTypes.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 - ): EbicsRequest { - return EbicsRequest().apply { - header = Header().apply { - version = "H004" - revision = 1 - authenticate = true - static = StaticHeaderType().apply { - hostID = hostId - transactionID = transactionId - } - mutable = MutableHeader().apply { - transactionPhase = EbicsTypes.TransactionPhaseType.TRANSFER - segmentNumber = EbicsTypes.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 - ): EbicsRequest { - return EbicsRequest().apply { - version = "H004" - revision = 1 - authSignature = SignatureType() - body = Body() - header = Header().apply { - authenticate = true - static = StaticHeaderType().apply { - this.hostID = hostID - this.transactionID = transactionID - } - mutable = MutableHeader().apply { - transactionPhase = - EbicsTypes.TransactionPhaseType.TRANSFER - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.value = BigInteger.valueOf(segmentNumber.toLong()) - this.lastSegment = segmentNumber == numSegments - } - } - } - } - } - } -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_h004/EbicsResponse.kt b/ebics/src/main/kotlin/ebics_h004/EbicsResponse.kt @@ -1,348 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import org.apache.xml.security.binding.xmldsig.SignatureType -import tech.libeufin.common.crypto.CryptoUtil -import java.math.BigInteger -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 kotlin.math.min - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["header", "authSignature", "body"]) -@XmlRootElement(name = "ebicsResponse") -class EbicsResponse { - @get:XmlAttribute(name = "Version", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var version: String - - @get:XmlAttribute(name = "Revision") - var revision: Int? = null - - @get:XmlElement(required = true) - lateinit var header: Header - - @get:XmlElement(name = "AuthSignature", required = true) - lateinit var authSignature: SignatureType - - @get:XmlElement(required = true) - 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: MutableHeaderType - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["dataTransfer", "returnCode", "timestampBankParameter"]) - class Body { - @get:XmlElement(name = "DataTransfer") - var dataTransfer: DataTransferResponseType? = null - - @get:XmlElement(name = "ReturnCode", required = true) - lateinit var returnCode: ReturnCode - - @get:XmlElement(name = "TimestampBankParameter") - var timestampBankParameter: EbicsTypes.TimestampBankParameter? = null - } - - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = ["transactionPhase", "segmentNumber", "orderID", "returnCode", "reportText"] - ) - class MutableHeaderType { - @get:XmlElement(name = "TransactionPhase", required = true) - @get:XmlSchemaType(name = "token") - lateinit var transactionPhase: EbicsTypes.TransactionPhaseType - - @get:XmlElement(name = "SegmentNumber") - var segmentNumber: EbicsTypes.SegmentNumber? = null - - @get:XmlElement(name = "OrderID") - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - var orderID: String? = null - - @get:XmlElement(name = "ReturnCode", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var returnCode: String - - @get:XmlElement(name = "ReportText", required = true) - @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class) - @get:XmlSchemaType(name = "normalizedString") - lateinit var reportText: String - } - - @XmlAccessorType(XmlAccessType.NONE) - class OrderData { - @get:XmlValue - lateinit var value: String - } - - @XmlAccessorType(XmlAccessType.NONE) - class ReturnCode { - @get:XmlValue - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var value: String - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "DataTransferResponseType", propOrder = ["dataEncryptionInfo", "orderData"]) - class DataTransferResponseType { - @get:XmlElement(name = "DataEncryptionInfo") - var dataEncryptionInfo: EbicsTypes.DataEncryptionInfo? = null - - @get:XmlElement(name = "OrderData", required = true) - lateinit var orderData: OrderData - } - - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "ResponseStaticHeaderType", propOrder = ["transactionID", "numSegments"]) - class StaticHeaderType { - @get:XmlElement(name = "TransactionID") - var transactionID: String? = null - - @get:XmlElement(name = "NumSegments") - @get:XmlSchemaType(name = "positiveInteger") - var numSegments: BigInteger? = null - } - - companion object { - - fun createForUploadWithError( - errorText: String, errorCode: String, phase: EbicsTypes.TransactionPhaseType - ): EbicsResponse { - val resp = EbicsResponse().apply { - this.version = "H004" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this.mutable = MutableHeaderType().apply { - this.reportText = errorText - this.returnCode = errorCode - this.transactionPhase = phase - } - _static = StaticHeaderType() - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = errorCode - } - } - } - return resp - } - - fun createForUploadInitializationPhase(transactionID: String, orderID: String): EbicsResponse { - return EbicsResponse().apply { - this.version = "H004" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.INITIALISATION - this.orderID = orderID - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - } - } - } - - fun createForDownloadReceiptPhase(transactionID: String, positiveAck: Boolean): EbicsResponse { - return EbicsResponse().apply { - this.version = "H004" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.RECEIPT - if (positiveAck) { - this.reportText = "[EBICS_DOWNLOAD_POSTPROCESS_DONE] Received positive receipt" - this.returnCode = "011000" - } else { - this.reportText = "[EBICS_DOWNLOAD_POSTPROCESS_SKIPPED] Received negative receipt" - this.returnCode = "011001" - } - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - } - } - } - - fun createForUploadTransferPhase( - transactionID: String, - segmentNumber: Int, - lastSegment: Boolean, - orderID: String - ): EbicsResponse { - return EbicsResponse().apply { - this.version = "H004" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.TRANSFER - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.value = BigInteger.valueOf(segmentNumber.toLong()) - if (lastSegment) { - this.lastSegment = true - } - } - this.orderID = orderID - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - } - } - } - - /** - * @param requestedSegment requested segment as a 1-based index - */ - fun createForDownloadTransferPhase( - transactionID: String, - numSegments: Int, - segmentSize: Int, - encodedData: String, - requestedSegment: Int - ): EbicsResponse { - return EbicsResponse().apply { - this.version = "H004" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - this.numSegments = BigInteger.valueOf(numSegments.toLong()) - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.TRANSFER - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.lastSegment = numSegments == requestedSegment - this.value = BigInteger.valueOf(requestedSegment.toLong()) - } - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - this.dataTransfer = DataTransferResponseType().apply { - this.orderData = OrderData().apply { - val start = segmentSize * (requestedSegment - 1) - this.value = encodedData.substring(start, min(start + segmentSize, encodedData.length)) - } - } - } - } - } - - fun createForDownloadInitializationPhase( - transactionID: String, - numSegments: Int, - segmentSize: Int, - enc: CryptoUtil.EncryptionResult, - encodedData: String - ): EbicsResponse { - return EbicsResponse().apply { - this.version = "H004" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - this.numSegments = BigInteger.valueOf(numSegments.toLong()) - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.INITIALISATION - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.lastSegment = (numSegments == 1) - this.value = BigInteger.valueOf(1) - } - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - this.dataTransfer = DataTransferResponseType().apply { - this.dataEncryptionInfo = EbicsTypes.DataEncryptionInfo().apply { - this.authenticate = true - this.encryptionPubKeyDigest = EbicsTypes.PubKeyDigest() - .apply { - this.algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - this.version = "E002" - this.value = enc.pubKeyDigest - } - this.transactionKey = enc.encryptedTransactionKey - } - this.orderData = OrderData().apply { - this.value = encodedData.substring(0, min(segmentSize, encodedData.length)) - } - } - } - } - } - } -} diff --git a/ebics/src/main/kotlin/ebics_h004/EbicsTypes.kt b/ebics/src/main/kotlin/ebics_h004/EbicsTypes.kt @@ -1,402 +0,0 @@ -/* - * 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.ebics.ebics_h004 - -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 EbicsTypes { - /** - * 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/ebics/src/main/kotlin/ebics_h004/EbicsUnsecuredRequest.kt b/ebics/src/main/kotlin/ebics_h004/EbicsUnsecuredRequest.kt @@ -1,223 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import org.apache.xml.security.binding.xmldsig.RSAKeyValueType -import tech.libeufin.ebics.EbicsOrderUtil -import tech.libeufin.ebics.ebics_s001.SignatureTypes -import java.security.interfaces.RSAPrivateCrtKey -import javax.xml.bind.annotation.* -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["header", "body"]) -@XmlRootElement(name = "ebicsUnsecuredRequest") -class EbicsUnsecuredRequest { - @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(required = true) - lateinit var body: Body - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["static", "mutable"]) - class Header { - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "") - class EmptyMutableHeader - - @get:XmlElement(name = "static", required = true) - lateinit var static: StaticHeaderType - - @get:XmlElement(required = true) - lateinit var mutable: EmptyMutableHeader - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["dataTransfer"]) - class Body { - @get:XmlElement(name = "DataTransfer", required = true) - lateinit var dataTransfer: UnsecuredDataTransfer - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["orderData"]) - class UnsecuredDataTransfer { - @get:XmlElement(name = "OrderData", required = true) - lateinit var orderData: OrderData - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "") - class OrderData { - @get:XmlValue - lateinit var value: ByteArray - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = ["hostID", "partnerID", "userID", "systemID", "product", "orderDetails", "securityMedium"] - ) - class StaticHeaderType { - @get:XmlElement(name = "HostID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var hostID: String - - @get:XmlElement(name = "PartnerID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var partnerID: String - - @get:XmlElement(name = "UserID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var userID: String - - @get:XmlElement(name = "SystemID") - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - var systemID: String? = null - - @get:XmlElement(name = "Product") - val product: EbicsTypes.Product? = null - - @get:XmlElement(name = "OrderDetails", required = true) - lateinit var orderDetails: OrderDetails - - @get:XmlElement(name = "SecurityMedium", required = true) - lateinit var securityMedium: String - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["orderType", "orderAttribute"]) - class OrderDetails { - @get:XmlElement(name = "OrderType", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderType: String - - @get:XmlElement(name = "OrderAttribute", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderAttribute: String - } - - companion object { - - fun createHia( - hostId: String, - userId: String, - partnerId: String, - authKey: RSAPrivateCrtKey, - encKey: RSAPrivateCrtKey - - ): EbicsUnsecuredRequest { - - return EbicsUnsecuredRequest().apply { - - version = "H004" - revision = 1 - header = Header().apply { - authenticate = true - static = StaticHeaderType().apply { - orderDetails = OrderDetails().apply { - orderAttribute = "DZNNN" - orderType = "HIA" - securityMedium = "0000" - hostID = hostId - userID = userId - partnerID = partnerId - } - } - mutable = Header.EmptyMutableHeader() - } - body = Body().apply { - dataTransfer = UnsecuredDataTransfer().apply { - orderData = OrderData().apply { - value = EbicsOrderUtil.encodeOrderDataXml( - HIARequestOrderData().apply { - authenticationPubKeyInfo = EbicsTypes.AuthenticationPubKeyInfoType() - .apply { - pubKeyValue = EbicsTypes.PubKeyValueType().apply { - rsaKeyValue = RSAKeyValueType().apply { - exponent = authKey.publicExponent.toByteArray() - modulus = authKey.modulus.toByteArray() - } - } - authenticationVersion = "X002" - } - encryptionPubKeyInfo = EbicsTypes.EncryptionPubKeyInfoType() - .apply { - pubKeyValue = EbicsTypes.PubKeyValueType().apply { - rsaKeyValue = RSAKeyValueType().apply { - exponent = encKey.publicExponent.toByteArray() - modulus = encKey.modulus.toByteArray() - } - } - encryptionVersion = "E002" - - } - partnerID = partnerId - userID = userId - } - ) - } - } - } - } - } - - fun createIni( - hostId: String, - userId: String, - partnerId: String, - signKey: RSAPrivateCrtKey - - ): EbicsUnsecuredRequest { - return EbicsUnsecuredRequest().apply { - version = "H004" - revision = 1 - header = Header().apply { - authenticate = true - static = StaticHeaderType().apply { - orderDetails = OrderDetails().apply { - orderAttribute = "DZNNN" - orderType = "INI" - securityMedium = "0000" - hostID = hostId - userID = userId - partnerID = partnerId - } - } - mutable = Header.EmptyMutableHeader() - } - body = Body().apply { - dataTransfer = UnsecuredDataTransfer().apply { - orderData = OrderData().apply { - value = EbicsOrderUtil.encodeOrderDataXml( - SignatureTypes.SignaturePubKeyOrderData().apply { - signaturePubKeyInfo = SignatureTypes.SignaturePubKeyInfoType().apply { - signatureVersion = "A006" - pubKeyValue = SignatureTypes.PubKeyValueType().apply { - rsaKeyValue = RSAKeyValueType().apply { - exponent = signKey.publicExponent.toByteArray() - modulus = signKey.modulus.toByteArray() - } - } - } - userID = userId - partnerID = partnerId - } - ) - } - } - } - } - } - } -} diff --git a/ebics/src/main/kotlin/ebics_h004/HIARequestOrderData.kt b/ebics/src/main/kotlin/ebics_h004/HIARequestOrderData.kt @@ -1,33 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import javax.xml.bind.annotation.* -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter - - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType( - name = "HIARequestOrderDataType", - propOrder = ["authenticationPubKeyInfo", "encryptionPubKeyInfo", "partnerID", "userID", "any"] -) -@XmlRootElement(name = "HIARequestOrderData") -class HIARequestOrderData { - @get:XmlElement(name = "AuthenticationPubKeyInfo", required = true) - lateinit var authenticationPubKeyInfo: EbicsTypes.AuthenticationPubKeyInfoType - - @get:XmlElement(name = "EncryptionPubKeyInfo", required = true) - lateinit var encryptionPubKeyInfo: EbicsTypes.EncryptionPubKeyInfoType - - @get:XmlElement(name = "PartnerID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var partnerID: String - - @get:XmlElement(name = "UserID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var userID: String - - @get:XmlAnyElement(lax = true) - var any: List<Any>? = null -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_h004/HKDResponseOrderData.kt b/ebics/src/main/kotlin/ebics_h004/HKDResponseOrderData.kt @@ -1,14 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import javax.xml.bind.annotation.* - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["partnerInfo", "userInfoList"]) -@XmlRootElement(name = "HTDResponseOrderData") -class HKDResponseOrderData { - @get:XmlElement(name = "PartnerInfo", required = true) - lateinit var partnerInfo: EbicsTypes.PartnerInfo - - @get:XmlElement(name = "UserInfo", type = EbicsTypes.UserInfo::class, required = true) - lateinit var userInfoList: List<EbicsTypes.UserInfo> -} diff --git a/ebics/src/main/kotlin/ebics_h004/HPBResponseOrderData.kt b/ebics/src/main/kotlin/ebics_h004/HPBResponseOrderData.kt @@ -1,21 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import javax.xml.bind.annotation.* -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter - - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["authenticationPubKeyInfo", "encryptionPubKeyInfo", "hostID"]) -@XmlRootElement(name = "HPBResponseOrderData") -class HPBResponseOrderData { - @get:XmlElement(name = "AuthenticationPubKeyInfo", required = true) - lateinit var authenticationPubKeyInfo: EbicsTypes.AuthenticationPubKeyInfoType - - @get:XmlElement(name = "EncryptionPubKeyInfo", required = true) - lateinit var encryptionPubKeyInfo: EbicsTypes.EncryptionPubKeyInfoType - - @get:XmlElement(name = "HostID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var hostID: String -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_h004/HTDResponseOrderData.kt b/ebics/src/main/kotlin/ebics_h004/HTDResponseOrderData.kt @@ -1,14 +0,0 @@ -package tech.libeufin.ebics.ebics_h004 - -import javax.xml.bind.annotation.* - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["partnerInfo", "userInfo"]) -@XmlRootElement(name = "HTDResponseOrderData") -class HTDResponseOrderData { - @get:XmlElement(name = "PartnerInfo", required = true) - lateinit var partnerInfo: EbicsTypes.PartnerInfo - - @get:XmlElement(name = "UserInfo", required = true) - lateinit var userInfo: EbicsTypes.UserInfo -} diff --git a/ebics/src/main/kotlin/ebics_h004/package-info.java b/ebics/src/main/kotlin/ebics_h004/package-info.java @@ -1,13 +0,0 @@ -/** - * This package-info.java file defines the default namespace for the JAXB bindings - * defined in the package. - */ - -@XmlSchema( - namespace = "urn:org:ebics:H004", - elementFormDefault = XmlNsForm.QUALIFIED -) -package tech.libeufin.ebics.ebics_h004; - -import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_h005/Ebics3Request.kt b/ebics/src/main/kotlin/ebics_h005/Ebics3Request.kt @@ -1,587 +0,0 @@ -package tech.libeufin.ebics.ebics_h005 - -import org.apache.xml.security.binding.xmldsig.SignatureType -import tech.libeufin.common.crypto.CryptoUtil -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", "serviceOption", "container", "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 - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["value"]) - class MessageName { - @XmlValue - lateinit var value: String - - @XmlAttribute(name = "version") - var version: String? = null - } - - @get:XmlElement(name = "MsgName", required = true) - lateinit var messageName: MessageName - - @get:XmlElement(name = "ServiceOption", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - var serviceOption: String? = null - - @XmlAccessorType(XmlAccessType.NONE) - class Container { - @XmlAttribute(name = "containerType") - lateinit var containerType: String - } - - @get:XmlElement(name = "Container", required = true) - var container: Container? = null - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(propOrder = ["service", "signatureFlag", "dateRange"]) - class BTUOrderParams { - @get:XmlElement(name = "Service", required = true) - lateinit var service: Service - - /** - * This element activates the ES signature scheme (disabling - * hence the EDS). It *would* admit a @requestEDS attribute, - * but its omission means false. - */ - @get:XmlElement(name = "SignatureFlag", required = true) - var signatureFlag: Boolean = true - - @get:XmlElement(name = "DateRange", required = true) - var dateRange: DateRange? = null - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(propOrder = ["service", "dateRange"]) - class BTDOrderParams { - @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: BTUOrderParams? = null - - @get:XmlElement(name = "BTDOrderParams", required = true) - var btdOrderParams: BTDOrderParams? = 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", "dataDigest", "orderData", "hostId"]) - class DataTransfer { - - @get:XmlElement(name = "DataEncryptionInfo") - var dataEncryptionInfo: Ebics3Types.DataEncryptionInfo? = null - - @get:XmlElement(name = "SignatureData") - var signatureData: SignatureData? = null - - @XmlAccessorType(XmlAccessType.NONE) - class DataDigest { - @get:XmlAttribute(name = "SignatureVersion", required = true) - var signatureVersion: String = "A006" - - @get:XmlValue - var value: ByteArray? = null - } - - @get:XmlElement(name = "DataDigest") - var dataDigest: DataDigest? = 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, - success: Boolean - ): 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 = if (success) 0 else 1 - } - } - } - } - - fun createForDownloadInitializationPhase( - userId: String, - partnerId: String, - hostId: String, - nonceArg: ByteArray, - date: XMLGregorianCalendar, - bankEncPub: RSAPublicKey, - bankAuthPub: RSAPublicKey, - myOrderParams: OrderDetails.BTDOrderParams - ): 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 = myOrderParams - } - 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, - aDataDigest: ByteArray, - hostId: String, - nonceArg: ByteArray, - partnerId: String, - userId: String, - date: XMLGregorianCalendar, - bankAuthPub: RSAPublicKey, - bankEncPub: RSAPublicKey, - segmentsNumber: BigInteger, - aOrderService: OrderDetails.Service, - ): 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.btuOrderParams = OrderDetails.BTUOrderParams().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 - } - dataDigest = DataTransfer.DataDigest().apply { - value = aDataDigest - } - 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/ebics/src/main/kotlin/ebics_h005/Ebics3Response.kt b/ebics/src/main/kotlin/ebics_h005/Ebics3Response.kt @@ -1,347 +0,0 @@ -package tech.libeufin.ebics.ebics_h005 - -import org.apache.xml.security.binding.xmldsig.SignatureType -import tech.libeufin.common.crypto.CryptoUtil -import tech.libeufin.ebics.ebics_h004.EbicsTypes -import java.math.BigInteger -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 kotlin.math.min - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(name = "", propOrder = ["header", "authSignature", "body"]) -@XmlRootElement(name = "ebicsResponse") -class Ebics3Response { - @get:XmlAttribute(name = "Version", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var version: String - - @get:XmlAttribute(name = "Revision") - var revision: Int? = null - - @get:XmlElement(required = true) - lateinit var header: Header - - @get:XmlElement(name = "AuthSignature", required = true) - lateinit var authSignature: SignatureType - - @get:XmlElement(required = true) - 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: MutableHeaderType - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["dataTransfer", "returnCode", "timestampBankParameter"]) - class Body { - @get:XmlElement(name = "DataTransfer") - var dataTransfer: DataTransferResponseType? = null - - @get:XmlElement(name = "ReturnCode", required = true) - lateinit var returnCode: ReturnCode - - @get:XmlElement(name = "TimestampBankParameter") - var timestampBankParameter: EbicsTypes.TimestampBankParameter? = null - } - - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = ["transactionPhase", "segmentNumber", "orderID", "returnCode", "reportText"] - ) - class MutableHeaderType { - @get:XmlElement(name = "TransactionPhase", required = true) - @get:XmlSchemaType(name = "token") - lateinit var transactionPhase: EbicsTypes.TransactionPhaseType - - @get:XmlElement(name = "SegmentNumber") - var segmentNumber: EbicsTypes.SegmentNumber? = null - - @get:XmlElement(name = "OrderID") - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - var orderID: String? = null - - @get:XmlElement(name = "ReturnCode", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var returnCode: String - - @get:XmlElement(name = "ReportText", required = true) - @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class) - @get:XmlSchemaType(name = "normalizedString") - lateinit var reportText: String - } - - @XmlAccessorType(XmlAccessType.NONE) - class OrderData { - @get:XmlValue - lateinit var value: String - } - - @XmlAccessorType(XmlAccessType.NONE) - class ReturnCode { - @get:XmlValue - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var value: String - - @get:XmlAttribute(name = "authenticate", required = true) - var authenticate: Boolean = false - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "DataTransferResponseType", propOrder = ["dataEncryptionInfo", "orderData"]) - class DataTransferResponseType { - @get:XmlElement(name = "DataEncryptionInfo") - var dataEncryptionInfo: Ebics3Types.DataEncryptionInfo? = null - - @get:XmlElement(name = "OrderData", required = true) - lateinit var orderData: OrderData - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "ResponseStaticHeaderType", propOrder = ["transactionID", "numSegments"]) - class StaticHeaderType { - @get:XmlElement(name = "TransactionID") - var transactionID: String? = null - - @get:XmlElement(name = "NumSegments") - @get:XmlSchemaType(name = "positiveInteger") - var numSegments: BigInteger? = null - } - - companion object { - - fun createForUploadWithError( - errorText: String, errorCode: String, phase: EbicsTypes.TransactionPhaseType - ): Ebics3Response { - val resp = Ebics3Response().apply { - this.version = "H005" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this.mutable = MutableHeaderType().apply { - this.reportText = errorText - this.returnCode = errorCode - this.transactionPhase = phase - } - _static = StaticHeaderType() - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = errorCode - } - } - } - return resp - } - - fun createForUploadInitializationPhase(transactionID: String, orderID: String): Ebics3Response { - return Ebics3Response().apply { - this.version = "H005" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.INITIALISATION - this.orderID = orderID - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - } - } - } - - fun createForDownloadReceiptPhase(transactionID: String, positiveAck: Boolean): Ebics3Response { - return Ebics3Response().apply { - this.version = "H005" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.RECEIPT - if (positiveAck) { - this.reportText = "[EBICS_DOWNLOAD_POSTPROCESS_DONE] Received positive receipt" - this.returnCode = "011000" - } else { - this.reportText = "[EBICS_DOWNLOAD_POSTPROCESS_SKIPPED] Received negative receipt" - this.returnCode = "011001" - } - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - } - } - } - - fun createForUploadTransferPhase( - transactionID: String, - segmentNumber: Int, - lastSegment: Boolean, - orderID: String - ): Ebics3Response { - return Ebics3Response().apply { - this.version = "H005" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.TRANSFER - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.value = BigInteger.valueOf(segmentNumber.toLong()) - if (lastSegment) { - this.lastSegment = true - } - } - this.orderID = orderID - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - } - } - } - - /** - * @param requestedSegment requested segment as a 1-based index - */ - fun createForDownloadTransferPhase( - transactionID: String, - numSegments: Int, - segmentSize: Int, - encodedData: String, - requestedSegment: Int - ): Ebics3Response { - return Ebics3Response().apply { - this.version = "H005" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - this.numSegments = BigInteger.valueOf(numSegments.toLong()) - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.TRANSFER - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.lastSegment = numSegments == requestedSegment - this.value = BigInteger.valueOf(requestedSegment.toLong()) - } - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - this.dataTransfer = DataTransferResponseType().apply { - this.orderData = OrderData().apply { - val start = segmentSize * (requestedSegment - 1) - this.value = encodedData.substring(start, min(start + segmentSize, encodedData.length)) - } - } - } - } - } - fun createForDownloadInitializationPhase( - transactionID: String, - numSegments: Int, - segmentSize: Int, - enc: CryptoUtil.EncryptionResult, - encodedData: String - ): Ebics3Response { - return Ebics3Response().apply { - this.version = "H005" - this.revision = 1 - this.header = Header().apply { - this.authenticate = true - this._static = StaticHeaderType().apply { - this.transactionID = transactionID - this.numSegments = BigInteger.valueOf(numSegments.toLong()) - } - this.mutable = MutableHeaderType().apply { - this.transactionPhase = - EbicsTypes.TransactionPhaseType.INITIALISATION - this.segmentNumber = EbicsTypes.SegmentNumber().apply { - this.lastSegment = (numSegments == 1) - this.value = BigInteger.valueOf(1) - } - this.reportText = "[EBICS_OK] OK" - this.returnCode = "000000" - } - } - this.authSignature = SignatureType() - this.body = Body().apply { - this.returnCode = ReturnCode().apply { - this.authenticate = true - this.value = "000000" - } - this.dataTransfer = DataTransferResponseType().apply { - this.dataEncryptionInfo = Ebics3Types.DataEncryptionInfo().apply { - this.authenticate = true - this.encryptionPubKeyDigest = Ebics3Types.PubKeyDigest() - .apply { - this.algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - this.version = "E002" - this.value = enc.pubKeyDigest - } - this.transactionKey = enc.encryptedTransactionKey - } - this.orderData = OrderData().apply { - this.value = encodedData.substring(0, min(segmentSize, encodedData.length)) - } - } - } - } - } - } -} diff --git a/ebics/src/main/kotlin/ebics_h005/Ebics3Types.kt b/ebics/src/main/kotlin/ebics_h005/Ebics3Types.kt @@ -1,401 +0,0 @@ -/* - * 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.ebics.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/ebics/src/main/kotlin/ebics_h005/package-info.java b/ebics/src/main/kotlin/ebics_h005/package-info.java @@ -1,13 +0,0 @@ -/** - * 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.ebics.ebics_h005; - -import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_hev/EbicsMessages.kt b/ebics/src/main/kotlin/ebics_hev/EbicsMessages.kt @@ -1,92 +0,0 @@ -/* - * 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.ebics.ebics_hev - -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 - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType( - name = "HEVRequestDataType" -) -@XmlRootElement(name = "ebicsHEVRequest") -class HEVRequest{ - @get:XmlElement(name = "HostID", required = true) - lateinit var hostId: String -} - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType( - name = "HEVResponseDataType", - propOrder = ["systemReturnCode", "versionNumber", "any"] -) -@XmlRootElement(name = "ebicsHEVResponse") -class HEVResponse { - @get:XmlElement(name = "SystemReturnCode", required = true) - lateinit var systemReturnCode: SystemReturnCodeType - - @get:XmlElement(name = "VersionNumber", namespace = "http://www.ebics.org/H000") - var versionNumber: List<VersionNumber> = LinkedList() - - @get:XmlAnyElement(lax = true) - var any: List<Any>? = null - - @XmlAccessorType(XmlAccessType.NONE) - class VersionNumber { - @get:XmlValue - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var value: String - - @get:XmlAttribute(name = "ProtocolVersion", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var protocolVersion: String - - companion object { - fun create(protocolVersion: String, versionNumber: String): VersionNumber { - return VersionNumber().apply { - this.protocolVersion = protocolVersion - this.value = versionNumber - } - } - } - } -} - - -@XmlAccessorType(XmlAccessType.NONE) -@XmlType( - name = "SystemReturnCodeType", - propOrder = [ - "returnCode", - "reportText" - ] -) -class SystemReturnCodeType { - @get:XmlElement(name = "ReturnCode", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var returnCode: String - - @get:XmlElement(name = "ReportText", required = true) - @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class) - lateinit var reportText: String -} diff --git a/ebics/src/main/kotlin/ebics_hev/package-info.java b/ebics/src/main/kotlin/ebics_hev/package-info.java @@ -1,13 +0,0 @@ -/** - * This package-info.java file defines the default namespace for the JAXB bindings - * defined in the package. - */ - -@XmlSchema( - namespace = "http://www.ebics.org/H000", - elementFormDefault = XmlNsForm.QUALIFIED -) -package tech.libeufin.ebics.ebics_hev; - -import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; diff --git a/ebics/src/main/kotlin/ebics_s001/SignatureTypes.kt b/ebics/src/main/kotlin/ebics_s001/SignatureTypes.kt @@ -1,92 +0,0 @@ -/* - * 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.ebics.ebics_s001 - -import org.apache.xml.security.binding.xmldsig.RSAKeyValueType -import org.apache.xml.security.binding.xmldsig.X509DataType -import javax.xml.bind.annotation.* -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter -import javax.xml.datatype.XMLGregorianCalendar - - -object SignatureTypes { - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "PubKeyValueType", namespace = "http://www.ebics.org/S001", propOrder = [ - "rsaKeyValue", - "timeStamp" - ] - ) - class PubKeyValueType { - @get:XmlElement(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true) - lateinit var rsaKeyValue: RSAKeyValueType - - @get:XmlElement(name = "TimeStamp") - @get:XmlSchemaType(name = "dateTime") - var timeStamp: XMLGregorianCalendar? = null - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = [ - "x509Data", - "pubKeyValue", - "signatureVersion" - ] - ) - class SignaturePubKeyInfoType { - @get:XmlElement(name = "X509Data") - var x509Data: X509DataType? = null - - @get:XmlElement(name = "PubKeyValue", required = true) - lateinit var pubKeyValue: PubKeyValueType - - @get:XmlElement(name = "SignatureVersion", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var signatureVersion: String - } - - /** - * EBICS INI payload. - */ - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = ["signaturePubKeyInfo", "partnerID", "userID"] - ) - @XmlRootElement(name = "SignaturePubKeyOrderData") - class SignaturePubKeyOrderData { - @get:XmlElement(name = "SignaturePubKeyInfo", required = true) - lateinit var signaturePubKeyInfo: SignaturePubKeyInfoType - - @get:XmlElement(name = "PartnerID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var partnerID: String - - @get:XmlElement(name = "UserID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var userID: String - } -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_s001/UserSignatureData.kt b/ebics/src/main/kotlin/ebics_s001/UserSignatureData.kt @@ -1,27 +0,0 @@ -package tech.libeufin.ebics.ebics_s001 - -import javax.xml.bind.annotation.* - -@XmlAccessorType(XmlAccessType.NONE) -@XmlRootElement(name = "UserSignatureData") -@XmlType(name = "", propOrder = ["orderSignatureList"]) -class UserSignatureData { - @XmlElement(name = "OrderSignatureData", type = OrderSignatureData::class) - var orderSignatureList: List<OrderSignatureData>? = null - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["signatureVersion", "signatureValue", "partnerID", "userID"]) - class OrderSignatureData { - @XmlElement(name = "SignatureVersion") - lateinit var signatureVersion: String - - @XmlElement(name = "SignatureValue") - lateinit var signatureValue: ByteArray - - @XmlElement(name = "PartnerID") - lateinit var partnerID: String - - @XmlElement(name = "UserID") - lateinit var userID: String - } -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_s001/package-info.java b/ebics/src/main/kotlin/ebics_s001/package-info.java @@ -1,13 +0,0 @@ -/** - * This package-info.java file defines the default namespace for the JAXB bindings - * defined in the package. - */ - -@XmlSchema( - namespace = "http://www.ebics.org/S001", - elementFormDefault = XmlNsForm.QUALIFIED -) -package tech.libeufin.ebics.ebics_s001; - -import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_s002/SignatureTypes.kt b/ebics/src/main/kotlin/ebics_s002/SignatureTypes.kt @@ -1,91 +0,0 @@ -/* - * 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.ebics.ebics_s002 - -import org.apache.xml.security.binding.xmldsig.RSAKeyValueType -import org.apache.xml.security.binding.xmldsig.X509DataType -import javax.xml.bind.annotation.* -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter -import javax.xml.datatype.XMLGregorianCalendar - - -object SignatureTypes { - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "PubKeyValueType", namespace = "http://www.ebics.org/S002", propOrder = [ - "rsaKeyValue", - "timeStamp" - ] - ) - class PubKeyValueType { - @get:XmlElement(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true) - lateinit var rsaKeyValue: RSAKeyValueType - - @get:XmlElement(name = "TimeStamp") - @get:XmlSchemaType(name = "dateTime") - var timeStamp: XMLGregorianCalendar? = null - } - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = [ - "x509Data", - "pubKeyValue", - "signatureVersion" - ] - ) - class SignaturePubKeyInfoType { - @get:XmlElement(name = "X509Data") - var x509Data: X509DataType? = null - - @get:XmlElement(name = "PubKeyValue", required = true) - lateinit var pubKeyValue: PubKeyValueType - - @get:XmlElement(name = "SignatureVersion", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var signatureVersion: String - } - - /** - * EBICS INI payload. - */ - @XmlAccessorType(XmlAccessType.NONE) - @XmlType( - name = "", - propOrder = ["signaturePubKeyInfo", "partnerID", "userID"] - ) - @XmlRootElement(name = "SignaturePubKeyOrderData") - class SignaturePubKeyOrderData { - @get:XmlElement(name = "SignaturePubKeyInfo", required = true) - lateinit var signaturePubKeyInfo: SignaturePubKeyInfoType - - @get:XmlElement(name = "PartnerID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var partnerID: String - - @get:XmlElement(name = "UserID", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - @get:XmlSchemaType(name = "token") - lateinit var userID: String - } -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_s002/UserSignatureDataEbics3.kt b/ebics/src/main/kotlin/ebics_s002/UserSignatureDataEbics3.kt @@ -1,27 +0,0 @@ -package tech.libeufin.ebics.ebics_s002 - -import javax.xml.bind.annotation.* - -@XmlAccessorType(XmlAccessType.NONE) -@XmlRootElement(name = "UserSignatureData") -@XmlType(name = "", propOrder = ["orderSignatureList"]) -class UserSignatureDataEbics3 { - @XmlElement(name = "OrderSignatureData", type = OrderSignatureData::class) - var orderSignatureList: List<OrderSignatureData>? = null - - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["signatureVersion", "signatureValue", "partnerID", "userID"]) - class OrderSignatureData { - @XmlElement(name = "SignatureVersion") - lateinit var signatureVersion: String - - @XmlElement(name = "SignatureValue") - lateinit var signatureValue: ByteArray - - @XmlElement(name = "PartnerID") - lateinit var partnerID: String - - @XmlElement(name = "UserID") - lateinit var userID: String - } -} -\ No newline at end of file diff --git a/ebics/src/main/kotlin/ebics_s002/package-info.java b/ebics/src/main/kotlin/ebics_s002/package-info.java @@ -1,13 +0,0 @@ -/** - * This package-info.java file defines the default namespace for the JAXB bindings - * defined in the package. - */ - -@XmlSchema( - namespace = "http://www.ebics.org/S002", - elementFormDefault = XmlNsForm.QUALIFIED -) -package tech.libeufin.ebics.ebics_s002; - -import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; -\ No newline at end of file diff --git a/ebics/src/main/resources/version.txt b/ebics/src/main/resources/version.txt @@ -1 +0,0 @@ -v0.9.4-git-8aeffb3f -\ No newline at end of file diff --git a/ebics/src/main/resources/xsd/camt.052.001.02.xsd b/ebics/src/main/resources/xsd/camt.052.001.02.xsd @@ -1,1299 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Mit XMLSpy v2008 rel. 2 (http://www.altova.com) von Wenzel (SIZ Bonn) bearbeitet --> -<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53--> -<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:camt.052.001.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:camt.052.001.02" elementFormDefault="qualified"> - <xs:element name="Document" type="Document"/> - <xs:complexType name="AccountIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountInterest2"> - <xs:sequence> - <xs:element name="Tp" type="InterestType1Choice" minOccurs="0"/> - <xs:element name="Rate" type="Rate3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="Rsn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountReport11"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="ElctrncSeqNb" type="Number" minOccurs="0"/> - <xs:element name="LglSeqNb" type="Number" minOccurs="0"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="CpyDplctInd" type="CopyDuplicate1Code" minOccurs="0"/> - <xs:element name="RptgSrc" type="ReportingSource1Choice" minOccurs="0"/> - <xs:element name="Acct" type="CashAccount20"/> - <xs:element name="RltdAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="Intrst" type="AccountInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Bal" type="CashBalance3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TxsSummry" type="TotalTransactions2" minOccurs="0"/> - <xs:element name="Ntry" type="ReportEntry2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AddtlRptInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,13}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="PBOX"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="DLVY"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AlternateSecurityIdentification2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Id" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchange3"> - <xs:sequence> - <xs:element name="InstdAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="TxAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="CntrValAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="AnncdPstngAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="PrtryAmt" type="AmountAndCurrencyExchangeDetails4" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchangeDetails3"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyXchg" type="CurrencyExchange5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchangeDetails4"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyXchg" type="CurrencyExchange5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountRangeBoundary1"> - <xs:sequence> - <xs:element name="BdryAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="Incl" type="YesNoIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AnyBICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BalanceSubType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalBalanceSubType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BalanceType12"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="BalanceType5Choice"/> - <xs:element name="SubTp" type="BalanceSubType1Choice" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="BalanceType12Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="XPCD"/> - <xs:enumeration value="OPAV"/> - <xs:enumeration value="ITAV"/> - <xs:enumeration value="CLAV"/> - <xs:enumeration value="FWAV"/> - <xs:enumeration value="CLBD"/> - <xs:enumeration value="ITBD"/> - <xs:enumeration value="OPBD"/> - <xs:enumeration value="PRCD"/> - <xs:enumeration value="INFO"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BalanceType5Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="BalanceType12Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankToCustomerAccountReportV02"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader42"/> - <xs:element name="Rpt" type="AccountReport11" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure4"> - <xs:sequence> - <xs:element name="Domn" type="BankTransactionCodeStructure5" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryBankTransactionCodeStructure1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure5"> - <xs:sequence> - <xs:element name="Cd" type="ExternalBankTransactionDomain1Code"/> - <xs:element name="Fmly" type="BankTransactionCodeStructure6"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure6"> - <xs:sequence> - <xs:element name="Cd" type="ExternalBankTransactionFamily1Code"/> - <xs:element name="SubFmlyCd" type="ExternalBankTransactionSubFamily1Code"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BatchInformation2"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - <xs:element name="PmtInfId" type="Max35Text" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/> - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchData2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount16"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount20"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="Ownr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Svcr" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccountType2"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="CashAccountType4Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CashAccountType4Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CASH"/> - <xs:enumeration value="CHAR"/> - <xs:enumeration value="COMM"/> - <xs:enumeration value="TAXE"/> - <xs:enumeration value="CISH"/> - <xs:enumeration value="TRAS"/> - <xs:enumeration value="SACC"/> - <xs:enumeration value="CACC"/> - <xs:enumeration value="SVGS"/> - <xs:enumeration value="ONDP"/> - <xs:enumeration value="MGLD"/> - <xs:enumeration value="NREX"/> - <xs:enumeration value="MOMA"/> - <xs:enumeration value="LOAN"/> - <xs:enumeration value="SLRY"/> - <xs:enumeration value="ODFT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CashBalance3"> - <xs:sequence> - <xs:element name="Tp" type="BalanceType12"/> - <xs:element name="CdtLine" type="CreditLine2" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="Dt" type="DateAndDateTimeChoice"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashBalanceAvailability2"> - <xs:sequence> - <xs:element name="Dt" type="CashBalanceAvailabilityDate1"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashBalanceAvailabilityDate1"> - <xs:sequence> - <xs:choice> - <xs:element name="NbOfDays" type="Max15PlusSignedNumericText"/> - <xs:element name="ActlDt" type="ISODate"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ChargeType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BRKF"/> - <xs:enumeration value="COMM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChargeType2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ChargeType1Code"/> - <xs:element name="Prtry" type="GenericIdentification3"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ChargesInformation6"> - <xs:sequence> - <xs:element name="TtlChrgsAndTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Tp" type="ChargeType2Choice" minOccurs="0"/> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="Br" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="Pty" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="Tax" type="TaxCharges2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ContactDetails2"> - <xs:sequence> - <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="Othr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CopyDuplicate1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CODU"/> - <xs:enumeration value="COPY"/> - <xs:enumeration value="DUPL"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CorporateAction1"> - <xs:sequence> - <xs:element name="Cd" type="Max35Text" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="Prtry" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditLine2"> - <xs:sequence> - <xs:element name="Incl" type="TrueFalseIndicator"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> - <xs:element name="Ref" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyAndAmountRange2"> - <xs:sequence> - <xs:element name="Amt" type="ImpliedCurrencyAmountRangeChoice"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyExchange5"> - <xs:sequence> - <xs:element name="SrcCcy" type="ActiveOrHistoricCurrencyCode"/> - <xs:element name="TrgtCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="UnitCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="XchgRate" type="BaseOneRate"/> - <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> - <xs:element name="QtnDt" type="ISODateTime" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndDateTimeChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="Dt" type="ISODate"/> - <xs:element name="DtTm" type="ISODateTime"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DatePeriodDetails"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateTimePeriodDetails"> - <xs:sequence> - <xs:element name="FrDtTm" type="ISODateTime"/> - <xs:element name="ToDtTm" type="ISODateTime"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="17"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="BkToCstmrAcctRpt" type="BankToCustomerAccountReportV02"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType5Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="VCHR"/> - <xs:enumeration value="AROI"/> - <xs:enumeration value="TSUT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EntryDetails1"> - <xs:sequence> - <xs:element name="Btch" type="BatchInformation2" minOccurs="0"/> - <xs:element name="TxDtls" type="EntryTransaction2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="EntryStatus2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BOOK"/> - <xs:enumeration value="PDNG"/> - <xs:enumeration value="INFO"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EntryTransaction2"> - <xs:sequence> - <xs:element name="Refs" type="TransactionReferences2" minOccurs="0"/> - <xs:element name="AmtDtls" type="AmountAndCurrencyExchange3" minOccurs="0"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4" minOccurs="0"/> - <xs:element name="Chrgs" type="ChargesInformation6" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Intrst" type="TransactionInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RltdPties" type="TransactionParty2" minOccurs="0"/> - <xs:element name="RltdAgts" type="TransactionAgents2" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2Choice" minOccurs="0"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation2" minOccurs="0" maxOccurs="10"/> - <xs:element name="RmtInf" type="RemittanceInformation5" minOccurs="0"/> - <xs:element name="RltdDts" type="TransactionDates2" minOccurs="0"/> - <xs:element name="RltdPric" type="TransactionPrice2Choice" minOccurs="0"/> - <xs:element name="RltdQties" type="TransactionQuantities1Choice" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FinInstrmId" type="SecurityIdentification4Choice" minOccurs="0"/> - <xs:element name="Tax" type="TaxInformation3" minOccurs="0"/> - <xs:element name="RtrInf" type="ReturnReasonInformation10" minOccurs="0"/> - <xs:element name="CorpActn" type="CorporateAction1" minOccurs="0"/> - <xs:element name="SfkpgAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="AddtlTxInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBalanceSubType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionDomain1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionFamily1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionSubFamily1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalReportingSource1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalReturnReason1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalTechnicalInputChannel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification7"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstrumentQuantityChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="Unit" type="DecimalNumber"/> - <xs:element name="FaceAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="AmtsdVal" type="ImpliedCurrencyAndAmount"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FromToAmountRange"> - <xs:sequence> - <xs:element name="FrAmt" type="AmountRangeBoundary1"/> - <xs:element name="ToAmt" type="AmountRangeBoundary1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericIdentification3"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader42"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="MsgRcpt" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="MsgPgntn" type="Pagination" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISINIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{12,12}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:complexType name="ImpliedCurrencyAmountRangeChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="FrAmt" type="AmountRangeBoundary1"/> - <xs:element name="ToAmt" type="AmountRangeBoundary1"/> - <xs:element name="FrToAmt" type="FromToAmountRange"/> - <xs:element name="EQAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="NEQAmt" type="ImpliedCurrencyAndAmount"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ImpliedCurrencyAndAmount"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="InterestType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="InterestType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="InterestType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="INDY"/> - <xs:enumeration value="OVRN"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max105Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="105"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max140Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15PlusSignedNumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[+]{0,1}[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max500Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="500"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max5NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,5}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="MessageIdentification2"> - <xs:sequence> - <xs:element name="MsgNmId" type="Max35Text" minOccurs="0"/> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NameAndAddress10"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="Adr" type="PostalAddress6"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="NamePrefix1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MIST"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MADM"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="0"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NumberAndSumOfTransactions1"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NumberAndSumOfTransactions2"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="TtlNetNtryAmt" type="DecimalNumber" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentification4"> - <xs:sequence> - <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Pagination"> - <xs:sequence> - <xs:element name="PgNb" type="Max5NumericText"/> - <xs:element name="LastPgInd" type="YesNoIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Party6Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification4"/> - <xs:element name="PrvtId" type="PersonIdentification5"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentification32"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PersonIdentification5"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress6"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryAgent2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification4"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryBankTransactionCodeStructure1"> - <xs:sequence> - <xs:element name="Cd" type="Max35Text"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryDate2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Dt" type="DateAndDateTimeChoice"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryParty2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Pty" type="PartyIdentification32"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryPrice2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Pric" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryQuantity1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Qty" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryReference1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Ref" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Purpose2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Rate3"> - <xs:sequence> - <xs:element name="Tp" type="RateType4Choice"/> - <xs:element name="VldtyRg" type="CurrencyAndAmountRange2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RateType4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Pctg" type="PercentageRate"/> - <xs:element name="Othr" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation3"> - <xs:sequence> - <xs:element name="Tp" type="ReferredDocumentType2" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType5Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceAmount1"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation5"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Strd" type="StructuredRemittanceInformation7" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceLocation2"> - <xs:sequence> - <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> - <xs:element name="RmtLctnMtd" type="RemittanceLocationMethod2Code" minOccurs="0"/> - <xs:element name="RmtLctnElctrncAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="RmtLctnPstlAdr" type="NameAndAddress10" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RemittanceLocationMethod2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FAXI"/> - <xs:enumeration value="EDIC"/> - <xs:enumeration value="URID"/> - <xs:enumeration value="EMAL"/> - <xs:enumeration value="POST"/> - <xs:enumeration value="SMSM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ReportEntry2"> - <xs:sequence> - <xs:element name="NtryRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="RvslInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="Sts" type="EntryStatus2Code"/> - <xs:element name="BookgDt" type="DateAndDateTimeChoice" minOccurs="0"/> - <xs:element name="ValDt" type="DateAndDateTimeChoice" minOccurs="0"/> - <xs:element name="AcctSvcrRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4"/> - <xs:element name="ComssnWvrInd" type="YesNoIndicator" minOccurs="0"/> - <xs:element name="AddtlInfInd" type="MessageIdentification2" minOccurs="0"/> - <xs:element name="AmtDtls" type="AmountAndCurrencyExchange3" minOccurs="0"/> - <xs:element name="Chrgs" type="ChargesInformation6" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TechInptChanl" type="TechnicalInputChannel1Choice" minOccurs="0"/> - <xs:element name="Intrst" type="TransactionInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="NtryDtls" type="EntryDetails1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AddtlNtryInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReportingSource1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalReportingSource1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReturnReason5Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalReturnReason1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReturnReasonInformation10"> - <xs:sequence> - <xs:element name="OrgnlBkTxCd" type="BankTransactionCodeStructure4" minOccurs="0"/> - <xs:element name="Orgtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Rsn" type="ReturnReason5Choice" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max105Text" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SecurityIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="ISIN" type="ISINIdentifier"/> - <xs:element name="Prtry" type="AlternateSecurityIdentification2"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation7"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount1" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmount1"> - <xs:sequence> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dtls" type="TaxRecordDetails1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element name="Titl" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxCharges2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation3"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZn" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod1"> - <xs:sequence> - <xs:element name="Yr" type="ISODate" minOccurs="0"/> - <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> - <xs:element name="FrToDt" type="DatePeriodDetails" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> - <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> - <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> - <xs:element name="CertId" type="Max35Text" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmount1" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails1"> - <xs:sequence> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="TechnicalInputChannel1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalTechnicalInputChannel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TotalTransactions2"> - <xs:sequence> - <xs:element name="TtlNtries" type="NumberAndSumOfTransactions2" minOccurs="0"/> - <xs:element name="TtlCdtNtries" type="NumberAndSumOfTransactions1" minOccurs="0"/> - <xs:element name="TtlDbtNtries" type="NumberAndSumOfTransactions1" minOccurs="0"/> - <xs:element name="TtlNtriesPerBkTxCd" type="TotalsPerBankTransactionCode2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TotalsPerBankTransactionCode2"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="TtlNetNtryAmt" type="DecimalNumber" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="FcstInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionAgents2"> - <xs:sequence> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="RcvgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="DlvrgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IssgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="SttlmPlc" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryAgent2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionDates2"> - <xs:sequence> - <xs:element name="AccptncDtTm" type="ISODateTime" minOccurs="0"/> - <xs:element name="TradActvtyCtrctlSttlmDt" type="ISODate" minOccurs="0"/> - <xs:element name="TradDt" type="ISODate" minOccurs="0"/> - <xs:element name="IntrBkSttlmDt" type="ISODate" minOccurs="0"/> - <xs:element name="StartDt" type="ISODate" minOccurs="0"/> - <xs:element name="EndDt" type="ISODate" minOccurs="0"/> - <xs:element name="TxDtTm" type="ISODateTime" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryDate2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionInterest2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="Tp" type="InterestType1Choice" minOccurs="0"/> - <xs:element name="Rate" type="Rate3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="Rsn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionParty2"> - <xs:sequence> - <xs:element name="InitgPty" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Dbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="DbtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Cdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtCdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="TradgPty" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryParty2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionPrice2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="DealPric" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="Prtry" type="ProprietaryPrice2" maxOccurs="unbounded"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionQuantities1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Qty" type="FinancialInstrumentQuantityChoice"/> - <xs:element name="Prtry" type="ProprietaryQuantity1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionReferences2"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - <xs:element name="AcctSvcrRef" type="Max35Text" minOccurs="0"/> - <xs:element name="PmtInfId" type="Max35Text" minOccurs="0"/> - <xs:element name="InstrId" type="Max35Text" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text" minOccurs="0"/> - <xs:element name="TxId" type="Max35Text" minOccurs="0"/> - <xs:element name="MndtId" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ClrSysRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryReference1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TrueFalseIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="YesNoIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/camt.053.001.02.xsd b/ebics/src/main/resources/xsd/camt.053.001.02.xsd @@ -1,1299 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Mit XMLSpy v2008 rel. 2 (http://www.altova.com) von Wenzel (SIZ Bonn) bearbeitet --> -<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53--> -<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" elementFormDefault="qualified"> - <xs:element name="Document" type="Document"/> - <xs:complexType name="AccountIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountInterest2"> - <xs:sequence> - <xs:element name="Tp" type="InterestType1Choice" minOccurs="0"/> - <xs:element name="Rate" type="Rate3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="Rsn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountStatement2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="ElctrncSeqNb" type="Number" minOccurs="0"/> - <xs:element name="LglSeqNb" type="Number" minOccurs="0"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="CpyDplctInd" type="CopyDuplicate1Code" minOccurs="0"/> - <xs:element name="RptgSrc" type="ReportingSource1Choice" minOccurs="0"/> - <xs:element name="Acct" type="CashAccount20"/> - <xs:element name="RltdAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="Intrst" type="AccountInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Bal" type="CashBalance3" maxOccurs="unbounded"/> - <xs:element name="TxsSummry" type="TotalTransactions2" minOccurs="0"/> - <xs:element name="Ntry" type="ReportEntry2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AddtlStmtInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,13}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="PBOX"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="DLVY"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AlternateSecurityIdentification2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Id" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchange3"> - <xs:sequence> - <xs:element name="InstdAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="TxAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="CntrValAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="AnncdPstngAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="PrtryAmt" type="AmountAndCurrencyExchangeDetails4" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchangeDetails3"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyXchg" type="CurrencyExchange5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchangeDetails4"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyXchg" type="CurrencyExchange5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountRangeBoundary1"> - <xs:sequence> - <xs:element name="BdryAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="Incl" type="YesNoIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AnyBICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BalanceSubType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalBalanceSubType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BalanceType12"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="BalanceType5Choice"/> - <xs:element name="SubTp" type="BalanceSubType1Choice" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="BalanceType12Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="XPCD"/> - <xs:enumeration value="OPAV"/> - <xs:enumeration value="ITAV"/> - <xs:enumeration value="CLAV"/> - <xs:enumeration value="FWAV"/> - <xs:enumeration value="CLBD"/> - <xs:enumeration value="ITBD"/> - <xs:enumeration value="OPBD"/> - <xs:enumeration value="PRCD"/> - <xs:enumeration value="INFO"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BalanceType5Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="BalanceType12Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankToCustomerStatementV02"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader42"/> - <xs:element name="Stmt" type="AccountStatement2" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure4"> - <xs:sequence> - <xs:element name="Domn" type="BankTransactionCodeStructure5" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryBankTransactionCodeStructure1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure5"> - <xs:sequence> - <xs:element name="Cd" type="ExternalBankTransactionDomain1Code"/> - <xs:element name="Fmly" type="BankTransactionCodeStructure6"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure6"> - <xs:sequence> - <xs:element name="Cd" type="ExternalBankTransactionFamily1Code"/> - <xs:element name="SubFmlyCd" type="ExternalBankTransactionSubFamily1Code"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BatchInformation2"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - <xs:element name="PmtInfId" type="Max35Text" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/> - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchData2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount16"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount20"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="Ownr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Svcr" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccountType2"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="CashAccountType4Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CashAccountType4Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CASH"/> - <xs:enumeration value="CHAR"/> - <xs:enumeration value="COMM"/> - <xs:enumeration value="TAXE"/> - <xs:enumeration value="CISH"/> - <xs:enumeration value="TRAS"/> - <xs:enumeration value="SACC"/> - <xs:enumeration value="CACC"/> - <xs:enumeration value="SVGS"/> - <xs:enumeration value="ONDP"/> - <xs:enumeration value="MGLD"/> - <xs:enumeration value="NREX"/> - <xs:enumeration value="MOMA"/> - <xs:enumeration value="LOAN"/> - <xs:enumeration value="SLRY"/> - <xs:enumeration value="ODFT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CashBalance3"> - <xs:sequence> - <xs:element name="Tp" type="BalanceType12"/> - <xs:element name="CdtLine" type="CreditLine2" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="Dt" type="DateAndDateTimeChoice"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashBalanceAvailability2"> - <xs:sequence> - <xs:element name="Dt" type="CashBalanceAvailabilityDate1"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashBalanceAvailabilityDate1"> - <xs:sequence> - <xs:choice> - <xs:element name="NbOfDays" type="Max15PlusSignedNumericText"/> - <xs:element name="ActlDt" type="ISODate"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ChargeType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BRKF"/> - <xs:enumeration value="COMM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChargeType2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ChargeType1Code"/> - <xs:element name="Prtry" type="GenericIdentification3"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ChargesInformation6"> - <xs:sequence> - <xs:element name="TtlChrgsAndTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Tp" type="ChargeType2Choice" minOccurs="0"/> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="Br" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="Pty" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="Tax" type="TaxCharges2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ContactDetails2"> - <xs:sequence> - <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="Othr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CopyDuplicate1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CODU"/> - <xs:enumeration value="COPY"/> - <xs:enumeration value="DUPL"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CorporateAction1"> - <xs:sequence> - <xs:element name="Cd" type="Max35Text" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="Prtry" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditLine2"> - <xs:sequence> - <xs:element name="Incl" type="TrueFalseIndicator"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> - <xs:element name="Ref" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyAndAmountRange2"> - <xs:sequence> - <xs:element name="Amt" type="ImpliedCurrencyAmountRangeChoice"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyExchange5"> - <xs:sequence> - <xs:element name="SrcCcy" type="ActiveOrHistoricCurrencyCode"/> - <xs:element name="TrgtCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="UnitCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="XchgRate" type="BaseOneRate"/> - <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> - <xs:element name="QtnDt" type="ISODateTime" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndDateTimeChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="Dt" type="ISODate"/> - <xs:element name="DtTm" type="ISODateTime"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DatePeriodDetails"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateTimePeriodDetails"> - <xs:sequence> - <xs:element name="FrDtTm" type="ISODateTime"/> - <xs:element name="ToDtTm" type="ISODateTime"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="17"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="BkToCstmrStmt" type="BankToCustomerStatementV02"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType5Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="VCHR"/> - <xs:enumeration value="AROI"/> - <xs:enumeration value="TSUT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EntryDetails1"> - <xs:sequence> - <xs:element name="Btch" type="BatchInformation2" minOccurs="0"/> - <xs:element name="TxDtls" type="EntryTransaction2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="EntryStatus2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BOOK"/> - <xs:enumeration value="PDNG"/> - <xs:enumeration value="INFO"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EntryTransaction2"> - <xs:sequence> - <xs:element name="Refs" type="TransactionReferences2" minOccurs="0"/> - <xs:element name="AmtDtls" type="AmountAndCurrencyExchange3" minOccurs="0"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4" minOccurs="0"/> - <xs:element name="Chrgs" type="ChargesInformation6" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Intrst" type="TransactionInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RltdPties" type="TransactionParty2" minOccurs="0"/> - <xs:element name="RltdAgts" type="TransactionAgents2" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2Choice" minOccurs="0"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation2" minOccurs="0" maxOccurs="10"/> - <xs:element name="RmtInf" type="RemittanceInformation5" minOccurs="0"/> - <xs:element name="RltdDts" type="TransactionDates2" minOccurs="0"/> - <xs:element name="RltdPric" type="TransactionPrice2Choice" minOccurs="0"/> - <xs:element name="RltdQties" type="TransactionQuantities1Choice" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FinInstrmId" type="SecurityIdentification4Choice" minOccurs="0"/> - <xs:element name="Tax" type="TaxInformation3" minOccurs="0"/> - <xs:element name="RtrInf" type="ReturnReasonInformation10" minOccurs="0"/> - <xs:element name="CorpActn" type="CorporateAction1" minOccurs="0"/> - <xs:element name="SfkpgAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="AddtlTxInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBalanceSubType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionDomain1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionFamily1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionSubFamily1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalReportingSource1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalReturnReason1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalTechnicalInputChannel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification7"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstrumentQuantityChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="Unit" type="DecimalNumber"/> - <xs:element name="FaceAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="AmtsdVal" type="ImpliedCurrencyAndAmount"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FromToAmountRange"> - <xs:sequence> - <xs:element name="FrAmt" type="AmountRangeBoundary1"/> - <xs:element name="ToAmt" type="AmountRangeBoundary1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericIdentification3"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader42"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="MsgRcpt" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="MsgPgntn" type="Pagination" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISINIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{12,12}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:complexType name="ImpliedCurrencyAmountRangeChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="FrAmt" type="AmountRangeBoundary1"/> - <xs:element name="ToAmt" type="AmountRangeBoundary1"/> - <xs:element name="FrToAmt" type="FromToAmountRange"/> - <xs:element name="EQAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="NEQAmt" type="ImpliedCurrencyAndAmount"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ImpliedCurrencyAndAmount"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="InterestType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="InterestType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="InterestType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="INDY"/> - <xs:enumeration value="OVRN"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max105Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="105"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max140Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15PlusSignedNumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[+]{0,1}[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max500Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="500"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max5NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,5}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="MessageIdentification2"> - <xs:sequence> - <xs:element name="MsgNmId" type="Max35Text" minOccurs="0"/> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NameAndAddress10"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="Adr" type="PostalAddress6"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="NamePrefix1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MIST"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MADM"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="0"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NumberAndSumOfTransactions1"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NumberAndSumOfTransactions2"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="TtlNetNtryAmt" type="DecimalNumber" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentification4"> - <xs:sequence> - <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Pagination"> - <xs:sequence> - <xs:element name="PgNb" type="Max5NumericText"/> - <xs:element name="LastPgInd" type="YesNoIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Party6Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification4"/> - <xs:element name="PrvtId" type="PersonIdentification5"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentification32"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PersonIdentification5"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress6"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryAgent2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification4"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryBankTransactionCodeStructure1"> - <xs:sequence> - <xs:element name="Cd" type="Max35Text"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryDate2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Dt" type="DateAndDateTimeChoice"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryParty2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Pty" type="PartyIdentification32"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryPrice2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Pric" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryQuantity1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Qty" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryReference1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Ref" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Purpose2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Rate3"> - <xs:sequence> - <xs:element name="Tp" type="RateType4Choice"/> - <xs:element name="VldtyRg" type="CurrencyAndAmountRange2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RateType4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Pctg" type="PercentageRate"/> - <xs:element name="Othr" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation3"> - <xs:sequence> - <xs:element name="Tp" type="ReferredDocumentType2" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType5Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceAmount1"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation5"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Strd" type="StructuredRemittanceInformation7" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceLocation2"> - <xs:sequence> - <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> - <xs:element name="RmtLctnMtd" type="RemittanceLocationMethod2Code" minOccurs="0"/> - <xs:element name="RmtLctnElctrncAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="RmtLctnPstlAdr" type="NameAndAddress10" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RemittanceLocationMethod2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FAXI"/> - <xs:enumeration value="EDIC"/> - <xs:enumeration value="URID"/> - <xs:enumeration value="EMAL"/> - <xs:enumeration value="POST"/> - <xs:enumeration value="SMSM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ReportEntry2"> - <xs:sequence> - <xs:element name="NtryRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="RvslInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="Sts" type="EntryStatus2Code"/> - <xs:element name="BookgDt" type="DateAndDateTimeChoice" minOccurs="0"/> - <xs:element name="ValDt" type="DateAndDateTimeChoice" minOccurs="0"/> - <xs:element name="AcctSvcrRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4"/> - <xs:element name="ComssnWvrInd" type="YesNoIndicator" minOccurs="0"/> - <xs:element name="AddtlInfInd" type="MessageIdentification2" minOccurs="0"/> - <xs:element name="AmtDtls" type="AmountAndCurrencyExchange3" minOccurs="0"/> - <xs:element name="Chrgs" type="ChargesInformation6" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TechInptChanl" type="TechnicalInputChannel1Choice" minOccurs="0"/> - <xs:element name="Intrst" type="TransactionInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="NtryDtls" type="EntryDetails1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AddtlNtryInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReportingSource1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalReportingSource1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReturnReason5Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalReturnReason1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReturnReasonInformation10"> - <xs:sequence> - <xs:element name="OrgnlBkTxCd" type="BankTransactionCodeStructure4" minOccurs="0"/> - <xs:element name="Orgtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Rsn" type="ReturnReason5Choice" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max105Text" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SecurityIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="ISIN" type="ISINIdentifier"/> - <xs:element name="Prtry" type="AlternateSecurityIdentification2"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation7"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount1" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmount1"> - <xs:sequence> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dtls" type="TaxRecordDetails1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element name="Titl" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxCharges2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation3"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZn" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod1"> - <xs:sequence> - <xs:element name="Yr" type="ISODate" minOccurs="0"/> - <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> - <xs:element name="FrToDt" type="DatePeriodDetails" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> - <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> - <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> - <xs:element name="CertId" type="Max35Text" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmount1" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails1"> - <xs:sequence> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="TechnicalInputChannel1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalTechnicalInputChannel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TotalTransactions2"> - <xs:sequence> - <xs:element name="TtlNtries" type="NumberAndSumOfTransactions2" minOccurs="0"/> - <xs:element name="TtlCdtNtries" type="NumberAndSumOfTransactions1" minOccurs="0"/> - <xs:element name="TtlDbtNtries" type="NumberAndSumOfTransactions1" minOccurs="0"/> - <xs:element name="TtlNtriesPerBkTxCd" type="TotalsPerBankTransactionCode2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TotalsPerBankTransactionCode2"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="TtlNetNtryAmt" type="DecimalNumber" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="FcstInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionAgents2"> - <xs:sequence> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="RcvgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="DlvrgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IssgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="SttlmPlc" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryAgent2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionDates2"> - <xs:sequence> - <xs:element name="AccptncDtTm" type="ISODateTime" minOccurs="0"/> - <xs:element name="TradActvtyCtrctlSttlmDt" type="ISODate" minOccurs="0"/> - <xs:element name="TradDt" type="ISODate" minOccurs="0"/> - <xs:element name="IntrBkSttlmDt" type="ISODate" minOccurs="0"/> - <xs:element name="StartDt" type="ISODate" minOccurs="0"/> - <xs:element name="EndDt" type="ISODate" minOccurs="0"/> - <xs:element name="TxDtTm" type="ISODateTime" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryDate2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionInterest2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="Tp" type="InterestType1Choice" minOccurs="0"/> - <xs:element name="Rate" type="Rate3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="Rsn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionParty2"> - <xs:sequence> - <xs:element name="InitgPty" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Dbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="DbtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Cdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtCdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="TradgPty" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryParty2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionPrice2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="DealPric" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="Prtry" type="ProprietaryPrice2" maxOccurs="unbounded"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionQuantities1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Qty" type="FinancialInstrumentQuantityChoice"/> - <xs:element name="Prtry" type="ProprietaryQuantity1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionReferences2"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - <xs:element name="AcctSvcrRef" type="Max35Text" minOccurs="0"/> - <xs:element name="PmtInfId" type="Max35Text" minOccurs="0"/> - <xs:element name="InstrId" type="Max35Text" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text" minOccurs="0"/> - <xs:element name="TxId" type="Max35Text" minOccurs="0"/> - <xs:element name="MndtId" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ClrSysRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryReference1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TrueFalseIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="YesNoIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/camt.054.001.02.xsd b/ebics/src/main/resources/xsd/camt.054.001.02.xsd @@ -1,1240 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Mit XMLSpy v2008 rel. 2 (http://www.altova.com) von Wenzel (SIZ Bonn) bearbeitet --> -<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53--> -<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" elementFormDefault="qualified"> - <xs:element name="Document" type="Document"/> - <xs:complexType name="AccountIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountInterest2"> - <xs:sequence> - <xs:element name="Tp" type="InterestType1Choice" minOccurs="0"/> - <xs:element name="Rate" type="Rate3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="Rsn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountNotification2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="ElctrncSeqNb" type="Number" minOccurs="0"/> - <xs:element name="LglSeqNb" type="Number" minOccurs="0"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="CpyDplctInd" type="CopyDuplicate1Code" minOccurs="0"/> - <xs:element name="RptgSrc" type="ReportingSource1Choice" minOccurs="0"/> - <xs:element name="Acct" type="CashAccount20"/> - <xs:element name="RltdAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="Intrst" type="AccountInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TxsSummry" type="TotalTransactions2" minOccurs="0"/> - <xs:element name="Ntry" type="ReportEntry2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AddtlNtfctnInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,13}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="PBOX"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="DLVY"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AlternateSecurityIdentification2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Id" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchange3"> - <xs:sequence> - <xs:element name="InstdAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="TxAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="CntrValAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="AnncdPstngAmt" type="AmountAndCurrencyExchangeDetails3" minOccurs="0"/> - <xs:element name="PrtryAmt" type="AmountAndCurrencyExchangeDetails4" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchangeDetails3"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyXchg" type="CurrencyExchange5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountAndCurrencyExchangeDetails4"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyXchg" type="CurrencyExchange5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountRangeBoundary1"> - <xs:sequence> - <xs:element name="BdryAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="Incl" type="YesNoIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AnyBICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BankToCustomerDebitCreditNotificationV02"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader42"/> - <xs:element name="Ntfctn" type="AccountNotification2" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure4"> - <xs:sequence> - <xs:element name="Domn" type="BankTransactionCodeStructure5" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryBankTransactionCodeStructure1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure5"> - <xs:sequence> - <xs:element name="Cd" type="ExternalBankTransactionDomain1Code"/> - <xs:element name="Fmly" type="BankTransactionCodeStructure6"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BankTransactionCodeStructure6"> - <xs:sequence> - <xs:element name="Cd" type="ExternalBankTransactionFamily1Code"/> - <xs:element name="SubFmlyCd" type="ExternalBankTransactionSubFamily1Code"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BatchInformation2"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - <xs:element name="PmtInfId" type="Max35Text" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/> - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchData2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount16"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount20"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="Ownr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Svcr" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccountType2"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="CashAccountType4Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CashAccountType4Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CASH"/> - <xs:enumeration value="CHAR"/> - <xs:enumeration value="COMM"/> - <xs:enumeration value="TAXE"/> - <xs:enumeration value="CISH"/> - <xs:enumeration value="TRAS"/> - <xs:enumeration value="SACC"/> - <xs:enumeration value="CACC"/> - <xs:enumeration value="SVGS"/> - <xs:enumeration value="ONDP"/> - <xs:enumeration value="MGLD"/> - <xs:enumeration value="NREX"/> - <xs:enumeration value="MOMA"/> - <xs:enumeration value="LOAN"/> - <xs:enumeration value="SLRY"/> - <xs:enumeration value="ODFT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CashBalanceAvailability2"> - <xs:sequence> - <xs:element name="Dt" type="CashBalanceAvailabilityDate1"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashBalanceAvailabilityDate1"> - <xs:sequence> - <xs:choice> - <xs:element name="NbOfDays" type="Max15PlusSignedNumericText"/> - <xs:element name="ActlDt" type="ISODate"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ChargeType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BRKF"/> - <xs:enumeration value="COMM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChargeType2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ChargeType1Code"/> - <xs:element name="Prtry" type="GenericIdentification3"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ChargesInformation6"> - <xs:sequence> - <xs:element name="TtlChrgsAndTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Tp" type="ChargeType2Choice" minOccurs="0"/> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="Br" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="Pty" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="Tax" type="TaxCharges2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ContactDetails2"> - <xs:sequence> - <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="Othr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CopyDuplicate1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CODU"/> - <xs:enumeration value="COPY"/> - <xs:enumeration value="DUPL"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CorporateAction1"> - <xs:sequence> - <xs:element name="Cd" type="Max35Text" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="Prtry" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> - <xs:element name="Ref" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyAndAmountRange2"> - <xs:sequence> - <xs:element name="Amt" type="ImpliedCurrencyAmountRangeChoice"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyExchange5"> - <xs:sequence> - <xs:element name="SrcCcy" type="ActiveOrHistoricCurrencyCode"/> - <xs:element name="TrgtCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="UnitCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="XchgRate" type="BaseOneRate"/> - <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> - <xs:element name="QtnDt" type="ISODateTime" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndDateTimeChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="Dt" type="ISODate"/> - <xs:element name="DtTm" type="ISODateTime"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DatePeriodDetails"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateTimePeriodDetails"> - <xs:sequence> - <xs:element name="FrDtTm" type="ISODateTime"/> - <xs:element name="ToDtTm" type="ISODateTime"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="17"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="BkToCstmrDbtCdtNtfctn" type="BankToCustomerDebitCreditNotificationV02"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType5Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="VCHR"/> - <xs:enumeration value="AROI"/> - <xs:enumeration value="TSUT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EntryDetails1"> - <xs:sequence> - <xs:element name="Btch" type="BatchInformation2" minOccurs="0"/> - <xs:element name="TxDtls" type="EntryTransaction2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="EntryStatus2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BOOK"/> - <xs:enumeration value="PDNG"/> - <xs:enumeration value="INFO"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EntryTransaction2"> - <xs:sequence> - <xs:element name="Refs" type="TransactionReferences2" minOccurs="0"/> - <xs:element name="AmtDtls" type="AmountAndCurrencyExchange3" minOccurs="0"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4" minOccurs="0"/> - <xs:element name="Chrgs" type="ChargesInformation6" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Intrst" type="TransactionInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RltdPties" type="TransactionParty2" minOccurs="0"/> - <xs:element name="RltdAgts" type="TransactionAgents2" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2Choice" minOccurs="0"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation2" minOccurs="0" maxOccurs="10"/> - <xs:element name="RmtInf" type="RemittanceInformation5" minOccurs="0"/> - <xs:element name="RltdDts" type="TransactionDates2" minOccurs="0"/> - <xs:element name="RltdPric" type="TransactionPrice2Choice" minOccurs="0"/> - <xs:element name="RltdQties" type="TransactionQuantities1Choice" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FinInstrmId" type="SecurityIdentification4Choice" minOccurs="0"/> - <xs:element name="Tax" type="TaxInformation3" minOccurs="0"/> - <xs:element name="RtrInf" type="ReturnReasonInformation10" minOccurs="0"/> - <xs:element name="CorpActn" type="CorporateAction1" minOccurs="0"/> - <xs:element name="SfkpgAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="AddtlTxInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionDomain1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionFamily1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalBankTransactionSubFamily1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalReportingSource1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalReturnReason1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalTechnicalInputChannel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification7"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstrumentQuantityChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="Unit" type="DecimalNumber"/> - <xs:element name="FaceAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="AmtsdVal" type="ImpliedCurrencyAndAmount"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FromToAmountRange"> - <xs:sequence> - <xs:element name="FrAmt" type="AmountRangeBoundary1"/> - <xs:element name="ToAmt" type="AmountRangeBoundary1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericIdentification3"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader42"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="MsgRcpt" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="MsgPgntn" type="Pagination" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISINIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{12,12}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:complexType name="ImpliedCurrencyAmountRangeChoice"> - <xs:sequence> - <xs:choice> - <xs:element name="FrAmt" type="AmountRangeBoundary1"/> - <xs:element name="ToAmt" type="AmountRangeBoundary1"/> - <xs:element name="FrToAmt" type="FromToAmountRange"/> - <xs:element name="EQAmt" type="ImpliedCurrencyAndAmount"/> - <xs:element name="NEQAmt" type="ImpliedCurrencyAndAmount"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ImpliedCurrencyAndAmount"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="InterestType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="InterestType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="InterestType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="INDY"/> - <xs:enumeration value="OVRN"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max105Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="105"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max140Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15PlusSignedNumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[+]{0,1}[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max500Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="500"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max5NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,5}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="MessageIdentification2"> - <xs:sequence> - <xs:element name="MsgNmId" type="Max35Text" minOccurs="0"/> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NameAndAddress10"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="Adr" type="PostalAddress6"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="NamePrefix1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MIST"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MADM"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="0"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NumberAndSumOfTransactions1"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NumberAndSumOfTransactions2"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="TtlNetNtryAmt" type="DecimalNumber" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentification4"> - <xs:sequence> - <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Pagination"> - <xs:sequence> - <xs:element name="PgNb" type="Max5NumericText"/> - <xs:element name="LastPgInd" type="YesNoIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Party6Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification4"/> - <xs:element name="PrvtId" type="PersonIdentification5"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentification32"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PersonIdentification5"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress6"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryAgent2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification4"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryBankTransactionCodeStructure1"> - <xs:sequence> - <xs:element name="Cd" type="Max35Text"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryDate2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Dt" type="DateAndDateTimeChoice"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryParty2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Pty" type="PartyIdentification32"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryPrice2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Pric" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryQuantity1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Qty" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProprietaryReference1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text"/> - <xs:element name="Ref" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Purpose2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Rate3"> - <xs:sequence> - <xs:element name="Tp" type="RateType4Choice"/> - <xs:element name="VldtyRg" type="CurrencyAndAmountRange2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RateType4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Pctg" type="PercentageRate"/> - <xs:element name="Othr" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation3"> - <xs:sequence> - <xs:element name="Tp" type="ReferredDocumentType2" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType5Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceAmount1"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation5"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Strd" type="StructuredRemittanceInformation7" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceLocation2"> - <xs:sequence> - <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> - <xs:element name="RmtLctnMtd" type="RemittanceLocationMethod2Code" minOccurs="0"/> - <xs:element name="RmtLctnElctrncAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="RmtLctnPstlAdr" type="NameAndAddress10" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RemittanceLocationMethod2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FAXI"/> - <xs:enumeration value="EDIC"/> - <xs:enumeration value="URID"/> - <xs:enumeration value="EMAL"/> - <xs:enumeration value="POST"/> - <xs:enumeration value="SMSM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ReportEntry2"> - <xs:sequence> - <xs:element name="NtryRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="RvslInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="Sts" type="EntryStatus2Code"/> - <xs:element name="BookgDt" type="DateAndDateTimeChoice" minOccurs="0"/> - <xs:element name="ValDt" type="DateAndDateTimeChoice" minOccurs="0"/> - <xs:element name="AcctSvcrRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4"/> - <xs:element name="ComssnWvrInd" type="YesNoIndicator" minOccurs="0"/> - <xs:element name="AddtlInfInd" type="MessageIdentification2" minOccurs="0"/> - <xs:element name="AmtDtls" type="AmountAndCurrencyExchange3" minOccurs="0"/> - <xs:element name="Chrgs" type="ChargesInformation6" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TechInptChanl" type="TechnicalInputChannel1Choice" minOccurs="0"/> - <xs:element name="Intrst" type="TransactionInterest2" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="NtryDtls" type="EntryDetails1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AddtlNtryInf" type="Max500Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReportingSource1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalReportingSource1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReturnReason5Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalReturnReason1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReturnReasonInformation10"> - <xs:sequence> - <xs:element name="OrgnlBkTxCd" type="BankTransactionCodeStructure4" minOccurs="0"/> - <xs:element name="Orgtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Rsn" type="ReturnReason5Choice" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max105Text" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SecurityIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="ISIN" type="ISINIdentifier"/> - <xs:element name="Prtry" type="AlternateSecurityIdentification2"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation7"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount1" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmount1"> - <xs:sequence> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dtls" type="TaxRecordDetails1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element name="Titl" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxCharges2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation3"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZn" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod1"> - <xs:sequence> - <xs:element name="Yr" type="ISODate" minOccurs="0"/> - <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> - <xs:element name="FrToDt" type="DatePeriodDetails" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> - <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> - <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> - <xs:element name="CertId" type="Max35Text" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmount1" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails1"> - <xs:sequence> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="TechnicalInputChannel1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalTechnicalInputChannel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TotalTransactions2"> - <xs:sequence> - <xs:element name="TtlNtries" type="NumberAndSumOfTransactions2" minOccurs="0"/> - <xs:element name="TtlCdtNtries" type="NumberAndSumOfTransactions1" minOccurs="0"/> - <xs:element name="TtlDbtNtries" type="NumberAndSumOfTransactions1" minOccurs="0"/> - <xs:element name="TtlNtriesPerBkTxCd" type="TotalsPerBankTransactionCode2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TotalsPerBankTransactionCode2"> - <xs:sequence> - <xs:element name="NbOfNtries" type="Max15NumericText" minOccurs="0"/> - <xs:element name="Sum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="TtlNetNtryAmt" type="DecimalNumber" minOccurs="0"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="FcstInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="BkTxCd" type="BankTransactionCodeStructure4"/> - <xs:element name="Avlbty" type="CashBalanceAvailability2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionAgents2"> - <xs:sequence> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="RcvgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="DlvrgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IssgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="SttlmPlc" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryAgent2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionDates2"> - <xs:sequence> - <xs:element name="AccptncDtTm" type="ISODateTime" minOccurs="0"/> - <xs:element name="TradActvtyCtrctlSttlmDt" type="ISODate" minOccurs="0"/> - <xs:element name="TradDt" type="ISODate" minOccurs="0"/> - <xs:element name="IntrBkSttlmDt" type="ISODate" minOccurs="0"/> - <xs:element name="StartDt" type="ISODate" minOccurs="0"/> - <xs:element name="EndDt" type="ISODate" minOccurs="0"/> - <xs:element name="TxDtTm" type="ISODateTime" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryDate2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionInterest2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element name="Tp" type="InterestType1Choice" minOccurs="0"/> - <xs:element name="Rate" type="Rate3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="FrToDt" type="DateTimePeriodDetails" minOccurs="0"/> - <xs:element name="Rsn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionParty2"> - <xs:sequence> - <xs:element name="InitgPty" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Dbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="DbtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Cdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtCdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="TradgPty" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryParty2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionPrice2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="DealPric" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="Prtry" type="ProprietaryPrice2" maxOccurs="unbounded"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionQuantities1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Qty" type="FinancialInstrumentQuantityChoice"/> - <xs:element name="Prtry" type="ProprietaryQuantity1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TransactionReferences2"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text" minOccurs="0"/> - <xs:element name="AcctSvcrRef" type="Max35Text" minOccurs="0"/> - <xs:element name="PmtInfId" type="Max35Text" minOccurs="0"/> - <xs:element name="InstrId" type="Max35Text" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text" minOccurs="0"/> - <xs:element name="TxId" type="Max35Text" minOccurs="0"/> - <xs:element name="MndtId" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ClrSysRef" type="Max35Text" minOccurs="0"/> - <xs:element name="Prtry" type="ProprietaryReference1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TrueFalseIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="YesNoIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/ebics_H004.xsd b/ebics/src/main/resources/xsd/ebics_H004.xsd @@ -1,11 +0,0 @@ -<?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:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <annotation> - <documentation xml:lang="de">ebics_H004.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_H004.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_H004.xsd"/> - <include schemaLocation="ebics_response_H004.xsd"/> - <include schemaLocation="ebics_keymgmt_request_H004.xsd"/> - <include schemaLocation="ebics_keymgmt_response_H004.xsd"/> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_H005.xsd b/ebics/src/main/resources/xsd/ebics_H005.xsd @@ -1,11 +0,0 @@ -<?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/ebics/src/main/resources/xsd/ebics_hev.xsd b/ebics/src/main/resources/xsd/ebics_hev.xsd @@ -1,135 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ebics="http://www.ebics.org/H000" targetNamespace="http://www.ebics.org/H000" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <xs:annotation> - <xs:documentation xml:lang="de">ebics_hev.xsd ist das EBICS-Protokollschema entweder für Anfragen oder Rückmeldungen der Bank zu unterstützten EBICS-Versionen.</xs:documentation> - <xs:documentation xml:lang="en">ebics_hev.xsd is the appropriate EBICS protocol schema either for requests or responses according the EBICS versions supported by a bank.</xs:documentation> - </xs:annotation> - <xs:simpleType name="HostIDType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für die Host-ID.</xs:documentation> - <xs:documentation xml:lang="en">Dataype for Host-ID.</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="OrderTBaseType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für allgemeine Auftragsarten (Grundtyp).</xs:documentation> - <xs:documentation xml:lang="en">Datatype for general order types (basic type).</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:length value="3"/> - <xs:pattern value="HEV"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ReturnCodeType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für Antwortcodes.</xs:documentation> - <xs:documentation xml:lang="en">Datatype for the return code</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:length value="6"/> - <xs:pattern value="\d{6}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ReportTextType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für den Erklärungstext zum Antwortcode.</xs:documentation> - <xs:documentation xml:lang="en">Datatype for report text with respect to the return code</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:normalizedString"> - <xs:maxLength value="256"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="VersionNumberType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für eine Versionsnummer</xs:documentation> - <xs:documentation xml:lang="en">Datatype for a release number </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:length value="5"/> - <xs:pattern value="[0-9]{2}[.][0-9]{2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ProtocolVersionType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für Versionsnummer des EBICS-schemas</xs:documentation> - <xs:documentation xml:lang="en">Datatype for release-number of the EBICS scheme</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:length value="4"/> - <xs:pattern value="H\d{3}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="SystemReturnCodeType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für technische Fehler.</xs:documentation> - <xs:documentation xml:lang="en">Datatype for technical error</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="ReturnCode" type="ebics:ReturnCodeType"> - <xs:annotation> - <xs:documentation xml:lang="de">Rückmeldung des Ausführungsstatus mit einer eindeutigen Fehlernummer.</xs:documentation> - <xs:documentation xml:lang="en">Confirmation of the carried out status with a unique error code.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReportText" type="ebics:ReportTextType"> - <xs:annotation> - <xs:documentation xml:lang="de">Klartext der Rückmeldung des Ausführungsstatus.</xs:documentation> - <xs:documentation xml:lang="en">Clear text of the response (carried out status).</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="HEVRequestDataType"> - <xs:annotation> - <xs:documentation xml:lang="de">Datentyp für die Request-Daten</xs:documentation> - <xs:documentation xml:lang="en">Data type for Request data</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="HostID" type="ebics:HostIDType"/> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="HEVResponseDataType"> - <xs:annotation> - <xs:documentation xml:lang="en">Datentyp für die Response-Daten</xs:documentation> - <xs:documentation xml:lang="en">Data type for Request data</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="SystemReturnCode" type="ebics:SystemReturnCodeType"/> - <xs:element name="VersionNumber" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="de">Von der Bank unterstützte EBICS-Versionen, z.B. 2.4</xs:documentation> - <xs:documentation xml:lang="en">EBICS-releases supported by the bank, e.g. 2.4</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="ebics:VersionNumberType"> - <xs:attribute name="ProtocolVersion" type="ebics:ProtocolVersionType" use="required"> - <xs:annotation> - <xs:documentation xml:lang="de">der EBICS-Version eindeutig zugeordnete Schema-Version, z.B. H003</xs:documentation> - <xs:documentation xml:lang="en">EBICS-scheme-version, e.g. H003, well-defined for EBICS-release-Version</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:element name="ebicsHEVRequest" type="ebics:HEVRequestDataType"> - <xs:annotation> - <xs:documentation xml:lang="de">Requestdaten</xs:documentation> - <xs:documentation xml:lang="en">request data</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ebicsHEVResponse" type="ebics:HEVResponseDataType"> - <xs:annotation> - <xs:documentation xml:lang="de">Responsedaten</xs:documentation> - <xs:documentation xml:lang="en">response data</xs:documentation> - </xs:annotation> - </xs:element> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/ebics_keymgmt_request_H004.xsd b/ebics/src/main/resources/xsd/ebics_keymgmt_request_H004.xsd @@ -1,543 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Mit XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) von benutzerservice benutzerservice (SIZ GmbH) bearbeitet --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <annotation> - <documentation xml:lang="de">ebics_keymgmt_request_H004.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_H004.xsd"/> - <include schemaLocation="ebics_orders_H004.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="OrderType" type="ebics:OrderTBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsart.</documentation> - </annotation> - </element> - <element name="OrderAttribute" type="ebics:OrderAttributeBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsattribut.</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, Auftragsattribut DZNNN</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="OrderType" type="ebics:OrderTBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsart.</documentation> - </annotation> - </element> - <element name="OrderAttribute" type="ebics:OrderAttributeBaseType" fixed="DZNNN"> - <annotation> - <documentation xml:lang="de">Auftragsattribut: DZNNN.</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="OrderType" type="ebics:OrderTBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsart.</documentation> - </annotation> - </element> - <element name="OrderAttribute" type="ebics:OrderAttributeBaseType" fixed="DZHNN"> - <annotation> - <documentation xml:lang="de">Auftragsattribut: DZHNN.</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="OrderType" type="ebics:OrderTBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsart.</documentation> - </annotation> - </element> - <element name="OrderAttribute" type="ebics:OrderAttributeBaseType" fixed="OZNNN"> - <annotation> - <documentation xml:lang="de">Auftragsattribut: OZNNN.</documentation> - </annotation> - </element> - </sequence> - </restriction> - </complexContent> - </complexType> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd b/ebics/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd @@ -1,523 +0,0 @@ -<?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/ebics/src/main/resources/xsd/ebics_keymgmt_response_H004.xsd b/ebics/src/main/resources/xsd/ebics_keymgmt_response_H004.xsd @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Mit XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) von benutzerservice benutzerservice (SIZ GmbH) bearbeitet --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <annotation> - <documentation xml:lang="de">ebics_keymgmt_response_H004.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_H004.xsd"/> - <include schemaLocation="ebics_orders_H004.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/ebics/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd b/ebics/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd @@ -1,137 +0,0 @@ -<?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/ebics/src/main/resources/xsd/ebics_orders_H004.xsd b/ebics/src/main/resources/xsd/ebics_orders_H004.xsd @@ -1,1892 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Mit XMLSpy v2008 rel. 2 (http://www.altova.com) von Sabine Wenzel (SIZ Bonn) bearbeitet --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:esig="http://www.ebics.org/S001" xmlns:ebics="urn:org:ebics:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <annotation> - <documentation xml:lang="de">ebics_orders_H004.xsd enthält auftragsbezogene Referenzelemente und auftragsbezogene Typdefinitionen für EBICS.</documentation> - <documentation xml:lang="en">ebics_orders_H004.xsd contains order-based reference elements and order-based type definitions for EBICS.</documentation> - </annotation> - <import namespace="http://www.ebics.org/S001" schemaLocation="ebics_signatures.xsd"/> - <include schemaLocation="ebics_types_H004.xsd"/> - <!--Es folgen die Elementdefinitionen für neue EBICS-Auftragsarten (Hxx). Die XML-Klartext-Struktur wird im EBICS-Auftragsdatenkontext binär interpretiert.--> - <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="HSARequestOrderData" type="ebics:HSARequestOrderDataType" substitutionGroup="ebics:EBICSOrderData"> - <annotation> - <documentation xml:lang="de">Auftragsdaten für Auftragsart HSA (Anfrage: Initialisierung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung, bankfachlich signiert mit Signaturschlüssel aus FTAM).</documentation> - <documentation xml:lang="en">Order data for order type HSA (request: initialise the user's keys for authentication and encryption; this request is signed using the user's FTAM signature key).</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> - <!--Es folgen die Elementdefinitionen für die EU. Die XML-Klartext-Struktur wird im EBICS-Signaturdatenkontext binär interpretiert.--> - <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> - <!--Es folgen die Elementdefinitionen für zusätzliche Auftragsparameter. Die XML-Klartext-Struktur wird in die Headerdaten eingebettet.--> - <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="FULOrderParams" type="ebics:FULOrderParamsType" substitutionGroup="ebics:OrderParams"> - <annotation> - <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart FUL.</documentation> - <documentation xml:lang="en">additional order parameters for order type FUL.</documentation> - </annotation> - </element> - <element name="FDLOrderParams" type="ebics:FDLOrderParamsType" substitutionGroup="ebics:OrderParams"> - <annotation> - <documentation xml:lang="de">zusätzliche Auftragsparameter für Auftragsart FDL.</documentation> - <documentation xml:lang="en">additional order parameters for order type FDL.</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 name="GenericOrderParams" type="ebics:GenericOrderParamsType" substitutionGroup="ebics:OrderParams"> - <annotation> - <documentation xml:lang="de">zusätzliche Auftragsparameter für beliebige Auftragsarten.</documentation> - <documentation xml:lang="en">additional order parameters for generic order types.</documentation> - </annotation> - </element> - <!--Es folgen Elementgruppen- und Strukturdefinitionen.--> - <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="OrderType" type="ebics:OrderTBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsart des ausgewählten Auftrags.</documentation> - <documentation xml:lang="en">Order type of the selected order.</documentation> - </annotation> - </element> - <element name="FileFormat" type="ebics:FileFormatType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Identifizierung des Dateiformats im Falle von FUL/FDL</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> - <!--Es folgen Typdefinitionen für auftragsbezogene komplexe Typen.--> - <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> - </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> - </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> - </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> - </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> - </annotation> - <element name="DataEncryptionInfo"> - <annotation> - <documentation xml:lang="de">Information zur Verschlüsselung der Signatur- und Auftragsdaten.</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> - </annotation> - <complexType> - <simpleContent> - <extension base="ebics:SignatureDataType"> - <attributeGroup ref="ebics:AuthenticationMarker"/> - </extension> - </simpleContent> - </complexType> - </element> - </sequence> - <sequence> - <annotation> - <documentation xml:lang="de">Transferphase: Transfer von Auftragsdaten.</documentation> - </annotation> - <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> - </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> - </annotation> - <element name="DataEncryptionInfo"> - <annotation> - <documentation xml:lang="de">Information zur Verschlüsselung der Signatur- und Auftragsdaten.</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> - </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> - </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> - </annotation> - <sequence> - <element name="ReceiptCode" type="ebics:ReceiptCodeType"> - <annotation> - <documentation xml:lang="de">Quittierungscode für Auftragsdatentransfer.</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> - </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> - </annotation> - <sequence> - <element name="OrderTypes" type="ebics:OrderTListType"> - <annotation> - <documentation xml:lang="de">Liste von Auftragsarten, für die Daten bereit stehen.</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> - </annotation> - <sequence> - <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation> - </annotation> - </element> - <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation> - </annotation> - </element> - <element name="PartnerID" type="ebics:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID.</documentation> - </annotation> - </element> - <element name="UserID" type="ebics:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-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> - </annotation> - <sequence> - <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation> - </annotation> - </element> - <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation> - </annotation> - </element> - <element ref="esig:SignaturePubKeyInfo"/> - <element name="PartnerID" type="ebics:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID.</documentation> - </annotation> - </element> - <element name="UserID" type="ebics:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-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> - </annotation> - <sequence> - <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation> - </annotation> - </element> - <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation> - </annotation> - </element> - <element name="PartnerID" type="ebics:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID.</documentation> - </annotation> - </element> - <element name="UserID" type="ebics:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-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="HSARequestOrderDataType"> - <annotation> - <documentation xml:lang="de">Datentyp für Auftragsdaten für Auftragsart HSA (Anfrage: Initialisierung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung, bankfachlich signiert mit FTAM-Schlüssel).</documentation> - </annotation> - <sequence> - <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation> - </annotation> - </element> - <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation> - </annotation> - </element> - <element name="PartnerID" type="ebics:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID.</documentation> - </annotation> - </element> - <element name="UserID" type="ebics:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-ID.</documentation> - </annotation> - </element> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </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> - </annotation> - <sequence> - <element name="AuthenticationPubKeyInfo" type="ebics:AuthenticationPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Authentifikationsschlüssel.</documentation> - </annotation> - </element> - <element name="EncryptionPubKeyInfo" type="ebics:EncryptionPubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Verschlüsselungsschlüssel.</documentation> - </annotation> - </element> - <element ref="esig:SignaturePubKeyInfo" minOccurs="0" maxOccurs="0"> - <annotation> - <documentation xml:lang="de">öffentlicher EU-Signaturschlüssel.</documentation> - </annotation> - </element> - <element name="HostID" type="ebics:HostIDType"> - <annotation> - <documentation xml:lang="de">Banksystem-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> - </annotation> - <sequence> - <element name="AccessParams" type="ebics:HPDAccessParamsType"> - <annotation> - <documentation xml:lang="de">Zugangsparameter.</documentation> - </annotation> - </element> - <element name="ProtocolParams" type="ebics:HPDProtocolParamsType"> - <annotation> - <documentation xml:lang="de">Protokollparameter.</documentation> - </annotation> - </element> - </sequence> - </complexType> - <complexType name="HPDAccessParamsType"> - <annotation> - <documentation xml:lang="de">Datentyp für HPD-Zugangsparameter.</documentation> - </annotation> - <sequence> - <element name="URL" maxOccurs="unbounded"> - <annotation> - <documentation xml:lang="de">institutsspezifische IP-Adresse/URL.</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> - </annotation> - </attribute> - </extension> - </simpleContent> - </complexType> - </element> - <element name="Institute"> - <annotation> - <documentation xml:lang="de">Institutsbezeichnung.</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="X509Data" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Parameter zur X.509-Funktionalität.</documentation> - <documentation xml:lang="en">Parameter denoting the X.509 functionality.</documentation> - </annotation> - <complexType> - <attributeGroup ref="ebics:OptSupportFlag"/> - <attribute name="persistent" type="boolean" use="optional" default="false"> - <annotation> - <documentation xml:lang="de">Sind die X.509-Daten der Teilnehmer serverseitig persistent gespeichert?</documentation> - <documentation xml:lang="en">Will the user's X.509 data be stored persistently on server side?</documentation> - </annotation> - </attribute> - </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> - </annotation> - <sequence> - <element name="Protocol"> - <annotation> - <documentation xml:lang="de">unterstützte EBICS-Protokollversionen (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> - </annotation> - <simpleType> - <list itemType="ebics:AuthenticationVersionType"/> - </simpleType> - </element> - <element name="Encryption"> - <annotation> - <documentation xml:lang="de">unterstützte Versionen der Verschlüsselung (E...).</documentation> - </annotation> - <simpleType> - <list itemType="ebics:EncryptionVersionType"/> - </simpleType> - </element> - <element name="Signature"> - <annotation> - <documentation xml:lang="de">unterstützte EU-Versionen (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> - </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> - </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> - </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> - </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> - </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> - </annotation> - <sequence> - <element name="CancelledDataDigest" type="ebics:DataDigestType"> - <annotation> - <documentation xml:lang="de">Hashwert der Auftragsdaten des stornierten Auftrags.</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> - </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">Datentyp für HVT-Auftragsinformationen.</documentation> - </annotation> - <sequence> - <element name="OrderFormat" type="ebics:OrderFormatType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Auftragsformat (z.B. DTAZV).</documentation> - </annotation> - </element> - <element name="AccountInfo" type="ebics:HVTAccountInfoType" minOccurs="2" maxOccurs="3"> - <annotation> - <documentation xml:lang="de">kontobezogene Details des Auftrags (Auftraggeber, Empfänger etc.).</documentation> - </annotation> - </element> - <element name="ExecutionDate" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Ausführungsdatum.</documentation> - </annotation> - <complexType> - <simpleContent> - <extension base="date"/> - </simpleContent> - </complexType> - </element> - <element name="Amount"> - <annotation> - <documentation xml:lang="de">Betrag.</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> - </annotation> - </attribute> - <attribute name="Currency" type="ebics:CurrencyBaseType" use="optional"> - <annotation> - <documentation xml:lang="de">Währungscode.</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> - </annotation> - <complexType> - <simpleContent> - <extension base="string"> - <attribute name="Type" use="required"> - <annotation> - <documentation xml:lang="de">Beschreibungstyp.</documentation> - </annotation> - <simpleType> - <restriction base="token"> - <enumeration value="Purpose"> - <annotation> - <documentation xml:lang="de">Verwendungszweck</documentation> - </annotation> - </enumeration> - <enumeration value="Details"> - <annotation> - <documentation xml:lang="de">Auftragsdetails</documentation> - </annotation> - </enumeration> - <enumeration value="Comment"> - <annotation> - <documentation xml:lang="de">Kommentar</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> - </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> - </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> - </annotation> - <sequence> - <element name="OrderType" type="ebics:OrderTBaseType"> - <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="FileFormat" type="ebics:FileFormatType" minOccurs="0"> - <annotation> - <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 lt. DFÜ-Abkommen des ausgewählten Auftrags.</documentation> - </annotation> - </element> - <element name="OrderDataSize" type="positiveInteger"> - <annotation> - <documentation xml:lang="de">Größe der unkomprimierten Auftragsdaten in Bytes.</documentation> - </annotation> - </element> - <element name="SigningInfo" type="ebics:HVUSigningInfoType"> - <annotation> - <documentation xml:lang="de">Informationen zu den Unterschriftsmodalitäten.</documentation> - </annotation> - </element> - <element name="SignerInfo" type="ebics:SignerInfoType" minOccurs="0" maxOccurs="unbounded"> - <annotation> - <documentation xml:lang="de">Informationen zu den bisherigen Unterzeichnern.</documentation> - </annotation> - </element> - <element name="OriginatorInfo" type="ebics:HVUOriginatorInfoType"> - <annotation> - <documentation xml:lang="de">Informationen zum Einreicher.</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> - </annotation> - <sequence> - <element name="OrderTypes" type="ebics:OrderTListType" minOccurs="0"> - <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> - </annotation> - <sequence> - <element name="OrderTypes" type="ebics:OrderTListType" minOccurs="0"> - <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="OrderType" type="ebics:OrderTBaseType"> - <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="FileFormat" type="ebics:FileFormatType" minOccurs="0"> - <annotation> - <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 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> - <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 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="OrderTypes" type="ebics:OrderTListType"> - <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="FileFormat" type="ebics:FileFormatType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Identifikation des Dateiformats im Falle von FUL/FDL</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:OrderTListType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Liste der Auftragsartenbeschränkungen; falls nicht angegeben, gibt es keine Auftragsartenbeschränkungen; falls Liste leer, 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="OrderType" type="ebics:OrderTBaseType"> - <annotation> - <documentation xml:lang="de">Auftragsart.</documentation> - </annotation> - </element> - <element name="FileFormat" type="ebics:FileFormatType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Identifikation des Dateiformats im Falle von FUL/FDL</documentation> - <documentation xml:lang="en">Identification of the file format in the case of FUL/FDL</documentation> - </annotation> - </element> - <element name="TransferType" type="ebics:TransferType"> - <annotation> - <documentation xml:lang="de">Transfertyp (Upload/Download).</documentation> - </annotation> - </element> - <element name="OrderFormat" type="ebics:OrderFormatType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Auftragsformat (z.B. DTAZV).</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> - <complexType name="GenericOrderParamsType"> - <annotation> - <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für beliebige Auftragsarten.</documentation> - </annotation> - <sequence> - <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <complexType name="FULOrderParamsType"> - <annotation> - <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart FUL.</documentation> - </annotation> - <sequence> - <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/> - <element name="FileFormat" type="ebics:FileFormatType"> - <annotation> - <documentation xml:lang="de">Bezeichnung des Dateiformats</documentation> - <documentation xml:lang="en">Name of data format</documentation> - </annotation> - </element> - </sequence> - </complexType> - <complexType name="FDLOrderParamsType"> - <annotation> - <documentation xml:lang="de">Datentyp für zusätzliche Auftragsparameter für Auftragsart FDL.</documentation> - </annotation> - <sequence> - <element name="DateRange" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Datumsbereich (von-bis).</documentation> - <documentation xml:lang="en">Range of date (from-to).</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> - <element ref="ebics:Parameter" minOccurs="0" maxOccurs="unbounded"/> - <element name="FileFormat" type="ebics:FileFormatType"> - <annotation> - <documentation xml:lang="de">Bezeichnung des Dateiformats</documentation> - <documentation xml:lang="en">Name of data format</documentation> - </annotation> - </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> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_orders_H005.xsd b/ebics/src/main/resources/xsd/ebics_orders_H005.xsd @@ -1,2094 +0,0 @@ -<?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/ebics/src/main/resources/xsd/ebics_request_H004.xsd b/ebics/src/main/resources/xsd/ebics_request_H004.xsd @@ -1,355 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - <!-- Mit XMLSpy v2008 rel. 2 (http://www.altova.com) von Sabine Wenzel (SIZ Bonn) bearbeitet --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> -<annotation> - <documentation xml:lang="de">ebics_request_H004.xsd ist das EBICS-Protokollschema für Anfragen.</documentation> - <documentation xml:lang="en">ebics_request_H004.xsd is the appropriate EBICS protocol schema for standard requests.</documentation> -</annotation> -<include schemaLocation="ebics_types_H004.xsd"/> -<include schemaLocation="ebics_orders_H004.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">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="OrderType"> - <annotation> - <documentation xml:lang="de">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 name="OrderAttribute" type="ebics:OrderAttributeType"> - <annotation> - <documentation xml:lang="de">Auftragsattribut.</documentation> - <documentation xml:lang="en">attribute describing the order contents.</documentation> - </annotation> - </element> - <element ref="ebics:OrderParams"/> - </sequence> -</complexType> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_request_H005.xsd b/ebics/src/main/resources/xsd/ebics_request_H005.xsd @@ -1,349 +0,0 @@ -<?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/ebics/src/main/resources/xsd/ebics_response_H004.xsd b/ebics/src/main/resources/xsd/ebics_response_H004.xsd @@ -1,166 +0,0 @@ -<?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:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <annotation> - <documentation xml:lang="de">ebics_response_H004.xsd ist das EBICS-Protokollschema für Antwortnachrichten.</documentation> - <documentation xml:lang="en">ebics_response_H004.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_H004.xsd"/> - <include schemaLocation="ebics_orders_H004.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">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/ebics/src/main/resources/xsd/ebics_response_H005.xsd b/ebics/src/main/resources/xsd/ebics_response_H005.xsd @@ -1,167 +0,0 @@ -<?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/ebics/src/main/resources/xsd/ebics_signature_S002.xsd b/ebics/src/main/resources/xsd/ebics_signature_S002.xsd @@ -1,177 +0,0 @@ -<?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:esig="http://www.ebics.org/S002" targetNamespace="http://www.ebics.org/S002" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <annotation> - <documentation xml:lang="de">ebics_signature enthält Typdefinitionen für elektronische Unterschriften der Versionen A005, A006 und folgende.</documentation> - <documentation xml:lang="en">ebics_EU contains type definitions for electronic signatures: versions A005, A006 and et sqq.</documentation> - </annotation> - <!-- Elementdefinitionen für die EU. Die XML-Klartext-Struktur wird im EBICS-Signaturdatenkontext binär interpretiert.--> - <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="UserSignatureData" type="esig:UserSignatureDataSigBookType" substitutionGroup="esig:EBICSSignatureData"> - <annotation> - <documentation xml:lang="de">enthält die EUs der Teilnehmer.</documentation> - <documentation xml:lang="en">contains the digital signatures.</documentation> - </annotation> - </element> - <complexType name="UserSignatureDataSigBookType"> - <annotation> - <documentation xml:lang="de">Datentyp für Signaturdaten des Teilnehmers beim EU-Transfer.</documentation> - <documentation xml:lang="en">Data type for digital signature data transferred using EBICS.</documentation> - </annotation> - <sequence> - <element name="OrderSignatureData" type="esig:OrderSignatureDataType" maxOccurs="unbounded"> - <annotation> - <documentation xml:lang="de">bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format).</documentation> - <documentation xml:lang="en">Digital signature (either autorising an order or applied for transportation), structured format.</documentation> - </annotation> - </element> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <simpleType name="OrderSignatureType"> - <annotation> - <documentation xml:lang="de">Datentyp für kryptographische Unterschriften.</documentation> - </annotation> - <restriction base="base64Binary"/> - </simpleType> - <element name="OrderSignatureData" type="esig:OrderSignatureDataType"> - <annotation> - <documentation xml:lang="de">bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format).</documentation> - <documentation xml:lang="en">Digital signature (either autorising an order or applied for transportation), structured format.</documentation> - </annotation> - </element> - <complexType name="OrderSignatureDataType"> - <annotation> - <documentation xml:lang="de">Datentyp für bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format).</documentation> - <documentation xml:lang="en">Data type according for a digital signature (either autorising an order or applied for transportation), structured format.</documentation> - </annotation> - <sequence> - <element name="SignatureVersion" type="esig:SignatureVersionType"> - <annotation> - <documentation xml:lang="de">Version des Signaturverfahrens.</documentation> - <documentation xml:lang="en">Version of the algorithm used for signature creation.</documentation> - </annotation> - </element> - <element name="SignatureValue" type="base64Binary"> - <annotation> - <documentation xml:lang="de">Digitale Signatur.</documentation> - <documentation xml:lang="en">Digital signature.</documentation> - </annotation> - </element> - <element name="PartnerID" type="esig:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID des Unterzeichners.</documentation> - <documentation xml:lang="en">Customer ID of the signer.</documentation> - </annotation> - </element> - <element name="UserID" type="esig:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-ID.</documentation> - <documentation xml:lang="en">User ID.</documentation> - </annotation> - </element> - <element ref="ds:X509Data" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Parameter zur X.509-Funktionalität</documentation> - <documentation xml:lang="en">Parameter for X509Data</documentation> - </annotation> - </element> - </sequence> - </complexType> - <simpleType name="PartnerIDType"> - <annotation> - <documentation xml:lang="de">Datentyp für eine Kunden-ID.</documentation> - </annotation> - <restriction base="token"> - <maxLength value="35"/> - </restriction> - </simpleType> - <simpleType name="UserIDType"> - <annotation> - <documentation xml:lang="de">Datentyp für eine Teilnehmer-ID.</documentation> - </annotation> - <restriction base="token"> - <maxLength value="35"/> - </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> - <!-- Definitionen für die Uebertragung von oeffentlichen Signierschlüsseln. z.B. ueber EBICS mit INI, PUB, HCS.--> - <element name="SignaturePubKeyOrderData" type="esig:SignaturePubKeyOrderDataType"> - <annotation> - <documentation xml:lang="de">Element für Public Key Dateien unabhängig von der Auftragsart / Geschäftsvorfall.</documentation> - </annotation> - </element> - <complexType name="SignaturePubKeyOrderDataType"> - <annotation> - <documentation xml:lang="de">Datentyp für Public Key Dateien unabhängig von der Auftragsart / Geschäftsvorfall.</documentation> - </annotation> - <sequence> - <element name="SignaturePubKeyInfo" type="esig:SignaturePubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Signaturschlüssel.</documentation> - </annotation> - </element> - <element name="PartnerID" type="esig:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID.</documentation> - </annotation> - </element> - <element name="UserID" type="esig:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-ID.</documentation> - </annotation> - </element> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <element name="SignaturePubKeyInfo" type="esig:SignaturePubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Signaturschlüssel.</documentation> - </annotation> - </element> - <complexType name="SignaturePubKeyInfoType"> - <annotation> - <documentation xml:lang="de">Datentyp für öffentliche bankfachliche Schlüssel.</documentation> - </annotation> - <complexContent> - <extension base="esig:PubKeyInfoType"> - <sequence> - <element name="SignatureVersion" type="esig:SignatureVersionType"> - <annotation> - <documentation xml:lang="de">Version des EU-Signaturverfahrens.</documentation> - </annotation> - </element> - </sequence> - </extension> - </complexContent> - </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> - <simpleType name="TimestampType"> - <annotation> - <documentation xml:lang="de">Datentyp für Zeitstempel.</documentation> - </annotation> - <restriction base="dateTime"/> - </simpleType> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_signatures.xsd b/ebics/src/main/resources/xsd/ebics_signatures.xsd @@ -1,217 +0,0 @@ -<?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:esig="http://www.ebics.org/S001" targetNamespace="http://www.ebics.org/S001" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <annotation> - <documentation xml:lang="de">ebics_signature enthält Typdefinitionen für elektronische Unterschriften der Versionen A004, A005, A006 und folgende.</documentation> - <documentation xml:lang="en">ebics_EU contains type definitions for electronic signatures: versions A005, A006 and et sqq.</documentation> - </annotation> - <!-- Elementdefinitionen für die EU. Die XML-Klartext-Struktur wird im EBICS-Signaturdatenkontext binär interpretiert.--> - <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="UserSignatureData" type="esig:UserSignatureDataSigBookType" substitutionGroup="esig:EBICSSignatureData"> - <annotation> - <documentation xml:lang="de">enthält die EUs der Teilnehmer.</documentation> - <documentation xml:lang="en">contains the digital signatures.</documentation> - </annotation> - </element> - <complexType name="UserSignatureDataSigBookType"> - <annotation> - <documentation xml:lang="de">Datentyp für Signaturdaten des Teilnehmers beim EU-Transfer.</documentation> - <documentation xml:lang="en">Data type for digital signature data transferred using EBICS.</documentation> - </annotation> - <sequence> - <choice maxOccurs="unbounded"> - <element name="OrderSignature"> - <annotation> - <documentation xml:lang="de">bankfachliche Elektronische Unterschrift oder Transportunterschrift (Binärformat).</documentation> - <documentation xml:lang="en">Digital signature (either autorising an order or applied for transportation), binary format.</documentation> - </annotation> - <complexType> - <simpleContent> - <extension base="esig:OrderSignatureType"> - <attribute name="PartnerID" use="required"> - <annotation> - <documentation xml:lang="de">Kunden-ID des Unterzeichners.</documentation> - <documentation xml:lang="en">Customer ID of the signer.</documentation> - </annotation> - </attribute> - </extension> - </simpleContent> - </complexType> - </element> - <element name="OrderSignatureData" type="esig:OrderSignatureDataType"> - <annotation> - <documentation xml:lang="de">bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format).</documentation> - <documentation xml:lang="en">Digital signature (either autorising an order or applied for transportation), structured format.</documentation> - </annotation> - </element> - </choice> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <simpleType name="OrderSignatureType"> - <annotation> - <documentation xml:lang="de">Datentyp für kryptographische Unterschriften.</documentation> - </annotation> - <restriction base="base64Binary"/> - </simpleType> - <element name="OrderSignatureData" type="esig:OrderSignatureDataType"> - <annotation> - <documentation xml:lang="de">bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format).</documentation> - <documentation xml:lang="en">Digital signature (either autorising an order or applied for transportation), structured format.</documentation> - </annotation> - </element> - <complexType name="OrderSignatureDataType"> - <annotation> - <documentation xml:lang="de">Datentyp für bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format).</documentation> - <documentation xml:lang="en">Data type according for a digital signature (either autorising an order or applied for transportation), structured format.</documentation> - </annotation> - <sequence> - <element name="SignatureVersion" type="esig:SignatureVersionType"> - <annotation> - <documentation xml:lang="de">Version des Signaturverfahrens.</documentation> - <documentation xml:lang="en">Version of the algorithm used for signature creation.</documentation> - </annotation> - </element> - <element name="SignatureValue" type="base64Binary"> - <annotation> - <documentation xml:lang="de">Digitale Signatur.</documentation> - <documentation xml:lang="en">Digital signature.</documentation> - </annotation> - </element> - <element name="PartnerID" type="esig:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID des Unterzeichners.</documentation> - <documentation xml:lang="en">Customer ID of the signer.</documentation> - </annotation> - </element> - <element name="UserID" type="esig:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-ID.</documentation> - <documentation xml:lang="en">User ID.</documentation> - </annotation> - </element> - <element ref="ds:X509Data" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Parameter zur X.509-Funktionalität</documentation> - <documentation xml:lang="en">Parameter for X509Data</documentation> - </annotation> - </element> - </sequence> - </complexType> - <simpleType name="PartnerIDType"> - <annotation> - <documentation xml:lang="de">Datentyp für eine Kunden-ID.</documentation> - </annotation> - <restriction base="token"> - <maxLength value="35"/> - </restriction> - </simpleType> - <simpleType name="UserIDType"> - <annotation> - <documentation xml:lang="de">Datentyp für eine Teilnehmer-ID.</documentation> - </annotation> - <restriction base="token"> - <maxLength value="35"/> - </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> - <!-- Definitionen für die Uebertragung von oeffentlichen Signierschlüsseln. z.B. ueber EBICS mit INI, PUB, HCS.--> - <element name="SignaturePubKeyOrderData" type="esig:SignaturePubKeyOrderDataType"> - <annotation> - <documentation xml:lang="de">Element für Public Key Dateien unabhängig von der Auftragsart / Geschäftsvorfall.</documentation> - </annotation> - </element> - <complexType name="SignaturePubKeyOrderDataType"> - <annotation> - <documentation xml:lang="de">Datentyp für Public Key Dateien unabhängig von der Auftragsart / Geschäftsvorfall.</documentation> - </annotation> - <sequence> - <element name="SignaturePubKeyInfo" type="esig:SignaturePubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Signaturschlüssel.</documentation> - </annotation> - </element> - <element name="PartnerID" type="esig:PartnerIDType"> - <annotation> - <documentation xml:lang="de">Kunden-ID.</documentation> - </annotation> - </element> - <element name="UserID" type="esig:UserIDType"> - <annotation> - <documentation xml:lang="de">Teilnehmer-ID.</documentation> - </annotation> - </element> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <element name="SignaturePubKeyInfo" type="esig:SignaturePubKeyInfoType"> - <annotation> - <documentation xml:lang="de">öffentlicher Signaturschlüssel.</documentation> - </annotation> - </element> - <complexType name="SignaturePubKeyInfoType"> - <annotation> - <documentation xml:lang="de">Datentyp für öffentliche bankfachliche Schlüssel.</documentation> - </annotation> - <complexContent> - <extension base="esig:PubKeyInfoType"> - <sequence> - <element name="SignatureVersion" type="esig:SignatureVersionType"> - <annotation> - <documentation xml:lang="de">Version des EU-Signaturverfahrens.</documentation> - </annotation> - </element> - </sequence> - </extension> - </complexContent> - </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> - <sequence> - <element ref="ds:X509Data" minOccurs="0"/> - <element name="PubKeyValue" type="esig:PubKeyValueType"> - <annotation> - <documentation xml:lang="de">Darstellung als Exponent-Modulus-Kombination.</documentation> - </annotation> - </element> - </sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <complexType name="PubKeyValueType"> - <annotation> - <documentation xml:lang="de">Datentyp für die Exponent-Modulus-Darstellung eines öffentlichen RSA-Schlüssels.</documentation> - </annotation> - <sequence> - <element ref="ds:RSAKeyValue"/> - <element name="TimeStamp" type="esig:TimestampType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Zeitpunkt der Generierung des Schlüssels.</documentation> - </annotation> - </element> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <simpleType name="TimestampType"> - <annotation> - <documentation xml:lang="de">Datentyp für Zeitstempel.</documentation> - </annotation> - <restriction base="dateTime"/> - </simpleType> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_types_H004.xsd b/ebics/src/main/resources/xsd/ebics_types_H004.xsd @@ -1,2426 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Mit XMLSpy v2008 rel. 2 (http://www.altova.com) von Sabine Wenzel (SIZ Bonn) bearbeitet --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:esig="http://www.ebics.org/S001" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H004" targetNamespace="urn:org:ebics:H004" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> - <import namespace="http://www.ebics.org/S001" schemaLocation="ebics_signatures.xsd"/> - <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <annotation> - <documentation xml:lang="de">ebics_types_H004.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="OrderTListType"> - <annotation> - <documentation xml:lang="de">Listentyp für allgemeine Auftragsarten.</documentation> - </annotation> - <list itemType="ebics:OrderTBaseType"/> - </simpleType> - <simpleType name="OrderTType"> - <annotation> - <documentation xml:lang="de">Datentyp für zulässige Auftragsarten im EBICS-Kontext.</documentation> - </annotation> - <restriction base="ebics:OrderTBaseType"> - <length value="3"/> - <enumeration value="HSA"> - <annotation> - <documentation xml:lang="de">Senden der Public Keys für Authentifikation und Verschlüsselung, bankfachlich signiert mit FTAM-Signaturschlüssel</documentation> - </annotation> - </enumeration> - <enumeration value="HIA"> - <annotation> - <documentation xml:lang="de">Senden der Public Keys zur Authentifikation und zur Verschlüsselung</documentation> - </annotation> - </enumeration> - <enumeration value="HPB"> - <annotation> - <documentation xml:lang="de">Abholen der Public Keys der Bank</documentation> - </annotation> - </enumeration> - <enumeration value="HCA"> - <annotation> - <documentation xml:lang="de">Ändern der Public Keys zur Authentifikation und zur Verschlüsselung</documentation> - </annotation> - </enumeration> - <enumeration value="HPD"> - <annotation> - <documentation xml:lang="de">Abholen Bankparameter für internetbasierten Standard</documentation> - </annotation> - </enumeration> - <enumeration value="HVU"> - <annotation> - <documentation xml:lang="de">Abholen VEU Übersicht</documentation> - </annotation> - </enumeration> - <enumeration value="HVD"> - <annotation> - <documentation xml:lang="de">Abholen VEU Auftragsdaten (Daten-trägerbegleitzettel)</documentation> - </annotation> - </enumeration> - <enumeration value="HVT"> - <annotation> - <documentation xml:lang="de">Abholen VEU Auftragsdaten ( Transakti-onsdetails gemäß Parametervorgabe)</documentation> - </annotation> - </enumeration> - <enumeration value="HVE"> - <annotation> - <documentation xml:lang="de">Senden EU zu bestehendem VEU-Auftrag</documentation> - </annotation> - </enumeration> - <enumeration value="HVS"> - <annotation> - <documentation xml:lang="de">Senden Stornierung für bestehenden VEU-Auftrag</documentation> - </annotation> - </enumeration> - <enumeration value="HKD"> - <annotation> - <documentation xml:lang="de">Abholen Konfigurationsdaten des Teilnehmers</documentation> - </annotation> - </enumeration> - <enumeration value="HAA"> - <annotation> - <documentation xml:lang="de">Abholen Übersicht zu abrufbaren Aufträgen</documentation> - </annotation> - </enumeration> - <enumeration value="HVU"> - <annotation> - <documentation xml:lang="de">VEU-Übersicht abholen</documentation> - </annotation> - </enumeration> - <enumeration value="HVD"> - <annotation> - <documentation xml:lang="de">VEU-Status abrufen</documentation> - </annotation> - </enumeration> - <enumeration value="HVT"> - <annotation> - <documentation xml:lang="de">VEU-Transaktion-Details abrufen</documentation> - </annotation> - </enumeration> - <enumeration value="HVE"> - <annotation> - <documentation xml:lang="de">EU hinzufügen</documentation> - </annotation> - </enumeration> - <enumeration value="HVS"> - <annotation> - <documentation xml:lang="de">VEU-Stornierung</documentation> - </annotation> - </enumeration> - <enumeration value="AAE"> - <annotation> - <documentation xml:lang="de">Senden Importakkreditiv Änderung</documentation> - </annotation> - </enumeration> - <enumeration value="AEA"> - <annotation> - <documentation xml:lang="de">Senden Exportakkreditive</documentation> - </annotation> - </enumeration> - <enumeration value="AIA"> - <annotation> - <documentation xml:lang="de">Senden Import-Akkreditive Avisierung</documentation> - </annotation> - </enumeration> - <enumeration value="AKA"> - <annotation> - <documentation xml:lang="de">Abholen Import-Akkreditive</documentation> - </annotation> - </enumeration> - <enumeration value="AWV"> - <annotation> - <documentation xml:lang="de">AWV-Meldung senden</documentation> - </annotation> - </enumeration> - <enumeration value="AZM"> - <annotation> - <documentation xml:lang="de">AZV im Magnetbandformat senden (Satzlänge variabel)</documentation> - </annotation> - </enumeration> - <enumeration value="AZV"> - <annotation> - <documentation xml:lang="de">AZV im Diskettenformat senden</documentation> - </annotation> - </enumeration> - <enumeration value="AZ2"> - <annotation> - <documentation xml:lang="de">AZV im Magnetbandformat senden (Satzlängenfeld 2 Bytes)</documentation> - </annotation> - </enumeration> - <enumeration value="AZ4"> - <annotation> - <documentation xml:lang="de">AZV im Magnetbandformat senden (Satzlängenfeld 4 Bytes)</documentation> - </annotation> - </enumeration> - <enumeration value="DDG"> - <annotation> - <documentation xml:lang="de">Abholen Devisenhandelsbestätigung</documentation> - </annotation> - </enumeration> - <enumeration value="DHB"> - <annotation> - <documentation xml:lang="de">Senden Devisenhandelsbestätigung</documentation> - </annotation> - </enumeration> - <enumeration value="DTE"> - <annotation> - <documentation xml:lang="de">Eilauftrag (IZV im DTAUS0-Format) senden</documentation> - </annotation> - </enumeration> - <enumeration value="DTI"> - <annotation> - <documentation xml:lang="de">IZV-Datei abholen</documentation> - </annotation> - </enumeration> - <enumeration value="DTM"> - <annotation> - <documentation xml:lang="de">MCV-Datei abholen (Format analog MCV)</documentation> - </annotation> - </enumeration> - <enumeration value="DTV"> - <annotation> - <documentation xml:lang="de">Zahlungsverkehrsdateien von Service-Rechenzentren senden</documentation> - </annotation> - </enumeration> - <enumeration value="DT2"> - <annotation> - <documentation xml:lang="de">MC2-Datei abholen (Format analog MC2)</documentation> - </annotation> - </enumeration> - <enumeration value="DT4"> - <annotation> - <documentation xml:lang="de">MC4-Datei abholen (Format analog MC4)</documentation> - </annotation> - </enumeration> - <enumeration value="EAB"> - <annotation> - <documentation xml:lang="de">Exportakkreditive abholen</documentation> - </annotation> - </enumeration> - <enumeration value="ECS"> - <annotation> - <documentation xml:lang="de">Senden electronic-cash Lastschriftdatei</documentation> - </annotation> - </enumeration> - <enumeration value="EDC"> - <annotation> - <documentation xml:lang="de">Senden Maestro-Lastschriftdatei</documentation> - </annotation> - </enumeration> - <enumeration value="EEA"> - <annotation> - <documentation xml:lang="de">EDIFACT abholen ASCII</documentation> - </annotation> - </enumeration> - <enumeration value="EEZ"> - <annotation> - <documentation xml:lang="de">EDIFACT abholen EBCDIC</documentation> - </annotation> - </enumeration> - <enumeration value="EIB"> - <annotation> - <documentation xml:lang="de">Ausführungsanzeige (Exportinkasso) Bank an Kunde abholen</documentation> - </annotation> - </enumeration> - <enumeration value="EIK"> - <annotation> - <documentation xml:lang="de">Senden Exportinkassi</documentation> - </annotation> - </enumeration> - <enumeration value="ESA"> - <annotation> - <documentation xml:lang="de">EDIFACT senden ASCII</documentation> - </annotation> - </enumeration> - <enumeration value="ESM"> - <annotation> - <documentation xml:lang="de">EU-Standardüberweisung (Zahlungsart 13) im Magnetbandformat (Satzlängenfeld 4 Bytes)</documentation> - </annotation> - </enumeration> - <enumeration value="ESR"> - <annotation> - <documentation xml:lang="de">Einreichung von EDIFACT-Lastschriften</documentation> - </annotation> - </enumeration> - <enumeration value="ESZ"> - <annotation> - <documentation xml:lang="de">EDIFACT senden EBCDIC</documentation> - </annotation> - </enumeration> - <enumeration value="ESU"> - <annotation> - <documentation xml:lang="de">EU-Standardüberweisung (Zahlungsart 13)</documentation> - </annotation> - </enumeration> - <enumeration value="EUE"> - <annotation> - <documentation xml:lang="de">Taggleiche grenzüberschreitende Euro-Eilzahlung</documentation> - </annotation> - </enumeration> - <enumeration value="GAB"> - <annotation> - <documentation xml:lang="de">Abholen Garantien</documentation> - </annotation> - </enumeration> - <enumeration value="GAK"> - <annotation> - <documentation xml:lang="de">Senden Garantien</documentation> - </annotation> - </enumeration> - <enumeration value="GKT"> - <annotation> - <documentation xml:lang="de">GeldKarte-Umsatz senden (Datenaufbau gemäß GeldKarte-Spezifikation)</documentation> - </annotation> - </enumeration> - <enumeration value="IDD"> - <annotation> - <documentation xml:lang="de">Internationale Lastschriften</documentation> - </annotation> - </enumeration> - <enumeration value="IIB"> - <annotation> - <documentation xml:lang="de">Abholen Importinkassi</documentation> - </annotation> - </enumeration> - <enumeration value="IIK"> - <annotation> - <documentation xml:lang="de">Senden Importinkassi</documentation> - </annotation> - </enumeration> - <enumeration value="INT"> - <annotation> - <documentation xml:lang="de">Internationaler Zahlungsverkehr</documentation> - </annotation> - </enumeration> - <enumeration value="IZG"> - <annotation> - <documentation xml:lang="de">Inlandszahlungsverkehrsauftrag senden (nur Gutschriften)</documentation> - </annotation> - </enumeration> - <enumeration value="IZL"> - <annotation> - <documentation xml:lang="de">Inlandszahlungsverkehrsauftrag senden (nur Lastschriften)</documentation> - </annotation> - </enumeration> - <enumeration value="IZV"> - <annotation> - <documentation xml:lang="de">Inlandszahlungsverkehrsauftrag senden</documentation> - </annotation> - </enumeration> - <enumeration value="MAO"> - <annotation> - <documentation xml:lang="de">Abholen Magnetband-Datei aus optischer Beleglesung</documentation> - </annotation> - </enumeration> - <enumeration value="MCV"> - <annotation> - <documentation xml:lang="de">Senden IZV-Magnetbandformat (Satzlängenfeld 4 Bytes)</documentation> - </annotation> - </enumeration> - <enumeration value="MC2"> - <annotation> - <documentation xml:lang="de">Senden IZV-Magnetbandformat (Satzlängenfeld 2 Bytes)</documentation> - </annotation> - </enumeration> - <enumeration value="MC4"> - <annotation> - <documentation xml:lang="de">Senden IZV-Magnetbandformat (Satzlänge variabel)</documentation> - </annotation> - </enumeration> - <enumeration value="POZ"> - <annotation> - <documentation xml:lang="de">Senden POZ-Datei</documentation> - </annotation> - </enumeration> - <enumeration value="RDT"> - <annotation> - <documentation xml:lang="de">Rücklastschrift an Kunde</documentation> - </annotation> - </enumeration> - <enumeration value="RFT"> - <annotation> - <documentation xml:lang="de">Request for Transfer</documentation> - </annotation> - </enumeration> - <enumeration value="STA"> - <annotation> - <documentation xml:lang="de">Abholen Swift-Tagesauszüge</documentation> - </annotation> - </enumeration> - <enumeration value="VMK"> - <annotation> - <documentation xml:lang="de">Abholen kurzfristige Vormerkposten</documentation> - </annotation> - </enumeration> - <enumeration value="WPA"> - <annotation> - <documentation xml:lang="de">Abholen Wertpapierabrechnung</documentation> - </annotation> - </enumeration> - <enumeration value="WPB"> - <annotation> - <documentation xml:lang="de">Abholen Wertpapierausführungsanzeige</documentation> - </annotation> - </enumeration> - <enumeration value="WPC"> - <annotation> - <documentation xml:lang="de">Abholen Depotaufstellung</documentation> - </annotation> - </enumeration> - <enumeration value="WPD"> - <annotation> - <documentation xml:lang="de">Abholen sonstige WP-Umsätze</documentation> - </annotation> - </enumeration> - <enumeration value="INI"> - <annotation> - <documentation xml:lang="de">Initialisierung der bankfachlichen EU des Teilnehmers.</documentation> - </annotation> - </enumeration> - <enumeration value="PTK"> - <annotation> - <documentation xml:lang="de">Abholen Kundenprotokoll</documentation> - </annotation> - </enumeration> - <enumeration value="PUB"> - <annotation> - <documentation xml:lang="de">Senden Public Key zur Unterschriftenverifizierung</documentation> - </annotation> - </enumeration> - <enumeration value="HCA"> - <annotation> - <documentation xml:lang="de">Änderung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung</documentation> - </annotation> - </enumeration> - <enumeration value="SPR"> - <annotation> - <documentation xml:lang="de">Sperren der Zugangsberechtigung</documentation> - </annotation> - </enumeration> - <enumeration value="VPB"> - <annotation> - <documentation xml:lang="de">Abholen Public Key der Bank zur Verschlüsselung</documentation> - </annotation> - </enumeration> - <enumeration value="FIN"> - <annotation> - <documentation xml:lang="de">EDIFACT-FINPAY senden</documentation> - </annotation> - </enumeration> - <enumeration value="IZS"> - <annotation> - <documentation xml:lang="de">Informationen von Zentralstellen</documentation> - </annotation> - </enumeration> - <enumeration value="SSP"> - <annotation> - <documentation xml:lang="de">ec-Karten-Sperrdatei</documentation> - </annotation> - </enumeration> - <enumeration value="ATA"> - <annotation> - <documentation xml:lang="de">Teilausnutzung Importakkreditiv (Kreditinstitut an Kunde)</documentation> - </annotation> - </enumeration> - <enumeration value="BKA"> - <annotation> - <documentation xml:lang="de">Auftragsart für elektronische Kontoauszüge</documentation> - </annotation> - </enumeration> - <enumeration value="BZK"> - <annotation> - <documentation xml:lang="de">Barzahlungskarte</documentation> - </annotation> - </enumeration> - <enumeration value="DKI"> - <annotation> - <documentation xml:lang="de">Devisenkursinformationen abholen (Euro)</documentation> - </annotation> - </enumeration> - <enumeration value="DMI"> - <annotation> - <documentation xml:lang="de">Abholen Devisenmarktinformationen</documentation> - </annotation> - </enumeration> - <enumeration value="DSW"> - <annotation> - <documentation xml:lang="de">Abholen Devisenswapinformationen</documentation> - </annotation> - </enumeration> - <enumeration value="ESG"> - <annotation> - <documentation xml:lang="de">ESG-Datei für Elektronische Zweitunterschrift abholen</documentation> - </annotation> - </enumeration> - <enumeration value="ESP"> - <annotation> - <documentation xml:lang="de">ESP-Datei für Elektronische Zweitunterschrift senden</documentation> - </annotation> - </enumeration> - <enumeration value="FTB"> - <annotation> - <documentation xml:lang="de">Abholen/Senden beliebige Datei</documentation> - </annotation> - </enumeration> - <enumeration value="FTD"> - <annotation> - <documentation xml:lang="de">Freie Textdatei senden/abholen</documentation> - </annotation> - </enumeration> - <enumeration value="IBK"> - <annotation> - <documentation xml:lang="de">Abholen Institutsbestätigungsdatei (Komplettbestand)</documentation> - </annotation> - </enumeration> - <enumeration value="IBW"> - <annotation> - <documentation xml:lang="de">Abholen Institutsbestätigungsdatei (Komplettbestand weitere Datei)</documentation> - </annotation> - </enumeration> - <enumeration value="IBU"> - <annotation> - <documentation xml:lang="de">Abholen Institutsbestätigungsdatei (tägliches Update)</documentation> - </annotation> - </enumeration> - <enumeration value="IKK"> - <annotation> - <documentation xml:lang="de">Senden Institutskonten (Komplettbestand begrenzt auf 170 MB)</documentation> - </annotation> - </enumeration> - <enumeration value="IKU"> - <annotation> - <documentation xml:lang="de">Senden Institutskonten (tägliches Update)</documentation> - </annotation> - </enumeration> - <enumeration value="IKW"> - <annotation> - <documentation xml:lang="de">Senden Institutskonten (Komplettbestand weitere Datei)</documentation> - </annotation> - </enumeration> - <enumeration value="KTH"> - <annotation> - <documentation xml:lang="de">KTOHIN: Automatisiertes Verfahren für die Änderung von Kontonummern und Bankleitzahlen</documentation> - </annotation> - </enumeration> - <enumeration value="KTR"> - <annotation> - <documentation xml:lang="de">KTORUECK: Automatisiertes Verfahren für die Änderung von Kontonummern und Bankleitzahlen </documentation> - </annotation> - </enumeration> - <enumeration value="KKZ"> - <annotation> - <documentation xml:lang="de">Kontenkonzentration und Saldenausgleich</documentation> - </annotation> - </enumeration> - <enumeration value="TST"> - <annotation> - <documentation xml:lang="de">Senden/Abholen Testdatei (ASCII)</documentation> - </annotation> - </enumeration> - <enumeration value="UPD"> - <annotation> - <documentation xml:lang="de">Updates abholen</documentation> - </annotation> - </enumeration> - </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="OrderAttributeBaseType"> - <annotation> - <documentation xml:lang="de">Datentyp für ein einzelnes Auftragsattributkennzeichen (Grundtyp).</documentation> - </annotation> - <restriction base="token"> - <length value="5"/> - </restriction> - </simpleType> - <simpleType name="OrderAttributeType"> - <annotation> - <documentation xml:lang="de">Datentyp für Auftragsattributkennzeichen gemäß DFÜ-Abkommen.</documentation> - </annotation> - <restriction base="ebics:OrderAttributeBaseType"> - <enumeration value="OZHNN"> - <annotation> - <documentation xml:lang="de">Auftragsdaten mit Unterschrift, ZIP-komprimiert, hybrid verschlüsselt</documentation> - </annotation> - </enumeration> - <enumeration value="UZHNN"> - <annotation> - <documentation xml:lang="de">Unterschrift, ZIP-komprimiert, hybrid verschlüsselt</documentation> - </annotation> - </enumeration> - <enumeration value="DZHNN"> - <annotation> - <documentation xml:lang="de">Auftragsdaten ohne Unterschrift, ZIP-komprimiert, hybrid verschlüsselt</documentation> - </annotation> - </enumeration> - </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 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 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="CountryCodeType"> - <annotation> - <documentation xml:lang="de">ISO-Code zur Länderkennzeichnung.</documentation> - <documentation xml:lang="en">ISO-Code to identify the country.</documentation> - </annotation> - <restriction base="token"> - <length value="2"/> - <pattern value="[A-Z]{2,2}"/> - </restriction> - </simpleType> - <complexType name="FileFormatType"> - <annotation> - <documentation xml:lang="de">Datentyp für das Dateiformat.</documentation> - </annotation> - <simpleContent> - <extension base="token"> - <attribute name="CountryCode" type="ebics:CountryCodeType"> - <annotation> - <documentation xml:lang="de">ISO-Code zur Länderkennzeichnung (EU für Europa)</documentation> - <documentation xml:lang="en">ISO-Code to identify the country (EU for Europe)</documentation> - </annotation> - </attribute> - </extension> - </simpleContent> - </complexType> - <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="optional" default="A004"> - <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="PubKeyValueType"> - <annotation> - <documentation xml:lang="de">Datentyp für die Exponent-Modulus-Darstellung eines öffentlichen RSA-Schlüssels.</documentation> - </annotation> - <sequence> - <element ref="ds:RSAKeyValue"/> - <element name="TimeStamp" type="ebics:TimestampType" minOccurs="0"> - <annotation> - <documentation xml:lang="de">Zeitpunkt der Generierung des Schlüssels.</documentation> - </annotation> - </element> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </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> - <sequence> - <element ref="ds:X509Data" minOccurs="0"/> - <element name="PubKeyValue" type="ebics:PubKeyValueType"> - <annotation> - <documentation xml:lang="de">Darstellung als Exponent-Modulus-Kombination.</documentation> - </annotation> - </element> - </sequence> - <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="TransferType"> - <annotation> - <documentation>Datentyp für den Transfertyp (Upload/Download).</documentation> - </annotation> - <restriction base="token"> - <enumeration value="Upload"> - <annotation> - <documentation xml:lang="de">Auftragsdaten werden bei der Anfrage transferiert.</documentation> - </annotation> - </enumeration> - <enumeration value="Download"> - <annotation> - <documentation xml:lang="de">Auftragsdaten werden bei der Antwort transferiert.</documentation> - </annotation> - </enumeration> - </restriction> - </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="OrderFormatType"> - <annotation> - <documentation xml:lang="de">Datentyp für das Auftragsformat.</documentation> - </annotation> - <restriction base="token"> - <maxLength value="8"/> - </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">generische Schlüssel-Wert-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 des Parameters.</documentation> - <documentation xml:lang="en">Name of the parameter (= key).</documentation> - </annotation> - </element> - <element name="Value"> - <annotation> - <documentation xml:lang="de">Wert des Parameters.</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> -</schema> diff --git a/ebics/src/main/resources/xsd/ebics_types_H005.xsd b/ebics/src/main/resources/xsd/ebics_types_H005.xsd @@ -1,1885 +0,0 @@ -<?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> diff --git a/ebics/src/main/resources/xsd/pain.001.001.03.ch.02.xsd b/ebics/src/main/resources/xsd/pain.001.001.03.ch.02.xsd @@ -1,1212 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- -(C) Copyright 2010, SKSF, www.sksf.ch -CH Version fuer pain.001 Credit Transfer: xmlns="http://www.iso-payments.ch" -.ch.: Identification for this CH version -Last part (.02): Version of this scheme - -Based on ISO pain.001.001.03 (urn:iso:std:iso:20022:tech:xsd:pain.001.001.03) - -Anregungen und Fragen zu diesem Dokument können an das jeweilige Finanzinstitut gerichtet werden. -Allgemeine Anregungen können auch bei der SIX Interbank Clearing AG unter folgender Adresse angebracht werden: -pm@six-group.com - -History -15.02.2010 V01 initial version, targetNamespace="http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.01.xsd" File:pain.001.001.03.ch.01.xsd -30.04.2010 V02 added: element Initiating Party/Contact Details contains Software name and Version of producing application - changed: name in "PartyIdentification32-CH_Name" mandatory ---> -<!-- V01: changed: ---> -<xs:schema xmlns="http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.02.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.02.xsd" elementFormDefault="qualified"> - <xs:element name="Document" type="Document"/> - <!-- V01: changed: CH version changes applied --> - <xs:complexType name="AccountIdentification4Choice-CH"> - <xs:sequence> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1-CH"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <!-- V01: unused - <xs:complexType name="AccountSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - --> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,3}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="PBOX"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="DLVY"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AmountType3Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="EqvtAmt" type="EquivalentAmount2"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AnyBICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: unused: type Authorisation1Choice is not allowed or used in CH Version - <xs:complexType name="Authorisation1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="Authorisation1Code"/> - <xs:element name="Prtry" type="Max128Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Authorisation1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="AUTH"/> - <xs:enumeration value="FDET"/> - <xs:enumeration value="FSUM"/> - <xs:enumeration value="ILEV"/> - </xs:restriction> - </xs:simpleType> - --> - <!-- V01: added: CH version supports only this character set. All text fields use this type --> - <xs:simpleType name="BasicText-CH"> - <xs:restriction base="xs:string"> - <xs:pattern value="([a-zA-Z0-9\.,;:'\+\-/\(\)?\*\[\]\{\}\\`´~ ]|[!&quot;#%&amp;&lt;&gt;÷=@_$£]|[àáâäçèéêëìíîïñòóôöùúûüýßÀÁÂÄÇÈÉÊËÌÍÎÏÒÓÔÖÙÚÛÜÑ])*"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: added: This is the SWIFT character set --> - <xs:simpleType name="BasicText-Swift"> - <xs:restriction base="xs:string"> - <xs:pattern value="([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,|'|\p{Zs}])*"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BatchBookingIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/> - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- VO1: added: definition of FI where only BIC or Clearing Id is allowed, but no branch data --> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4-CH_BicOrClrId"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7-CH_BicOrClrId"/> - <!-- V01: unused - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <!-- VO1: added: definition of FI where all elements are allowed, but no branch data --> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4-CH"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7-CH"/> - <!-- V01: unused - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchData2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: changed: CH version changes applied --> - <xs:complexType name="CashAccount16-CH_IdAndCurrency"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice-CH"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <!-- V01: unused - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <!-- V01: added --> - <xs:complexType name="CashAccount16-CH_IdTpCcy"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice-CH"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <!-- V01: unused - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <!-- V01: added --> - <xs:complexType name="CashAccount16-CH_Id"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice-CH"/> - <!-- V01: unused - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccountType2"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="CashAccountType4Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CashAccountType4Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CASH"/> - <xs:enumeration value="CHAR"/> - <xs:enumeration value="COMM"/> - <xs:enumeration value="TAXE"/> - <xs:enumeration value="CISH"/> - <xs:enumeration value="TRAS"/> - <xs:enumeration value="SACC"/> - <xs:enumeration value="CACC"/> - <xs:enumeration value="SVGS"/> - <xs:enumeration value="ONDP"/> - <xs:enumeration value="MGLD"/> - <xs:enumeration value="NREX"/> - <xs:enumeration value="MOMA"/> - <xs:enumeration value="LOAN"/> - <xs:enumeration value="SLRY"/> - <xs:enumeration value="ODFT"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: changed: Only element Code allowed in Ch version --> - <xs:complexType name="CategoryPurpose1-CH_Code"> - <xs:sequence> - <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> - <!-- V01: unused - <xs:element name="Prtry" type="Max35Text"/> - --> - </xs:sequence> - </xs:complexType> - <!-- --> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: unused - <xs:complexType name="Cheque6"> - <xs:sequence> - <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqFr" type="NameAndAddress10" minOccurs="0"/> - <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> - <xs:element name="DlvrTo" type="NameAndAddress10" minOccurs="0"/> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/> - <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/> - <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - --> - <!-- V01: added --> - <xs:complexType name="Cheque6-CH"> - <xs:sequence> - <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> - <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> - <!-- V01: unused - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqFr" type="NameAndAddress10" minOccurs="0"/> - <xs:element name="DlvrTo" type="NameAndAddress10" minOccurs="0"/> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/> - <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/> - <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChequeDelivery1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MLDB"/> - <xs:enumeration value="MLCD"/> - <xs:enumeration value="MLFA"/> - <xs:enumeration value="CRDB"/> - <xs:enumeration value="CRCD"/> - <xs:enumeration value="CRFA"/> - <xs:enumeration value="PUDB"/> - <xs:enumeration value="PUCD"/> - <xs:enumeration value="PUFA"/> - <xs:enumeration value="RGDB"/> - <xs:enumeration value="RGCD"/> - <xs:enumeration value="RGFA"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChequeDeliveryMethod1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ChequeDelivery1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChequeType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CCHQ"/> - <xs:enumeration value="CCCH"/> - <xs:enumeration value="BCHQ"/> - <xs:enumeration value="DRFT"/> - <xs:enumeration value="ELDR"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ContactDetails2"> - <xs:sequence> - <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="Othr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V02: changed: include Contact Details for Software name and version --> - <xs:complexType name="ContactDetails2-CH"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="Othr" type="Max35Text" minOccurs="0"/> - <!-- V02: unused - <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditTransferTransactionInformation10-CH"> - <xs:sequence> - <xs:element name="PmtId" type="PaymentIdentification1"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation19-CH" minOccurs="0"/> - <xs:element name="Amt" type="AmountType3Choice"/> - <xs:element name="XchgRateInf" type="ExchangeRateInformation1" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChqInstr" type="Cheque6-CH" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32-CH" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4-CH" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4-CH" minOccurs="0"/> - <!-- V02: changed: element Name mandatory --> - <xs:element name="Cdtr" type="PartyIdentification32-CH_Name" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount16-CH_Id" minOccurs="0"/> - <!-- V02: changed: element Name mandatory --> - <xs:element name="UltmtCdtr" type="PartyIdentification32-CH_Name" minOccurs="0"/> - <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2-CH_Code" minOccurs="0"/> - <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/> - <xs:element name="RmtInf" type="RemittanceInformation5-CH" minOccurs="0"/> - <!-- V01: usused - <xs:element name="IntrmyAgt1Acct" type="CashAccount16" minOccurs="0"/> - <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt2Acct" type="CashAccount16" minOccurs="0"/> - <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt3Acct" type="CashAccount16" minOccurs="0"/> - <xs:element name="CdtrAgtAcct" type="CashAccount16-CH_Id" minOccurs="0"/> - <xs:element name="Tax" type="TaxInformation3" minOccurs="0"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation2" minOccurs="0" maxOccurs="10"/> - --> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> - <xs:element name="Ref" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CustomerCreditTransferInitiationV03-CH"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader32-CH"/> - <xs:element name="PmtInf" type="PaymentInstructionInformation3-CH" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <!-- V01: unused - <xs:complexType name="DatePeriodDetails"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - --> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="17"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV03-CH"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType5Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="VCHR"/> - <xs:enumeration value="AROI"/> - <xs:enumeration value="TSUT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EquivalentAmount2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ExchangeRateInformation1"> - <xs:sequence> - <xs:element name="XchgRate" type="BaseOneRate" minOccurs="0"/> - <xs:element name="RateTp" type="ExchangeRateType1Code" minOccurs="0"/> - <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ExchangeRateType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="SPOT"/> - <xs:enumeration value="SALE"/> - <xs:enumeration value="AGRD"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: unused: - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - --> - <xs:simpleType name="ExternalCategoryPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalLocalInstrument1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalServiceLevel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification7"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: added: definition of FI where only BIC or Clearing Id is allowed --> - <xs:complexType name="FinancialInstitutionIdentification7-CH_BicOrClrId"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <!-- V01: unused - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <!-- V01: added: definition of FI where all elements are allowed (in a CH version) --> - <xs:complexType name="FinancialInstitutionIdentification7-CH"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1-CH" minOccurs="0"/> - <!-- V01: unused - --> - </xs:sequence> - </xs:complexType> - <!-- V01: changed: only element ID allowed in CH version --> - <xs:complexType name="GenericAccountIdentification1-CH"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <!-- V01: unused - <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: added: only element Id allowed in CH version --> - <xs:complexType name="GenericFinancialIdentification1-CH"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <!-- V01: unused - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader32-CH"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text-Swift"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="NbOfTxs" type="Max15NumericText"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <!-- V02: changed: include Contact Details for Software name and version --> - <xs:element name="InitgPty" type="PartyIdentification32-CH_NameAndId"/> - <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <!-- V01: unused: type Authorisation1Choice is not allowed or used in CH Version - <xs:element name="Authstn" type="Authorisation1Choice" minOccurs="0" maxOccurs="2"/> - --> - <!-- V01: changed: Initiating party only to contain name and id in CH version - <xs:element name="InitgPty" type="PartyIdentification32"/> - --> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:simpleType name="Instruction3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHQB"/> - <xs:enumeration value="HOLD"/> - <xs:enumeration value="PHOB"/> - <xs:enumeration value="TELB"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="InstructionForCreditorAgent1"> - <xs:sequence> - <xs:element name="Cd" type="Instruction3Code" minOccurs="0"/> - <xs:element name="InstrInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="LocalInstrument2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalLocalInstrument1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Max10Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="10"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: unused - <xs:simpleType name="Max128Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="128"/> - </xs:restriction> - </xs:simpleType> - --> - <xs:simpleType name="Max140Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: added: replacement type for Max35Text where only the Swift character set is allowed --> - <xs:simpleType name="Max35Text-Swift"> - <xs:restriction base="BasicText-Swift"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="BasicText-CH"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: unused - <xs:complexType name="NameAndAddress10"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="Adr" type="PostalAddress6"/> - </xs:sequence> - </xs:complexType> - --> - <!-- V01: added: CH-Version: unused (prepared for later usage) - <xs:complexType name="NameAndAddress10-CH"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text"/> - <xs:element name="Adr" type="PostalAddress6-CH"/> - </xs:sequence> - </xs:complexType> - --> - <xs:simpleType name="NamePrefix1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MIST"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MADM"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: unused - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="0"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - --> - <xs:complexType name="OrganisationIdentification4"> - <xs:sequence> - <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <!-- V01: added: only one occurance of element other allowed in CH version --> - <xs:complexType name="OrganisationIdentification4-CH"> - <xs:sequence> - <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Party6Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification4"/> - <xs:element name="PrvtId" type="PersonIdentification5"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <!-- V01: added: --> - <xs:complexType name="Party6Choice-CH"> - <xs:sequence> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification4-CH"/> - <xs:element name="PrvtId" type="PersonIdentification5-CH"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentification32"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: added: replacement type for PartyIdentification8 where only elements Name and Id may be used --> - <xs:complexType name="PartyIdentification32-CH_NameAndId"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/> - <!-- V02: added: Contact Details for Software name and version --> - <xs:element name="CtctDtls" type="ContactDetails2-CH" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: added --> - <xs:complexType name="PartyIdentification32-CH"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/> - <!-- changed --> - <!-- unused - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <!-- V02: changed: element Name mandatory --> - <xs:complexType name="PartyIdentification32-CH_Name"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text"/> - <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/> - <!-- changed --> - <!-- unused - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <!-- - <xs:complexType name="PartyIdentification32-CH_Debtor"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/> - - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - - </xs:sequence> - </xs:complexType> - - <xs:complexType name="PartyIdentification32-CH_Creditor"> - <xs:sequence> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/> - - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - - </xs:sequence> - </xs:complexType> - --> - <xs:complexType name="PaymentIdentification1"> - <xs:sequence> - <xs:element name="InstrId" type="Max35Text-Swift" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text-Swift"/> - </xs:sequence> - </xs:complexType> - <!-- V01: changed: CH-version changes applied --> - <xs:complexType name="PaymentInstructionInformation3-CH"> - <xs:sequence> - <xs:element name="PmtInfId" type="Max35Text-Swift"/> - <xs:element name="PmtMtd" type="PaymentMethod3Code"/> - <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation19-CH" minOccurs="0"/> - <xs:element name="ReqdExctnDt" type="ISODate"/> - <xs:element name="Dbtr" type="PartyIdentification32-CH"/> - <xs:element name="DbtrAcct" type="CashAccount16-CH_IdTpCcy"/> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4-CH_BicOrClrId"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32-CH" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChrgsAcct" type="CashAccount16-CH_IdAndCurrency" minOccurs="0"/> - <xs:element name="CdtTrfTxInf" type="CreditTransferTransactionInformation10-CH" maxOccurs="unbounded"/> - <!-- V01: unused - <xs:element name="PoolgAdjstmntDt" type="ISODate" minOccurs="0"/> - <xs:element name="DbtrAgtAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - --> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PaymentMethod3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHK"/> - <xs:enumeration value="TRF"/> - <xs:enumeration value="TRA"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: changed: CH version changes applied --> - <xs:complexType name="PaymentTypeInformation19-CH"> - <xs:sequence> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0"/> - <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> - <xs:element name="CtgyPurp" type="CategoryPurpose1-CH_Code" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: unused - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - --> - <xs:complexType name="PersonIdentification5"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <!-- V01: changed: only one occurance of element Othr allowed in CH version --> - <xs:complexType name="PersonIdentification5-CH"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress6"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:complexType> - <!-- V01: added: only 2 lines of address lines allowed in CH version --> - <xs:complexType name="PostalAddress6-CH"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> - <!-- V01: changed: max. 2 occurence --> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Priority2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="HIGH"/> - <xs:enumeration value="NORM"/> - </xs:restriction> - </xs:simpleType> - <!-- V01: changed: CH-version changes applied --> - <xs:complexType name="Purpose2-CH_Code"> - <xs:sequence> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation3"> - <xs:sequence> - <xs:element name="Tp" type="ReferredDocumentType2" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType5Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RegulatoryAuthority2"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RegulatoryReporting3"> - <xs:sequence> - <xs:element name="DbtCdtRptgInd" type="RegulatoryReportingType1Code" minOccurs="0"/> - <xs:element name="Authrty" type="RegulatoryAuthority2" minOccurs="0"/> - <xs:element name="Dtls" type="StructuredRegulatoryReporting3" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RegulatoryReportingType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRED"/> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="BOTH"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="RemittanceAmount1"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation5-CH"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0"/> - <xs:element name="Strd" type="StructuredRemittanceInformation7" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <!-- V01: unused - <xs:complexType name="RemittanceLocation2"> - <xs:sequence> - <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> - <xs:element name="RmtLctnMtd" type="RemittanceLocationMethod2Code" minOccurs="0"/> - <xs:element name="RmtLctnElctrncAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="RmtLctnPstlAdr" type="NameAndAddress10" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RemittanceLocationMethod2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FAXI"/> - <xs:enumeration value="EDIC"/> - <xs:enumeration value="URID"/> - <xs:enumeration value="EMAL"/> - <xs:enumeration value="POST"/> - <xs:enumeration value="SMSM"/> - </xs:restriction> - </xs:simpleType> - --> - <xs:complexType name="ServiceLevel8Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalServiceLevel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRegulatoryReporting3"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="Cd" type="Max10Text" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Inf" type="Max35Text" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation7"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount1" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:complexType> - <!-- V01: unused - <xs:complexType name="TaxAmount1"> - <xs:sequence> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dtls" type="TaxRecordDetails1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element name="Titl" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation3"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZn" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod1"> - <xs:sequence> - <xs:element name="Yr" type="ISODate" minOccurs="0"/> - <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> - <xs:element name="FrToDt" type="DatePeriodDetails" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> - <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> - <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> - <xs:element name="CertId" type="Max35Text" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmount1" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails1"> - <xs:sequence> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - </xs:restriction> - </xs:simpleType> - --> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/pain.001.001.03.xsd b/ebics/src/main/resources/xsd/pain.001.001.03.xsd @@ -1,922 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- edited with XMLSpy v2011 rel. 3 sp1 (x64) (http://www.altova.com) by Antero Mäenpää (XMLdation.com Oy) --> -<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53--> -<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" elementFormDefault="qualified"> - <xs:element name="Document" type="Document"/> - <xs:complexType name="AccountIdentification4Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AccountSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,13}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="PBOX"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="DLVY"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AmountType3Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="EqvtAmt" type="EquivalentAmount2"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AnyBICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Authorisation1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="Authorisation1Code"/> - <xs:element name="Prtry" type="Max128Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Authorisation1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="AUTH"/> - <xs:enumeration value="FDET"/> - <xs:enumeration value="FSUM"/> - <xs:enumeration value="ILEV"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BICIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BatchBookingIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification4"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/> - <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchData2"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount16"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccountType2"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="CashAccountType4Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CashAccountType4Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CASH"/> - <xs:enumeration value="CHAR"/> - <xs:enumeration value="COMM"/> - <xs:enumeration value="TAXE"/> - <xs:enumeration value="CISH"/> - <xs:enumeration value="TRAS"/> - <xs:enumeration value="SACC"/> - <xs:enumeration value="CACC"/> - <xs:enumeration value="SVGS"/> - <xs:enumeration value="ONDP"/> - <xs:enumeration value="MGLD"/> - <xs:enumeration value="NREX"/> - <xs:enumeration value="MOMA"/> - <xs:enumeration value="LOAN"/> - <xs:enumeration value="SLRY"/> - <xs:enumeration value="ODFT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CategoryPurpose1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Cheque6"> - <xs:sequence> - <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqFr" type="NameAndAddress10" minOccurs="0"/> - <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> - <xs:element name="DlvrTo" type="NameAndAddress10" minOccurs="0"/> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/> - <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/> - <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChequeDelivery1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MLDB"/> - <xs:enumeration value="MLCD"/> - <xs:enumeration value="MLFA"/> - <xs:enumeration value="CRDB"/> - <xs:enumeration value="CRCD"/> - <xs:enumeration value="CRFA"/> - <xs:enumeration value="PUDB"/> - <xs:enumeration value="PUCD"/> - <xs:enumeration value="PUFA"/> - <xs:enumeration value="RGDB"/> - <xs:enumeration value="RGCD"/> - <xs:enumeration value="RGFA"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChequeDeliveryMethod1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ChequeDelivery1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ChequeType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CCHQ"/> - <xs:enumeration value="CCCH"/> - <xs:enumeration value="BCHQ"/> - <xs:enumeration value="DRFT"/> - <xs:enumeration value="ELDR"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ContactDetails2"> - <xs:sequence> - <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="Othr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditTransferTransactionInformation10"> - <xs:sequence> - <xs:element name="PmtId" type="PaymentIdentification1"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation19" minOccurs="0"/> - <xs:element name="Amt" type="AmountType3Choice"/> - <xs:element name="XchgRateInf" type="ExchangeRateInformation1" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChqInstr" type="Cheque6" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt1Acct" type="CashAccount16" minOccurs="0"/> - <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt2Acct" type="CashAccount16" minOccurs="0"/> - <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="IntrmyAgt3Acct" type="CashAccount16" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="CdtrAgtAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="Cdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtCdtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2Choice" minOccurs="0"/> - <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/> - <xs:element name="Tax" type="TaxInformation3" minOccurs="0"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation2" minOccurs="0" maxOccurs="10"/> - <xs:element name="RmtInf" type="RemittanceInformation5" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> - <xs:element name="Ref" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CustomerCreditTransferInitiationV03"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader32"/> - <xs:element name="PmtInf" type="PaymentInstructionInformation3" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DatePeriodDetails"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="17"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV03"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType5Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="VCHR"/> - <xs:enumeration value="AROI"/> - <xs:enumeration value="TSUT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EquivalentAmount2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ExchangeRateInformation1"> - <xs:sequence> - <xs:element name="XchgRate" type="BaseOneRate" minOccurs="0"/> - <xs:element name="RateTp" type="ExchangeRateType1Code" minOccurs="0"/> - <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ExchangeRateType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="SPOT"/> - <xs:enumeration value="SALE"/> - <xs:enumeration value="AGRD"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalCategoryPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalLocalInstrument1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalServiceLevel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification7"> - <xs:sequence> - <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader32"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="Authstn" type="Authorisation1Choice" minOccurs="0" maxOccurs="2"/> - <xs:element name="NbOfTxs" type="Max15NumericText"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="InitgPty" type="PartyIdentification32"/> - <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:simpleType name="Instruction3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHQB"/> - <xs:enumeration value="HOLD"/> - <xs:enumeration value="PHOB"/> - <xs:enumeration value="TELB"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="InstructionForCreditorAgent1"> - <xs:sequence> - <xs:element name="Cd" type="Instruction3Code" minOccurs="0"/> - <xs:element name="InstrInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="LocalInstrument2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalLocalInstrument1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Max10Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="10"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max128Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="128"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max140Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NameAndAddress10"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="Adr" type="PostalAddress6"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="NamePrefix1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MIST"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MADM"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="0"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="OrganisationIdentification4"> - <xs:sequence> - <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Party6Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification4"/> - <xs:element name="PrvtId" type="PersonIdentification5"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentification32"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/> - <xs:element name="Id" type="Party6Choice" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PaymentIdentification1"> - <xs:sequence> - <xs:element name="InstrId" type="Max35Text" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PaymentInstructionInformation3"> - <xs:sequence> - <xs:element name="PmtInfId" type="Max35Text"/> - <xs:element name="PmtMtd" type="PaymentMethod3Code"/> - <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation19" minOccurs="0"/> - <xs:element name="ReqdExctnDt" type="ISODate"/> - <xs:element name="PoolgAdjstmntDt" type="ISODate" minOccurs="0"/> - <xs:element name="Dbtr" type="PartyIdentification32"/> - <xs:element name="DbtrAcct" type="CashAccount16"/> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/> - <xs:element name="DbtrAgtAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChrgsAcct" type="CashAccount16" minOccurs="0"/> - <xs:element name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/> - <xs:element name="CdtTrfTxInf" type="CreditTransferTransactionInformation10" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PaymentMethod3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHK"/> - <xs:enumeration value="TRF"/> - <xs:enumeration value="TRA"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PaymentTypeInformation19"> - <xs:sequence> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0"/> - <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> - <xs:element name="CtgyPurp" type="CategoryPurpose1Choice" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PersonIdentification5"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress6"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Priority2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="HIGH"/> - <xs:enumeration value="NORM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Purpose2Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation3"> - <xs:sequence> - <xs:element name="Tp" type="ReferredDocumentType2" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType1Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="DocumentType5Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RegulatoryAuthority2"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RegulatoryReporting3"> - <xs:sequence> - <xs:element name="DbtCdtRptgInd" type="RegulatoryReportingType1Code" minOccurs="0"/> - <xs:element name="Authrty" type="RegulatoryAuthority2" minOccurs="0"/> - <xs:element name="Dtls" type="StructuredRegulatoryReporting3" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RegulatoryReportingType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRED"/> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="BOTH"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="RemittanceAmount1"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation5"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Strd" type="StructuredRemittanceInformation7" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceLocation2"> - <xs:sequence> - <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> - <xs:element name="RmtLctnMtd" type="RemittanceLocationMethod2Code" minOccurs="0"/> - <xs:element name="RmtLctnElctrncAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="RmtLctnPstlAdr" type="NameAndAddress10" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RemittanceLocationMethod2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FAXI"/> - <xs:enumeration value="EDIC"/> - <xs:enumeration value="URID"/> - <xs:enumeration value="EMAL"/> - <xs:enumeration value="POST"/> - <xs:enumeration value="SMSM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ServiceLevel8Choice"> - <xs:sequence> - <xs:choice> - <xs:element name="Cd" type="ExternalServiceLevel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRegulatoryReporting3"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="Cd" type="Max10Text" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Inf" type="Max35Text" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation7"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation3" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount1" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification32" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmount1"> - <xs:sequence> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dtls" type="TaxRecordDetails1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element name="Titl" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation3"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZn" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod1"> - <xs:sequence> - <xs:element name="Yr" type="ISODate" minOccurs="0"/> - <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> - <xs:element name="FrToDt" type="DatePeriodDetails" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord1"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> - <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> - <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> - <xs:element name="CertId" type="Max35Text" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmount1" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails1"> - <xs:sequence> - <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> -\ No newline at end of file diff --git a/ebics/src/main/resources/xsd/pain.001.001.09.ch.03.xsd b/ebics/src/main/resources/xsd/pain.001.001.09.ch.03.xsd @@ -1,1733 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -(C) Copyright 2021, SIX, www.iso-payments.ch -CH Version for pain.001 Credit Transfer: "pain.001.001.09.ch.03.xsd" -.ch.: Identification for this CH version -Last part (.03): CH Version of this scheme - -Based on ISO pain.001.001.09 (urn:iso:std:iso:20022:tech:xsd:pain.001.001.09) ---> -<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" elementFormDefault="qualified"> - <xs:element name="Document" type="Document_pain001_ch"/> - <xs:complexType name="AccountIdentification4Choice"> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="AccountIdentification4Choice_pain001_ch"> - <xs:complexContent> - <xs:restriction base="AccountIdentification4Choice"> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1_pain001_ch"/> - </xs:choice> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="AccountSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:minInclusive value="0"/> - <xs:totalDigits value="18"/> - <xs:fractionDigits value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,3}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="DLVY"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="PBOX"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AddressType3Choice"> - <xs:choice> - <xs:element name="Cd" type="AddressType2Code"/> - <xs:element name="Prtry" type="GenericIdentification30"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="AmountType4Choice"> - <xs:choice> - <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="EqvtAmt" type="EquivalentAmount2"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="AnyBICDec2014Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Authorisation1Choice"> - <xs:choice> - <xs:element name="Cd" type="Authorisation1Code"/> - <xs:element name="Prtry" type="Max128Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="Authorisation1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="AUTH"/> - <xs:enumeration value="FDET"/> - <xs:enumeration value="FSUM"/> - <xs:enumeration value="ILEV"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:totalDigits value="11"/> - <xs:fractionDigits value="10"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BatchBookingIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="BICFIDec2014Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification6"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18"/> - <xs:element name="BrnchId" type="BranchData3" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch"> - <xs:complexContent> - <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch_2"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch_3"> - <xs:complexContent> - <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch_3"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch_4"> - <xs:complexContent> - <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch_4"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="BranchData3"> - <xs:sequence> - <xs:element name="Id" type="Max35Text" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount38"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - <xs:element name="Tp" type="CashAccountType2Choice" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Nm" type="Max70Text" minOccurs="0"/> - <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount38_pain001_ch"> - <xs:complexContent> - <xs:restriction base="CashAccount38"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice_pain001_ch"/> - <xs:element name="Tp" type="CashAccountType2Choice" minOccurs="0"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="CashAccount38_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="CashAccount38"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice_pain001_ch"/> - <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="CashAccount38_pain001_ch_3"> - <xs:complexContent> - <xs:restriction base="CashAccount38"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="CashAccount38_pain001_ch_4"> - <xs:complexContent> - <xs:restriction base="CashAccount38"> - <xs:sequence> - <xs:element name="Id" type="AccountIdentification4Choice_pain001_ch"/> - <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="CashAccountType2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalCashAccountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="CategoryPurpose1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="CategoryPurpose1Choice_pain001_ch"> - <xs:complexContent> - <xs:restriction base="CategoryPurpose1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> - </xs:choice> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRED"/> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Cheque11"> - <xs:sequence> - <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> - <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> - <xs:element name="ChqFr" type="NameAndAddress16" minOccurs="0"/> - <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> - <xs:element name="DlvrTo" type="NameAndAddress16" minOccurs="0"/> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/> - <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/> - <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/> - <xs:element name="Sgntr" type="Max70Text" minOccurs="0" maxOccurs="5"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Cheque11_pain001_ch"> - <xs:complexContent> - <xs:restriction base="Cheque11"> - <xs:sequence> - <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> - <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="ChequeDelivery1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRCD"/> - <xs:enumeration value="CRDB"/> - <xs:enumeration value="CRFA"/> - <xs:enumeration value="MLCD"/> - <xs:enumeration value="MLDB"/> - <xs:enumeration value="MLFA"/> - <xs:enumeration value="PUCD"/> - <xs:enumeration value="PUDB"/> - <xs:enumeration value="PUFA"/> - <xs:enumeration value="RGCD"/> - <xs:enumeration value="RGDB"/> - <xs:enumeration value="RGFA"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChequeDeliveryMethod1Choice"> - <xs:choice> - <xs:element name="Cd" type="ChequeDelivery1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="ChequeType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BCHQ"/> - <xs:enumeration value="CCCH"/> - <xs:enumeration value="CCHQ"/> - <xs:enumeration value="DRFT"/> - <xs:enumeration value="ELDR"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ClearingSystemIdentification2Choice_pain001_ch"> - <xs:complexContent> - <xs:restriction base="ClearingSystemIdentification2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - </xs:choice> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2_pain001_ch"> - <xs:complexContent> - <xs:restriction base="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice_pain001_ch" minOccurs="0"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Contact4"> - <xs:sequence> - <xs:element name="NmPrfx" type="NamePrefix2Code" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> - <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="EmailPurp" type="Max35Text" minOccurs="0"/> - <xs:element name="JobTitl" type="Max35Text" minOccurs="0"/> - <xs:element name="Rspnsblty" type="Max35Text" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="Othr" type="OtherContact1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="PrefrdMtd" type="PreferredContactMethod1Code" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Contact4_pain001_ch"> - <xs:complexContent> - <xs:restriction base="Contact4"> - <xs:sequence> - <xs:element name="Othr" type="OtherContact1_pain001_ch" minOccurs="0" maxOccurs="4"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> - <xs:element name="Ref" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditTransferTransaction34"> - <xs:sequence> - <xs:element name="PmtId" type="PaymentIdentification6"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation26" minOccurs="0"/> - <xs:element name="Amt" type="AmountType4Choice"/> - <xs:element name="XchgRateInf" type="ExchangeRate1" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChqInstr" type="Cheque11" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> - <xs:element name="IntrmyAgt1Acct" type="CashAccount38" minOccurs="0"/> - <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> - <xs:element name="IntrmyAgt2Acct" type="CashAccount38" minOccurs="0"/> - <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> - <xs:element name="IntrmyAgt3Acct" type="CashAccount38" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> - <xs:element name="CdtrAgtAcct" type="CashAccount38" minOccurs="0"/> - <xs:element name="Cdtr" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount38" minOccurs="0"/> - <xs:element name="UltmtCdtr" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2Choice" minOccurs="0"/> - <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/> - <xs:element name="Tax" type="TaxInformation8" minOccurs="0"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation7" minOccurs="0" maxOccurs="10"/> - <xs:element name="RmtInf" type="RemittanceInformation16" minOccurs="0"/> - <xs:element name="SplmtryData" type="SupplementaryData1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditTransferTransaction34_pain001_ch"> - <xs:complexContent> - <xs:restriction base="CreditTransferTransaction34"> - <xs:sequence> - <xs:element name="PmtId" type="PaymentIdentification6_pain001_ch"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation26_pain001_ch_2" minOccurs="0"/> - <xs:element name="Amt" type="AmountType4Choice"/> - <xs:element name="XchgRateInf" type="ExchangeRate1" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChqInstr" type="Cheque11_pain001_ch" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification135_pain001_ch_3" minOccurs="0"/> - <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification6_pain001_ch_3" minOccurs="0"/> - <xs:element name="IntrmyAgt1Acct" type="CashAccount38_pain001_ch_3" minOccurs="0"/> - <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification6_pain001_ch_4" minOccurs="0"/> - <xs:element name="CdtrAgtAcct" type="CashAccount38_pain001_ch_3" minOccurs="0"/> - <xs:element name="Cdtr" type="PartyIdentification135_pain001_ch_4" minOccurs="0"/> - <xs:element name="CdtrAcct" type="CashAccount38_pain001_ch_4" minOccurs="0"/> - <xs:element name="UltmtCdtr" type="PartyIdentification135_pain001_ch_3" minOccurs="0"/> - <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="2"/> - <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> - <xs:element name="Purp" type="Purpose2Choice_pain001_ch" minOccurs="0"/> - <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/> - <xs:element name="RltdRmtInf" type="RemittanceLocation7" minOccurs="0"/> - <xs:element name="RmtInf" type="RemittanceInformation16_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="CustomerCreditTransferInitiationV09"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader85"/> - <xs:element name="PmtInf" type="PaymentInstruction30" maxOccurs="unbounded"/> - <xs:element name="SplmtryData" type="SupplementaryData1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CustomerCreditTransferInitiationV09_pain001_ch"> - <xs:complexContent> - <xs:restriction base="CustomerCreditTransferInitiationV09"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader85_pain001_ch"/> - <xs:element name="PmtInf" type="PaymentInstruction30_pain001_ch" maxOccurs="unbounded"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="DateAndDateTime2Choice"> - <xs:choice> - <xs:element name="Dt" type="ISODate"/> - <xs:element name="DtTm" type="ISODateTime"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth1"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DatePeriod2"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:totalDigits value="18"/> - <xs:fractionDigits value="17"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="DiscountAmountAndType1"> - <xs:sequence> - <xs:element name="Tp" type="DiscountAmountType1Choice" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DiscountAmountType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalDiscountAmountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV09"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> - <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineIdentification1"> - <xs:sequence> - <xs:element name="Tp" type="DocumentLineType1" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineInformation1"> - <xs:sequence> - <xs:element name="Id" type="DocumentLineIdentification1" maxOccurs="unbounded"/> - <xs:element name="Desc" type="Max2048Text" minOccurs="0"/> - <xs:element name="Amt" type="RemittanceAmount3" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineType1"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="DocumentLineType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalDocumentLineType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DISP"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType6Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="AROI"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="TSUT"/> - <xs:enumeration value="VCHR"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="Document_pain001_ch"> - <xs:complexContent> - <xs:restriction base="Document"> - <xs:sequence> - <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV09_pain001_ch"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="EquivalentAmount2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Exact4AlphaNumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[a-zA-Z0-9]{4}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ExchangeRate1"> - <xs:sequence> - <xs:element name="UnitCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> - <xs:element name="XchgRate" type="BaseOneRate" minOccurs="0"/> - <xs:element name="RateTp" type="ExchangeRateType1Code" minOccurs="0"/> - <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ExchangeRateType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="AGRD"/> - <xs:enumeration value="SALE"/> - <xs:enumeration value="SPOT"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalCashAccountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalCategoryPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalDiscountAmountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalDocumentLineType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalGarnishmentType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalLocalInstrument1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalProxyAccountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalServiceLevel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalTaxAmountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification18"> - <xs:sequence> - <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch"> - <xs:complexContent> - <xs:restriction base="FinancialInstitutionIdentification18"> - <xs:sequence> - <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="FinancialInstitutionIdentification18"> - <xs:sequence> - <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2_pain001_ch" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch_3"> - <xs:complexContent> - <xs:restriction base="FinancialInstitutionIdentification18"> - <xs:sequence> - <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2_pain001_ch" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_4" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch_4"> - <xs:complexContent> - <xs:restriction base="FinancialInstitutionIdentification18"> - <xs:sequence> - <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> - <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2_pain001_ch" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_3" minOccurs="0"/> - <xs:element name="Othr" type="GenericFinancialIdentification1_pain001_ch_2" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Garnishment3"> - <xs:sequence> - <xs:element name="Tp" type="GarnishmentType1"/> - <xs:element name="Grnshee" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="GrnshmtAdmstr" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="FmlyMdclInsrncInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="MplyeeTermntnInd" type="TrueFalseIndicator" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Garnishment3_pain001_ch"> - <xs:complexContent> - <xs:restriction base="Garnishment3"> - <xs:sequence> - <xs:element name="Tp" type="GarnishmentType1"/> - <xs:element name="Grnshee" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> - <xs:element name="GrnshmtAdmstr" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="FmlyMdclInsrncInd" type="TrueFalseIndicator" minOccurs="0"/> - <xs:element name="MplyeeTermntnInd" type="TrueFalseIndicator" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="GarnishmentType1"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="GarnishmentType1Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GarnishmentType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalGarnishmentType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1_pain001_ch"> - <xs:complexContent> - <xs:restriction base="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1_pain001_ch"> - <xs:complexContent> - <xs:restriction base="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="GenericIdentification30"> - <xs:sequence> - <xs:element name="Id" type="Exact4AlphaNumericText"/> - <xs:element name="Issr" type="Max35Text"/> - <xs:element name="SchmeNm" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader85"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="Authstn" type="Authorisation1Choice" minOccurs="0" maxOccurs="2"/> - <xs:element name="NbOfTxs" type="Max15NumericText"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="InitgPty" type="PartyIdentification135"/> - <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader85_pain001_ch"> - <xs:complexContent> - <xs:restriction base="GroupHeader85"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text_pain001_ch"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element name="NbOfTxs" type="Max15NumericText"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="InitgPty" type="PartyIdentification135_pain001_ch"/> - <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification6_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Instruction3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHQB"/> - <xs:enumeration value="HOLD"/> - <xs:enumeration value="PHOB"/> - <xs:enumeration value="TELB"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="InstructionForCreditorAgent1"> - <xs:sequence> - <xs:element name="Cd" type="Instruction3Code" minOccurs="0"/> - <xs:element name="InstrInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:simpleType name="LEIIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{18,18}[0-9]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="LocalInstrument2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalLocalInstrument1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="Max10Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="10"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max128Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="128"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max140Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max350Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="350"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text_pain001_ch"> - <xs:restriction base="Max35Text"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - <xs:pattern value="([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,|&apos;|\p{Zs}])*"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="SPSText"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NameAndAddress16"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="Adr" type="PostalAddress24"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="NamePrefix2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MADM"/> - <xs:enumeration value="MIKS"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MIST"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:totalDigits value="18"/> - <xs:fractionDigits value="0"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="OrganisationIdentification29"> - <xs:sequence> - <xs:element name="AnyBIC" type="AnyBICDec2014Identifier" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentification29_pain001_ch"> - <xs:complexContent> - <xs:restriction base="OrganisationIdentification29"> - <xs:sequence> - <xs:element name="AnyBIC" type="AnyBICDec2014Identifier" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="OrganisationIdentification29_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="OrganisationIdentification29"> - <xs:sequence> - <xs:element name="AnyBIC" type="AnyBICDec2014Identifier" minOccurs="0"/> - <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> - <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="2"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="OtherContact1"> - <xs:sequence> - <xs:element name="ChanlTp" type="Max4Text"/> - <xs:element name="Id" type="Max128Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OtherContact1_pain001_ch"> - <xs:complexContent> - <xs:restriction base="OtherContact1"> - <xs:sequence> - <xs:element name="ChanlTp" type="Max4Text"/> - <xs:element name="Id" type="Max128Text"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Party38Choice"> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification29"/> - <xs:element name="PrvtId" type="PersonIdentification13"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Party38Choice_pain001_ch"> - <xs:complexContent> - <xs:restriction base="Party38Choice"> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification29_pain001_ch"/> - <xs:element name="PrvtId" type="PersonIdentification13_pain001_ch"/> - </xs:choice> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Party38Choice_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="Party38Choice"> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification29_pain001_ch_2"/> - <xs:element name="PrvtId" type="PersonIdentification13_pain001_ch_2"/> - </xs:choice> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PartyIdentification135"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24" minOccurs="0"/> - <xs:element name="Id" type="Party38Choice" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - <xs:element name="CtctDtls" type="Contact4" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentification135_pain001_ch"> - <xs:complexContent> - <xs:restriction base="PartyIdentification135"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> - <xs:element name="CtctDtls" type="Contact4_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PartyIdentification135_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="PartyIdentification135"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_2" minOccurs="0"/> - <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PartyIdentification135_pain001_ch_3"> - <xs:complexContent> - <xs:restriction base="PartyIdentification135"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_3" minOccurs="0"/> - <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PartyIdentification135_pain001_ch_4"> - <xs:complexContent> - <xs:restriction base="PartyIdentification135"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_3" minOccurs="0"/> - <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PartyIdentification135_pain001_ch_5"> - <xs:complexContent> - <xs:restriction base="PartyIdentification135"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_5" minOccurs="0"/> - <xs:element name="Id" type="Party38Choice_pain001_ch_2" minOccurs="0"/> - <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PaymentIdentification6"> - <xs:sequence> - <xs:element name="InstrId" type="Max35Text" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text"/> - <xs:element name="UETR" type="UUIDv4Identifier" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PaymentIdentification6_pain001_ch"> - <xs:complexContent> - <xs:restriction base="PaymentIdentification6"> - <xs:sequence> - <xs:element name="InstrId" type="Max35Text_pain001_ch" minOccurs="0"/> - <xs:element name="EndToEndId" type="Max35Text_pain001_ch"/> - <xs:element name="UETR" type="UUIDv4Identifier" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PaymentInstruction30"> - <xs:sequence> - <xs:element name="PmtInfId" type="Max35Text"/> - <xs:element name="PmtMtd" type="PaymentMethod3Code"/> - <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation26" minOccurs="0"/> - <xs:element name="ReqdExctnDt" type="DateAndDateTime2Choice"/> - <xs:element name="PoolgAdjstmntDt" type="ISODate" minOccurs="0"/> - <xs:element name="Dbtr" type="PartyIdentification135"/> - <xs:element name="DbtrAcct" type="CashAccount38"/> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element name="DbtrAgtAcct" type="CashAccount38" minOccurs="0"/> - <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChrgsAcct" type="CashAccount38" minOccurs="0"/> - <xs:element name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> - <xs:element name="CdtTrfTxInf" type="CreditTransferTransaction34" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PaymentInstruction30_pain001_ch"> - <xs:complexContent> - <xs:restriction base="PaymentInstruction30"> - <xs:sequence> - <xs:element name="PmtInfId" type="Max35Text_pain001_ch"/> - <xs:element name="PmtMtd" type="PaymentMethod3Code"/> - <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/> - <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> - <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> - <xs:element name="PmtTpInf" type="PaymentTypeInformation26_pain001_ch" minOccurs="0"/> - <xs:element name="ReqdExctnDt" type="DateAndDateTime2Choice"/> - <xs:element name="Dbtr" type="PartyIdentification135_pain001_ch_2"/> - <xs:element name="DbtrAcct" type="CashAccount38_pain001_ch"/> - <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification6_pain001_ch_2"/> - <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="PartyIdentification135_pain001_ch_3" minOccurs="0"/> - <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> - <xs:element name="ChrgsAcct" type="CashAccount38_pain001_ch_2" minOccurs="0"/> - <xs:element name="CdtTrfTxInf" type="CreditTransferTransaction34_pain001_ch" maxOccurs="unbounded"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="PaymentMethod3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHK"/> - <xs:enumeration value="TRA"/> - <xs:enumeration value="TRF"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PaymentTypeInformation26"> - <xs:sequence> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> - <xs:element name="CtgyPurp" type="CategoryPurpose1Choice" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PaymentTypeInformation26_pain001_ch"> - <xs:complexContent> - <xs:restriction base="PaymentTypeInformation26"> - <xs:sequence> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0" maxOccurs="3"/> - <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> - <xs:element name="CtgyPurp" type="CategoryPurpose1Choice_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PaymentTypeInformation26_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="PaymentTypeInformation26"> - <xs:sequence> - <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> - <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0" maxOccurs="3"/> - <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> - <xs:element name="CtgyPurp" type="CategoryPurpose1Choice" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:totalDigits value="11"/> - <xs:fractionDigits value="10"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PersonIdentification13"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentification13_pain001_ch"> - <xs:complexContent> - <xs:restriction base="PersonIdentification13"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PersonIdentification13_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="PersonIdentification13"> - <xs:sequence> - <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1" minOccurs="0"/> - <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="2"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress24"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType3Choice" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> - <xs:element name="Flr" type="Max70Text" minOccurs="0"/> - <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> - <xs:element name="Room" type="Max70Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PostalAddress24_pain001_ch"> - <xs:complexContent> - <xs:restriction base="PostalAddress24"> - <xs:sequence> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PostalAddress24_pain001_ch_2"> - <xs:complexContent> - <xs:restriction base="PostalAddress24"> - <xs:sequence> - <xs:element name="AdrTp" type="AddressType3Choice" minOccurs="0"/> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> - <xs:element name="Flr" type="Max70Text" minOccurs="0"/> - <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> - <xs:element name="Room" type="Max70Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PostalAddress24_pain001_ch_3"> - <xs:complexContent> - <xs:restriction base="PostalAddress24"> - <xs:sequence> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> - <xs:element name="Flr" type="Max70Text" minOccurs="0"/> - <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> - <xs:element name="Room" type="Max70Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PostalAddress24_pain001_ch_4"> - <xs:complexContent> - <xs:restriction base="PostalAddress24"> - <xs:sequence> - <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PostalAddress24_pain001_ch_5"> - <xs:complexContent> - <xs:restriction base="PostalAddress24"> - <xs:sequence> - <xs:element name="Dept" type="Max70Text" minOccurs="0"/> - <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> - <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> - <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> - <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> - <xs:element name="Flr" type="Max70Text" minOccurs="0"/> - <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> - <xs:element name="Room" type="Max70Text" minOccurs="0"/> - <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> - <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> - <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> - <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="PreferredContactMethod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CELL"/> - <xs:enumeration value="FAXX"/> - <xs:enumeration value="LETT"/> - <xs:enumeration value="MAIL"/> - <xs:enumeration value="PHON"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Priority2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="HIGH"/> - <xs:enumeration value="NORM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ProxyAccountIdentification1"> - <xs:sequence> - <xs:element name="Tp" type="ProxyAccountType1Choice" minOccurs="0"/> - <xs:element name="Id" type="Max2048Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProxyAccountType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalProxyAccountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Purpose2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Purpose2Choice_pain001_ch"> - <xs:complexContent> - <xs:restriction base="Purpose2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - </xs:choice> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation7"> - <xs:sequence> - <xs:element name="Tp" type="ReferredDocumentType4" minOccurs="0"/> - <xs:element name="Nb" type="Max35Text" minOccurs="0"/> - <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> - <xs:element name="LineDtls" type="DocumentLineInformation1" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType3Choice"> - <xs:choice> - <xs:element name="Cd" type="DocumentType6Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ReferredDocumentType4"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType3Choice"/> - <xs:element name="Issr" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RegulatoryAuthority2"> - <xs:sequence> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RegulatoryReporting3"> - <xs:sequence> - <xs:element name="DbtCdtRptgInd" type="RegulatoryReportingType1Code" minOccurs="0"/> - <xs:element name="Authrty" type="RegulatoryAuthority2" minOccurs="0"/> - <xs:element name="Dtls" type="StructuredRegulatoryReporting3" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RegulatoryReportingType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="BOTH"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="DEBT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="RemittanceAmount2"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="DiscountAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceAmount3"> - <xs:sequence> - <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="DscntApldAmt" type="DiscountAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation16"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Strd" type="StructuredRemittanceInformation16" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation16_pain001_ch"> - <xs:complexContent> - <xs:restriction base="RemittanceInformation16"> - <xs:sequence> - <xs:element name="Ustrd" type="Max140Text" minOccurs="0"/> - <xs:element name="Strd" type="StructuredRemittanceInformation16_pain001_ch" minOccurs="0"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="RemittanceLocation7"> - <xs:sequence> - <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> - <xs:element name="RmtLctnDtls" type="RemittanceLocationData1" minOccurs="0" maxOccurs="2"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceLocationData1"> - <xs:sequence> - <xs:element name="Mtd" type="RemittanceLocationMethod2Code"/> - <xs:element name="ElctrncAdr" type="Max2048Text" minOccurs="0"/> - <xs:element name="PstlAdr" type="NameAndAddress16" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="RemittanceLocationMethod2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="EDIC"/> - <xs:enumeration value="EMAL"/> - <xs:enumeration value="FAXI"/> - <xs:enumeration value="POST"/> - <xs:enumeration value="SMSM"/> - <xs:enumeration value="URID"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ServiceLevel8Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalServiceLevel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="SPSText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}€ȘșȚț-[\p{C}]]+"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="StructuredRegulatoryReporting3"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> - <xs:element name="Cd" type="Max10Text" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Inf" type="Max35Text" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation16"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation7" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount2" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification135" minOccurs="0"/> - <xs:element name="TaxRmt" type="TaxInformation7" minOccurs="0"/> - <xs:element name="GrnshmtRmt" type="Garnishment3" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation16_pain001_ch"> - <xs:complexContent> - <xs:restriction base="StructuredRemittanceInformation16"> - <xs:sequence> - <xs:element name="RfrdDocInf" type="ReferredDocumentInformation7" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="RfrdDocAmt" type="RemittanceAmount2" minOccurs="0"/> - <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> - <xs:element name="Invcr" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> - <xs:element name="Invcee" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> - <xs:element name="TaxRmt" type="TaxInformation7" minOccurs="0"/> - <xs:element name="GrnshmtRmt" type="Garnishment3_pain001_ch" minOccurs="0"/> - <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="SupplementaryData1"> - <xs:sequence> - <xs:element name="PlcAndNm" type="Max350Text" minOccurs="0"/> - <xs:element name="Envlp" type="SupplementaryDataEnvelope1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplementaryDataEnvelope1"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmount2"> - <xs:sequence> - <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> - <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dtls" type="TaxRecordDetails2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmountAndType1"> - <xs:sequence> - <xs:element name="Tp" type="TaxAmountType1Choice" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmountType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalTaxAmountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element name="Titl" type="Max35Text" minOccurs="0"/> - <xs:element name="Nm" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation7"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="UltmtDbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZone" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxInformation8"> - <xs:sequence> - <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> - <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> - <xs:element name="AdmstnZone" type="Max35Text" minOccurs="0"/> - <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> - <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> - <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> - <xs:element name="Dt" type="ISODate" minOccurs="0"/> - <xs:element name="SeqNb" type="Number" minOccurs="0"/> - <xs:element name="Rcrd" type="TaxRecord2" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> - <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> - <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> - <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod2"> - <xs:sequence> - <xs:element name="Yr" type="ISODate" minOccurs="0"/> - <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> - <xs:element name="FrToDt" type="DatePeriod2" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord2"> - <xs:sequence> - <xs:element name="Tp" type="Max35Text" minOccurs="0"/> - <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> - <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> - <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> - <xs:element name="CertId" type="Max35Text" minOccurs="0"/> - <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> - <xs:element name="Prd" type="TaxPeriod2" minOccurs="0"/> - <xs:element name="TaxAmt" type="TaxAmount2" minOccurs="0"/> - <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails2"> - <xs:sequence> - <xs:element name="Prd" type="TaxPeriod2" minOccurs="0"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="TrueFalseIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="UUIDv4Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/pain.002.001.13.xsd b/ebics/src/main/resources/xsd/pain.002.001.13.xsd @@ -1,1253 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--Generated by Standards Editor (build:R1.6.22) on 2023 Feb 09 10:24:15, ISO 20022 version : 2013--> -<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.13" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.002.001.13"> - <xs:element name="Document" type="Document"/> - <xs:complexType name="AccountIdentification4Choice"> - <xs:choice> - <xs:element name="IBAN" type="IBAN2007Identifier"/> - <xs:element name="Othr" type="GenericAccountIdentification1"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="AccountSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="ActiveCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - <xs:minInclusive value="0"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,3}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="5"/> - <xs:totalDigits value="18"/> - <xs:minInclusive value="0"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ActiveOrHistoricCurrencyAndAmount"> - <xs:simpleContent> - <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType"> - <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ActiveOrHistoricCurrencyCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{3,3}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AddressType2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ADDR"/> - <xs:enumeration value="PBOX"/> - <xs:enumeration value="HOME"/> - <xs:enumeration value="BIZZ"/> - <xs:enumeration value="MLTO"/> - <xs:enumeration value="DLVY"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AddressType3Choice"> - <xs:choice> - <xs:element name="Cd" type="AddressType2Code"/> - <xs:element name="Prtry" type="GenericIdentification30"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="AmendmentInformationDetails14"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlMndtId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrSchmeId" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgtAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtr" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgtAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlFnlColltnDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlFrqcy" type="Frequency36Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlRsn" type="MandateSetupReason1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlTrckgDays" type="Exact2NumericText"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AmountType4Choice"> - <xs:choice> - <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="EqvtAmt" type="EquivalentAmount2"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="AnyBICDec2014Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BICFIDec2014Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="BaseOneRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="BranchAndFinancialInstitutionIdentification6"> - <xs:sequence> - <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18"/> - <xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="BranchData3"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="LEI" type="LEIIdentifier"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress24"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccount40"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Id" type="AccountIdentification4Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Prxy" type="ProxyAccountIdentification1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CashAccountType2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalCashAccountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="CategoryPurpose1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="ChargeBearerType1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DEBT"/> - <xs:enumeration value="CRED"/> - <xs:enumeration value="SHAR"/> - <xs:enumeration value="SLEV"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ChargeType3Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalChargeType1Code"/> - <xs:element name="Prtry" type="GenericIdentification3"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Charges12"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ChargeType3Choice"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="ClearingChannel2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RTGS"/> - <xs:enumeration value="RTNS"/> - <xs:enumeration value="MPNS"/> - <xs:enumeration value="BOOK"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ClearingSystemIdentification2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ClearingSystemIdentification3Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalCashClearingSystem1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ClearingSystemMemberIdentification2"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/> - <xs:element name="MmbId" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Contact4"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix2Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/> - <xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/> - <xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/> - <xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="EmailPurp" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="JobTitl" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Rspnsblty" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="OtherContact1"/> - <xs:element maxOccurs="1" minOccurs="0" name="PrefrdMtd" type="PreferredContactMethod1Code"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="CountryCode"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CreditDebitCode"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CRDT"/> - <xs:enumeration value="DBIT"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="CreditTransferMandateData1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="MandateTypeInformation2"/> - <xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="DtOfVrfctn" type="ISODateTime"/> - <xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr" type="Max10KBinary"/> - <xs:element maxOccurs="1" minOccurs="0" name="FrstPmtDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="FnlPmtDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="Frqcy" type="Frequency36Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="MandateSetupReason1Choice"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceInformation2"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/> - <xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorReferenceType1Choice"> - <xs:choice> - <xs:element name="Cd" type="DocumentType3Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="CreditorReferenceType2"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CurrencyExchange13"> - <xs:sequence> - <xs:element name="SrcCcy" type="ActiveCurrencyCode"/> - <xs:element name="TrgtCcy" type="ActiveCurrencyCode"/> - <xs:element name="XchgRate" type="BaseOneRate"/> - <xs:element maxOccurs="1" minOccurs="0" name="UnitCcy" type="ActiveCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CustomerPaymentStatusReportV13"> - <xs:sequence> - <xs:element name="GrpHdr" type="GroupHeader86"/> - <xs:element name="OrgnlGrpInfAndSts" type="OriginalGroupHeader17"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="OrgnlPmtInfAndSts" type="OriginalPaymentInstruction45"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData" type="SupplementaryData1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DateAndDateTime2Choice"> - <xs:choice> - <xs:element name="Dt" type="ISODate"/> - <xs:element name="DtTm" type="ISODateTime"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="DateAndPlaceOfBirth1"> - <xs:sequence> - <xs:element name="BirthDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/> - <xs:element name="CityOfBirth" type="Max35Text"/> - <xs:element name="CtryOfBirth" type="CountryCode"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DatePeriod2"> - <xs:sequence> - <xs:element name="FrDt" type="ISODate"/> - <xs:element name="ToDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DecimalNumber"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="17"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="DiscountAmountAndType1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="DiscountAmountType1Choice"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DiscountAmountType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalDiscountAmountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Document"> - <xs:sequence> - <xs:element name="CstmrPmtStsRpt" type="CustomerPaymentStatusReportV13"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentAdjustment1"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/> - <xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineIdentification1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="DocumentLineType1"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineInformation1"> - <xs:sequence> - <xs:element maxOccurs="unbounded" minOccurs="1" name="Id" type="DocumentLineIdentification1"/> - <xs:element maxOccurs="1" minOccurs="0" name="Desc" type="Max2048Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Amt" type="RemittanceAmount3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineType1"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="DocumentLineType1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalDocumentLineType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="DocumentType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="RADM"/> - <xs:enumeration value="RPIN"/> - <xs:enumeration value="FXDR"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="PUOR"/> - <xs:enumeration value="SCOR"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DocumentType6Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MSIN"/> - <xs:enumeration value="CNFA"/> - <xs:enumeration value="DNFA"/> - <xs:enumeration value="CINV"/> - <xs:enumeration value="CREN"/> - <xs:enumeration value="DEBN"/> - <xs:enumeration value="HIRI"/> - <xs:enumeration value="SBIN"/> - <xs:enumeration value="CMCN"/> - <xs:enumeration value="SOAC"/> - <xs:enumeration value="DISP"/> - <xs:enumeration value="BOLD"/> - <xs:enumeration value="VCHR"/> - <xs:enumeration value="AROI"/> - <xs:enumeration value="TSUT"/> - <xs:enumeration value="PUOR"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="EquivalentAmount2"> - <xs:sequence> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Exact2NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{2}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Exact4AlphaNumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[a-zA-Z0-9]{4}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalAccountIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalCashAccountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalCashClearingSystem1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="3"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalCategoryPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalChargeType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalClearingSystemIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="5"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalDiscountAmountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalDocumentLineType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalGarnishmentType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalLocalInstrument1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalMandateSetupReason1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalOrganisationIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPaymentGroupStatus1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPaymentTransactionStatus1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPersonIdentification1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalProxyAccountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalPurpose1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalServiceLevel1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalStatusReason1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ExternalTaxAmountType1Code"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FinancialIdentificationSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="FinancialInstitutionIdentification18"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="BICFI" type="BICFIDec2014Identifier"/> - <xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/> - <xs:element maxOccurs="1" minOccurs="0" name="LEI" type="LEIIdentifier"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress24"/> - <xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Frequency36Choice"> - <xs:choice> - <xs:element name="Tp" type="Frequency6Code"/> - <xs:element name="Prd" type="FrequencyPeriod1"/> - <xs:element name="PtInTm" type="FrequencyAndMoment1"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="Frequency6Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="YEAR"/> - <xs:enumeration value="MNTH"/> - <xs:enumeration value="QURT"/> - <xs:enumeration value="MIAN"/> - <xs:enumeration value="WEEK"/> - <xs:enumeration value="DAIL"/> - <xs:enumeration value="ADHO"/> - <xs:enumeration value="INDA"/> - <xs:enumeration value="FRTN"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="FrequencyAndMoment1"> - <xs:sequence> - <xs:element name="Tp" type="Frequency6Code"/> - <xs:element name="PtInTm" type="Exact2NumericText"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="FrequencyPeriod1"> - <xs:sequence> - <xs:element name="Tp" type="Frequency6Code"/> - <xs:element name="CntPerPrd" type="DecimalNumber"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Garnishment3"> - <xs:sequence> - <xs:element name="Tp" type="GarnishmentType1"/> - <xs:element maxOccurs="1" minOccurs="0" name="Grnshee" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="GrnshmtAdmstr" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="FmlyMdclInsrncInd" type="TrueFalseIndicator"/> - <xs:element maxOccurs="1" minOccurs="0" name="MplyeeTermntnInd" type="TrueFalseIndicator"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GarnishmentType1"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="GarnishmentType1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GarnishmentType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalGarnishmentType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="GenericAccountIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max34Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericFinancialIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericIdentification3"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericIdentification30"> - <xs:sequence> - <xs:element name="Id" type="Exact4AlphaNumericText"/> - <xs:element name="Issr" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericOrganisationIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GenericPersonIdentification1"> - <xs:sequence> - <xs:element name="Id" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="GroupHeader86"> - <xs:sequence> - <xs:element name="MsgId" type="Max35Text"/> - <xs:element name="CreDtTm" type="ISODateTime"/> - <xs:element maxOccurs="1" minOccurs="0" name="InitgPty" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="IBAN2007Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ISODate"> - <xs:restriction base="xs:date"/> - </xs:simpleType> - <xs:simpleType name="ISODateTime"> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - <xs:simpleType name="ISOYear"> - <xs:restriction base="xs:gYear"/> - </xs:simpleType> - <xs:simpleType name="LEIIdentifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Z0-9]{18,18}[0-9]{2,2}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="LocalInstrument2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalLocalInstrument1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="MandateClassification1Choice"> - <xs:choice> - <xs:element name="Cd" type="MandateClassification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="MandateClassification1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FIXE"/> - <xs:enumeration value="USGB"/> - <xs:enumeration value="VARI"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="MandateRelatedData2Choice"> - <xs:choice> - <xs:element maxOccurs="1" minOccurs="0" name="DrctDbtMndt" type="MandateRelatedInformation15"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtTrfMndt" type="CreditTransferMandateData1"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="MandateRelatedInformation15"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="AmdmntInd" type="TrueFalseIndicator"/> - <xs:element maxOccurs="1" minOccurs="0" name="AmdmntInfDtls" type="AmendmentInformationDetails14"/> - <xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr" type="Max1025Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="FrstColltnDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="FnlColltnDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="Frqcy" type="Frequency36Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="MandateSetupReason1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="TrckgDays" type="Exact2NumericText"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="MandateSetupReason1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalMandateSetupReason1Code"/> - <xs:element name="Prtry" type="Max70Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="MandateTypeInformation2"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Clssfctn" type="MandateClassification1Choice"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="Max1025Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="1025"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max105Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="105"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max10KBinary"> - <xs:restriction base="xs:base64Binary"> - <xs:minLength value="1"/> - <xs:maxLength value="10240"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max128Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="128"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max140Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="140"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max15NumericText"> - <xs:restriction base="xs:string"> - <xs:pattern value="[0-9]{1,15}"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max16Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max2048Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="2048"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max34Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="34"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max350Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="350"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max35Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="35"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max4Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Max70Text"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="70"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="NamePrefix2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="DOCT"/> - <xs:enumeration value="MADM"/> - <xs:enumeration value="MISS"/> - <xs:enumeration value="MIST"/> - <xs:enumeration value="MIKS"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Number"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="0"/> - <xs:totalDigits value="18"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NumberOfTransactionsPerStatus5"> - <xs:sequence> - <xs:element name="DtldNbOfTxs" type="Max15NumericText"/> - <xs:element name="DtldSts" type="ExternalPaymentTransactionStatus1Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="DtldCtrlSum" type="DecimalNumber"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentification29"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="AnyBIC" type="AnyBICDec2014Identifier"/> - <xs:element maxOccurs="1" minOccurs="0" name="LEI" type="LEIIdentifier"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="OriginalGroupHeader17"> - <xs:sequence> - <xs:element name="OrgnlMsgId" type="Max35Text"/> - <xs:element name="OrgnlMsgNmId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCreDtTm" type="ISODateTime"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlNbOfTxs" type="Max15NumericText"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCtrlSum" type="DecimalNumber"/> - <xs:element maxOccurs="1" minOccurs="0" name="GrpSts" type="ExternalPaymentGroupStatus1Code"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="StsRsnInf" type="StatusReasonInformation12"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="NbOfTxsPerSts" type="NumberOfTransactionsPerStatus5"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OriginalPaymentInstruction45"> - <xs:sequence> - <xs:element name="OrgnlPmtInfId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlNbOfTxs" type="Max15NumericText"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCtrlSum" type="DecimalNumber"/> - <xs:element maxOccurs="1" minOccurs="0" name="PmtInfSts" type="ExternalPaymentGroupStatus1Code"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="StsRsnInf" type="StatusReasonInformation12"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="NbOfTxsPerSts" type="NumberOfTransactionsPerStatus5"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="TxInfAndSts" type="PaymentTransaction144"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OriginalTransactionReference35"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="IntrBkSttlmAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="Amt" type="AmountType4Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="IntrBkSttlmDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="ReqdColltnDt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="ReqdExctnDt" type="DateAndDateTime2Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="SttlmInf" type="SettlementInstruction11"/> - <xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation27"/> - <xs:element maxOccurs="1" minOccurs="0" name="PmtMtd" type="PaymentMethod4Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="MndtRltdInf" type="MandateRelatedData2Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation21"/> - <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="Party40Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="Party40Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="DbtrAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="Party40Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtrAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="Party40Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="OtherContact1"> - <xs:sequence> - <xs:element name="ChanlTp" type="Max4Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max128Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Party38Choice"> - <xs:choice> - <xs:element name="OrgId" type="OrganisationIdentification29"/> - <xs:element name="PrvtId" type="PersonIdentification13"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Party40Choice"> - <xs:choice> - <xs:element name="Pty" type="PartyIdentification135"/> - <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification6"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="PartyIdentification135"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress24"/> - <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party38Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/> - <xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="Contact4"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PaymentMethod4Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="CHK"/> - <xs:enumeration value="TRF"/> - <xs:enumeration value="DD"/> - <xs:enumeration value="TRA"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PaymentTransaction144"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="StsId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlInstrId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlEndToEndId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlUETR" type="UUIDv4Identifier"/> - <xs:element maxOccurs="1" minOccurs="0" name="TxSts" type="ExternalPaymentTransactionStatus1Code"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="StsRsnInf" type="StatusReasonInformation12"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="ChrgsInf" type="Charges12"/> - <xs:element maxOccurs="1" minOccurs="0" name="TrckrData" type="TrackerData1"/> - <xs:element maxOccurs="1" minOccurs="0" name="AccptncDtTm" type="ISODateTime"/> - <xs:element maxOccurs="1" minOccurs="0" name="AcctSvcrRef" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="ClrSysRef" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="OrgnlTxRef" type="OriginalTransactionReference35"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData" type="SupplementaryData1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PaymentTypeInformation27"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="ClrChanl" type="ClearingChannel2Code"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="SeqTp" type="SequenceType3Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PercentageRate"> - <xs:restriction base="xs:decimal"> - <xs:fractionDigits value="10"/> - <xs:totalDigits value="11"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PersonIdentification13"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PersonIdentificationSchemeName1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:simpleType name="PhoneNumber"> - <xs:restriction base="xs:string"> - <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="PostalAddress24"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType3Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="BldgNm" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Flr" type="Max70Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="PstBx" type="Max16Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Room" type="Max70Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="TwnLctnNm" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="DstrctNm" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/> - <xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="PreferredContactMethod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="LETT"/> - <xs:enumeration value="MAIL"/> - <xs:enumeration value="PHON"/> - <xs:enumeration value="FAXX"/> - <xs:enumeration value="CELL"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="Priority2Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="HIGH"/> - <xs:enumeration value="NORM"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ProxyAccountIdentification1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ProxyAccountType1Choice"/> - <xs:element name="Id" type="Max2048Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProxyAccountType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalProxyAccountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="Purpose2Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalPurpose1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ReferredDocumentInformation7"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType4"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="LineDtls" type="DocumentLineInformation1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferredDocumentType3Choice"> - <xs:choice> - <xs:element name="Cd" type="DocumentType6Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="ReferredDocumentType4"> - <xs:sequence> - <xs:element name="CdOrPrtry" type="ReferredDocumentType3Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceAmount2"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="DscntApldAmt" type="DiscountAmountAndType1"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="TaxAmt" type="TaxAmountAndType1"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/> - <xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceAmount3"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="DscntApldAmt" type="DiscountAmountAndType1"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="TaxAmt" type="TaxAmountAndType1"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/> - <xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RemittanceInformation21"> - <xs:sequence> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation17"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="SequenceType3Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="FRST"/> - <xs:enumeration value="RCUR"/> - <xs:enumeration value="FNAL"/> - <xs:enumeration value="OOFF"/> - <xs:enumeration value="RPRE"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ServiceLevel8Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalServiceLevel1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="SettlementInstruction11"> - <xs:sequence> - <xs:element name="SttlmMtd" type="SettlementMethod1Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="SttlmAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="ClrSys" type="ClearingSystemIdentification3Choice"/> - <xs:element maxOccurs="1" minOccurs="0" name="InstgRmbrsmntAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="InstgRmbrsmntAgtAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="InstdRmbrsmntAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="InstdRmbrsmntAgtAcct" type="CashAccount40"/> - <xs:element maxOccurs="1" minOccurs="0" name="ThrdRmbrsmntAgt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="ThrdRmbrsmntAgtAcct" type="CashAccount40"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="SettlementMethod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="INDA"/> - <xs:enumeration value="INGA"/> - <xs:enumeration value="COVE"/> - <xs:enumeration value="CLRG"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="StatusReason6Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalStatusReason1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="StatusReasonInformation12"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Orgtr" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="StatusReason6Choice"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="AddtlInf" type="Max105Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="StructuredRemittanceInformation17"> - <xs:sequence> - <xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation7"/> - <xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount2"/> - <xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/> - <xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification135"/> - <xs:element maxOccurs="1" minOccurs="0" name="TaxRmt" type="TaxData1"/> - <xs:element maxOccurs="1" minOccurs="0" name="GrnshmtRmt" type="Garnishment3"/> - <xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplementaryData1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="PlcAndNm" type="Max350Text"/> - <xs:element name="Envlp" type="SupplementaryDataEnvelope1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplementaryDataEnvelope1"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmount3"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/> - <xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="TaxRecordDetails3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmountAndType1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxAmountType1Choice"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxAmountType1Choice"> - <xs:choice> - <xs:element name="Cd" type="ExternalTaxAmountType1Code"/> - <xs:element name="Prtry" type="Max35Text"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="TaxAuthorisation1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Titl" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxData1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="TaxParty1"/> - <xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="TaxParty2"/> - <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="TaxParty2"/> - <xs:element maxOccurs="1" minOccurs="0" name="AdmstnZone" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Mtd" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/> - <xs:element maxOccurs="1" minOccurs="0" name="SeqNb" type="Number"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd" type="TaxRecord3"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty1"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxParty2"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Authstn" type="TaxAuthorisation1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxPeriod3"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISOYear"/> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxRecordPeriod1Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DatePeriod2"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecord3"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Ctgy" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="DbtrSts" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="CertId" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/> - <xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod3"/> - <xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount3"/> - <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRecordDetails3"> - <xs:sequence> - <xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod3"/> - <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TaxRecordPeriod1Code"> - <xs:restriction base="xs:string"> - <xs:enumeration value="MM01"/> - <xs:enumeration value="MM02"/> - <xs:enumeration value="MM03"/> - <xs:enumeration value="MM04"/> - <xs:enumeration value="MM05"/> - <xs:enumeration value="MM06"/> - <xs:enumeration value="MM07"/> - <xs:enumeration value="MM08"/> - <xs:enumeration value="MM09"/> - <xs:enumeration value="MM10"/> - <xs:enumeration value="MM11"/> - <xs:enumeration value="MM12"/> - <xs:enumeration value="QTR1"/> - <xs:enumeration value="QTR2"/> - <xs:enumeration value="QTR3"/> - <xs:enumeration value="QTR4"/> - <xs:enumeration value="HLF1"/> - <xs:enumeration value="HLF2"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="TrackerData1"> - <xs:sequence> - <xs:element name="ConfdDt" type="DateAndDateTime2Choice"/> - <xs:element name="ConfdAmt" type="ActiveCurrencyAndAmount"/> - <xs:element maxOccurs="unbounded" minOccurs="1" name="TrckrRcrd" type="TrackerRecord1"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TrackerRecord1"> - <xs:sequence> - <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification6"/> - <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/> - <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAmt" type="ActiveCurrencyAndAmount"/> - <xs:element maxOccurs="1" minOccurs="0" name="XchgRateData" type="CurrencyExchange13"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="TrueFalseIndicator"> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="UUIDv4Identifier"> - <xs:restriction base="xs:string"> - <xs:pattern value="[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> diff --git a/ebics/src/main/resources/xsd/xmldsig-core-schema.xsd b/ebics/src/main/resources/xsd/xmldsig-core-schema.xsd @@ -1,318 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- !DOCTYPE schema - PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "XMLSchema.dtd" - [ - <!ATTLIST schema - xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#"> - <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'> - <!ENTITY % p ''> - <!ENTITY % s ''> - ] --> - -<!-- Schema for XML Signatures - http://www.w3.org/2000/09/xmldsig# - $Revision: 1.2 $ on $Date: 2006/02/15 16:36:35 $ by $Author: hpl $ - - Copyright 2001 The Internet Society and W3C (Massachusetts Institute - of Technology, Institut National de Recherche en Informatique et en - Automatique, Keio University). All Rights Reserved. - http://www.w3.org/Consortium/Legal/ - - This document is governed by the W3C Software License [1] as described - in the FAQ [2]. - - [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720 - [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD ---> - - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:ds="http://www.w3.org/2000/09/xmldsig#" - targetNamespace="http://www.w3.org/2000/09/xmldsig#" - version="0.1" elementFormDefault="qualified"> - -<!-- Basic Types Defined for Signatures --> - -<simpleType name="CryptoBinary"> - <restriction base="base64Binary"> - </restriction> -</simpleType> - -<!-- Start Signature --> - -<element name="Signature" type="ds:SignatureType"/> -<complexType name="SignatureType"> - <sequence> - <element ref="ds:SignedInfo"/> - <element ref="ds:SignatureValue"/> - <element ref="ds:KeyInfo" minOccurs="0"/> - <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="SignatureValue" type="ds:SignatureValueType"/> - <complexType name="SignatureValueType"> - <simpleContent> - <extension base="base64Binary"> - <attribute name="Id" type="ID" use="optional"/> - </extension> - </simpleContent> - </complexType> - -<!-- Start SignedInfo --> - -<element name="SignedInfo" type="ds:SignedInfoType"/> -<complexType name="SignedInfoType"> - <sequence> - <element ref="ds:CanonicalizationMethod"/> - <element ref="ds:SignatureMethod"/> - <element ref="ds:Reference" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> - <complexType name="CanonicalizationMethodType" mixed="true"> - <sequence> - <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> - <!-- (0,unbounded) elements from (1,1) namespace --> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - - <element name="SignatureMethod" type="ds:SignatureMethodType"/> - <complexType name="SignatureMethodType" mixed="true"> - <sequence> - <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - <!-- (0,unbounded) elements from (1,1) external namespace --> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - -<!-- Start Reference --> - -<element name="Reference" type="ds:ReferenceType"/> -<complexType name="ReferenceType"> - <sequence> - <element ref="ds:Transforms" minOccurs="0"/> - <element ref="ds:DigestMethod"/> - <element ref="ds:DigestValue"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="URI" type="anyURI" use="optional"/> - <attribute name="Type" type="anyURI" use="optional"/> -</complexType> - - <element name="Transforms" type="ds:TransformsType"/> - <complexType name="TransformsType"> - <sequence> - <element ref="ds:Transform" maxOccurs="unbounded"/> - </sequence> - </complexType> - - <element name="Transform" type="ds:TransformType"/> - <complexType name="TransformType" mixed="true"> - <choice minOccurs="0" maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - <!-- (1,1) elements from (0,unbounded) namespaces --> - <element name="XPath" type="string"/> - </choice> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - -<!-- End Reference --> - -<element name="DigestMethod" type="ds:DigestMethodType"/> -<complexType name="DigestMethodType" mixed="true"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> -</complexType> - -<element name="DigestValue" type="ds:DigestValueType"/> -<simpleType name="DigestValueType"> - <restriction base="base64Binary"/> -</simpleType> - -<!-- End SignedInfo --> - -<!-- Start KeyInfo --> - -<element name="KeyInfo" type="ds:KeyInfoType"/> -<complexType name="KeyInfoType" mixed="true"> - <choice maxOccurs="unbounded"> - <element ref="ds:KeyName"/> - <element ref="ds:KeyValue"/> - <element ref="ds:RetrievalMethod"/> - <element ref="ds:X509Data"/> - <element ref="ds:PGPData"/> - <element ref="ds:SPKIData"/> - <element ref="ds:MgmtData"/> - <any processContents="lax" namespace="##other"/> - <!-- (1,1) elements from (0,unbounded) namespaces --> - </choice> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="KeyName" type="string"/> - <element name="MgmtData" type="string"/> - - <element name="KeyValue" type="ds:KeyValueType"/> - <complexType name="KeyValueType" mixed="true"> - <choice> - <element ref="ds:DSAKeyValue"/> - <element ref="ds:RSAKeyValue"/> - <any namespace="##other" processContents="lax"/> - </choice> - </complexType> - - <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> - <complexType name="RetrievalMethodType"> - <sequence> - <element ref="ds:Transforms" minOccurs="0"/> - </sequence> - <attribute name="URI" type="anyURI"/> - <attribute name="Type" type="anyURI" use="optional"/> - </complexType> - -<!-- Start X509Data --> - -<element name="X509Data" type="ds:X509DataType"/> -<complexType name="X509DataType"> - <sequence maxOccurs="unbounded"> - <choice> - <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> - <element name="X509SKI" type="base64Binary"/> - <element name="X509SubjectName" type="string"/> - <element name="X509Certificate" type="base64Binary"/> - <element name="X509CRL" type="base64Binary"/> - <any namespace="##other" processContents="lax"/> - </choice> - </sequence> -</complexType> - -<complexType name="X509IssuerSerialType"> - <sequence> - <element name="X509IssuerName" type="string"/> - <element name="X509SerialNumber" type="integer"/> - </sequence> -</complexType> - -<!-- End X509Data --> - -<!-- Begin PGPData --> - -<element name="PGPData" type="ds:PGPDataType"/> -<complexType name="PGPDataType"> - <choice> - <sequence> - <element name="PGPKeyID" type="base64Binary"/> - <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> - <any namespace="##other" processContents="lax" minOccurs="0" - maxOccurs="unbounded"/> - </sequence> - <sequence> - <element name="PGPKeyPacket" type="base64Binary"/> - <any namespace="##other" processContents="lax" minOccurs="0" - maxOccurs="unbounded"/> - </sequence> - </choice> -</complexType> - -<!-- End PGPData --> - -<!-- Begin SPKIData --> - -<element name="SPKIData" type="ds:SPKIDataType"/> -<complexType name="SPKIDataType"> - <sequence maxOccurs="unbounded"> - <element name="SPKISexp" type="base64Binary"/> - <any namespace="##other" processContents="lax" minOccurs="0"/> - </sequence> -</complexType> - -<!-- End SPKIData --> - -<!-- End KeyInfo --> - -<!-- Start Object (Manifest, SignatureProperty) --> - -<element name="Object" type="ds:ObjectType"/> -<complexType name="ObjectType" mixed="true"> - <sequence minOccurs="0" maxOccurs="unbounded"> - <any namespace="##any" processContents="lax"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet --> - <attribute name="Encoding" type="anyURI" use="optional"/> -</complexType> - -<element name="Manifest" type="ds:ManifestType"/> -<complexType name="ManifestType"> - <sequence> - <element ref="ds:Reference" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - -<element name="SignatureProperties" type="ds:SignaturePropertiesType"/> -<complexType name="SignaturePropertiesType"> - <sequence> - <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="SignatureProperty" type="ds:SignaturePropertyType"/> - <complexType name="SignaturePropertyType" mixed="true"> - <choice maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - <!-- (1,1) elements from (1,unbounded) namespaces --> - </choice> - <attribute name="Target" type="anyURI" use="required"/> - <attribute name="Id" type="ID" use="optional"/> - </complexType> - -<!-- End Object (Manifest, SignatureProperty) --> - -<!-- Start Algorithm Parameters --> - -<simpleType name="HMACOutputLengthType"> - <restriction base="integer"/> -</simpleType> - -<!-- Start KeyValue Element-types --> - -<element name="DSAKeyValue" type="ds:DSAKeyValueType"/> -<complexType name="DSAKeyValueType"> - <sequence> - <sequence minOccurs="0"> - <element name="P" type="ds:CryptoBinary"/> - <element name="Q" type="ds:CryptoBinary"/> - </sequence> - <element name="G" type="ds:CryptoBinary" minOccurs="0"/> - <element name="Y" type="ds:CryptoBinary"/> - <element name="J" type="ds:CryptoBinary" minOccurs="0"/> - <sequence minOccurs="0"> - <element name="Seed" type="ds:CryptoBinary"/> - <element name="PgenCounter" type="ds:CryptoBinary"/> - </sequence> - </sequence> -</complexType> - -<element name="RSAKeyValue" type="ds:RSAKeyValueType"/> -<complexType name="RSAKeyValueType"> - <sequence> - <element name="Modulus" type="ds:CryptoBinary"/> - <element name="Exponent" type="ds:CryptoBinary"/> - </sequence> -</complexType> - -<!-- End KeyValue Element-types --> - -<!-- End Signature --> - -</schema> diff --git a/ebics/src/test/kotlin/EbicsMessagesTest.kt b/ebics/src/test/kotlin/EbicsMessagesTest.kt @@ -1,365 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -import junit.framework.TestCase.assertEquals -import org.apache.xml.security.binding.xmldsig.SignatureType -import org.junit.Test -import org.w3c.dom.Element -import tech.libeufin.common.crypto.CryptoUtil -import tech.libeufin.ebics.XMLUtil -import tech.libeufin.ebics.ebics_h004.* -import tech.libeufin.ebics.ebics_hev.HEVResponse -import tech.libeufin.ebics.ebics_hev.SystemReturnCodeType -import tech.libeufin.ebics.ebics_s001.SignatureTypes -import javax.xml.datatype.DatatypeFactory -import kotlin.test.assertNotNull -import kotlin.test.assertTrue - -class EbicsMessagesTest { - /** - * Tests the JAXB instantiation of non-XmlRootElement documents, - * as notably are the inner XML strings carrying keys in INI/HIA - * messages. - */ - @Test - fun testImportNonRoot() { - val classLoader = ClassLoader.getSystemClassLoader() - val ini = classLoader.getResourceAsStream("ebics_ini_inner_key.xml") - val jaxb = XMLUtil.convertToJaxb<SignatureTypes.SignaturePubKeyOrderData>(ini) - assertEquals("A006", jaxb.value.signaturePubKeyInfo.signatureVersion) - } - - /** - * Test string -> JAXB - */ - @Test - fun testStringToJaxb() { - val classLoader = ClassLoader.getSystemClassLoader() - val ini = classLoader.getResourceAsStream("ebics_ini_request_sample.xml") - val jaxb = XMLUtil.convertToJaxb<EbicsUnsecuredRequest>(ini) - println("jaxb loaded") - assertEquals( - "INI", - jaxb.value.header.static.orderDetails.orderType - ) - } - - /** - * Test JAXB -> string - */ - @Test - fun testJaxbToString() { - val hevResponseJaxb = HEVResponse().apply { - this.systemReturnCode = SystemReturnCodeType().apply { - this.reportText = "[EBICS_OK]" - this.returnCode = "000000" - } - this.versionNumber = listOf(HEVResponse.VersionNumber.create("H004", "02.50")) - } - XMLUtil.convertJaxbToBytes(hevResponseJaxb) - } - - /** - * Test DOM -> JAXB - */ - @Test - fun testDomToJaxb() { - val classLoader = ClassLoader.getSystemClassLoader() - val ini = classLoader.getResourceAsStream("ebics_ini_request_sample.xml") - val iniDom = XMLUtil.parseIntoDom(ini) - XMLUtil.convertDomToJaxb<EbicsUnsecuredRequest>( - iniDom - ) - } - - @Test - fun testKeyMgmgResponse() { - val responseXml = EbicsKeyManagementResponse().apply { - header = EbicsKeyManagementResponse.Header().apply { - mutable = EbicsKeyManagementResponse.MutableHeaderType().apply { - reportText = "foo" - returnCode = "bar" - } - _static = EbicsKeyManagementResponse.EmptyStaticHeader() - } - version = "H004" - body = EbicsKeyManagementResponse.Body().apply { - returnCode = EbicsKeyManagementResponse.ReturnCode().apply { - authenticate = true - value = "000000" - } - } - } - val bytes = XMLUtil.convertJaxbToBytes(responseXml) - assertTrue(bytes.isNotEmpty()) - } - - @Test - fun testParseHiaRequestOrderData() { - val classLoader = ClassLoader.getSystemClassLoader() - val hia = classLoader.getResourceAsStream("hia_request_order_data.xml") - XMLUtil.convertToJaxb<HIARequestOrderData>(hia) - } - - @Test - fun testHiaLoad() { - val classLoader = ClassLoader.getSystemClassLoader() - val hia = classLoader.getResourceAsStream("hia_request.xml") - val hiaDom = XMLUtil.parseIntoDom(hia) - val x: Element = hiaDom.getElementsByTagNameNS( - "urn:org:ebics:H004", - "OrderDetails" - )?.item(0) as Element - - x.setAttributeNS( - "http://www.w3.org/2001/XMLSchema-instance", - "type", - "UnsecuredReqOrderDetailsType" - ) - - XMLUtil.convertDomToJaxb<EbicsUnsecuredRequest>( - hiaDom - ) - } - - @Test - fun testLoadInnerKey() { - val jaxbKey = run { - val classLoader = ClassLoader.getSystemClassLoader() - val file = classLoader.getResourceAsStream( - "ebics_ini_inner_key.xml" - ) - assertNotNull(file) - XMLUtil.convertToJaxb<SignatureTypes.SignaturePubKeyOrderData>(file) - } - - val modulus = jaxbKey.value.signaturePubKeyInfo.pubKeyValue.rsaKeyValue.modulus - val exponent = jaxbKey.value.signaturePubKeyInfo.pubKeyValue.rsaKeyValue.exponent - CryptoUtil.loadRsaPublicKeyFromComponents(modulus, exponent) - } - - @Test - fun testLoadIniMessage() { - val classLoader = ClassLoader.getSystemClassLoader() - val text = classLoader.getResourceAsStream("ebics_ini_request_sample.xml")!! - XMLUtil.convertToJaxb<EbicsUnsecuredRequest>(text) - } - - @Test - fun testLoadResponse() { - val response = EbicsResponse().apply { - version = "H004" - header = EbicsResponse.Header().apply { - _static = EbicsResponse.StaticHeaderType() - mutable = EbicsResponse.MutableHeaderType().apply { - this.reportText = "foo" - this.returnCode = "bar" - this.transactionPhase = EbicsTypes.TransactionPhaseType.INITIALISATION - } - } - authSignature = SignatureType() - body = EbicsResponse.Body().apply { - returnCode = EbicsResponse.ReturnCode().apply { - authenticate = true - value = "asdf" - } - } - } - print(XMLUtil.convertJaxbToBytes(response).toString()) - } - - @Test - fun testLoadHpb() { - val classLoader = ClassLoader.getSystemClassLoader() - val text = classLoader.getResourceAsStream("hpb_request.xml")!! - XMLUtil.convertToJaxb<EbicsNpkdRequest>(text) - } - - @Test - fun testHtd() { - val htd = HTDResponseOrderData().apply { - this.partnerInfo = EbicsTypes.PartnerInfo().apply { - this.accountInfoList = listOf( - EbicsTypes.AccountInfo().apply { - this.id = "acctid1" - this.accountHolder = "Mina Musterfrau" - this.accountNumberList = listOf( - EbicsTypes.GeneralAccountNumber().apply { - this.international = true - this.value = "AT411100000237571500" - } - ) - this.currency = "EUR" - this.description = "some account" - this.bankCodeList = listOf( - EbicsTypes.GeneralBankCode().apply { - this.international = true - this.value = "ABAGATWWXXX" - } - ) - } - ) - this.addressInfo = EbicsTypes.AddressInfo().apply { - this.name = "Foo" - } - this.bankInfo = EbicsTypes.BankInfo().apply { - this.hostID = "MYHOST" - } - this.orderInfoList = listOf( - EbicsTypes.AuthOrderInfoType().apply { - this.description = "foo" - this.orderType = "CCC" - this.orderFormat = "foo" - this.transferType = "Upload" - } - ) - } - this.userInfo = EbicsTypes.UserInfo().apply { - this.name = "Some User" - this.userID = EbicsTypes.UserIDType().apply { - this.status = 2 - this.value = "myuserid" - } - this.permissionList = listOf( - EbicsTypes.UserPermission().apply { - this.orderTypes = "CCC ABC" - } - ) - } - } - - val bytes = XMLUtil.convertJaxbToBytes(htd) - assert(XMLUtil.validateFromBytes(bytes)) - } - - - @Test - fun testHkd() { - val hkd = HKDResponseOrderData().apply { - this.partnerInfo = EbicsTypes.PartnerInfo().apply { - this.accountInfoList = listOf( - EbicsTypes.AccountInfo().apply { - this.id = "acctid1" - this.accountHolder = "Mina Musterfrau" - this.accountNumberList = listOf( - EbicsTypes.GeneralAccountNumber().apply { - this.international = true - this.value = "AT411100000237571500" - } - ) - this.currency = "EUR" - this.description = "some account" - this.bankCodeList = listOf( - EbicsTypes.GeneralBankCode().apply { - this.international = true - this.value = "ABAGATWWXXX" - } - ) - } - ) - this.addressInfo = EbicsTypes.AddressInfo().apply { - this.name = "Foo" - } - this.bankInfo = EbicsTypes.BankInfo().apply { - this.hostID = "MYHOST" - } - this.orderInfoList = listOf( - EbicsTypes.AuthOrderInfoType().apply { - this.description = "foo" - this.orderType = "CCC" - this.orderFormat = "foo" - this.transferType = "Upload" - } - ) - } - this.userInfoList = listOf( - EbicsTypes.UserInfo().apply { - this.name = "Some User" - this.userID = EbicsTypes.UserIDType().apply { - this.status = 2 - this.value = "myuserid" - } - this.permissionList = listOf( - EbicsTypes.UserPermission().apply { - this.orderTypes = "CCC ABC" - } - ) - }) - } - - val bytes = XMLUtil.convertJaxbToBytes(hkd) - assert(XMLUtil.validateFromBytes(bytes)) - } - - @Test - fun testEbicsRequestInitializationPhase() { - val ebicsRequestObj = EbicsRequest().apply { - this.version = "H004" - this.revision = 1 - this.authSignature = SignatureType() - this.header = EbicsRequest.Header().apply { - this.authenticate = true - this.mutable = EbicsRequest.MutableHeader().apply { - this.transactionPhase = EbicsTypes.TransactionPhaseType.INITIALISATION - } - this.static = EbicsRequest.StaticHeaderType().apply { - this.hostID = "myhost" - this.nonce = ByteArray(16) - this.timestamp = - DatatypeFactory.newDefaultInstance().newXMLGregorianCalendar(2019, 5, 5, 5, 5, 5, 0, 0) - this.partnerID = "mypid01" - this.userID = "myusr01" - this.product = EbicsTypes.Product().apply { - this.instituteID = "test" - this.language = "en" - this.value = "test" - } - this.orderDetails = EbicsRequest.OrderDetails().apply { - this.orderAttribute = "DZHNN" - this.orderID = "OR01" - this.orderType = "BLA" - this.orderParams = EbicsRequest.StandardOrderParams() - } - this.bankPubKeyDigests = EbicsRequest.BankPubKeyDigests().apply { - this.authentication = EbicsTypes.PubKeyDigest().apply { - this.algorithm = "foo" - this.value = ByteArray(32) - this.version = "X002" - } - this.encryption = EbicsTypes.PubKeyDigest().apply { - this.algorithm = "foo" - this.value = ByteArray(32) - this.version = "E002" - } - } - this.securityMedium = "0000" - } - } - this.body = EbicsRequest.Body().apply { - } - } - - val str = XMLUtil.convertJaxbToBytes(ebicsRequestObj) - val doc = XMLUtil.parseIntoDom(str.inputStream()) - val pair = CryptoUtil.generateRsaKeyPair(1024) - XMLUtil.signEbicsDocument(doc, pair.private) - val bytes = XMLUtil.convertDomToBytes(doc) - assert(XMLUtil.validateFromBytes(bytes)) - } -} -\ No newline at end of file diff --git a/ebics/src/test/kotlin/EbicsOrderUtilTest.kt b/ebics/src/test/kotlin/EbicsOrderUtilTest.kt @@ -1,308 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -import org.junit.Test -import tech.libeufin.ebics.EbicsOrderUtil -import tech.libeufin.ebics.XMLUtil -import tech.libeufin.ebics.ebics_h004.HTDResponseOrderData -import kotlin.test.assertEquals - - -class EbicsOrderUtilTest { - - @Test - fun testComputeOrderIDFromNumber() { - assertEquals("OR01", EbicsOrderUtil.computeOrderIDFromNumber(1)) - assertEquals("OR0A", EbicsOrderUtil.computeOrderIDFromNumber(10)) - assertEquals("OR10", EbicsOrderUtil.computeOrderIDFromNumber(36)) - assertEquals("OR11", EbicsOrderUtil.computeOrderIDFromNumber(37)) - } - - @Test - fun testDecodeOrderData() { - val orderDataXml = """ - <?xml version="1.0" encoding="UTF-8"?> - <HTDResponseOrderData xmlns="urn:org:ebics:H004" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H004 ebics_orders_H004.xsd"> - <PartnerInfo> - <AddressInfo> - <Name>Mr Anybody</Name> - <Street>CENSORED</Street> - <PostCode>12345</PostCode> - <City>Footown</City> - </AddressInfo> - <BankInfo> - <HostID>BLABLUBLA</HostID> - </BankInfo> - <AccountInfo ID="accid000000001" Currency="EUR"> - <AccountNumber international="false">12345667</AccountNumber> - <AccountNumber international="true">DE54430609999999999999</AccountNumber> - <BankCode international="false">43060967</BankCode> - <BankCode international="true">GENODEM1GLS</BankCode> - <AccountHolder>Mr Anybody</AccountHolder> - </AccountInfo> - <OrderInfo> - <OrderType>C52</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>CAMT052</OrderFormat> - <Description>Abholen Vormerkposten</Description> - </OrderInfo> - <OrderInfo> - <OrderType>C53</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>CAMT053</OrderFormat> - <Description>Abholen Kontoauszuege</Description> - </OrderInfo> - <OrderInfo> - <OrderType>C54</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>CAMT054</OrderFormat> - <Description>Abholen Nachricht Sammelbuchungsdatei, Soll-, Haben-Avis</Description> - </OrderInfo> - <OrderInfo> - <OrderType>CDZ</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>XMLBIN</OrderFormat> - <Description>Abholen Payment Status Report for Direct Debit</Description> - </OrderInfo> - <OrderInfo> - <OrderType>CRZ</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>XMLBIN</OrderFormat> - <Description>Abholen Payment Status Report for Credit Transfer</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HAA</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Abrufbare Auftragsarten abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HAC</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>HAC</OrderFormat> - <Description>Kundenprotokoll (XML-Format) abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HKD</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Kunden- und Teilnehmerdaten abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HPB</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Public Keys der Bank abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HPD</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Bankparameter abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HTD</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Kunden- und Teilnehmerdaten abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HVD</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>VEU-Status abrufen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HVT</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>VEU-Transaktionsdetails abrufen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HVU</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>VEU-Uebersicht abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>HVZ</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>VEU-Uebersicht mit Zusatzinformationen abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>PTK</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>PTK</OrderFormat> - <Description>Protokolldatei abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>STA</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MT940</OrderFormat> - <Description>Swift-Tagesauszuege abholen</Description> - </OrderInfo> - <OrderInfo> - <OrderType>VMK</OrderType> - <TransferType>Download</TransferType> - <OrderFormat>MT942</OrderFormat> - <Description>Abholen kurzfristige Vormerkposten</Description> - </OrderInfo> - <OrderInfo> - <OrderType>AZV</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>DTAZVJS</OrderFormat> - <Description>AZV im Diskettenformat senden</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>C1C</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>P8CCOR1</OrderFormat> - <Description>Einreichen von Lastschriften D-1-Option in einem Container</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>C2C</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>PN8CONCS</OrderFormat> - <Description>Einreichen von Firmenlastschriften in einem Container</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>CCC</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>PN1CONCS</OrderFormat> - <Description>Ueberweisungen im SEPA-Container</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>CCT</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>PN1GOCS</OrderFormat> - <Description>Überweisungen im ZKA-Format</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>CCU</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>P1URGCS</OrderFormat> - <Description>Einreichen von Eilueberweisungen</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>CDB</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>PAIN8CS</OrderFormat> - <Description>Einreichen von Firmenlastschriften</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>CDC</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>PN8CONCS</OrderFormat> - <Description>Einreichen von Lastschriften in einem Container</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>CDD</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>PN8GOCS</OrderFormat> - <Description>Einreichen von Lastschriften</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>HCA</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Public Key senden</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>HCS</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Teilnehmerschluessel EU und EBICS aendern</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>HIA</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Initiales Senden Public Keys</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>HVE</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>VEU-Unterschrift hinzufuegen</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>HVS</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>VEU-Storno</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>INI</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Passwort-Initialisierung</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>PUB</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Public-Key senden</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - <OrderInfo> - <OrderType>SPR</OrderType> - <TransferType>Upload</TransferType> - <OrderFormat>MISC</OrderFormat> - <Description>Sperrung der Zugangsberechtigung</Description> - <NumSigRequired>0</NumSigRequired> - </OrderInfo> - </PartnerInfo> - <UserInfo> - <UserID Status="1">ANYBOMR</UserID> - <Name>Mr Anybody</Name> - <Permission> - <OrderTypes>C52 C53 C54 CDZ CRZ HAA HAC HKD HPB HPD HTD HVD HVT HVU HVZ PTK</OrderTypes> - </Permission> - <Permission> - <OrderTypes></OrderTypes> - <AccountID>accid000000001</AccountID> - </Permission> - <Permission AuthorisationLevel="E"> - <OrderTypes>AZV CCC CCT CCU</OrderTypes> - </Permission> - <Permission AuthorisationLevel="T"> - <OrderTypes>HCA HCS HIA HVE HVS INI PUB SPR</OrderTypes> - </Permission> - </UserInfo> - </HTDResponseOrderData> - """.trimIndent().toByteArray().inputStream() - XMLUtil.convertToJaxb<HTDResponseOrderData>(orderDataXml) - } -} -\ No newline at end of file diff --git a/ebics/src/test/kotlin/SignatureDataTest.kt b/ebics/src/test/kotlin/SignatureDataTest.kt @@ -1,97 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -import org.apache.xml.security.binding.xmldsig.SignatureType -import org.junit.Test -import tech.libeufin.common.crypto.CryptoUtil -import tech.libeufin.ebics.XMLUtil -import tech.libeufin.ebics.ebics_h004.EbicsRequest -import tech.libeufin.ebics.ebics_h004.EbicsTypes -import java.math.BigInteger -import java.util.* -import javax.xml.datatype.DatatypeFactory - -class SignatureDataTest { - - @Test - fun makeSignatureData() { - - val pair = CryptoUtil.generateRsaKeyPair(1024) - - val tmp = EbicsRequest().apply { - header = EbicsRequest.Header().apply { - version = "H004" - revision = 1 - authenticate = true - static = EbicsRequest.StaticHeaderType().apply { - hostID = "some host ID" - nonce = "nonce".toByteArray() - timestamp = DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()) - partnerID = "some partner ID" - userID = "some user ID" - orderDetails = EbicsRequest.OrderDetails().apply { - orderType = "TST" - orderAttribute = "OZHNN" - } - bankPubKeyDigests = EbicsRequest.BankPubKeyDigests().apply { - authentication = EbicsTypes.PubKeyDigest().apply { - algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - version = "X002" - value = CryptoUtil.getEbicsPublicKeyHash(pair.public) - } - encryption = EbicsTypes.PubKeyDigest().apply { - algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - version = "E002" - value = CryptoUtil.getEbicsPublicKeyHash(pair.public) - } - } - securityMedium = "0000" - numSegments = BigInteger.ONE - - authSignature = SignatureType() - } - mutable = EbicsRequest.MutableHeader().apply { - transactionPhase = EbicsTypes.TransactionPhaseType.INITIALISATION - } - body = EbicsRequest.Body().apply { - dataTransfer = EbicsRequest.DataTransfer().apply { - signatureData = EbicsRequest.SignatureData().apply { - authenticate = true - value = "to byte array".toByteArray() - } - dataEncryptionInfo = EbicsTypes.DataEncryptionInfo().apply { - transactionKey = "mock".toByteArray() - authenticate = true - encryptionPubKeyDigest = EbicsTypes.PubKeyDigest().apply { - algorithm = "http://www.w3.org/2001/04/xmlenc#sha256" - version = "E002" - value = - CryptoUtil.getEbicsPublicKeyHash(pair.public) - } - } - hostId = "a host ID" - } - } - } - } - - println(XMLUtil.convertJaxbToBytes(tmp)) - - } -} -\ No newline at end of file diff --git a/ebics/src/test/kotlin/XmlCombinatorsTest.kt b/ebics/src/test/kotlin/XmlCombinatorsTest.kt @@ -1,67 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -import org.junit.Test -import tech.libeufin.ebics.XmlBuilder -import tech.libeufin.ebics.constructXml -import kotlin.test.assertEquals - -class XmlCombinatorsTest { - - @Test - fun testWithModularity() { - fun module(base: XmlBuilder) { - base.el("module") - } - val s = constructXml("root") { - module(this) - } - println(s) - assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><root><module/></root>", s) - } - - @Test - fun testWithIterable() { - val s = constructXml("iterable") { - el("endOfDocument") { - for (i in 1..10) - el("$i/$i$i", "$i$i$i") - } - } - println(s) - assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><iterable><endOfDocument><1><11>111</11></1><2><22>222</22></2><3><33>333</33></3><4><44>444</44></4><5><55>555</55></5><6><66>666</66></6><7><77>777</77></7><8><88>888</88></8><9><99>999</99></9><10><1010>101010</1010></10></endOfDocument></iterable>", s) - } - - @Test - fun testBasicXmlBuilding() { - val s = constructXml("ebics:ebicsRequest") { - attr("version", "H004") - el("a/b/c") { - attr("attribute-of", "c") - el("//d/e/f//") { - attr("nested", "true") - el("g/h/") - } - } - el("one more") - } - println(s) - assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><ebics:ebicsRequest version=\"H004\"><a><b><c attribute-of=\"c\"><><><d><e><f><>< nested=\"true\"><g><h></></h></g></></></f></e></d></></></c></b></a><one more/></ebics:ebicsRequest>", s) - } -} diff --git a/ebics/src/test/kotlin/XmlUtilTest.kt b/ebics/src/test/kotlin/XmlUtilTest.kt @@ -1,191 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -import org.apache.xml.security.binding.xmldsig.SignatureType -import org.junit.Assert.assertTrue -import org.junit.Test -import tech.libeufin.common.crypto.CryptoUtil -import tech.libeufin.common.decodeBase64 -import tech.libeufin.ebics.XMLUtil -import tech.libeufin.ebics.XMLUtil.Companion.signEbicsResponse -import tech.libeufin.ebics.ebics_h004.EbicsKeyManagementResponse -import tech.libeufin.ebics.ebics_h004.EbicsResponse -import tech.libeufin.ebics.ebics_h004.EbicsTypes -import tech.libeufin.ebics.ebics_h004.HTDResponseOrderData -import java.security.KeyPairGenerator -import javax.xml.transform.stream.StreamSource - -class XmlUtilTest { - - @Test - fun deserializeConsecutiveLists() { - val tmp = XMLUtil.convertToJaxb<HTDResponseOrderData>(""" - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> - <HTDResponseOrderData xmlns="urn:org:ebics:H004"> - <PartnerInfo> - <AddressInfo> - <Name>Foo</Name> - </AddressInfo> - <BankInfo> - <HostID>host01</HostID> - </BankInfo> - <AccountInfo Currency="EUR" Description="ACCT" ID="acctid1"> - <AccountNumber international="true">DE21500105174751659277</AccountNumber> - <BankCode international="true">INGDDEFFXXX</BankCode> - <AccountHolder>Mina Musterfrau</AccountHolder> - </AccountInfo> - <AccountInfo Currency="EUR" Description="glsdemoacct" ID="glsdemo"> - <AccountNumber international="true">DE91430609670123123123</AccountNumber> - <BankCode international="true">GENODEM1GLS</BankCode> - <AccountHolder>Mina Musterfrau</AccountHolder> - </AccountInfo> - <OrderInfo> - <OrderType>C53</OrderType> - <TransferType>Download</TransferType> - <Description>foo</Description> - </OrderInfo> - <OrderInfo> - <OrderType>C52</OrderType> - <TransferType>Download</TransferType> - <Description>foo</Description> - </OrderInfo> - <OrderInfo> - <OrderType>CCC</OrderType> - <TransferType>Upload</TransferType> - <Description>foo</Description> - </OrderInfo> - </PartnerInfo> - <UserInfo> - <UserID Status="5">USER1</UserID> - <Name>Some User</Name> - <Permission> - <OrderTypes>C54 C53 C52 CCC</OrderTypes> - </Permission> - </UserInfo> - </HTDResponseOrderData>""".trimIndent().toByteArray().inputStream() - ) - - println(tmp.value.partnerInfo.orderInfoList[0].description) - } - - @Test - fun exceptionOnConversion() { - try { - XMLUtil.convertToJaxb<EbicsKeyManagementResponse>("<malformed xml>".toByteArray().inputStream()) - } catch (e: javax.xml.bind.UnmarshalException) { - // just ensuring this is the exception - println("caught") - return - } - assertTrue(false) - } - - @Test - fun hevValidation(){ - val classLoader = ClassLoader.getSystemClassLoader() - val hev = classLoader.getResourceAsStream("ebics_hev.xml") - assertTrue(XMLUtil.validate(StreamSource(hev))) - } - - @Test - fun iniValidation(){ - val classLoader = ClassLoader.getSystemClassLoader() - val ini = classLoader.getResourceAsStream("ebics_ini_request_sample.xml") - assertTrue(XMLUtil.validate(StreamSource(ini))) - } - - @Test - fun basicSigningTest() { - val doc = XMLUtil.parseIntoDom(""" - <myMessage xmlns:ebics="urn:org:ebics:H004"> - <ebics:AuthSignature /> - <foo authenticate="true">Hello World</foo> - </myMessage> - """.trimIndent().toByteArray().inputStream()) - val kpg = KeyPairGenerator.getInstance("RSA") - kpg.initialize(2048) - val pair = kpg.genKeyPair() - val otherPair = kpg.genKeyPair() - XMLUtil.signEbicsDocument(doc, pair.private) - kotlin.test.assertTrue(XMLUtil.verifyEbicsDocument(doc, pair.public)) - kotlin.test.assertFalse(XMLUtil.verifyEbicsDocument(doc, otherPair.public)) - } - - @Test - fun verifySigningWithConversion() { - - val pair = CryptoUtil.generateRsaKeyPair(2048) - - val response = EbicsResponse().apply { - version = "H004" - header = EbicsResponse.Header().apply { - _static = EbicsResponse.StaticHeaderType() - mutable = EbicsResponse.MutableHeaderType().apply { - this.reportText = "foo" - this.returnCode = "bar" - this.transactionPhase = EbicsTypes.TransactionPhaseType.INITIALISATION - } - } - authSignature = SignatureType() - body = EbicsResponse.Body().apply { - returnCode = EbicsResponse.ReturnCode().apply { - authenticate = true - value = "asdf" - } - } - } - - val signature = signEbicsResponse(response, pair.private) - val signatureJaxb = XMLUtil.convertToJaxb<EbicsResponse>(signature.inputStream()) - - assertTrue( - XMLUtil.verifyEbicsDocument( - XMLUtil.convertJaxbToDocument(signatureJaxb.value), - pair.public - ) - ) - } - - @Test - fun multiAuthSigningTest() { - val doc = XMLUtil.parseIntoDom(""" - <myMessage xmlns:ebics="urn:org:ebics:H004"> - <ebics:AuthSignature /> - <foo authenticate="true">Hello World</foo> - <bar authenticate="true">Another one!</bar> - </myMessage> - """.trimIndent().toByteArray().inputStream()) - val kpg = KeyPairGenerator.getInstance("RSA") - kpg.initialize(2048) - val pair = kpg.genKeyPair() - XMLUtil.signEbicsDocument(doc, pair.private) - kotlin.test.assertTrue(XMLUtil.verifyEbicsDocument(doc, pair.public)) - } - - @Test - fun testRefSignature() { - val classLoader = ClassLoader.getSystemClassLoader() - val docText = classLoader.getResourceAsStream("signature1/doc.xml") - val doc = XMLUtil.parseIntoDom(docText) - val keyStream = classLoader.getResourceAsStream("signature1/public_key.txt") - val keyBytes = keyStream.decodeBase64().readAllBytes() - val key = CryptoUtil.loadRsaPublicKey(keyBytes) - assertTrue(XMLUtil.verifyEbicsDocument(doc, key)) - } -} -\ No newline at end of file diff --git a/ebics/src/test/resources/ebics_hev.xml b/ebics/src/test/resources/ebics_hev.xml @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ebics:ebicsHEVRequest xmlns:ebics="http://www.ebics.org/H000"> - <ebics:HostID>EBIXQUAL</ebics:HostID> -</ebics:ebicsHEVRequest> diff --git a/ebics/src/test/resources/ebics_ini_inner_key.xml b/ebics/src/test/resources/ebics_ini_inner_key.xml @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<SignaturePubKeyOrderData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ebics.org/S001 http://www.ebics.org/S001/ebics_signature.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.ebics.org/S001"> - <SignaturePubKeyInfo> - <PubKeyValue> - <ds:RSAKeyValue> - <ds:Modulus>s5ktpg3xGjbZZgVTYtW+0e6xsWg142UwvoM3mfuM+qrkIa5bPUGQLH6BRL9IejYosPhoA6jwMBSxO8LfaageyZJt2M5wHklJYz3fADtQrV1bk5R92OaY/9ZZdHxw3xY93tm5JfVrMDW9DEK5B1hUzYFdjuN/qu2/sdE9mwhx2YjYwwdSQzv6MhbtSK9OAJjPGo3fkxsht6maSmRCdgxplIOSO2mmP1wjUzbVUMcrRk9KDMvnb3kCxiTm+evvxX6J4wpY1bAWukolJbaALHlFtgTo1LnulUe/BxiKx9HpmuEAaPsk8kgduXsz5OqH2g/Vyw75x51aKVPxOTBPyP+4kQ==</ds:Modulus> - <ds:Exponent>AQAB</ds:Exponent> - </ds:RSAKeyValue> - </PubKeyValue> - <SignatureVersion>A006</SignatureVersion> - </SignaturePubKeyInfo> - <PartnerID>flo-kid</PartnerID> - <UserID>flo-uid</UserID> -</SignaturePubKeyOrderData> -\ No newline at end of file diff --git a/ebics/src/test/resources/ebics_ini_request_sample.xml b/ebics/src/test/resources/ebics_ini_request_sample.xml @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ebicsUnsecuredRequest Revision="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:org:ebics:H004 ebics_keymgmt_request_H004.xsd" Version="H004" - xmlns="urn:org:ebics:H004"> - <header authenticate="true"> - <static> - <HostID>myhost</HostID> - <PartnerID>k1</PartnerID> - <UserID>u1</UserID> - <OrderDetails> - <OrderType>INI</OrderType> - <OrderAttribute>DZNNN</OrderAttribute> - </OrderDetails> - <SecurityMedium>0000</SecurityMedium> - </static> - <mutable/> - </header> - <body> - <DataTransfer> - <OrderData> - eJx9U1tzmkAUfu9M/wNDH524XIINjprBaOIFCopg8CWzyHK/GHaR1V9fhtg0bWrf9nzfdy57LoN7mqXMEZU4KvIhy3c5lkH5vvCiPBiyFfFv7tj70dcvAzMKckiqEhmVu0QnvfRQOYEEMo1/jvsUR0M2JOTQB6Cu624tdosyAALH8eBZU819iDJ4E+WYwHyPWKbR93ELqsUekjb5B3fkRnvcRjCbCMxVBrTmC/5VXJdij72U5OErFXGAk0Gj8Rq3bxf1f7KzzfcZ5u8GzHO/aImGekNsmFboAjWgh/trU/mEvzFa4VVphUdYSsghEOlT7O52gb1xyLbDoR7F24C/Faz6WGhi5lda57VM5lByDetppc5647Uqz1HsFNgIC6UX19rYpPqd6kMYoNNuQQRNqmdJunDOoq9MyKq0eTeR1rKgQwfIu503o7VIHVkkmbTw7VKbbOXJdCmN+dA6O49eXP0Ar5UAsDeVszqkghM7de2Zq/Oxp4UuMZeyrixi46kQ/YTikPQyaGbrBy+gh3Sum7qQZQZfx9bZtS1tX64TeTnRjrkrJg802mQddDzS597itj44vKtsq6RIFy5U1Fn6SIJNwat5lVoIjGm0pPLskFVTBRo4uUsCr3rGZ0l/nQkBsE/1d4lKPFzaBtU3Y+NkdG6T1XA4AB+a/Gfrp/RQ5CgnI2WljFvdO/I+O/DP4Q3A50H/Xgv77YZGCsf1BuAT3O4QuLZEAwOWJEflfDJK+CbPu9WSFm7fVcNcns1BgmsXOfoJ1l5CIg== - </OrderData> - </DataTransfer> - </body> -</ebicsUnsecuredRequest> -\ No newline at end of file diff --git a/ebics/src/test/resources/hia_request.xml b/ebics/src/test/resources/hia_request.xml @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ebicsUnsecuredRequest xmlns="urn:org:ebics:H004" - xmlns:ds="http://www.w3.org/2000/09/xmldsig#" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:org:ebics:H004 ebics_keymgmt_request_H004.xsd" - Version="H004" - Revision="1"> - <header authenticate="true"> - <static> - <HostID>LIBEUFIN-SANDBOX</HostID> - <PartnerID>CUSTM001</PartnerID> - <UserID>u1</UserID> - <OrderDetails> - <OrderType>HIA</OrderType> - <OrderAttribute>DZNNN</OrderAttribute> - </OrderDetails> - <SecurityMedium>0000</SecurityMedium> - </static> - <mutable/> - </header> - <body> - <DataTransfer> - <OrderData>eJzNlsmyo0YWhvf1FBW3l0SZZBY3VHIwCwESM0g7ZpCYxAxPb/mWh7ZdrlUvmhX8Z/gzyPNl5P7npSo/T0nXF0399Q35Cbz9fPi0P8qMmTzHpB8uXZx0fDAEn1+Jdf8e91/f8mFo32F4nuefZuynpstgFAAAAxp+5cR9kf3n7dPn7z0fLb6+jV39/qp6T8Ii6t+PAOA/yn9PXh3/YvpR9+FrAYD8sHbpi39ZLwL7mmpFeVIFX4q6H4I6St4Or157ZhzypB6KKBheP0UfQyVZ5TptDh9G+2+CG5RjcvjNeh/376bF/F3+FtCaeCzH/sCccjF6CEpIHO9qNg7sk6vEJqcu5+zCjy3Te4YaE00r3WCcLidQGGEqJ4uoRMrcaQFlAnAK2xDVb1T2KGFMbW87hbMe9m5XzjCb6kuIareAuStQx66uzs+PUlk5oQim7B6eoNW2qo4Ljxu4jbFWLM4M7n4geL2ZNSiMnxum8+d+YTntqIqVV3eS06KTHYeBuOmqaXA1Ar/csDRAAFFNmr8cGc07u8ZC9TidnjhurtHURIQpvLBIf6Uj/5xQT2pGj62hFy2jbldl1wQtTkKbBKm0d2pWZIxX6Q6brViRT8Hl5UeW6FnsgIC1YQslccVX8AhjALHjgHF/ENYD8+3O7ZLOjPhJWvOeMniZ3ayU8F9rAxgdA9xMO1mN0ITDKKWuzZ23hRWH6P3ZKRn3FBhahVPVUOgmF1Br6mWEGkoWQ9h1eXcWlHsA5sGwVg6PurNwXCdWaw70kceyi3Gye6IjoQTPmksNZ5SAyYFlYQD2HLzenvaur+j7YOw20fN9ZEQK+yYyl0AYctO+tL7HmmVR6lw3hpVuLQpfJxvUcjJfsQ+pQCzmVCuiBpbg+DR1uktRiLu3+LHTSiTqQrWN+QF3a4lGdo/NMirzSlakYYUsCgekexluTTKjt4LKV65gMNMX5fIM3xBPu3PUGepNk19iM6yPa4K3z9m8X4KU3gVayt7E+jGR7DWwoZlcyj38X4P7l2kWlrapX3QcGINhP9L+UH6HAf4+DXu7qBJrCKr2gAJk9wVBvgDERpB3BLxjxG0P/xn/Bhr8D9L+hqb77dg6+ACge/j7sV+Bhn9E9F6oo25t/7eoqyBWNpkKhBnWdoKGuhmCBRJ82aiLXKO+c69WObdyykqpGrcg2A+PPp8it7LPdjNhK5BiMEIn6h6QgJHjEWsmk3Jz+9arzzIBzYNz3qj0mNT8xVTYUR8xVxXWklfOR9nz6FQ6z/gI7Gwkg6kTjx2OnisyF3DN823VzoSr4g5ryJwbHMquYT4NDSEM0PbsLwYsRRPq9lvpA5nnoqlXi9vTCYT4FkyoE7QDt5aBImu2fMdO5d0bBJftAd5cSFpop0IvJKXEH4KxYVdK8B7lsp0JfSmIiwiriH9a+plTZiGxZc8hezlARdah8KgLdshknHN6xLyi0SWHjCm6cYu2J4n6VkCYMjfdzMMxRs1sRCsAt9LXlrr01YT4jeM2RE95x8qg+zShwUrm7MyWCdonrmK+SL8U8gsGwbCZbECR3PP5ihjNrA6ryssn9bR6BnTlRnBkNYmdG6aEuzBLGnrk1WxY2VwBGH5S6tCp/VFGBobwT2FY2JSrPquMjHjlFnGFWDCutPVlcNIwljSFU34Ws5h4bdgq2eKUHV+jcHVQx5v74z2uToGp3xmRjGxpTkTEnnnaf7zQb+rdLpo0DlJL7ZwxCJ8OJIRM6iQvetZRo4sQoCTSbQp1HVovaZ95jUK/zljDup8ehRVrEBGCRGZmzukmaSZn61EXF/pRszUNjc8sVSdM9+Wuq1WA6f+vqP+J5e8oCx+Y/1P/QPzfKN7rQTfUSSfzB8HnjsxZEl5uf2i/Zjj9x6vNqIK5h3/7+rSHv3MJOnz6BXLJ7gw=</OrderData> - </DataTransfer> - </body> -</ebicsUnsecuredRequest> diff --git a/ebics/src/test/resources/hia_request_order_data.xml b/ebics/src/test/resources/hia_request_order_data.xml @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<HIARequestOrderData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H004 ebics_orders_H004.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004"> - <AuthenticationPubKeyInfo> - <PubKeyValue> - <ds:RSAKeyValue> - <ds:Modulus>0Ekicvrcj2+8tsF+DZsWihl9W7AyVwtMLxq3qefSWagpfnV7BVsKYIJ/OhiWpvr3dz6K5lHSatzhG1x//jrZt6VHn5Wkkb0M0vayPUiZbe5s2aLabqfOTrt8TPnHwjZMChDHRmGoKI0OzLyQJ6MIfQrHZ5t61ccWubYO/bgbSnP9H39k8QEp0kmW4Tf4u+28GTLgueNAaaPTdCozZjrST4fH9nyhBUZ3nl+vZ+AiUNdl5UfV109CXhCm3safLboUus6ZcYLm6gTaiwJEdRX7HYbnAQZ5gcoXVz/oyxJqTkicVOLPrTAfi3UmFrnIVF8XBtOPdIXHzSpxZ3yT8gH4zQ==</ds:Modulus> - <ds:Exponent>AQAB</ds:Exponent> - </ds:RSAKeyValue> - </PubKeyValue> - <AuthenticationVersion>X002</AuthenticationVersion> - </AuthenticationPubKeyInfo> - <EncryptionPubKeyInfo> - <PubKeyValue> - <ds:RSAKeyValue> - <ds:Modulus>0Ekicvrcj2+8tsF+DZsWihl9W7AyVwtMLxq3qefSWagpfnV7BVsKYIJ/OhiWpvr3dz6K5lHSatzhG1x//jrZt6VHn5Wkkb0M0vayPUiZbe5s2aLabqfOTrt8TPnHwjZMChDHRmGoKI0OzLyQJ6MIfQrHZ5t61ccWubYO/bgbSnP9H39k8QEp0kmW4Tf4u+28GTLgueNAaaPTdCozZjrST4fH9nyhBUZ3nl+vZ+AiUNdl5UfV109CXhCm3safLboUus6ZcYLm6gTaiwJEdRX7HYbnAQZ5gcoXVz/oyxJqTkicVOLPrTAfi3UmFrnIVF8XBtOPdIXHzSpxZ3yT8gH4zQ==</ds:Modulus> - <ds:Exponent>AQAB</ds:Exponent> - </ds:RSAKeyValue> - </PubKeyValue> - <EncryptionVersion>E002</EncryptionVersion> - </EncryptionPubKeyInfo> - <PartnerID>PARTNER1</PartnerID> - <UserID>USER1</UserID> -</HIARequestOrderData> -\ No newline at end of file diff --git a/ebics/src/test/resources/hpb_request.xml b/ebics/src/test/resources/hpb_request.xml @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ebics:ebicsNoPubKeyDigestsRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebics="urn:org:ebics:H004" xmlns="http://www.w3.org/2001/XMLSchema" Version="H004" Revision="1"> - <ebics:header authenticate="true"> - <ebics:static> - <ebics:HostID>EBIXQUAL</ebics:HostID> - <ebics:Nonce>0749134D19E160DA4ACA366180113D44</ebics:Nonce> - <ebics:Timestamp>2018-11-01T11:10:35Z</ebics:Timestamp> - <ebics:PartnerID>EXCHANGE</ebics:PartnerID> - <ebics:UserID>TALER</ebics:UserID> - <ebics:OrderDetails> - <ebics:OrderType>HPB</ebics:OrderType> - <ebics:OrderAttribute>DZHNN</ebics:OrderAttribute> - </ebics:OrderDetails> - <ebics:SecurityMedium>0000</ebics:SecurityMedium> - </ebics:static> - <ebics:mutable/> - </ebics:header> - <ebics:AuthSignature> - <ds:SignedInfo> - <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> - <ds:Reference URI="#xpointer(//*[@authenticate='true'])"> - <ds:Transforms> - <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - </ds:Transforms> - <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <ds:DigestValue>yuwpcvmVrNrc1t58aulF6TiqKO+CNe7Dhwaa6V/cKws=</ds:DigestValue> - </ds:Reference> - </ds:SignedInfo> - <ds:SignatureValue>chhF4/yxSz2WltTR0/DPf01WyncNx3P1XJDr0SylVMVWWSY9S1dYyJKgGOW+g7C/ -HYzrGcFwKrejf79DH3F2Ek8NJLsAFzf/0oxff2eYEe0SlxjXmgsubeMOy5PKB9Ag -ZiQYMiNy9gaatqcW79E3n/r1nD/lwLsped/4jzWdY+Gfj3z6d18vymmGymbHqIaR -hawk/Iu/tpMQ3dbvIFbzn9LLMmzfQzG2ZPy3BiQNVWr3aSLl9qG4U9zeK6OyH2/Z -g1EEnjfJa/+pTCeJmyoDBwgaJWcuCRQmWjvxvbM4ckYnrFkhvLf24on2ydmUeipp -sMl8q1khyWUC0P0h6otZhD1SUdf1rt14r16bdy1r0ieTVm6m3qXhcX5MXagvFci0 -0OE2mOgf/GXE2WiJLAbRh06s9OvAzHUq4QGQwbkprMBMFw4uxONyNzYl+F9aA5Ic -Awebf7/dfDJIHZc8XkwY1jNJrmCTzRyTP5eDN4bDPoHqTotDo1CMFaHtnkygg/Lg -qoirV8mHfqnO4XQBOCUiHZ6mzz81l+O7dYg65cYx9Z76q2cv1PxsMb7Eo4nvux5S -QPuuid0G5lomHXM/uM3mu4vXcDluCoffgTDimxs0I9X+PB7a2vgSMezwYkj8dA69 -vszH1hwek7DRbRfKUo6HUxl49Gsk0XYG/K30M5fS5JE=</ds:SignatureValue> - </ebics:AuthSignature> - <ebics:body/> -</ebics:ebicsNoPubKeyDigestsRequest> diff --git a/nexus/build.gradle b/nexus/build.gradle @@ -22,10 +22,6 @@ dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") implementation(project(":common")) - implementation(project(":ebics")) - - // XML parsing/binding and encryption - implementation("jakarta.xml.bind:jakarta.xml.bind-api:2.3.3") // Command line parsing implementation("com.github.ajalt.clikt:clikt:$clikt_version") diff --git a/nexus/codegen.py b/nexus/codegen.py @@ -0,0 +1,72 @@ +# Update EBICS constants file using latest external code sets files + +import polars as pl +import requests +from io import BytesIO +from zipfile import ZipFile + + +def iso20022codegen(): + # Get XLSX zip file from server + r = requests.get( + "https://www.iso20022.org/sites/default/files/media/file/ExternalCodeSets_XLSX.zip" + ) + assert r.status_code == 200 + + # Unzip the XLSX file + zip = ZipFile(BytesIO(r.content)) + files = zip.namelist() + assert len(files) == 1 + file = zip.open(files[0]) + + # Parse excel + df = pl.read_excel(file, sheet_name="AllCodeSets") + + def extractCodeSet(setName: str, className: str) -> str: + out = f"enum class {className}(val isoCode: String, val description: String) {{" + + for row in df.filter(pl.col("Code Set") == setName).sort("Code Value").rows(named=True): + (value, isoCode, description) = ( + row["Code Value"], + row["Code Name"], + row["Code Definition"].split("\n", 1)[0].strip(), + ) + out += f'\n\t{value}("{isoCode}", "{description}"),' + + out += "\n}" + return out + + # Write kotlin file + kt = f"""/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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/> + */ + +// THIS FILE IS GENERATED, DO NOT EDIT + +package tech.libeufin.nexus + +{extractCodeSet("ExternalStatusReason1Code", "ExternalStatusReasonCode")} + +{extractCodeSet("ExternalPaymentGroupStatus1Code", "ExternalPaymentGroupStatusCode")} + +{extractCodeSet("ExternalPaymentTransactionStatus1Code", "ExternalPaymentTransactionStatusCode")} +""" + with open("src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt", "w") as file1: + file1.write(kt) + +iso20022codegen() diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt @@ -27,8 +27,6 @@ import io.ktor.client.* import io.ktor.client.plugins.* import kotlinx.coroutines.* import tech.libeufin.common.* -import tech.libeufin.ebics.* -import tech.libeufin.ebics.ebics_h005.Ebics3Request import tech.libeufin.nexus.ebics.* import java.io.IOException import java.io.InputStream @@ -67,53 +65,6 @@ data class FetchContext( ) /** - * Downloads content via EBICS, according to the order params passed - * by the caller. - * - * @param T [Ebics2Request] for EBICS 2 or [Ebics3Request.OrderDetails.BTOrderParams] for EBICS 3 - * @param ctx [FetchContext] - * @param req contains the instructions for the download, namely - * which document is going to be downloaded from the bank. - * @return the [ByteArray] payload. On an empty response, the array - * length is zero. It returns null, if the bank assigned an - * error to the EBICS transaction. - */ -private suspend fun downloadHelper( - ctx: FetchContext, - lastExecutionTime: Instant? = null, - doc: SupportedDocument, - processing: (InputStream) -> Unit -) { - val isEbics3 = doc != SupportedDocument.PAIN_002_LOGS - val initXml = if (isEbics3) { - createEbics3DownloadInitialization( - ctx.cfg, - ctx.bankKeys, - ctx.clientKeys, - prepEbics3Document(doc, lastExecutionTime) - ) - } else { - val ebics2Req = prepEbics2Document(doc, lastExecutionTime) - createEbics25DownloadInit( - ctx.cfg, - ctx.clientKeys, - ctx.bankKeys, - ebics2Req.messageType, - ebics2Req.orderParams - ) - } - return ebicsDownload( - ctx.httpClient, - ctx.cfg, - ctx.clientKeys, - ctx.bankKeys, - initXml, - isEbics3, - processing - ) -} - -/** * Converts the 2-digits fraction value as given by the bank * (postfinance dialect), to the Taler 8-digit value (db representation). * @@ -322,7 +273,7 @@ private fun ingestDocuments( private suspend fun fetchDocuments( db: Database, ctx: FetchContext, - docs: List<Document> + docs: List<EbicsDocument> ): Boolean { val lastExecutionTime: Instant? = ctx.pinnedStart return docs.all { doc -> @@ -332,9 +283,18 @@ private suspend fun fetchDocuments( } else { logger.info("Fetching '${doc.fullDescription()}' from timestamp: $lastExecutionTime") } - val doc = doc.doc() // downloading the content - downloadHelper(ctx, lastExecutionTime, doc) { stream -> + val doc = doc.doc() + val order = downloadDocService(doc, doc == SupportedDocument.PAIN_002_LOGS) + ebicsDownload( + ctx.httpClient, + ctx.cfg, + ctx.clientKeys, + ctx.bankKeys, + order, + lastExecutionTime, + null + ) { stream -> val loggedStream = ctx.fileLogger.logFetch( stream, doc == SupportedDocument.PAIN_002_LOGS @@ -349,7 +309,7 @@ private suspend fun fetchDocuments( } } -enum class Document { +enum class EbicsDocument { /// EBICS acknowledgement - CustomerAcknowledgement HAC pain.002 acknowledgement, /// Payment status - CustomerPaymentStatusReport pain.002 @@ -394,10 +354,10 @@ class EbicsFetch: CliktCommand("Fetches EBICS files") { help = "This flag fetches only once from the bank and returns, " + "ignoring the 'frequency' configuration value" ).flag(default = false) - private val documents: Set<Document> by argument( + private val documents: Set<EbicsDocument> by argument( help = "Which documents should be fetched? If none are specified, all supported documents will be fetched", - helpTags = Document.entries.map { Pair(it.name, it.shortDescription()) }.toMap() - ).enum<Document>().multiple().unique() + helpTags = EbicsDocument.entries.map { Pair(it.name, it.shortDescription()) }.toMap() + ).enum<EbicsDocument>().multiple().unique() private val pinnedStart by option( help = "Constant YYYY-MM-DD date for the earliest document" + " to download (only consumed in --transient mode). The" + @@ -434,7 +394,7 @@ class EbicsFetch: CliktCommand("Fetches EBICS files") { null, FileLogger(ebicsLog) ) - val docs = if (documents.isEmpty()) Document.entries else documents.toList() + val docs = if (documents.isEmpty()) EbicsDocument.entries else documents.toList() if (transient) { logger.info("Transient mode: fetching once and returning.") val pinnedStartVal = pinnedStart diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt @@ -23,9 +23,9 @@ import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.groups.* import com.github.ajalt.clikt.parameters.options.* import io.ktor.client.* +import io.ktor.client.plugins.* import tech.libeufin.common.* import tech.libeufin.common.crypto.* -import tech.libeufin.ebics.* import tech.libeufin.nexus.ebics.* import java.nio.file.* import java.time.Instant @@ -81,8 +81,8 @@ fun String.spaceEachTwo() = * @return true if the user accepted, false otherwise. */ private fun askUserToAcceptKeys(bankKeys: BankPublicKeysFile): Boolean { - val encHash = CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_encryption_public_key).toHexString() - val authHash = CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_authentication_public_key).toHexString() + val encHash = CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_encryption_public_key).encodeUpHex() + val authHash = CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_authentication_public_key).encodeUpHex() println("The bank has the following keys:") println("Encryption key: ${encHash.spaceEachTwo()}") println("Authentication key: ${authHash.spaceEachTwo()}") @@ -92,43 +92,6 @@ private fun askUserToAcceptKeys(bankKeys: BankPublicKeysFile): Boolean { } /** - * Parses the HPB response and stores the bank keys as "NOT accepted" to disk. - * - * @param cfg used to get the location of the bank keys file. - * @param bankKeys bank response to the HPB message. - */ -private fun handleHpbResponse( - cfg: EbicsSetupConfig, - bankKeys: EbicsKeyManagementResponseContent -) { - val hpbBytes = bankKeys.orderData // silences compiler. - if (hpbBytes == null) { - throw Exception("HPB content not found in a EBICS response with successful return codes.") - } - val hpbObj = try { - parseEbicsHpbOrder(hpbBytes.inputStream()) - } catch (e: Exception) { - throw Exception("HPB response content seems invalid", e) - } - val encPub = try { - CryptoUtil.loadRsaPublicKey(hpbObj.encryptionPubKey.encoded) - } catch (e: Exception) { - throw Exception("Could not import bank encryption key from HPB response", e) - } - val authPub = try { - CryptoUtil.loadRsaPublicKey(hpbObj.authenticationPubKey.encoded) - } catch (e: Exception) { - throw Exception("Could not import bank authentication key from HPB response", e) - } - val json = BankPublicKeysFile( - bank_authentication_public_key = authPub, - bank_encryption_public_key = encPub, - accepted = false - ) - persistBankKeys(json, cfg.bankPublicKeysFilename) -} - -/** * Collects all the steps from generating the message, to * sending it to the bank, and finally updating the state * on disk according to the response. @@ -147,37 +110,57 @@ suspend fun doKeysRequestAndUpdateState( orderType: KeysOrderType ) { logger.info("Doing key request ${orderType.name}") + val impl = Ebics3KeyMng(cfg, privs) val req = when(orderType) { - KeysOrderType.INI -> generateIniMessage(cfg, privs) - KeysOrderType.HIA -> generateHiaMessage(cfg, privs) - KeysOrderType.HPB -> generateHpbMessage(cfg, privs) + KeysOrderType.INI -> impl.INI() + KeysOrderType.HIA -> impl.HIA() + KeysOrderType.HPB -> impl.HPB() } - val xml = try { - client.postToBank(cfg.hostBaseUrl, req) - } catch (e: Exception) { - throw Exception("Could not POST the ${orderType.name} message to the bank at '${cfg.hostBaseUrl}'", e) - } - val ebics = parseKeysMgmtResponse(privs.encryption_private_key, xml) - if (ebics == null) { - throw Exception("Could not get any EBICS from the bank ${orderType.name} response ($xml).") - } - if (ebics.technicalReturnCode != EbicsReturnCode.EBICS_OK) { - throw Exception("EBICS ${orderType.name} failed with code: ${ebics.technicalReturnCode}") - } - if (ebics.bankReturnCode != EbicsReturnCode.EBICS_OK) { - throw Exception("EBICS ${orderType.name} reached the bank, but could not be fulfilled, error code: ${ebics.bankReturnCode}") + val xml = client.postToBank(cfg.hostBaseUrl, req, "$orderType") + val resp = Ebics3KeyMng.parseResponse(xml, privs.encryption_private_key) + + when (orderType) { + KeysOrderType.INI, KeysOrderType.HIA -> { + if (resp.technicalCode == EbicsReturnCode.EBICS_INVALID_USER_OR_USER_STATE) { + throw Exception("$orderType status code ${resp.technicalCode}: either your IDs are incorrect, or you already have keys registered with this bank") + } + } + KeysOrderType.HPB -> { + if (resp.technicalCode == EbicsReturnCode.EBICS_AUTHENTICATION_FAILED) { + throw Exception("$orderType status code ${resp.technicalCode}: could not download bank keys, send client keys (and/or related PDF document with --generate-registration-pdf) to the bank") + } + } } - + + val orderData = resp.okOrFail("${orderType.name}") when (orderType) { KeysOrderType.INI -> privs.submitted_ini = true KeysOrderType.HIA -> privs.submitted_hia = true - KeysOrderType.HPB -> return handleHpbResponse(cfg, ebics) + KeysOrderType.HPB -> { + val orderData = requireNotNull(orderData) { + "HPB: missing order data" + } + val (authPub, encPub) = Ebics3KeyMng.parseHpbOrder(orderData) + val bankKeys = BankPublicKeysFile( + bank_authentication_public_key = authPub, + bank_encryption_public_key = encPub, + accepted = false + ) + try { + persistBankKeys(bankKeys, cfg.bankPublicKeysFilename) + } catch (e: Exception) { + throw Exception("Could not update the ${orderType.name} state on disk", e) + } + } } - try { - persistClientKeys(privs, cfg.clientPrivateKeysFilename) - } catch (e: Exception) { - throw Exception("Could not update the ${orderType.name} state on disk", e) + if (orderType != KeysOrderType.HPB) { + try { + persistClientKeys(privs, cfg.clientPrivateKeysFilename) + } catch (e: Exception) { + throw Exception("Could not update the ${orderType.name} state on disk", e) + } } + } /** @@ -231,7 +214,12 @@ class EbicsSetup: CliktCommand("Set up the EBICS subscriber") { val cfg = extractEbicsConfig(common.config) // Config is sane. Go (maybe) making the private keys. val clientKeys = loadOrGenerateClientKeys(cfg.clientPrivateKeysFilename) - val httpClient = HttpClient() + val httpClient = HttpClient { + install(HttpTimeout) { + // It can take a lot of time for the bank to generate documents + socketTimeoutMillis = 5 * 60 * 1000 + } + } // Privs exist. Upload their pubs val keysNotSub = !clientKeys.submitted_ini if ((!clientKeys.submitted_ini) || forceKeysResubmission) @@ -244,16 +232,12 @@ class EbicsSetup: CliktCommand("Set up the EBICS subscriber") { // Checking if the bank keys exist on disk. var bankKeys = loadBankKeys(cfg.bankPublicKeysFilename) if (bankKeys == null) { - try { - doKeysRequestAndUpdateState( - cfg, - clientKeys, - httpClient, - KeysOrderType.HPB - ) - } catch (e: Exception) { - throw Exception("Could not download bank keys. Send client keys (and/or related PDF document with --generate-registration-pdf) to the bank", e) - } + doKeysRequestAndUpdateState( + cfg, + clientKeys, + httpClient, + KeysOrderType.HPB + ) logger.info("Bank keys stored at ${cfg.bankPublicKeysFilename}") bankKeys = loadBankKeys(cfg.bankPublicKeysFilename)!! } @@ -264,12 +248,12 @@ class EbicsSetup: CliktCommand("Set up the EBICS subscriber") { else bankKeys.accepted = askUserToAcceptKeys(bankKeys) if (!bankKeys.accepted) { - throw Exception("Cannot successfully finish the setup without accepting the bank keys.") + throw Exception("Cannot successfully finish the setup without accepting the bank keys") } try { persistBankKeys(bankKeys, cfg.bankPublicKeysFilename) } catch (e: Exception) { - throw Exception("Could not set bank keys as accepted on disk.", e) + throw Exception("Could not set bank keys as accepted on disk", e) } } diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt @@ -25,29 +25,11 @@ import com.github.ajalt.clikt.parameters.options.* import io.ktor.client.* import kotlinx.coroutines.* import tech.libeufin.common.* -import tech.libeufin.nexus.ebics.EbicsSideError -import tech.libeufin.nexus.ebics.EbicsSideException -import tech.libeufin.nexus.ebics.EbicsUploadException -import tech.libeufin.nexus.ebics.submitPain001 +import tech.libeufin.nexus.ebics.* import java.time.* import java.util.* /** - * Possible stages when an error may occur. These stages - * help to decide the retry policy. - */ -enum class NexusSubmissionStage { - pain, - ebics, - /** - * Includes both non-200 responses and network issues. - * They are both considered transient (non-200 responses - * can be fixed by changing and reloading the configuration). - */ - reachability -} - -/** * Groups useful parameters to submit pain.001 via EBICS. */ data class SubmissionContext( @@ -71,16 +53,6 @@ data class SubmissionContext( ) /** - * Expresses one error that occurred while submitting one pain.001 - * document via EBICS. - */ -class NexusSubmitException( - msg: String? = null, - cause: Throwable? = null, - val stage: NexusSubmissionStage -) : Exception(msg, cause) - -/** * Takes the initiated payment data as it was returned from the * database, sanity-checks it, gets the pain.001 from the helper * function and finally submits it via EBICS to the bank. @@ -113,38 +85,14 @@ private suspend fun submitInitiatedPayment( wireTransferSubject = payment.wireTransferSubject ) ctx.fileLogger.logSubmit(xml) - try { - return submitPain001( - xml, - ctx.cfg, - ctx.clientPrivateKeysFile, - ctx.bankPublicKeysFile, - ctx.httpClient - ) - } catch (early: EbicsSideException) { - val errorStage = when (early.sideEc) { - EbicsSideError.HTTP_POST_FAILED -> - NexusSubmissionStage.reachability // transient error - /** - * Any other [EbicsSideError] should be treated as permanent, - * as they involve invalid signatures or an unexpected response - * format. For this reason, they get the "ebics" stage assigned - * below, that will cause the payment as permanently failed and - * not to be retried. - */ - else -> - NexusSubmissionStage.ebics // permanent error - } - throw NexusSubmitException( - stage = errorStage, - cause = early - ) - } catch (permanent: EbicsUploadException) { - throw NexusSubmitException( - stage = NexusSubmissionStage.ebics, - cause = permanent - ) - } + return doEbicsUpload( + ctx.httpClient, + ctx.cfg, + ctx.clientPrivateKeysFile, + ctx.bankPublicKeysFile, + uploadPaymentService(), + xml + ) } /** @@ -157,43 +105,23 @@ private suspend fun submitInitiatedPayment( * @param clientKeys subscriber private keys. * @param bankKeys bank public keys. */ -private fun submitBatch( +private suspend fun submitBatch( ctx: SubmissionContext, db: Database, ) { logger.debug("Running submit at: ${Instant.now()}") - runBlocking { - db.initiatedPaymentsSubmittableGet(ctx.cfg.currency).forEach { - logger.debug("Submitting payment initiation with row ID: ${it.id}") - val submissionState = try { - val orderId = submitInitiatedPayment(ctx, it) - db.mem[orderId] = "Init" - DatabaseSubmissionState.success - } catch (e: NexusSubmitException) { - logger.error(e.message) - when (e.stage) { - /** - * Permanent failure: the pain.001 was invalid. For example a Payto - * URI was missing the receiver name, or the currency was wrong. Must - * not be retried. - */ - NexusSubmissionStage.pain -> DatabaseSubmissionState.permanent_failure - /** - * Transient failure: HTTP or network failed, either because one party - * was offline / unreachable, or because the bank URL is wrong. In both - * cases, the initiated payment stored in the database may still be correct, - * therefore we set this error as transient, and it'll be retried. - */ - NexusSubmissionStage.reachability -> DatabaseSubmissionState.transient_failure - /** - * As in the pain.001 case, there is a fundamental problem in the document - * being submitted, so it should not be retried. - */ - NexusSubmissionStage.ebics -> DatabaseSubmissionState.permanent_failure - } - } - db.initiatedPaymentSetSubmittedState(it.id, submissionState) + db.initiatedPaymentsSubmittableGet(ctx.cfg.currency).forEach { + logger.debug("Submitting payment initiation with row ID: ${it.id}") + val submissionState = try { + val orderId = submitInitiatedPayment(ctx, it) + db.mem[orderId] = "Init" + DatabaseSubmissionState.success + } catch (e: Exception) { + e.fmtLog(logger) + DatabaseSubmissionState.transient_failure + // TODO } + db.initiatedPaymentSetSubmittedState(it.id, submissionState) } } diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt @@ -19,7 +19,6 @@ package tech.libeufin.nexus import tech.libeufin.common.* -import tech.libeufin.ebics.* import java.io.InputStream import java.net.URLEncoder import java.time.* @@ -76,14 +75,14 @@ fun createPain001( amount: TalerAmount, wireTransferSubject: String, creditAccount: IbanAccountMetadata -): String { +): ByteArray { val namespace = Pain001Namespaces( fullNamespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.09", xsdFilename = "pain.001.001.09.ch.03.xsd" ) val zonedTimestamp = ZonedDateTime.ofInstant(initiationTimestamp, ZoneId.of("UTC")) val amountWithoutCurrency: String = getAmountNoCurrency(amount) - return constructXml("Document") { + return XmlBuilder.toBytes("Document") { attr("xmlns", namespace.fullNamespace) attr("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance") attr("xsi:schemaLocation", "${namespace.fullNamespace} ${namespace.xsdFilename}") diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt @@ -0,0 +1,330 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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/> + */ + +// THIS FILE IS GENERATED, DO NOT EDIT + +package tech.libeufin.nexus + +enum class ExternalStatusReasonCode(val isoCode: String, val description: String) { + AB01("AbortedClearingTimeout", "Clearing process aborted due to timeout."), + AB02("AbortedClearingFatalError", "Clearing process aborted due to a fatal error."), + AB03("AbortedSettlementTimeout", "Settlement aborted due to timeout."), + AB04("AbortedSettlementFatalError", "Settlement process aborted due to a fatal error."), + AB05("TimeoutCreditorAgent", "Transaction stopped due to timeout at the Creditor Agent."), + AB06("TimeoutInstructedAgent", "Transaction stopped due to timeout at the Instructed Agent."), + AB07("OfflineAgent", "Agent of message is not online."), + AB08("OfflineCreditorAgent", "Creditor Agent is not online."), + AB09("ErrorCreditorAgent", "Transaction stopped due to error at the Creditor Agent."), + AB10("ErrorInstructedAgent", "Transaction stopped due to error at the Instructed Agent."), + AB11("TimeoutDebtorAgent", "Transaction stopped due to timeout at the Debtor Agent."), + AC01("IncorrectAccountNumber", "Account number is invalid or missing."), + AC02("InvalidDebtorAccountNumber", "Debtor account number invalid or missing"), + AC03("InvalidCreditorAccountNumber", "Creditor account number invalid or missing"), + AC04("ClosedAccountNumber", "Account number specified has been closed on the bank of account's books."), + AC05("ClosedDebtorAccountNumber", "Debtor account number closed"), + AC06("BlockedAccount", "Account specified is blocked, prohibiting posting of transactions against it."), + AC07("ClosedCreditorAccountNumber", "Creditor account number closed"), + AC08("InvalidBranchCode", "Branch code is invalid or missing"), + AC09("InvalidAccountCurrency", "Account currency is invalid or missing"), + AC10("InvalidDebtorAccountCurrency", "Debtor account currency is invalid or missing"), + AC11("InvalidCreditorAccountCurrency", "Creditor account currency is invalid or missing"), + AC12("InvalidAccountType", "Account type missing or invalid."), + AC13("InvalidDebtorAccountType", "Debtor account type missing or invalid"), + AC14("InvalidCreditorAccountType", "Creditor account type missing or invalid"), + AC15("AccountDetailsChanged", "The account details for the counterparty have changed."), + AC16("CardNumberInvalid", "Credit or debit card number is invalid."), + AEXR("AlreadyExpiredRTP", "Request-to-pay Expiry Date and Time has already passed."), + AG01("TransactionForbidden", "Transaction forbidden on this type of account (formerly NoAgreement)"), + AG02("InvalidBankOperationCode", "Bank Operation code specified in the message is not valid for receiver"), + AG03("TransactionNotSupported", "Transaction type not supported/authorized on this account"), + AG04("InvalidAgentCountry", "Agent country code is missing or invalid."), + AG05("InvalidDebtorAgentCountry", "Debtor agent country code is missing or invalid"), + AG06("InvalidCreditorAgentCountry", "Creditor agent country code is missing or invalid"), + AG07("UnsuccesfulDirectDebit", "Debtor account cannot be debited for a generic reason."), + AG08("InvalidAccessRights", "Transaction failed due to invalid or missing user or access right"), + AG09("PaymentNotReceived", "Original payment never received."), + AG10("AgentSuspended", "Agent of message is suspended from the Real Time Payment system."), + AG11("CreditorAgentSuspended", "Creditor Agent of message is suspended from the Real Time Payment system."), + AG12("NotAllowedBookTransfer", "Payment orders made by transferring funds from one account to another at the same financial institution (bank or payment institution) are not allowed."), + AG13("ForbiddenReturnPayment", "Returned payments derived from previously returned transactions are not allowed."), + AGNT("IncorrectAgent", "Agent in the payment workflow is incorrect"), + ALAC("AlreadyAcceptedRTP", "Request-to-pay has already been accepted by the Debtor."), + AM01("ZeroAmount", "Specified message amount is equal to zero"), + AM02("NotAllowedAmount", "Specific transaction/message amount is greater than allowed maximum"), + AM03("NotAllowedCurrency", "Specified message amount is an non processable currency outside of existing agreement"), + AM04("InsufficientFunds", "Amount of funds available to cover specified message amount is insufficient."), + AM05("Duplication", "Duplication"), + AM06("TooLowAmount", "Specified transaction amount is less than agreed minimum."), + AM07("BlockedAmount", "Amount specified in message has been blocked by regulatory authorities."), + AM09("WrongAmount", "Amount received is not the amount agreed or expected"), + AM10("InvalidControlSum", "Sum of instructed amounts does not equal the control sum."), + AM11("InvalidTransactionCurrency", "Transaction currency is invalid or missing"), + AM12("InvalidAmount", "Amount is invalid or missing"), + AM13("AmountExceedsClearingSystemLimit", "Transaction amount exceeds limits set by clearing system"), + AM14("AmountExceedsAgreedLimit", "Transaction amount exceeds limits agreed between bank and client"), + AM15("AmountBelowClearingSystemMinimum", "Transaction amount below minimum set by clearing system"), + AM16("InvalidGroupControlSum", "Control Sum at the Group level is invalid"), + AM17("InvalidPaymentInfoControlSum", "Control Sum at the Payment Information level is invalid"), + AM18("InvalidNumberOfTransactions", "Number of transactions is invalid or missing."), + AM19("InvalidGroupNumberOfTransactions", "Number of transactions at the Group level is invalid or missing"), + AM20("InvalidPaymentInfoNumberOfTransactions", "Number of transactions at the Payment Information level is invalid"), + AM21("LimitExceeded", "Transaction amount exceeds limits agreed between bank and client."), + AM22("ZeroAmountNotApplied", "Unable to apply zero amount to designated account. For example, where the rules of a service allow the use of zero amount payments, however the back-office system is unable to apply the funds to the account. If the rules of a service prohibit the use of zero amount payments, then code AM01 is used to report the error condition."), + AM23("AmountExceedsSettlementLimit", "Transaction amount exceeds settlement limit."), + APAR("AlreadyPaidRTP", "Request To Pay has already been paid by the Debtor."), + ARFR("AlreadyRefusedRTP", "Request-to-pay has already been refused by the Debtor."), + ARJR("AlreadyRejectedRTP", "Request-to-pay has already been rejected."), + ATNS("AttachementsNotSupported", "Attachments to the request-to-pay are not supported."), + BE01("InconsistenWithEndCustomer", "Identification of end customer is not consistent with associated account number. (formerly CreditorConsistency)."), + BE04("MissingCreditorAddress", "Specification of creditor's address, which is required for payment, is missing/not correct (formerly IncorrectCreditorAddress)."), + BE05("UnrecognisedInitiatingParty", "Party who initiated the message is not recognised by the end customer"), + BE06("UnknownEndCustomer", "End customer specified is not known at associated Sort/National Bank Code or does no longer exist in the books"), + BE07("MissingDebtorAddress", "Specification of debtor's address, which is required for payment, is missing/not correct."), + BE08("MissingDebtorName", "Debtor name is missing"), + BE09("InvalidCountry", "Country code is missing or Invalid."), + BE10("InvalidDebtorCountry", "Debtor country code is missing or invalid"), + BE11("InvalidCreditorCountry", "Creditor country code is missing or invalid"), + BE12("InvalidCountryOfResidence", "Country code of residence is missing or Invalid."), + BE13("InvalidDebtorCountryOfResidence", "Country code of debtor's residence is missing or Invalid"), + BE14("InvalidCreditorCountryOfResidence", "Country code of creditor's residence is missing or Invalid"), + BE15("InvalidIdentificationCode", "Identification code missing or invalid."), + BE16("InvalidDebtorIdentificationCode", "Debtor or Ultimate Debtor identification code missing or invalid"), + BE17("InvalidCreditorIdentificationCode", "Creditor or Ultimate Creditor identification code missing or invalid"), + BE18("InvalidContactDetails", "Contact details missing or invalid"), + BE19("InvalidChargeBearerCode", "Charge bearer code for transaction type is invalid"), + BE20("InvalidNameLength", "Name length exceeds local rules for payment type."), + BE21("MissingName", "Name missing or invalid. Generic usage if cannot specifically identify debtor or creditor."), + BE22("MissingCreditorName", "Creditor name is missing"), + BE23("AccountProxyInvalid", "Phone number or email address, or any other proxy, used as the account proxy is unknown or invalid."), + CERI("CheckERI", "Credit transfer is not tagged as an Extended Remittance Information (ERI) transaction but contains ERI."), + CH03("RequestedExecutionDateOrRequestedCollectionDateTooFarInFuture", "Value in Requested Execution Date or Requested Collection Date is too far in the future"), + CH04("RequestedExecutionDateOrRequestedCollectionDateTooFarInPast", "Value in Requested Execution Date or Requested Collection Date is too far in the past"), + CH07("ElementIsNotToBeUsedAtB-andC-Level", "Element is not to be used at B- and C-Level"), + CH09("MandateChangesNotAllowed", "Mandate changes are not allowed"), + CH10("InformationOnMandateChangesMissing", "Information on mandate changes are missing"), + CH11("CreditorIdentifierIncorrect", "Value in Creditor Identifier is incorrect"), + CH12("CreditorIdentifierNotUnambiguouslyAtTransaction-Level", "Creditor Identifier is ambiguous at Transaction Level"), + CH13("OriginalDebtorAccountIsNotToBeUsed", "Original Debtor Account is not to be used"), + CH14("OriginalDebtorAgentIsNotToBeUsed", "Original Debtor Agent is not to be used"), + CH15("ElementContentIncludesMoreThan140Characters", "Content Remittance Information/Structured includes more than 140 characters"), + CH16("ElementContentFormallyIncorrect", "Content is incorrect"), + CH17("ElementNotAdmitted", "Element is not allowed"), + CH19("ValuesWillBeSetToNextTARGETday", "Values in Interbank Settlement Date or Requested Collection Date will be set to the next TARGET day"), + CH20("DecimalPointsNotCompatibleWithCurrency", "Number of decimal points not compatible with the currency"), + CH21("RequiredCompulsoryElementMissing", "Mandatory element is missing"), + CH22("COREandB2BwithinOnemessage", "SDD CORE and B2B not permitted within one message"), + CHQC("ChequeSettledOnCreditorAccount", "Cheque has been presented in cheque clearing and settled on the creditor’s account."), + CN01("AuthorisationCancelled", "Authorisation is cancelled."), + CNOR("CreditorBankIsNotRegistered", "Creditor bank is not registered under this BIC in the CSM"), + CURR("IncorrectCurrency", "Currency of the payment is incorrect"), + CUST("RequestedByCustomer", "Cancellation requested by the Debtor"), + DC02("SettlementNotReceived", "Rejection of a payment due to covering FI settlement not being received."), + DNOR("DebtorBankIsNotRegistered", "Debtor bank is not registered under this BIC in the CSM"), + DS01("ElectronicSignaturesCorrect", "The electronic signature(s) is/are correct"), + DS02("OrderCancelled", "An authorized user has cancelled the order"), + DS03("OrderNotCancelled", "The user’s attempt to cancel the order was not successful"), + DS04("OrderRejected", "The order was rejected by the bank side (for reasons concerning content)"), + DS05("OrderForwardedForPostprocessing", "The order was correct and could be forwarded for postprocessing"), + DS06("TransferOrder", "The order was transferred to VEU"), + DS07("ProcessingOK", "All actions concerning the order could be done by the EBICS bank server"), + DS08("DecompressionError", "The decompression of the file was not successful"), + DS09("DecryptionError", "The decryption of the file was not successful"), + DS0A("DataSignRequested", "Data signature is required."), + DS0B("UnknownDataSignFormat", "Data signature for the format is not available or invalid."), + DS0C("SignerCertificateRevoked", "The signer certificate is revoked."), + DS0D("SignerCertificateNotValid", "The signer certificate is not valid (revoked or not active)."), + DS0E("IncorrectSignerCertificate", "The signer certificate is not present."), + DS0F("SignerCertificationAuthoritySignerNotValid", "The authority of the signer certification sending the certificate is unknown."), + DS0G("NotAllowedPayment", "Signer is not allowed to sign this operation type."), + DS0H("NotAllowedAccount", "Signer is not allowed to sign for this account."), + DS0K("NotAllowedNumberOfTransaction", "The number of transaction is over the number allowed for this signer."), + DS10("Signer1CertificateRevoked", "The certificate is revoked for the first signer."), + DS11("Signer1CertificateNotValid", "The certificate is not valid (revoked or not active) for the first signer."), + DS12("IncorrectSigner1Certificate", "The certificate is not present for the first signer."), + DS13("SignerCertificationAuthoritySigner1NotValid", "The authority of signer certification sending the certificate is unknown for the first signer."), + DS14("UserDoesNotExist", "The user is unknown on the server"), + DS15("IdenticalSignatureFound", "The same signature has already been sent to the bank"), + DS16("PublicKeyVersionIncorrect", "The public key version is not correct. This code is returned when a customer sends signature files to the financial institution after conversion from an older program version (old ES format) to a new program version (new ES format) without having carried out re-initialisation with regard to a public key change."), + DS17("DifferentOrderDataInSignatures", "Order data and signatures don’t match"), + DS18("RepeatOrder", "File cannot be tested, the complete order has to be repeated. This code is returned in the event of a malfunction during the signature check, e.g. not enough storage space."), + DS19("ElectronicSignatureRightsInsufficient", "The user’s rights (concerning his signature) are insufficient to execute the order"), + DS20("Signer2CertificateRevoked", "The certificate is revoked for the second signer."), + DS21("Signer2CertificateNotValid", "The certificate is not valid (revoked or not active) for the second signer."), + DS22("IncorrectSigner2Certificate", "The certificate is not present for the second signer."), + DS23("SignerCertificationAuthoritySigner2NotValid", "The authority of signer certification sending the certificate is unknown for the second signer."), + DS24("WaitingTimeExpired", "Waiting time expired due to incomplete order"), + DS25("OrderFileDeleted", "The order file was deleted by the bank server"), + DS26("UserSignedMultipleTimes", "The same user has signed multiple times"), + DS27("UserNotYetActivated", "The user is not yet activated (technically)"), + DT01("InvalidDate", "Invalid date (eg, wrong or missing settlement date)"), + DT02("InvalidCreationDate", "Invalid creation date and time in Group Header (eg, historic date)"), + DT03("InvalidNonProcessingDate", "Invalid non bank processing date (eg, weekend or local public holiday)"), + DT04("FutureDateNotSupported", "Future date not supported"), + DT05("InvalidCutOffDate", "Associated message, payment information block or transaction was received after agreed processing cut-off date, i.e., date in the past."), + DT06("ExecutionDateChanged", "Execution Date has been modified in order for transaction to be processed"), + DU01("DuplicateMessageID", "Message Identification is not unique."), + DU02("DuplicatePaymentInformationID", "Payment Information Block is not unique."), + DU03("DuplicateTransaction", "Transaction is not unique."), + DU04("DuplicateEndToEndID", "End To End ID is not unique."), + DU05("DuplicateInstructionID", "Instruction ID is not unique."), + DUPL("DuplicatePayment", "Payment is a duplicate of another payment"), + ED01("CorrespondentBankNotPossible", "Correspondent bank not possible."), + ED03("BalanceInfoRequest", "Balance of payments complementary info is requested"), + ED05("SettlementFailed", "Settlement of the transaction has failed."), + ED06("SettlementSystemNotAvailable", "Interbank settlement system not available."), + EDTL("ExpiryDateTooLong", "Expiry date time of the request-to-pay is too far in the future."), + EDTR("ExpiryDateTimeReached", "Expiry date time of the request-to-pay is already reached."), + ERIN("ERIOptionNotSupported", "Extended Remittance Information (ERI) option is not supported."), + FF01("InvalidFileFormat", "File Format incomplete or invalid"), + FF02("SyntaxError", "Syntax error reason is provided as narrative information in the additional reason information."), + FF03("InvalidPaymentTypeInformation", "Payment Type Information is missing or invalid."), + FF04("InvalidServiceLevelCode", "Service Level code is missing or invalid"), + FF05("InvalidLocalInstrumentCode", "Local Instrument code is missing or invalid"), + FF06("InvalidCategoryPurposeCode", "Category Purpose code is missing or invalid"), + FF07("InvalidPurpose", "Purpose is missing or invalid"), + FF08("InvalidEndToEndId", "End to End Id missing or invalid"), + FF09("InvalidChequeNumber", "Cheque number missing or invalid"), + FF10("BankSystemProcessingError", "File or transaction cannot be processed due to technical issues at the bank side"), + FF11("ClearingRequestAborted", "Clearing request rejected due it being subject to an abort operation."), + FF12("OriginalTransactionNotEligibleForRequestedReturn", "Original payment is not eligible to be returned given its current status."), + FF13("RequestForCancellationNotFound", "No record of request for cancellation found."), + FOCR("FollowingCancellationRequest", "Return following a cancellation request."), + FR01("Fraud", "Returned as a result of fraud."), + FRAD("FraudulentOrigin", "Cancellation requested following a transaction that was originated fraudulently. The use of the FraudulentOrigin code should be governed by jurisdictions."), + G000("PaymentTransferredAndTracked", "In an FI To FI Customer Credit Transfer: The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is tracked. No further updates will follow from the Status Originator."), + G001("PaymentTransferredAndNotTracked", "In an FI To FI Customer Credit Transfer: The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is not tracked. No further updates will follow from the Status Originator."), + G002("CreditDebitNotConfirmed", "In a FIToFI Customer Credit Transfer: Credit to the creditor’s account may not be confirmed same day. Update will follow from the Status Originator."), + G003("CreditPendingDocuments", "In a FIToFI Customer Credit Transfer: Credit to creditor’s account is pending receipt of required documents. The Status Originator has requested creditor to provide additional documentation. Update will follow from the Status Originator."), + G004("CreditPendingFunds", "In a FIToFI Customer Credit Transfer: Credit to the creditor’s account is pending, status Originator is waiting for funds provided via a cover. Update will follow from the Status Originator."), + G005("DeliveredWithServiceLevel", "Payment has been delivered to creditor agent with service level."), + G006("DeliveredWIthoutServiceLevel", "Payment has been delivered to creditor agent without service level."), + ID01("CorrespondingOriginalFileStillNotSent", "Signature file was sent to the bank but the corresponding original file has not been sent yet."), + IEDT("IncorrectExpiryDateTime", "Expiry date time of the request-to-pay is incorrect."), + IRNR("InitialRTPNeverReceived", "No initial request-to-pay has been received."), + MD01("NoMandate", "No Mandate"), + MD02("MissingMandatoryInformationInMandate", "Mandate related information data required by the scheme is missing."), + MD05("CollectionNotDue", "Creditor or creditor's agent should not have collected the direct debit"), + MD06("RefundRequestByEndCustomer", "Return of funds requested by end customer"), + MD07("EndCustomerDeceased", "End customer is deceased."), + MS02("NotSpecifiedReasonCustomerGenerated", "Reason has not been specified by end customer"), + MS03("NotSpecifiedReasonAgentGenerated", "Reason has not been specified by agent."), + NARR("Narrative", "Reason is provided as narrative information in the additional reason information."), + NERI("NoERI", "Credit transfer is tagged as an Extended Remittance Information (ERI) transaction but does not contain ERI."), + NOAR("NonAgreedRTP", "No existing agreement for receiving request-to-pay messages."), + NOAS("NoAnswerFromCustomer", "No response from Beneficiary."), + NOCM("NotCompliantGeneric", "Customer account is not compliant with regulatory requirements, for example FICA (in South Africa) or any other regulatory requirements which render an account inactive for certain processing."), + NOPG("NoPaymentGuarantee", "Requested payment guarantee (by Creditor) related to a request-to-pay cannot be provided."), + NRCH("PayerOrPayerRTPSPNotReachable", "Recipient side of the request-to-pay (payer or its request-to-pay service provider) is not reachable."), + PINS("TypeOfPaymentInstrumentNotSupported", "Type of payment requested in the request-to-pay is not supported by the payer."), + RC01("BankIdentifierIncorrect", "Bank identifier code specified in the message has an incorrect format (formerly IncorrectFormatForRoutingCode)."), + RC02("InvalidBankIdentifier", "Bank identifier is invalid or missing."), + RC03("InvalidDebtorBankIdentifier", "Debtor bank identifier is invalid or missing"), + RC04("InvalidCreditorBankIdentifier", "Creditor bank identifier is invalid or missing"), + RC05("InvalidBICIdentifier", "BIC identifier is invalid or missing."), + RC06("InvalidDebtorBICIdentifier", "Debtor BIC identifier is invalid or missing"), + RC07("InvalidCreditorBICIdentifier", "Creditor BIC identifier is invalid or missing"), + RC08("InvalidClearingSystemMemberIdentifier", "ClearingSystemMemberidentifier is invalid or missing."), + RC09("InvalidDebtorClearingSystemMemberIdentifier", "Debtor ClearingSystemMember identifier is invalid or missing"), + RC10("InvalidCreditorClearingSystemMemberIdentifier", "Creditor ClearingSystemMember identifier is invalid or missing"), + RC11("InvalidIntermediaryAgent", "Intermediary Agent is invalid or missing"), + RC12("MissingCreditorSchemeId", "Creditor Scheme Id is invalid or missing"), + RCON("RMessageConflict", "Conflict with R-Message"), + RECI("ReceiverCustomerInformation", "Further information regarding the intended recipient."), + REPR("RTPReceivedCanBeProcessed", "Request-to-pay has been received and can be processed further."), + RF01("NotUniqueTransactionReference", "Transaction reference is not unique within the message."), + RR01("MissingDebtorAccountOrIdentification", "Specification of the debtor’s account or unique identification needed for reasons of regulatory requirements is insufficient or missing"), + RR02("MissingDebtorNameOrAddress", "Specification of the debtor’s name and/or address needed for regulatory requirements is insufficient or missing."), + RR03("MissingCreditorNameOrAddress", "Specification of the creditor’s name and/or address needed for regulatory requirements is insufficient or missing."), + RR04("RegulatoryReason", "Regulatory Reason"), + RR05("RegulatoryInformationInvalid", "Regulatory or Central Bank Reporting information missing, incomplete or invalid."), + RR06("TaxInformationInvalid", "Tax information missing, incomplete or invalid."), + RR07("RemittanceInformationInvalid", "Remittance information structure does not comply with rules for payment type."), + RR08("RemittanceInformationTruncated", "Remittance information truncated to comply with rules for payment type."), + RR09("InvalidStructuredCreditorReference", "Structured creditor reference invalid or missing."), + RR10("InvalidCharacterSet", "Character set supplied not valid for the country and payment type."), + RR11("InvalidDebtorAgentServiceID", "Invalid or missing identification of a bank proprietary service."), + RR12("InvalidPartyID", "Invalid or missing identification required within a particular country or payment type."), + RTNS("RTPNotSupportedForDebtor", "Debtor does not support request-to-pay transactions."), + RUTA("ReturnUponUnableToApply", "Return following investigation request and no remediation possible."), + S000("ValidRequestForCancellationAcknowledged", "Request for Cancellation is acknowledged following validation."), + S001("UETRFlaggedForCancellation", "Unique End-to-end Transaction Reference (UETR) relating to a payment has been identified as being associated with a Request for Cancellation."), + S002("NetworkStopOfUETR", "Unique End-to-end Transaction Reference (UETR) relating to a payment has been prevent from traveling across a messaging network."), + S003("RequestForCancellationForwarded", "Request for Cancellation has been forwarded to the payment processing/last payment processing agent."), + S004("RequestForCancellationDeliveryAcknowledgement", "Request for Cancellation has been acknowledged as delivered to payment processing/last payment processing agent."), + SL01("SpecificServiceOfferedByDebtorAgent", "Due to specific service offered by the Debtor Agent."), + SL02("SpecificServiceOfferedByCreditorAgent", "Due to specific service offered by the Creditor Agent."), + SL03("ServiceofClearingSystem", "Due to a specific service offered by the clearing system."), + SL11("CreditorNotOnWhitelistOfDebtor", "Whitelisting service offered by the Debtor Agent; Debtor has not included the Creditor on its “Whitelist” (yet). In the Whitelist the Debtor may list all allowed Creditors to debit Debtor bank account."), + SL12("CreditorOnBlacklistOfDebtor", "Blacklisting service offered by the Debtor Agent; Debtor included the Creditor on his “Blacklist”. In the Blacklist the Debtor may list all Creditors not allowed to debit Debtor bank account."), + SL13("MaximumNumberOfDirectDebitTransactionsExceeded", "Due to Maximum allowed Direct Debit Transactions per period service offered by the Debtor Agent."), + SL14("MaximumDirectDebitTransactionAmountExceeded", "Due to Maximum allowed Direct Debit Transaction amount service offered by the Debtor Agent."), + SPII("RTPServiceProviderIdentifierIncorrect", "Identifier of the request-to-pay service provider is incorrect."), + TA01("TransmissonAborted", "The transmission of the file was not successful – it had to be aborted (for technical reasons)"), + TD01("NoDataAvailable", "There is no data available (for download)"), + TD02("FileNonReadable", "The file cannot be read (e.g. unknown format)"), + TD03("IncorrectFileStructure", "The file format is incomplete or invalid"), + TK01("TokenInvalid", "Token is invalid."), + TK02("SenderTokenNotFound", "Token used for the sender does not exist."), + TK03("ReceiverTokenNotFound", "Token used for the receiver does not exist."), + TK09("TokenMissing", "Token required for request is missing."), + TKCM("TokenCounterpartyMismatch", "Token found with counterparty mismatch."), + TKSG("TokenSingleUse", "Single Use Token already used."), + TKSP("TokenSuspended", "Token found with suspended status."), + TKVE("TokenValueLimitExceeded", "Token found with value limit rule violation."), + TKXP("TokenExpired", "Token expired."), + TM01("InvalidCutOffTime", "Associated message, payment information block, or transaction was received after agreed processing cut-off time."), + TS01("TransmissionSuccessful", "The (technical) transmission of the file was successful."), + TS04("TransferToSignByHand", "The order was transferred to pass by accompanying note signed by hand"), + UCRD("UnknownCreditor", "Unknown Creditor."), + UPAY("UnduePayment", "Payment is not justified."), +} + +enum class ExternalPaymentGroupStatusCode(val isoCode: String, val description: String) { + ACCC("AcceptedSettlementCompletedCreditorAccount", "Settlement on the creditor's account has been completed."), + ACCP("AcceptedCustomerProfile", "Preceding check of technical validation was successful. Customer profile check was also successful."), + ACSC("AcceptedSettlementCompletedDebitorAccount", "Settlement on the debtor's account has been completed."), + ACSP("AcceptedSettlementInProcess", "All preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been accepted for execution."), + ACTC("AcceptedTechnicalValidation", "Authentication and syntactical and semantical validation are successful"), + ACWC("AcceptedWithChange", "Instruction is accepted but a change will be made, such as date or remittance not sent."), + PART("PartiallyAccepted", "A number of transactions have been accepted, whereas another number of transactions have not yet achieved"), + PDNG("Pending", "Payment initiation or individual transaction included in the payment initiation is pending. Further checks and status update will be performed."), + RCVD("Received", "Payment initiation has been received by the receiving agent"), + RJCT("Rejected", "Payment initiation or individual transaction included in the payment initiation has been rejected."), +} + +enum class ExternalPaymentTransactionStatusCode(val isoCode: String, val description: String) { + ACCC("AcceptedSettlementCompletedCreditorAccount", "Settlement on the creditor's account has been completed."), + ACCP("AcceptedCustomerProfile", "Preceding check of technical validation was successful. Customer profile check was also successful."), + ACFC("AcceptedFundsChecked", "Preceding check of technical validation and customer profile was successful and an automatic funds check was positive."), + ACIS("AcceptedandChequeIssued", "Payment instruction to issue a cheque has been accepted, and the cheque has been issued but not yet been deposited or cleared."), + ACPD("AcceptedClearingProcessed", "Status of transaction released from the Debtor Agent and accepted by the clearing."), + ACSC("AcceptedSettlementCompletedDebitorAccount", "Settlement completed."), + ACSP("AcceptedSettlementInProcess", "All preceding checks such as technical validation and customer profile were successful and therefore the payment instruction has been accepted for execution."), + ACTC("AcceptedTechnicalValidation", "Authentication and syntactical and semantical validation are successful"), + ACWC("AcceptedWithChange", "Instruction is accepted but a change will be made, such as date or remittance not sent."), + ACWP("AcceptedWithoutPosting", "Payment instruction included in the credit transfer is accepted without being posted to the creditor customer’s account."), + BLCK("Blocked", "Payment transaction previously reported with status 'ACWP' is blocked, for example, funds will neither be posted to the Creditor's account, nor be returned to the Debtor."), + CANC("Cancelled", "Payment initiation has been successfully cancelled after having received a request for cancellation."), + CPUC("CashPickedUpByCreditor", "Cash has been picked up by the Creditor."), + PATC("PartiallyAcceptedTechnicalCorrect", "Payment initiation needs multiple authentications, where some but not yet all have been performed. Syntactical and semantical validations are successful."), + PDNG("Pending", "Payment instruction is pending. Further checks and status update will be performed."), + PRES("Presented", "Request for Payment has been presented to the Debtor."), + RCVD("Received", "Payment instruction has been received."), + RJCT("Rejected", "Payment instruction has been rejected."), +} diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022Constants.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022Constants.kt @@ -0,0 +1,35 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.nexus + +enum class HacAction(val description: String) { + FILE_UPLOAD("File submitted to the bank"), + FILE_DOWNLOAD("File downloaded from the bank"), + ES_UPLOAD("Electronic signature submitted to the bank"), + ES_DOWNLOAD("Electronic signature downloaded from the bank"), + ES_VERIFICATION("Signature verification"), + VEU_FORWARDING("Forwarding to EDS"), + VEU_VERIFICATION("EDS signature verification"), + VEU_VERIFICATION_END("VEU_VERIFICATION_END"), + VEU_CANCEL_ORDER("Cancellation of EDS order"), + ADDITIONAL("Additional information"), + ORDER_HAC_FINAL_POS("HAC end of order (positive)"), + ORDER_HAC_FINAL_NEG("ORDER_HAC_FINAL_NEG") +} +\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Log.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Log.kt @@ -80,7 +80,7 @@ class FileLogger(path: String?) { * * @param content EBICS submit content */ - fun logSubmit(content: String) { + fun logSubmit(content: ByteArray) { if (dir == null) return // Subdir based on current day. @@ -90,6 +90,6 @@ class FileLogger(path: String?) { // Creating the combined dir. val subDir = dir.resolve("${asUtcDate.year}-${asUtcDate.monthValue}-${asUtcDate.dayOfMonth}").resolve("submit") subDir.createDirectories() - subDir.resolve("${nowMs}_pain.001.xml").writeText(content) + subDir.resolve("${nowMs}_pain.001.xml").writeBytes(content) } } \ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt @@ -0,0 +1,115 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.nexus + +import com.itextpdf.kernel.pdf.PdfDocument +import com.itextpdf.kernel.pdf.PdfWriter +import com.itextpdf.layout.Document +import com.itextpdf.layout.element.AreaBreak +import com.itextpdf.layout.element.Paragraph +import java.security.interfaces.RSAPrivateCrtKey +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.util.* +import java.io.ByteArrayOutputStream +import tech.libeufin.common.crypto.* + +/** + * Generate the PDF document with all the client public keys + * to be sent on paper to the bank. + */ +fun generateKeysPdf( + clientKeys: ClientPrivateKeysFile, + cfg: EbicsSetupConfig +): ByteArray { + val po = ByteArrayOutputStream() + val pdfWriter = PdfWriter(po) + val pdfDoc = PdfDocument(pdfWriter) + val date = LocalDateTime.now() + val dateStr = date.format(DateTimeFormatter.ISO_LOCAL_DATE) + + fun formatHex(ba: ByteArray): String { + var out = "" + for (i in ba.indices) { + val b = ba[i] + if (i > 0 && i % 16 == 0) { + out += "\n" + } + out += java.lang.String.format("%02X", b) + out += " " + } + return out + } + + fun writeCommon(doc: Document) { + doc.add( + Paragraph( + """ + Datum: $dateStr + Host-ID: ${cfg.ebicsHostId} + User-ID: ${cfg.ebicsUserId} + Partner-ID: ${cfg.ebicsPartnerId} + ES version: A006 + """.trimIndent() + ) + ) + } + + fun writeKey(doc: Document, priv: RSAPrivateCrtKey) { + val pub = CryptoUtil.getRsaPublicFromPrivate(priv) + val hash = CryptoUtil.getEbicsPublicKeyHash(pub) + doc.add(Paragraph("Exponent:\n${formatHex(pub.publicExponent.toByteArray())}")) + doc.add(Paragraph("Modulus:\n${formatHex(pub.modulus.toByteArray())}")) + doc.add(Paragraph("SHA-256 hash:\n${formatHex(hash)}")) + } + + fun writeSigLine(doc: Document) { + doc.add(Paragraph("Ort / Datum: ________________")) + doc.add(Paragraph("Firma / Name: ________________")) + doc.add(Paragraph("Unterschrift: ________________")) + } + + Document(pdfDoc).use { + it.add(Paragraph("Signaturschlüssel").setFontSize(24f)) + writeCommon(it) + it.add(Paragraph("Öffentlicher Schlüssel (Public key for the electronic signature)")) + writeKey(it, clientKeys.signature_private_key) + it.add(Paragraph("\n")) + writeSigLine(it) + it.add(AreaBreak()) + + it.add(Paragraph("Authentifikationsschlüssel").setFontSize(24f)) + writeCommon(it) + it.add(Paragraph("Öffentlicher Schlüssel (Public key for the identification and authentication signature)")) + writeKey(it, clientKeys.authentication_private_key) + it.add(Paragraph("\n")) + writeSigLine(it) + it.add(AreaBreak()) + + it.add(Paragraph("Verschlüsselungsschlüssel").setFontSize(24f)) + writeCommon(it) + it.add(Paragraph("Öffentlicher Schlüssel (Public encryption key)")) + writeKey(it, clientKeys.encryption_private_key) + it.add(Paragraph("\n")) + writeSigLine(it) + } + pdfWriter.flush() + return po.toByteArray() +} +\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt @@ -0,0 +1,175 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.nexus + +import tech.libeufin.nexus.ebics.* +import io.ktor.http.* +import org.w3c.dom.Document +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.w3c.dom.ls.LSInput +import org.w3c.dom.ls.LSResourceResolver +import org.xml.sax.ErrorHandler +import org.xml.sax.InputSource +import org.xml.sax.SAXException +import org.xml.sax.SAXParseException +import java.io.* +import java.security.PrivateKey +import java.security.PublicKey +import java.security.interfaces.RSAPrivateCrtKey +import javax.xml.XMLConstants +import javax.xml.crypto.* +import javax.xml.crypto.dom.DOMURIReference +import javax.xml.crypto.dsig.* +import javax.xml.crypto.dsig.dom.DOMSignContext +import javax.xml.crypto.dsig.dom.DOMValidateContext +import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec +import javax.xml.crypto.dsig.spec.TransformParameterSpec +import javax.xml.namespace.NamespaceContext +import javax.xml.parsers.DocumentBuilderFactory +import javax.xml.transform.OutputKeys +import javax.xml.transform.Source +import javax.xml.transform.TransformerFactory +import javax.xml.transform.dom.DOMSource +import javax.xml.transform.stream.StreamResult +import javax.xml.transform.stream.StreamSource +import javax.xml.validation.SchemaFactory +import javax.xml.validation.Validator +import javax.xml.xpath.XPath +import javax.xml.xpath.XPathConstants +import javax.xml.xpath.XPathFactory + +/** + * This URI dereferencer allows handling the resource reference used for + * XML signatures in EBICS. + */ +private class EbicsSigUriDereferencer : URIDereferencer { + override fun dereference(myRef: URIReference?, myCtx: XMLCryptoContext?): Data { + if (myRef !is DOMURIReference) + throw Exception("invalid type") + if (myRef.uri != "#xpointer(//*[@authenticate='true'])") + throw Exception("invalid EBICS XML signature URI: '${myRef.uri}'") + val xp: XPath = XPathFactory.newInstance().newXPath() + val nodeSet = xp.compile("//*[@authenticate='true']/descendant-or-self::node()").evaluate( + myRef.here.ownerDocument, XPathConstants.NODESET + ) + if (nodeSet !is NodeList) + throw Exception("invalid type") + if (nodeSet.length <= 0) { + throw Exception("no nodes to sign") + } + val nodeList = ArrayList<Node>() + for (i in 0 until nodeSet.length) { + val node = nodeSet.item(i) + nodeList.add(node) + } + return NodeSetData { nodeList.iterator() } + } +} + +/** + * Helpers for dealing with XML in EBICS. + */ +object XMLUtil { + fun convertDomToBytes(document: Document): ByteArray { + val w = ByteArrayOutputStream() + val transformer = TransformerFactory.newInstance().newTransformer() + transformer.setOutputProperty(OutputKeys.STANDALONE, "yes") + transformer.transform(DOMSource(document), StreamResult(w)) + return w.toByteArray() + } + + /** Parse [xml] into a XML DOM */ + fun parseIntoDom(xml: InputStream): Document { + val factory = DocumentBuilderFactory.newInstance().apply { + isNamespaceAware = true + } + val builder = factory.newDocumentBuilder() + return xml.use { + builder.parse(InputSource(it)) + } + } + + /** + * Sign an EBICS document with the authentication and identity signature. + */ + fun signEbicsDocument( + doc: Document, + signingPriv: PrivateKey, + schema: String + ) { + val authSigNode = XPathFactory.newInstance().newXPath() + .evaluate("/*[1]/urn:org:ebics:$schema:AuthSignature", doc, XPathConstants.NODE) + if (authSigNode !is Node) + throw java.lang.Exception("no AuthSignature") + val fac = XMLSignatureFactory.getInstance("DOM") + val c14n = fac.newTransform(CanonicalizationMethod.INCLUSIVE, null as TransformParameterSpec?) + val ref: Reference = + fac.newReference( + "#xpointer(//*[@authenticate='true'])", + fac.newDigestMethod(DigestMethod.SHA256, null), + listOf(c14n), + null, + null + ) + val canon: CanonicalizationMethod = + fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, null as C14NMethodParameterSpec?) + val signatureMethod = fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null) + val si: SignedInfo = fac.newSignedInfo(canon, signatureMethod, listOf(ref)) + val sig: XMLSignature = fac.newXMLSignature(si, null) + val dsc = DOMSignContext(signingPriv, authSigNode) + dsc.defaultNamespacePrefix = "ds" + dsc.uriDereferencer = EbicsSigUriDereferencer() + dsc.setProperty("javax.xml.crypto.dsig.cacheReference", true) + sig.sign(dsc) + val innerSig = authSigNode.firstChild + while (innerSig.hasChildNodes()) { + authSigNode.appendChild(innerSig.firstChild) + } + authSigNode.removeChild(innerSig) + } + + fun verifyEbicsDocument( + doc: Document, + signingPub: PublicKey, + schema: String + ): Boolean { + val doc2: Document = doc.cloneNode(true) as Document + val authSigNode = XPathFactory.newInstance().newXPath() + .evaluate("/*[1]/urn:org:ebics:$schema:AuthSignature", doc2, XPathConstants.NODE) + if (authSigNode !is Node) + throw java.lang.Exception("no AuthSignature") + val sigEl = doc2.createElementNS("http://www.w3.org/2000/09/xmldsig#", "ds:Signature") + authSigNode.parentNode.insertBefore(sigEl, authSigNode) + while (authSigNode.hasChildNodes()) { + sigEl.appendChild(authSigNode.firstChild) + } + authSigNode.parentNode.removeChild(authSigNode) + val fac = XMLSignatureFactory.getInstance("DOM") + val dvc = DOMValidateContext(signingPub, sigEl) + dvc.setProperty("javax.xml.crypto.dsig.cacheReference", true) + dvc.uriDereferencer = EbicsSigUriDereferencer() + val sig = fac.unmarshalXMLSignature(dvc) + // FIXME: check that parameters are okay! + val valResult = sig.validate(dvc) + sig.signedInfo.references[0].validate(dvc) + return valResult + } +} +\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt @@ -0,0 +1,204 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2020, 2024 Taler Systems S.A. + * + * 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.nexus + +import org.w3c.dom.* +import java.io.InputStream +import java.io.StringWriter +import java.time.LocalDate +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import javax.xml.parsers.* +import javax.xml.stream.XMLOutputFactory +import javax.xml.stream.XMLStreamWriter + +interface XmlBuilder { + fun el(path: String, lambda: XmlBuilder.() -> Unit = {}) + fun el(path: String, content: String) { + el(path) { + text(content) + } + } + fun attr(namespace: String, name: String, value: String) + fun attr(name: String, value: String) + fun text(content: String) + + companion object { + fun toBytes(root: String, f: XmlBuilder.() -> Unit): ByteArray { + val factory = XMLOutputFactory.newFactory() + val stream = StringWriter() + var writer = factory.createXMLStreamWriter(stream) + /** + * NOTE: commenting out because it wasn't obvious how to output the + * "standalone = 'yes' directive". Manual forge was therefore preferred. + */ + stream.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>") + XmlStreamBuilder(writer).el(root) { + this.f() + } + writer.writeEndDocument() + return stream.buffer.toString().toByteArray() + } + + fun toDom(root: String, schema: String?, f: XmlBuilder.() -> Unit): Document { + val factory = DocumentBuilderFactory.newInstance(); + factory.isNamespaceAware = true + val builder = factory.newDocumentBuilder(); + val doc = builder.newDocument(); + doc.setXmlVersion("1.0") + doc.setXmlStandalone(true) + val root = doc.createElementNS(schema, root) + doc.appendChild(root); + XmlDOMBuilder(doc, schema, root).f() + doc.normalize() + return doc + } + } +} + +private class XmlStreamBuilder(private val w: XMLStreamWriter): XmlBuilder { + override fun el(path: String, lambda: XmlBuilder.() -> Unit) { + path.splitToSequence('/').forEach { + w.writeStartElement(it) + } + lambda() + path.splitToSequence('/').forEach { + w.writeEndElement() + } + } + + override fun attr(namespace: String, name: String, value: String) { + w.writeAttribute(namespace, name, value) + } + + override fun attr(name: String, value: String) { + w.writeAttribute(name, value) + } + + override fun text(content: String) { + w.writeCharacters(content) + } +} + +private class XmlDOMBuilder(private val doc: Document, private val schema: String?, private var node: Element): XmlBuilder { + override fun el(path: String, lambda: XmlBuilder.() -> Unit) { + val current = node + path.splitToSequence('/').forEach { + val new = doc.createElementNS(schema, it) + node.appendChild(new) + node = new + } + lambda() + node = current + } + + override fun attr(namespace: String, name: String, value: String) { + node.setAttributeNS(namespace, name, value) + } + + override fun attr(name: String, value: String) { + node.setAttribute(name, value) + } + + override fun text(content: String) { + node.appendChild(doc.createTextNode(content)); + } +} + +class DestructionError(m: String) : Exception(m) + +private fun Element.childrenByTag(tag: String): Sequence<Element> = sequence { + for (i in 0..childNodes.length) { + val el = childNodes.item(i) + if (el !is Element) { + continue + } + if (el.localName != tag) { + continue + } + yield(el) + } +} + +class XmlDestructor internal constructor(private val el: Element) { + fun each(path: String, f: XmlDestructor.() -> Unit) { + el.childrenByTag(path).forEach { + f(XmlDestructor(it)) + } + } + + fun <T> map(path: String, f: XmlDestructor.() -> T): List<T> { + return el.childrenByTag(path).map { + f(XmlDestructor(it)) + }.toList() + } + + fun one(path: String): XmlDestructor { + val children = el.childrenByTag(path).iterator() + if (!children.hasNext()) { + throw DestructionError("expected a single $path child, got none instead at $el") + } + val el = children.next() + if (children.hasNext()) { + throw DestructionError("expected a single $path child, got ${children.asSequence() + 1} instead at $el") + } + return XmlDestructor(el) + } + fun opt(path: String): XmlDestructor? { + val children = el.childrenByTag(path).iterator() + if (!children.hasNext()) { + return null + } + val el = children.next() + if (children.hasNext()) { + throw DestructionError("expected an optional $path child, got ${children.asSequence().count() + 1} instead at $el") + } + return XmlDestructor(el) + } + + fun <T> one(path: String, f: XmlDestructor.() -> T): T = f(one(path)) + fun <T> opt(path: String, f: XmlDestructor.() -> T): T? = opt(path)?.run(f) + + fun text(): String = el.textContent + fun bool(): Boolean = el.textContent.toBoolean() + fun date(): LocalDate = LocalDate.parse(text(), DateTimeFormatter.ISO_DATE) + fun dateTime(): LocalDateTime = LocalDateTime.parse(text(), DateTimeFormatter.ISO_DATE_TIME) + inline fun <reified T : Enum<T>> enum(): T = java.lang.Enum.valueOf(T::class.java, text()) + + fun attr(index: String): String = el.getAttribute(index) + + companion object { + fun <T> fromStream(xml: InputStream, root: String, f: XmlDestructor.() -> T): T { + val doc = XMLUtil.parseIntoDom(xml) + return fromDoc(doc, root, f) + } + + fun <T> fromDoc(doc: Document, root: String, f: XmlDestructor.() -> T): T { + if (doc.documentElement.tagName != root) { + throw DestructionError("expected root '$root' got '${doc.documentElement.tagName}'") + } + val destr = XmlDestructor(doc.documentElement) + return f(destr) + } + } +} + +fun <T> destructXml(xml: InputStream, root: String, f: XmlDestructor.() -> T): T + = XmlDestructor.fromStream(xml, root, f) diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt @@ -1,379 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -/** - * This file contains helpers to construct EBICS 2.x requests. - */ - -package tech.libeufin.nexus.ebics - -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import tech.libeufin.ebics.* -import tech.libeufin.ebics.ebics_h004.EbicsKeyManagementResponse -import tech.libeufin.ebics.ebics_h004.EbicsNpkdRequest -import tech.libeufin.ebics.ebics_h004.EbicsRequest -import tech.libeufin.ebics.ebics_h004.EbicsUnsecuredRequest -import tech.libeufin.nexus.BankPublicKeysFile -import tech.libeufin.nexus.ClientPrivateKeysFile -import tech.libeufin.nexus.EbicsSetupConfig -import java.io.InputStream -import java.security.interfaces.RSAPrivateCrtKey -import java.time.Instant -import java.time.ZoneId -import java.util.* -import javax.xml.datatype.DatatypeFactory - -private val logger: Logger = LoggerFactory.getLogger("libeufin-nexus-ebics2") - -/** - * Creates a EBICS 2.5 download init. message. So far only used - * to fetch the PostFinance bank accounts. - */ -fun createEbics25DownloadInit( - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - bankKeys: BankPublicKeysFile, - orderType: String, - orderParams: EbicsOrderParams = EbicsStandardOrderParams() -): ByteArray { - val nonce = getNonce(128) - val req = EbicsRequest.createForDownloadInitializationPhase( - cfg.ebicsUserId, - cfg.ebicsPartnerId, - cfg.ebicsHostId, - nonce, - DatatypeFactory.newInstance().newXMLGregorianCalendar( - GregorianCalendar( - TimeZone.getTimeZone(ZoneId.systemDefault()) - ) - ), - bankKeys.bank_encryption_public_key, - bankKeys.bank_authentication_public_key, - orderType, - makeOrderParams(orderParams) - ) - val doc = XMLUtil.convertJaxbToDocument(req) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = false - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Creates raw XML for an EBICS receipt phase. - * - * @param cfg configuration handle. - * @param clientKeys user EBICS private keys. - * @param transactionId transaction ID of the EBICS communication that - * should receive this receipt. - * @param success was the download successfully processed - * @return receipt request in XML. - */ -fun createEbics25DownloadReceiptPhase( - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - transactionId: String, - success: Boolean -): ByteArray { - val req = EbicsRequest.createForDownloadReceiptPhase( - transactionId, - cfg.ebicsHostId, - success - ) - val doc = XMLUtil.convertJaxbToDocument(req) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = false - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Creates raw XML for an EBICS transfer phase. - * - * @param cfg configuration handle. - * @param clientKeys user EBICS private keys. - * @param segNumber which segment we ask the bank. - * @param totalSegments how many segments compose the whole EBICS transaction. - * @param transactionId ID of the EBICS transaction that transports all the segments. - * @return raw XML string of the request. - */ -fun createEbics25DownloadTransferPhase( - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - segNumber: Int, - totalSegments: Int, - transactionId: String -): ByteArray { - val req = EbicsRequest.createForDownloadTransferPhase( - hostID = cfg.ebicsHostId, - segmentNumber = segNumber, - numSegments = totalSegments, - transactionID = transactionId - ) - val doc = XMLUtil.convertJaxbToDocument(req) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = false - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Parses the raw XML that came from the bank into the Nexus representation. - * - * @param clientEncryptionKey client private encryption key, used to decrypt - * the transaction key. - * @param xml the bank raw XML response - * @return the internal representation of the XML response, or null if the parsing or the decryption failed. - * Note: it _is_ possible to successfully return the internal repr. of this response, where - * the payload is null. That's however still useful, because the returned type provides bank - * and EBICS return codes. - */ -fun parseKeysMgmtResponse( - clientEncryptionKey: RSAPrivateCrtKey, - xml: InputStream -): EbicsKeyManagementResponseContent? { - // TODO throw instead of null - val jaxb = try { - XMLUtil.convertToJaxb<EbicsKeyManagementResponse>(xml) - } catch (e: Exception) { - tech.libeufin.nexus.logger.error("Could not parse the raw response from bank into JAXB.") - return null - } - var payload: ByteArray? = null - jaxb.value.body.dataTransfer?.dataEncryptionInfo.apply { - // non-null indicates that an encrypted payload should be found. - if (this != null) { - val encOrderData = jaxb.value.body.dataTransfer?.orderData?.value - if (encOrderData == null) { - tech.libeufin.nexus.logger.error("Despite a non-null DataEncryptionInfo, OrderData could not be found, can't decrypt any payload!") - return null - } - payload = decryptAndDecompressPayload( - clientEncryptionKey, - DataEncryptionInfo(this.transactionKey, this.encryptionPubKeyDigest.value), - listOf(encOrderData) - ).readBytes() - } - } - val bankReturnCode = EbicsReturnCode.lookup(jaxb.value.body.returnCode.value) // business error - val ebicsReturnCode = EbicsReturnCode.lookup(jaxb.value.header.mutable.returnCode) // ebics error - return EbicsKeyManagementResponseContent(ebicsReturnCode, bankReturnCode, payload) -} - -/** - * Generates the INI message to upload the signature key. - * - * @param cfg handle to the configuration. - * @param clientKeys set of all the client keys. - * @return the raw EBICS INI message. - */ -fun generateIniMessage(cfg: EbicsSetupConfig, clientKeys: ClientPrivateKeysFile): ByteArray { - val iniRequest = EbicsUnsecuredRequest.createIni( - cfg.ebicsHostId, - cfg.ebicsUserId, - cfg.ebicsPartnerId, - clientKeys.signature_private_key - ) - val doc = XMLUtil.convertJaxbToDocument(iniRequest) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Generates the HIA message: uploads the authentication and - * encryption keys. - * - * @param cfg handle to the configuration. - * @param clientKeys set of all the client keys. - * @return the raw EBICS HIA message. - */ -fun generateHiaMessage(cfg: EbicsSetupConfig, clientKeys: ClientPrivateKeysFile): ByteArray { - val hiaRequest = EbicsUnsecuredRequest.createHia( - cfg.ebicsHostId, - cfg.ebicsUserId, - cfg.ebicsPartnerId, - clientKeys.authentication_private_key, - clientKeys.encryption_private_key - ) - val doc = XMLUtil.convertJaxbToDocument(hiaRequest) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Generates the HPB message: downloads the bank keys. - * - * @param cfg handle to the configuration. - * @param clientKeys set of all the client keys. - * @return the raw EBICS HPB message. - */ -fun generateHpbMessage(cfg: EbicsSetupConfig, clientKeys: ClientPrivateKeysFile): ByteArray { - val hpbRequest = EbicsNpkdRequest.createRequest( - cfg.ebicsHostId, - cfg.ebicsPartnerId, - cfg.ebicsUserId, - getNonce(128), - DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()) - ) - val doc = XMLUtil.convertJaxbToDocument(hpbRequest) - XMLUtil.signEbicsDocument(doc, clientKeys.authentication_private_key) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Collects message type and date range of an EBICS 2 request. - */ -data class Ebics2Request( - val messageType: String, - val orderParams: EbicsOrderParams -) - -/** - * Prepares an EBICS 2 request to get pain.002 acknowledgements - * about submitted pain.001 documents. - * - * @param startDate earliest timestamp of the returned document(s). If - * null, it defaults to download the unseen documents. - * @param endDate latest timestamp of the returned document(s). If - * null, it defaults to the current time. - * @return [Ebics2Request] object to be first converted in XML and - * then be passed to the EBICS downloader. - */ -private fun prepAckRequest2( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics2Request { - val maybeDateRange = if (startDate != null) EbicsDateRange(startDate, endDate ?: Instant.now()) else null - return Ebics2Request( - messageType = "Z01", - orderParams = EbicsStandardOrderParams(dateRange = maybeDateRange) - ) -} - -/** - * Prepares an EBICS 2 request to get intraday camt.052 reports. - * - * @param startDate earliest timestamp of the returned document(s). If - * null, it defaults to download the unseen documents. - * @param endDate latest timestamp of the returned document(s). If - * null, it defaults to the current time. - * @return [Ebics2Request] object to be first converted in XML and - * then be passed to the EBICS downloader. - */ -private fun prepReportRequest2( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics2Request { - val maybeDateRange = if (startDate != null) EbicsDateRange(startDate, endDate ?: Instant.now()) else null - return Ebics2Request( - messageType = "Z52", - orderParams = EbicsStandardOrderParams(dateRange = maybeDateRange) - ) -} - -/** - * Prepares an EBICS 2 request to get daily camt.053 statements. - * - * @param startDate earliest timestamp of the returned document(s). If - * null, it defaults to download the unseen documents. - * @param endDate latest timestamp of the returned document(s). If - * null, it defaults to the current time. - * @return [Ebics2Request] object to be first converted in XML and - * then be passed to the EBICS downloader. - */ -private fun prepStatementRequest2( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics2Request { - val maybeDateRange = if (startDate != null) EbicsDateRange(startDate, endDate ?: Instant.now()) else null - return Ebics2Request( - messageType = "Z53", - orderParams = EbicsStandardOrderParams(dateRange = maybeDateRange) - ) -} - -/** - * Prepares an EBICS 2 request to get camt.054 notifications. - * - * @param startDate earliest timestamp of the returned document(s). If - * null, it defaults to download the unseen documents. - * @param endDate latest timestamp of the returned document(s). If - * null, it defaults to the current time. - * @return [Ebics2Request] object to be first converted in XML and - * then be passed to the EBICS downloader. - */ -private fun prepNotificationRequest2( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics2Request { - val maybeDateRange = if (startDate != null) EbicsDateRange(startDate, endDate ?: Instant.now()) else null - return Ebics2Request( - messageType = "Z54", // ZS2 is the non-appendix type - orderParams = EbicsStandardOrderParams(dateRange = maybeDateRange) - ) -} - -/** - * Prepares an EBICS 2 request to get logs from the bank about any - * uploaded or downloaded document. - * - * @param startDate earliest timestamp of the returned document(s). If - * null, it defaults to download the unseen documents. - * @param endDate latest timestamp of the returned document(s). If - * null, it defaults to the current time. - * @return [Ebics2Request] object to be first converted in XML and - * then be passed to the EBICS downloader. - */ -private fun prepLogsRequest2( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics2Request { - val maybeDateRange = if (startDate != null) EbicsDateRange(startDate, endDate ?: Instant.now()) else null - return Ebics2Request( - messageType = "HAC", - orderParams = EbicsStandardOrderParams(dateRange = maybeDateRange) - ) -} - -/** - * Abstracts EBICS 2 request creation of a download init phase. - * - * @param whichDoc type of wanted document. - * @param startDate earliest timestamp of the document(s) to download. - * If null, it gets the unseen documents. If defined, - * the latest timestamp defaults to the current time. - * @return [Ebics2Request] to be converted to XML string and passed to - * the EBICS downloader. - */ -fun prepEbics2Document( - whichDoc: SupportedDocument, - startDate: Instant? = null -): Ebics2Request = - when(whichDoc) { - SupportedDocument.PAIN_002 -> prepAckRequest2(startDate) - SupportedDocument.CAMT_052 -> prepReportRequest2(startDate) - SupportedDocument.CAMT_053 -> prepStatementRequest2(startDate) - SupportedDocument.CAMT_054 -> prepNotificationRequest2(startDate) - SupportedDocument.PAIN_002_LOGS -> prepLogsRequest2(startDate) - } -\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt @@ -1,443 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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.nexus.ebics - -import io.ktor.client.* -import tech.libeufin.ebics.PreparedUploadData -import tech.libeufin.ebics.XMLUtil -import tech.libeufin.ebics.ebics_h005.Ebics3Request -import tech.libeufin.ebics.getNonce -import tech.libeufin.ebics.getXmlDate -import tech.libeufin.nexus.BankPublicKeysFile -import tech.libeufin.nexus.ClientPrivateKeysFile -import tech.libeufin.nexus.EbicsSetupConfig -import tech.libeufin.nexus.logger -import java.math.BigInteger -import java.time.Instant -import java.util.* -import javax.xml.datatype.DatatypeFactory - -/** - * Crafts an EBICS request for the receipt phase of a download - * transaction. - * - * @param cfg config handle - * @param clientKeys subscriber private keys. - * @param transactionId EBICS transaction ID as assigned by the - * bank to any successful transaction. - * @param success was the download successfully processed - * @return the raw XML of the EBICS request. - */ -fun createEbics3DownloadReceiptPhase( - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - transactionId: String, - success: Boolean -): ByteArray { - val req = Ebics3Request.createForDownloadReceiptPhase( - transactionId, - cfg.ebicsHostId, - success - ) - val doc = XMLUtil.convertJaxbToDocument(req) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = true - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Crafts an EBICS download request for the transfer phase. - * - * @param cfg config handle - * @param clientKeys subscriber private keys - * @param transactionId EBICS transaction ID. That came from the - * bank after the initialization phase ended successfully. - * @param segmentNumber which (payload's) segment number this requests wants. - * @param howManySegments total number of segments that the payload is split to. - * @return the raw XML EBICS request. - */ -fun createEbics3DownloadTransferPhase( - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - howManySegments: Int, - segmentNumber: Int, - transactionId: String -): ByteArray { - val req = Ebics3Request.createForDownloadTransferPhase( - cfg.ebicsHostId, - transactionId, - segmentNumber, - howManySegments - ) - val doc = XMLUtil.convertJaxbToDocument(req) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = true - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Creates the EBICS 3 document for the init phase of a download - * transaction. - * - * @param cfg configuration handle. - * @param bankkeys bank public keys. - * @param clientKeys client private keys. - * @param orderService EBICS 3 document defining the request type - */ -fun createEbics3DownloadInitialization( - cfg: EbicsSetupConfig, - bankkeys: BankPublicKeysFile, - clientKeys: ClientPrivateKeysFile, - orderParams: Ebics3Request.OrderDetails.BTDOrderParams -): ByteArray { - val nonce = getNonce(128) - val req = Ebics3Request.createForDownloadInitializationPhase( - cfg.ebicsUserId, - cfg.ebicsPartnerId, - cfg.ebicsHostId, - nonce, - DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()), - bankAuthPub = bankkeys.bank_authentication_public_key, - bankEncPub = bankkeys.bank_encryption_public_key, - myOrderParams = orderParams - ) - val doc = XMLUtil.convertJaxbToDocument( - req, - withSchemaLocation = "urn:org:ebics:H005 ebics_request_H005.xsd" - ) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = true - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Creates the EBICS 3 document for the init phase of an upload - * transaction. - * - * @param cfg configuration handle. - * @param preparedUploadData business payload to send. - * @param bankkeys bank public keys. - * @param clientKeys client private keys. - * @param orderService EBICS 3 document defining the request type - * @return raw XML of the EBICS 3 init phase. - */ -fun createEbics3RequestForUploadInitialization( - cfg: EbicsSetupConfig, - preparedUploadData: PreparedUploadData, - bankkeys: BankPublicKeysFile, - clientKeys: ClientPrivateKeysFile, - orderService: Ebics3Request.OrderDetails.Service -): ByteArray { - val nonce = getNonce(128) - val req = Ebics3Request.createForUploadInitializationPhase( - preparedUploadData.transactionKey, - preparedUploadData.userSignatureDataEncrypted, - preparedUploadData.dataDigest, - cfg.ebicsHostId, - nonce, - cfg.ebicsPartnerId, - cfg.ebicsUserId, - DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()), - bankkeys.bank_authentication_public_key, - bankkeys.bank_encryption_public_key, - BigInteger.ONE, - orderService - ) - val doc = XMLUtil.convertJaxbToDocument( - req, - withSchemaLocation = "urn:org:ebics:H005 ebics_request_H005.xsd" - ) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = true - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Crafts one EBICS 3 request for the upload transfer phase. Currently - * only 1-chunk payloads are supported. - * - * @param cfg configuration handle. - * @param clientKeys client private keys. - * @param transactionId EBICS transaction ID obtained from an init phase. - * @param uploadData business content to upload. - * - * @return raw XML document. - */ -fun createEbics3RequestForUploadTransferPhase( - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - transactionId: String, - uploadData: PreparedUploadData -): ByteArray { - val chunkIndex = 1 // only 1-chunk communication currently supported. - val req = Ebics3Request.createForUploadTransferPhase( - cfg.ebicsHostId, - transactionId, - BigInteger.valueOf(chunkIndex.toLong()), - uploadData.encryptedPayloadChunks[chunkIndex - 1] - ) - val doc = XMLUtil.convertJaxbToDocument(req) - XMLUtil.signEbicsDocument( - doc, - clientKeys.authentication_private_key, - withEbics3 = true - ) - return XMLUtil.convertDomToBytes(doc) -} - -/** - * Collects all the steps to prepare the submission of a pain.001 - * document to the bank, and finally send it. Indirectly throws - * [EbicsSideException] or [EbicsUploadException]. The first means - * that the bank sent an invalid response or signature, the second - * that a proper EBICS or business error took place. The caller must - * catch those exceptions and decide the retry policy. - * - * @param pain001xml pain.001 document in XML. The caller should - * ensure its validity. - * @param cfg configuration handle. - * @param clientKeys client private keys. - * @param bankkeys bank public keys. - * @param httpClient HTTP client to connect to the bank. - */ -suspend fun submitPain001( - pain001xml: String, - cfg: EbicsSetupConfig, - clientKeys: ClientPrivateKeysFile, - bankkeys: BankPublicKeysFile, - httpClient: HttpClient -): String { - val orderService: Ebics3Request.OrderDetails.Service = Ebics3Request.OrderDetails.Service().apply { - serviceName = "MCT" - scope = "CH" - messageName = Ebics3Request.OrderDetails.Service.MessageName().apply { - value = "pain.001" - version = "09" - } - } - val maybeUploaded = doEbicsUpload( - httpClient, - cfg, - clientKeys, - bankkeys, - orderService, - pain001xml.toByteArray(Charsets.UTF_8), - ) - logger.debug("Payment submitted, report text is: ${maybeUploaded.reportText}," + - " EBICS technical code is: ${maybeUploaded.technicalReturnCode}," + - " bank technical return code is: ${maybeUploaded.bankReturnCode}" - ) - return maybeUploaded.orderID!! -} - -/** - * Crafts a date range object, when the caller needs a time range. - * - * @param startDate inclusive starting date for the returned banking events. - * @param endDate inclusive ending date for the returned banking events. - * @return [Ebics3Request.DateRange] - */ -private fun getEbics3DateRange( - startDate: Instant, - endDate: Instant -): Ebics3Request.DateRange { - return Ebics3Request.DateRange().apply { - start = getXmlDate(startDate) - end = getXmlDate(endDate) - } -} - -/** - * Prepares the request for a camt.054 notification from the bank, - * via EBICS 3. - * Notifications inform the subscriber that some new events occurred - * on their account. One main difference with reports/statements is - * that notifications - according to the ISO20022 documentation - do - * NOT contain any balance. - * - * @param startDate inclusive starting date for the returned notification(s). - * @param endDate inclusive ending date for the returned notification(s). NOTE: - * if startDate is NOT null and endDate IS null, endDate gets defaulted - * to the current UTC time. - * @param isAppendix if true, the responded camt.054 will be an appendix of - * another camt.053 document, not therefore strictly acting as a notification. - * For example, camt.053 may omit wire transfer subjects and its related - * camt.054 appendix would instead contain those. - * - * @return [Ebics3Request.OrderDetails.BTOrderParams] - */ -fun prepNotificationRequest3( - startDate: Instant? = null, - endDate: Instant? = null, - isAppendix: Boolean -): Ebics3Request.OrderDetails.BTDOrderParams { - val service = Ebics3Request.OrderDetails.Service().apply { - serviceName = "REP" - scope = "CH" - container = Ebics3Request.OrderDetails.Service.Container().apply { - containerType = "ZIP" - } - messageName = Ebics3Request.OrderDetails.Service.MessageName().apply { - value = "camt.054" - version = "08" - } - if (!isAppendix) - serviceOption = "XDCI" - } - return Ebics3Request.OrderDetails.BTDOrderParams().apply { - this.service = service - this.dateRange = if (startDate != null) - getEbics3DateRange(startDate, endDate ?: Instant.now()) - else null - } -} - -/** - * Prepares the request for a pain.002 acknowledgement from the bank, via - * EBICS 3. - * - * @param startDate inclusive starting date for the returned acknowledgements. - * @param endDate inclusive ending date for the returned acknowledgements. NOTE: - * if startDate is NOT null and endDate IS null, endDate gets defaulted - * to the current UTC time. - * - * @return [Ebics3Request.OrderDetails.BTOrderParams] - */ -fun prepAckRequest3( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics3Request.OrderDetails.BTDOrderParams { - val service = Ebics3Request.OrderDetails.Service().apply { - serviceName = "PSR" - scope = "CH" - container = Ebics3Request.OrderDetails.Service.Container().apply { - containerType = "ZIP" - } - messageName = Ebics3Request.OrderDetails.Service.MessageName().apply { - value = "pain.002" - version = "10" - } - } - return Ebics3Request.OrderDetails.BTDOrderParams().apply { - this.service = service - this.dateRange = if (startDate != null) - getEbics3DateRange(startDate, endDate ?: Instant.now()) - else null - } -} - -/** - * Prepares the request for (a) camt.053/statement(s) via EBICS 3. - * - * @param startDate inclusive starting date for the returned banking events. - * @param endDate inclusive ending date for the returned banking events. NOTE: - * if startDate is NOT null and endDate IS null, endDate gets defaulted - * to the current UTC time. - * - * @return [Ebics3Request.OrderDetails.BTOrderParams] - */ -fun prepStatementRequest3( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics3Request.OrderDetails.BTDOrderParams { - val service = Ebics3Request.OrderDetails.Service().apply { - serviceName = "EOP" - scope = "CH" - container = Ebics3Request.OrderDetails.Service.Container().apply { - containerType = "ZIP" - } - messageName = Ebics3Request.OrderDetails.Service.MessageName().apply { - value = "camt.053" - version = "08" - } - } - return Ebics3Request.OrderDetails.BTDOrderParams().apply { - this.service = service - this.dateRange = if (startDate != null) - getEbics3DateRange(startDate, endDate ?: Instant.now()) - else null - } -} - -/** - * Prepares the request for camt.052/intraday records via EBICS 3. - * - * @param startDate inclusive starting date for the returned banking events. - * @param endDate inclusive ending date for the returned banking events. NOTE: - * if startDate is NOT null and endDate IS null, endDate gets defaulted - * to the current UTC time. - * - * @return [Ebics3Request.OrderDetails.BTOrderParams] - */ -fun prepReportRequest3( - startDate: Instant? = null, - endDate: Instant? = null -): Ebics3Request.OrderDetails.BTDOrderParams { - val service = Ebics3Request.OrderDetails.Service().apply { - serviceName = "STM" - scope = "CH" - container = Ebics3Request.OrderDetails.Service.Container().apply { - containerType = "ZIP" - } - messageName = Ebics3Request.OrderDetails.Service.MessageName().apply { - value = "camt.052" - version = "08" - } - } - return Ebics3Request.OrderDetails.BTDOrderParams().apply { - this.service = service - this.dateRange = if (startDate != null) - getEbics3DateRange(startDate, endDate ?: Instant.now()) - else null - } -} - -/** - * Abstracts EBICS 3 request creation of a download init phase. - * - * @param whichDoc type of wanted document. - * @param startDate earliest timestamp of the document(s) to download. - * If null, it gets the unseen documents. If defined, - * the latest timestamp defaults to the current time. - * @return [Ebics2Request] to be converted to XML string and passed to - * the EBICS downloader. - */ -fun prepEbics3Document( - whichDoc: SupportedDocument, - startDate: Instant? = null -): Ebics3Request.OrderDetails.BTDOrderParams = - when(whichDoc) { - SupportedDocument.PAIN_002 -> prepAckRequest3(startDate) - SupportedDocument.CAMT_052 -> prepReportRequest3(startDate) - SupportedDocument.CAMT_053 -> prepStatementRequest3(startDate) - SupportedDocument.CAMT_054 -> prepNotificationRequest3(startDate, isAppendix = true) - SupportedDocument.PAIN_002_LOGS -> throw Exception("HAC (--only-logs) not available in EBICS 3") - } -\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt @@ -0,0 +1,347 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.nexus.ebics + +import io.ktor.client.* +import tech.libeufin.nexus.* +import tech.libeufin.common.* +import tech.libeufin.common.crypto.* +import java.math.BigInteger +import java.time.* +import java.time.format.* +import java.util.* +import java.io.File +import org.w3c.dom.* +import javax.xml.datatype.XMLGregorianCalendar +import javax.xml.datatype.DatatypeFactory +import java.security.interfaces.* + + +fun Instant.xmlDate(): String = DateTimeFormatter.ISO_DATE.withZone(ZoneId.of("UTC")).format(this) +fun Instant.xmlDateTime(): String = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("UTC")).format(this) + +/** EBICS protocol for business transactions */ +class EbicsBTS( + val cfg: EbicsSetupConfig, + val bankKeys: BankPublicKeysFile, + val clientKeys: ClientPrivateKeysFile, + val order: EbicsOrder +) { + /* ----- Download ----- */ + + fun downloadInitialization(startDate: Instant?, endDate: Instant?): ByteArray { + val nonce = getNonce(128) + return signedRequest { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("Nonce", nonce.encodeHex()) + el("Timestamp", Instant.now().xmlDateTime()) + el("PartnerID", cfg.ebicsPartnerId) + el("UserID", cfg.ebicsUserId) + // SystemID + // Product + el("OrderDetails") { + when (order) { + is EbicsOrder.V2_5 -> { + el("OrderType", order.type) + el("OrderAttribute", order.attribute) + el("StandardOrderParams") { + if (startDate != null) { + el("DateRange") { + el("Start", startDate.xmlDate()) + el("End", (endDate ?: Instant.now()).xmlDate()) + } + } + } + } + is EbicsOrder.V3 -> { + el("AdminOrderType", order.type) + if (order.type == "BTD") { + el("BTDOrderParams") { + el("Service") { + el("ServiceName", order.name!!) + el("Scope", order.scope!!) + if (order.container != null) { + el("Container") { + attr("containerType", order.container) + } + } + el("MsgName") { + attr("version", order.messageVersion!!) + text(order.messageName!!) + } + } + if (startDate != null) { + el("DateRange") { + el("Start", startDate.xmlDate()) + el("End", (endDate ?: Instant.now()).xmlDate()) + } + } + } + } + } + } + } + bankDigest() + } + el("mutable/TransactionPhase", "Initialisation") + } + el("AuthSignature") + el("body") + } + } + + fun downloadTransfer( + howManySegments: Int, + segmentNumber: Int, + transactionId: String + ): ByteArray { + return signedRequest { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("TransactionID", transactionId) + } + el("mutable") { + el("TransactionPhase", "Transfer") + el("SegmentNumber") { + attr("lastSegment", if (howManySegments == segmentNumber) "true" else "false") + } + } + } + el("AuthSignature") + el("body") + } + } + + fun downloadReceipt( + transactionId: String, + success: Boolean + ): ByteArray { + return signedRequest { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("TransactionID", transactionId) + } + el("mutable") { + el("TransactionPhase", "Receipt") + } + } + el("AuthSignature") + el("body/TransferReceipt") { + attr("authenticate", "true") + el("ReceiptCode", if (success) "0" else "1") + } + } + } + + /* ----- Upload ----- */ + + fun uploadInitialization(preparedUploadData: PreparedUploadData): ByteArray { + val nonce = getNonce(128) + return signedRequest { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("Nonce", nonce.encodeUpHex()) + el("Timestamp", Instant.now().xmlDateTime()) + el("PartnerID", cfg.ebicsPartnerId) + el("UserID", cfg.ebicsUserId) + // SystemID + // Product + el("OrderDetails") { + when (order) { + is EbicsOrder.V2_5 -> { + // TODO + } + is EbicsOrder.V3 -> { + el("AdminOrderType", order.type) + el("BTUOrderParams") { + el("Service") { + el("ServiceName", order.name!!) + el("Scope", order.scope!!) + el("MsgName") { + attr("version", order.messageVersion!!) + text(order.messageName!!) + } + } + el("SignatureFlag", "true") + } + } + } + } + bankDigest() + el("NumSegments", "1") // TODO test upload of many segment + + } + el("mutable") { + el("TransactionPhase", "Initialisation") + } + } + el("AuthSignature") + el("body") { + el("DataTransfer") { + el("DataEncryptionInfo") { + attr("authenticate", "true") + el("EncryptionPubKeyDigest") { + attr("Version", "E002") + attr("Algorithm", "http://www.w3.org/2001/04/xmlenc#sha256") + text(CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_encryption_public_key).encodeBase64()) + } + el("TransactionKey", preparedUploadData.transactionKey.encodeBase64()) + } + el("SignatureData") { + attr("authenticate", "true") + text(preparedUploadData.userSignatureDataEncrypted.encodeBase64()) + } + el("DataDigest") { + attr("SignatureVersion", "A006") + text(preparedUploadData.dataDigest.encodeBase64()) + } + } + } + } + } + + fun uploadTransfer( + transactionId: String, + uploadData: PreparedUploadData + ): ByteArray { + val chunkIndex = 1 // TODO test upload of many segment + return signedRequest { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("TransactionID", transactionId) + } + el("mutable") { + el("TransactionPhase", "Transfer") + el("SegmentNumber") { + attr("lastSegment", "true") + text(chunkIndex.toString()) + } + } + } + el("AuthSignature") + el("body/DataTransfer/OrderData", uploadData.encryptedPayloadChunks[chunkIndex - 1]) + } + } + + /* ----- Helpers ----- */ + + /** Generate a signed ebicsRequest */ + private fun signedRequest(lambda: XmlBuilder.() -> Unit): ByteArray { + val doc = XmlBuilder.toDom("ebicsRequest", "urn:org:ebics:${order.schema}") { + attr("http://www.w3.org/2000/xmlns/", "xmlns", "urn:org:ebics:${order.schema}") + attr("http://www.w3.org/2000/xmlns/", "xmlns:ds", "http://www.w3.org/2000/09/xmldsig#") + attr("Version", order.schema) + attr("Revision", "1") + lambda() + } + XMLUtil.signEbicsDocument( + doc, + clientKeys.authentication_private_key, + order.schema + ) + return XMLUtil.convertDomToBytes(doc) + } + + private fun XmlBuilder.bankDigest() { + el("BankPubKeyDigests") { + el("Authentication") { + attr("Version", "X002") + attr("Algorithm", "http://www.w3.org/2001/04/xmlenc#sha256") + text(CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_authentication_public_key).encodeBase64()) + } + el("Encryption") { + attr("Version", "E002") + attr("Algorithm", "http://www.w3.org/2001/04/xmlenc#sha256") + text(CryptoUtil.getEbicsPublicKeyHash(bankKeys.bank_encryption_public_key).encodeBase64()) + } + // Signature + } + el("SecurityMedium", "0000") + } + + companion object { + fun parseResponse(doc: Document): EbicsResponse<BTSResponse> { + return XmlDestructor.fromDoc(doc, "ebicsResponse") { + var transactionID: String? = null + var numSegments: Int? = null + lateinit var technicalCode: EbicsReturnCode + lateinit var bankCode: EbicsReturnCode + var orderID: String? = null + var segmentNumber: Int? = null + var payloadChunk: ByteArray? = null + var dataEncryptionInfo: DataEncryptionInfo? = null + one("header") { + one("static") { + transactionID = opt("TransactionID")?.text() + numSegments = opt("NumSegments")?.text()?.toInt() + } + one("mutable") { + segmentNumber = opt("SegmentNumber")?.text()?.toInt() + orderID = opt("OrderID")?.text() + technicalCode = EbicsReturnCode.lookup(one("ReturnCode").text()) + } + } + one("body") { + opt("DataTransfer") { + payloadChunk = one("OrderData").text().decodeBase64() + dataEncryptionInfo = opt("DataEncryptionInfo") { + DataEncryptionInfo( + one("TransactionKey").text().decodeBase64(), + one("EncryptionPubKeyDigest").text().decodeBase64() + ) + } + } + bankCode = EbicsReturnCode.lookup(one("ReturnCode").text()) + } + EbicsResponse( + bankCode = bankCode, + technicalCode = technicalCode, + content = BTSResponse( + transactionID = transactionID, + orderID = orderID, + payloadChunk = payloadChunk, + dataEncryptionInfo = dataEncryptionInfo, + numSegments = numSegments, + segmentNumber = segmentNumber + ) + ) + } + } + } +} + +data class BTSResponse( + val transactionID: String?, + val orderID: String?, + val dataEncryptionInfo: DataEncryptionInfo?, + val payloadChunk: ByteArray?, + val segmentNumber: Int?, + val numSegments: Int? +) +\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt @@ -32,11 +32,6 @@ package tech.libeufin.nexus.ebics -import com.itextpdf.kernel.pdf.PdfDocument -import com.itextpdf.kernel.pdf.PdfWriter -import com.itextpdf.layout.Document -import com.itextpdf.layout.element.AreaBreak -import com.itextpdf.layout.element.Paragraph import io.ktor.client.* import io.ktor.client.plugins.* import io.ktor.client.request.* @@ -45,8 +40,6 @@ import io.ktor.http.* import io.ktor.utils.io.jvm.javaio.* import tech.libeufin.common.* import tech.libeufin.common.crypto.* -import tech.libeufin.ebics.* -import tech.libeufin.ebics.ebics_h005.Ebics3Request import tech.libeufin.nexus.* import java.io.ByteArrayOutputStream import java.io.InputStream @@ -55,7 +48,11 @@ import java.security.interfaces.RSAPrivateCrtKey import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.util.* +import java.time.Instant import kotlinx.coroutines.* +import java.security.SecureRandom +import org.w3c.dom.Document +import org.xml.sax.SAXException /** * Available EBICS versions. @@ -82,15 +79,14 @@ enum class SupportedDocument { * one actually used to encrypt the payload. * @param encryptionInfo details related to the encrypted payload. * @param chunks the several chunks that constitute the whole encrypted payload. - * @return the plain payload. Errors throw, so the caller must handle those. + * @return the plain payload. */ fun decryptAndDecompressPayload( clientEncryptionKey: RSAPrivateCrtKey, encryptionInfo: DataEncryptionInfo, - chunks: List<String> + chunks: List<ByteArray> ): InputStream = - SequenceInputStream(Collections.enumeration(chunks.map { it.toByteArray().inputStream() })) // Aggregate - .decodeBase64() + SequenceInputStream(Collections.enumeration(chunks.map { it.inputStream() })) // Aggregate .run { CryptoUtil.decryptEbicsE002( encryptionInfo.transactionKey, @@ -99,6 +95,13 @@ fun decryptAndDecompressPayload( ) }.inflate() +sealed class EbicsError(msg: String, cause: Throwable? = null): Exception(msg, cause) { + /** Http and network errors */ + class Transport(msg: String, cause: Throwable? = null): EbicsError(msg, cause) + /** EBICS protocol & XML format error */ + class Protocol(msg: String, cause: Throwable? = null): EbicsError(msg, cause) +} + /** * POSTs the EBICS message to the bank. * @@ -106,164 +109,49 @@ fun decryptAndDecompressPayload( * @param msg EBICS message as raw bytes. * @return the raw bank response. */ -suspend fun HttpClient.postToBank(bankUrl: String, msg: ByteArray): InputStream { - logger.debug("POSTing EBICS to '$bankUrl'") - val res = post(urlString = bankUrl) { - contentType(ContentType.Text.Xml) - setBody(msg) - } - if (res.status != HttpStatusCode.OK) { - throw Exception("Invalid response status: ${res.status}") - } - return res.bodyAsChannel().toInputStream() -} - -/** - * Generate the PDF document with all the client public keys - * to be sent on paper to the bank. - */ -fun generateKeysPdf( - clientKeys: ClientPrivateKeysFile, - cfg: EbicsSetupConfig -): ByteArray { - val po = ByteArrayOutputStream() - val pdfWriter = PdfWriter(po) - val pdfDoc = PdfDocument(pdfWriter) - val date = LocalDateTime.now() - val dateStr = date.format(DateTimeFormatter.ISO_LOCAL_DATE) - - fun formatHex(ba: ByteArray): String { - var out = "" - for (i in ba.indices) { - val b = ba[i] - if (i > 0 && i % 16 == 0) { - out += "\n" - } - out += java.lang.String.format("%02X", b) - out += " " +suspend fun HttpClient.postToBank(bankUrl: String, msg: ByteArray, phase: String): Document { + val res = try { + post(urlString = bankUrl) { + contentType(ContentType.Text.Xml) + setBody(msg) } - return out - } - - fun writeCommon(doc: Document) { - doc.add( - Paragraph( - """ - Datum: $dateStr - Host-ID: ${cfg.ebicsHostId} - User-ID: ${cfg.ebicsUserId} - Partner-ID: ${cfg.ebicsPartnerId} - ES version: A006 - """.trimIndent() - ) - ) - } - - fun writeKey(doc: Document, priv: RSAPrivateCrtKey) { - val pub = CryptoUtil.getRsaPublicFromPrivate(priv) - val hash = CryptoUtil.getEbicsPublicKeyHash(pub) - doc.add(Paragraph("Exponent:\n${formatHex(pub.publicExponent.toByteArray())}")) - doc.add(Paragraph("Modulus:\n${formatHex(pub.modulus.toByteArray())}")) - doc.add(Paragraph("SHA-256 hash:\n${formatHex(hash)}")) + } catch (e: Exception) { + throw EbicsError.Transport("$phase: failed to contact bank", e) } - - fun writeSigLine(doc: Document) { - doc.add(Paragraph("Ort / Datum: ________________")) - doc.add(Paragraph("Firma / Name: ________________")) - doc.add(Paragraph("Unterschrift: ________________")) + + if (res.status != HttpStatusCode.OK) { + throw EbicsError.Transport("$phase: bank HTTP error: ${res.status}") } - - Document(pdfDoc).use { - it.add(Paragraph("Signaturschlüssel").setFontSize(24f)) - writeCommon(it) - it.add(Paragraph("Öffentlicher Schlüssel (Public key for the electronic signature)")) - writeKey(it, clientKeys.signature_private_key) - it.add(Paragraph("\n")) - writeSigLine(it) - it.add(AreaBreak()) - - it.add(Paragraph("Authentifikationsschlüssel").setFontSize(24f)) - writeCommon(it) - it.add(Paragraph("Öffentlicher Schlüssel (Public key for the identification and authentication signature)")) - writeKey(it, clientKeys.authentication_private_key) - it.add(Paragraph("\n")) - writeSigLine(it) - it.add(AreaBreak()) - - it.add(Paragraph("Verschlüsselungsschlüssel").setFontSize(24f)) - writeCommon(it) - it.add(Paragraph("Öffentlicher Schlüssel (Public encryption key)")) - writeKey(it, clientKeys.encryption_private_key) - it.add(Paragraph("\n")) - writeSigLine(it) + try { + return XMLUtil.parseIntoDom(res.bodyAsChannel().toInputStream()) + } catch (e: SAXException) { + throw EbicsError.Protocol("$phase: invalid XML bank reponse", e) + } catch (e: Exception) { + throw EbicsError.Transport("$phase: failed read bank response", e) } - pdfWriter.flush() - return po.toByteArray() } -/** - * POSTs raw EBICS XML to the bank and checks the two return codes: - * EBICS- and bank-technical. - * - * @param clientKeys client keys, used to sign the request. - * @param bankKeys bank keys, used to decrypt and validate the response. - * @param xmlReq raw EBICS request in XML. - * @param isEbics3 true in case the communication is EBICS 3, false - * @return [EbicsResponseContent] or throws [EbicsSideException] - */ -suspend fun postEbics( +suspend fun EbicsBTS.postBTS( client: HttpClient, - cfg: EbicsSetupConfig, - bankKeys: BankPublicKeysFile, xmlReq: ByteArray, - isEbics3: Boolean -): EbicsResponseContent { - val respXml = try { - client.postToBank(cfg.hostBaseUrl, xmlReq) - } catch (e: Exception) { - throw EbicsSideException( - "POSTing to ${cfg.hostBaseUrl} failed", - sideEc = EbicsSideError.HTTP_POST_FAILED, - e - ) - } - - // Parses the bank response from the raw XML and verifies - // the bank signature. - val doc = try { - XMLUtil.parseIntoDom(respXml) - } catch (e: Exception) { - throw EbicsSideException( - "Bank response apparently invalid", - sideEc = EbicsSideError.BANK_RESPONSE_IS_INVALID - ) - } + phase: String, +): EbicsResponse<BTSResponse> { + val doc = client.postToBank(cfg.hostBaseUrl, xmlReq, phase) if (!XMLUtil.verifyEbicsDocument( doc, bankKeys.bank_authentication_public_key, - isEbics3 + order.schema )) { - throw EbicsSideException( - "Bank signature did not verify", - sideEc = EbicsSideError.BANK_SIGNATURE_DIDNT_VERIFY - ) + throw EbicsError.Protocol("$phase: bank signature did not verify") + } + try { + return EbicsBTS.parseResponse(doc) + } catch (e: Exception) { + throw EbicsError.Protocol("$phase: invalid ebics response", e) } - if (isEbics3) - return ebics3toInternalRepr(doc) - return ebics25toInternalRepr(doc) } /** - * Checks that EBICS- and bank-technical return codes are both EBICS_OK. - * - * @param ebicsResponseContent valid response gotten from the bank. - * @return true only if both codes are EBICS_OK. - */ -private fun areCodesOk(ebicsResponseContent: EbicsResponseContent) = - ebicsResponseContent.technicalReturnCode == EbicsReturnCode.EBICS_OK && - ebicsResponseContent.bankReturnCode == EbicsReturnCode.EBICS_OK - -/** * Perform an EBICS download transaction. * * It conducts init -> transfer -> processing -> receipt phases. @@ -273,7 +161,6 @@ private fun areCodesOk(ebicsResponseContent: EbicsResponseContent) = * @param clientKeys client EBICS private keys. * @param bankKeys bank EBICS public keys. * @param reqXml raw EBICS XML request of the init phase. - * @param isEbics3 true for EBICS 3, false otherwise. * @param processing processing lambda receiving EBICS files as a byte stream if the transaction was not empty. * @return T if the transaction was successful. If the failure is at the EBICS * level EbicsSideException is thrown else ités the exception of the processing lambda. @@ -283,142 +170,98 @@ suspend fun ebicsDownload( cfg: EbicsSetupConfig, clientKeys: ClientPrivateKeysFile, bankKeys: BankPublicKeysFile, - reqXml: ByteArray, - isEbics3: Boolean, - processing: (InputStream) -> Unit + order: EbicsOrder, + startDate: Instant?, + endDate: Instant?, + processing: (InputStream) -> Unit, ) = coroutineScope { - val scope = this + val impl = EbicsBTS(cfg, bankKeys, clientKeys, order) + val parentScope = this + // We need to run the logic in a non-cancelable context because we need to send // a receipt for each open download transaction, otherwise we'll be stuck in an // error loop until the pending transaction timeout. // TODO find a way to cancel the pending transaction ? - withContext(NonCancellable) { - val initResp = postEbics(client, cfg, bankKeys, reqXml, isEbics3) - logger.debug("Download init phase done. EBICS- and bank-technical codes are: ${initResp.technicalReturnCode}, ${initResp.bankReturnCode}") - if (initResp.technicalReturnCode != EbicsReturnCode.EBICS_OK) { - throw Exception("Download init phase has EBICS-technical error: ${initResp.technicalReturnCode}") + withContext(NonCancellable) { + // Init phase + val initReq = impl.downloadInitialization(startDate, endDate) + val initResp = impl.postBTS(client, initReq, "Download init phase") + if (initResp.bankCode == EbicsReturnCode.EBICS_NO_DOWNLOAD_DATA_AVAILABLE) { + logger.debug("Download content is empty") + return@withContext } - if (initResp.bankReturnCode == EbicsReturnCode.EBICS_NO_DOWNLOAD_DATA_AVAILABLE) { - logger.debug("Download content is empty") - return@withContext - } else if (initResp.bankReturnCode != EbicsReturnCode.EBICS_OK) { - throw Exception("Download init phase has bank-technical error: ${initResp.bankReturnCode}") + val initContent = initResp.okOrFail("Download init phase") + val tId = requireNotNull(initContent.transactionID) { + "Download init phase: missing transaction ID" } - val tId = initResp.transactionID - ?: throw EbicsSideException( - "EBICS download init phase did not return a transaction ID, cannot do the transfer phase.", - sideEc = EbicsSideError.EBICS_UPLOAD_TRANSACTION_ID_MISSING - ) - logger.debug("EBICS download transaction passed the init phase, got ID: $tId") - val howManySegments = initResp.numSegments - if (howManySegments == null) { - throw Exception("Init response lacks the quantity of segments, failing.") + val howManySegments = requireNotNull(initContent.numSegments) { + "Download init phase: missing num segments" } - val ebicsChunks = mutableListOf<String>() - // Getting the chunk(s) - val firstDataChunk = initResp.orderDataEncChunk - ?: throw EbicsSideException( - "OrderData element not found, despite non empty payload, failing.", - sideEc = EbicsSideError.ORDER_DATA_ELEMENT_NOT_FOUND - ) - val dataEncryptionInfo = initResp.dataEncryptionInfo ?: run { - throw EbicsSideException( - "EncryptionInfo element not found, despite non empty payload, failing.", - sideEc = EbicsSideError.ENCRYPTION_INFO_ELEMENT_NOT_FOUND - ) + val firstDataChunk = requireNotNull(initContent.payloadChunk) { + "Download init phase: missing OrderData" } - ebicsChunks.add(firstDataChunk) - // proceed with the transfer phase. - for (x in 2 .. howManySegments) { - if (!scope.isActive) break - // request segment number x. - val transReq = if (isEbics3) - createEbics3DownloadTransferPhase(cfg, clientKeys, x, howManySegments, tId) - else createEbics25DownloadTransferPhase(cfg, clientKeys, x, howManySegments, tId) - - val transResp = postEbics(client, cfg, bankKeys, transReq, isEbics3) - if (!areCodesOk(transResp)) { - throw EbicsSideException( - "EBICS transfer segment #$x failed.", - sideEc = EbicsSideError.TRANSFER_SEGMENT_FAILED - ) + val dataEncryptionInfo = requireNotNull(initContent.dataEncryptionInfo) { + "Download init phase: missing EncryptionInfo" + } + + logger.debug("Download init phase for transaction '$tId'") + + /** Send download receipt */ + suspend fun receipt(success: Boolean) { + val xml = impl.downloadReceipt(tId, success) + impl.postBTS(client, xml, "Download receipt phase").okOrFail("Download receipt phase") + } + /** Throw if parent scope have been canceled */ + suspend fun checkCancellation() { + if (!parentScope.isActive) { + // First send a proper EBICS transaction failure + receipt(false) + // Send throw cancelation exception + throw CancellationException() } - val chunk = transResp.orderDataEncChunk - if (chunk == null) { - throw Exception("EBICS transfer phase lacks chunk #$x, failing.") + } + + // Transfer phase + val ebicsChunks = mutableListOf(firstDataChunk) + for (x in 2 .. howManySegments) { + checkCancellation() + val transReq = impl.downloadTransfer(x, howManySegments, tId) + val transResp = impl.postBTS(client, transReq, "Download transfer phase").okOrFail("Download transfer phase") + val chunk = requireNotNull(transResp.payloadChunk) { + "Download transfer phase: missing encrypted chunk" } ebicsChunks.add(chunk) } - suspend fun receipt(success: Boolean) { - val receiptXml = if (isEbics3) - createEbics3DownloadReceiptPhase(cfg, clientKeys, tId, success) - else createEbics25DownloadReceiptPhase(cfg, clientKeys, tId, success) - - // Sending the receipt to the bank. - postEbics( - client, - cfg, - bankKeys, - receiptXml, - isEbics3 - ) - } - if (scope.isActive) { - // all chunks gotten, shaping a meaningful response now. - val payloadBytes = decryptAndDecompressPayload( + + checkCancellation() + + // Decompress encrypted chunks + val payloadStream = try { + decryptAndDecompressPayload( clientKeys.encryption_private_key, dataEncryptionInfo, ebicsChunks ) - // Process payload - val res = runCatching { - processing(payloadBytes) - } - receipt(res.isSuccess) + } catch (e: Exception) { + throw EbicsError.Protocol("invalid chunks", e) + } - res.getOrThrow() - } else { - receipt(false) - throw CancellationException() + checkCancellation() + + // Run business logic + val res = runCatching { + processing(payloadStream) } + + // First send a proper EBICS transaction receipt + receipt(res.isSuccess) + // Then throw business logic exception if any + res.getOrThrow() } Unit } /** - * These errors affect an EBICS transaction regardless - * of the standard error codes. - */ -enum class EbicsSideError { - BANK_SIGNATURE_DIDNT_VERIFY, - BANK_RESPONSE_IS_INVALID, - ENCRYPTION_INFO_ELEMENT_NOT_FOUND, - ORDER_DATA_ELEMENT_NOT_FOUND, - TRANSFER_SEGMENT_FAILED, - /** - * This might indicate that the EBICS transaction had errors. - */ - EBICS_UPLOAD_TRANSACTION_ID_MISSING, - /** - * May be caused by a connection issue OR the HTTP response - * code was not 200 OK. Both cases should lead to retry as - * they are fixable or transient. - */ - HTTP_POST_FAILED -} - -/** - * Those errors happen before getting to validate the bank response - * and successfully verify its signature. They bring therefore NO - * business meaning and may be retried. - */ -class EbicsSideException( - msg: String, - val sideEc: EbicsSideError, - cause: Exception? = null -) : Exception(msg, cause) - -/** * Signs and the encrypts the data to send via EBICS. * * @param cfg configuration handle. @@ -433,43 +276,32 @@ fun prepareUploadPayload( clientKeys: ClientPrivateKeysFile, bankKeys: BankPublicKeysFile, payload: ByteArray, - isEbics3: Boolean ): PreparedUploadData { - val encryptionResult: CryptoUtil.EncryptionResult = if (isEbics3) { - val innerSignedEbicsXml = signOrderEbics3( // A006 signature. - payload, - clientKeys.signature_private_key, - cfg.ebicsPartnerId, - cfg.ebicsUserId - ) - val userSignatureDataEncrypted = CryptoUtil.encryptEbicsE002( - EbicsOrderUtil.encodeOrderDataXml(innerSignedEbicsXml), - bankKeys.bank_encryption_public_key - ) - userSignatureDataEncrypted - } else { - val innerSignedEbicsXml = signOrder( // A006 signature. - payload, - clientKeys.signature_private_key, - cfg.ebicsPartnerId, - cfg.ebicsUserId - ) - val userSignatureDataEncrypted = CryptoUtil.encryptEbicsE002( - EbicsOrderUtil.encodeOrderDataXml(innerSignedEbicsXml), - bankKeys.bank_encryption_public_key - ) - userSignatureDataEncrypted + val innerSignedEbicsXml = XmlBuilder.toBytes("UserSignatureData") { + attr("xmlns", "http://www.ebics.org/S002") + el("OrderSignatureData") { + el("SignatureVersion", "A006") + el("SignatureValue", CryptoUtil.signEbicsA006( + CryptoUtil.digestEbicsOrderA006(payload), + clientKeys.signature_private_key, + ).encodeBase64()) + el("PartnerID", cfg.ebicsPartnerId) + el("UserID", cfg.ebicsUserId) + } } - val plainTransactionKey = encryptionResult.plainTransactionKey - ?: throw Exception("Could not generate the transaction key, cannot encrypt the payload!") + val encryptionResult = CryptoUtil.encryptEbicsE002( + innerSignedEbicsXml.inputStream().deflate(), + bankKeys.bank_encryption_public_key + ) // Then only E002 symmetric (with ephemeral key) encrypt. - val compressedInnerPayload = payload.inputStream().deflate().readAllBytes() + val compressedInnerPayload = payload.inputStream().deflate() + // TODO stream val encryptedPayload = CryptoUtil.encryptEbicsE002withTransactionKey( compressedInnerPayload, bankKeys.bank_encryption_public_key, - plainTransactionKey + encryptionResult.plainTransactionKey ) - val encodedEncryptedPayload = Base64.getEncoder().encodeToString(encryptedPayload.encryptedData) + val encodedEncryptedPayload = encryptedPayload.encryptedData.encodeBase64() return PreparedUploadData( encryptionResult.encryptedTransactionKey, // ephemeral key @@ -480,32 +312,6 @@ fun prepareUploadPayload( } /** - * Possible states of an EBICS transaction. - */ -enum class EbicsPhase { - initialization, - transmission, - receipt -} - -/** - * Witnesses a failure in an EBICS communication. That - * implies that the bank response and its signature were - * both valid. - */ -class EbicsUploadException( - msg: String, - val phase: EbicsPhase, - val ebicsErrorCode: EbicsReturnCode, - /** - * If the error was EBICS-technical, then we might not - * even have interest on the business error code, therefore - * the value below may be null. - */ - val bankErrorCode: EbicsReturnCode? = null -) : Exception(msg) - -/** * Collects all the steps of an EBICS 3 upload transaction. * NOTE: this function could conveniently be reused for an EBICS 2.x * transaction, hence this function stays in this file. @@ -522,56 +328,122 @@ suspend fun doEbicsUpload( cfg: EbicsSetupConfig, clientKeys: ClientPrivateKeysFile, bankKeys: BankPublicKeysFile, - orderService: Ebics3Request.OrderDetails.Service, + order: EbicsOrder, payload: ByteArray, -): EbicsResponseContent = withContext(NonCancellable) { +): String = withContext(NonCancellable) { + val impl = EbicsBTS(cfg, bankKeys, clientKeys, order) // TODO use a lambda and pass the order detail there for atomicity ? - val preparedPayload = prepareUploadPayload(cfg, clientKeys, bankKeys, payload, isEbics3 = true) - val initXml = createEbics3RequestForUploadInitialization( - cfg, - preparedPayload, - bankKeys, - clientKeys, - orderService - ) - val initResp = postEbics( // may throw EbicsEarlyException - client, - cfg, - bankKeys, - initXml, - isEbics3 = true - ) - if (!areCodesOk(initResp)) throw EbicsUploadException( - "EBICS upload init failed", - phase = EbicsPhase.initialization, - ebicsErrorCode = initResp.technicalReturnCode, - bankErrorCode = initResp.bankReturnCode - ) - // Init phase OK, proceeding with the transfer phase. - val tId = initResp.transactionID - ?: throw EbicsSideException( - "EBICS upload init phase did not return a transaction ID, cannot do the transfer phase.", - sideEc = EbicsSideError.EBICS_UPLOAD_TRANSACTION_ID_MISSING - ) - val transferXml = createEbics3RequestForUploadTransferPhase( - cfg, - clientKeys, - tId, - preparedPayload - ) - val transferResp = postEbics( - client, - cfg, - bankKeys, - transferXml, - isEbics3 = true - ) - if (!areCodesOk(transferResp)) throw EbicsUploadException( - "EBICS upload transfer failed", - phase = EbicsPhase.transmission, - ebicsErrorCode = initResp.technicalReturnCode, - bankErrorCode = initResp.bankReturnCode - ) - // EBICS- and bank-technical codes were both EBICS_OK, success! - transferResp + val preparedPayload = prepareUploadPayload(cfg, clientKeys, bankKeys, payload) + + // Init phase + val initXml = impl.uploadInitialization(preparedPayload) + val initResp = impl.postBTS(client, initXml, "Upload init phase").okOrFail("Upload init phase") + val tId = requireNotNull(initResp.transactionID) { + "Upload init phase: missing transaction ID" + } + + // Transfer phase + val transferXml = impl.uploadTransfer(tId, preparedPayload) + val transferResp = impl.postBTS(client, transferXml, "Upload transfer phase").okOrFail("Upload transfer phase") + val orderId = requireNotNull(transferResp.orderID) { + "Upload transfer phase: missing order ID" + } + orderId +} + +/** + * @param size in bits + */ +fun getNonce(size: Int): ByteArray { + val sr = SecureRandom() + val ret = ByteArray(size / 8) + sr.nextBytes(ret) + return ret +} + +class PreparedUploadData( + val transactionKey: ByteArray, + val userSignatureDataEncrypted: ByteArray, + val dataDigest: ByteArray, + val encryptedPayloadChunks: List<String> +) + +class DataEncryptionInfo( + val transactionKey: ByteArray, + val bankPubDigest: ByteArray +) + +class EbicsResponse<T>( + val technicalCode: EbicsReturnCode, + val bankCode: EbicsReturnCode, + private val content: T +) { + /** Checks that return codes are both EBICS_OK or throw an exception */ + fun okOrFail(phase: String): T { + logger.debug("$phase return codes: $technicalCode & $bankCode") + require(technicalCode.kind() != EbicsReturnCode.Kind.Error) { + "$phase has technical error: $technicalCode" + } + require(bankCode.kind() != EbicsReturnCode.Kind.Error) { + "$phase has bank error: $bankCode" + } + return content + } +} + +// TODO import missing using a script +@Suppress("SpellCheckingInspection") +enum class EbicsReturnCode(val code: String) { + EBICS_OK("000000"), + EBICS_DOWNLOAD_POSTPROCESS_DONE("011000"), + EBICS_DOWNLOAD_POSTPROCESS_SKIPPED("011001"), + EBICS_TX_SEGMENT_NUMBER_UNDERRUN("011101"), + EBICS_AUTHENTICATION_FAILED("061001"), + EBICS_INVALID_REQUEST("061002"), + EBICS_INTERNAL_ERROR("061099"), + EBICS_TX_RECOVERY_SYNC("061101"), + EBICS_AUTHORISATION_ORDER_IDENTIFIER_FAILED("090003"), + EBICS_INVALID_ORDER_DATA_FORMAT("090004"), + EBICS_NO_DOWNLOAD_DATA_AVAILABLE("090005"), + EBICS_INVALID_USER_OR_USER_STATE("091002"), + EBICS_USER_UNKNOWN("091003"), + EBICS_INVALID_USER_STATE("091004"), + EBICS_INVALID_ORDER_IDENTIFIER("091005"), + EBICS_UNSUPPORTED_ORDER_TYPE("091006"), + EBICS_INVALID_XML("091010"), + EBICS_TX_MESSAGE_REPLAY("091103"), + EBICS_INVALID_REQUEST_CONTENT("091113"), + EBICS_PROCESSING_ERROR("091116"), + EBICS_ACCOUNT_AUTHORISATION_FAILED("091302"), + EBICS_AMOUNT_CHECK_FAILED("091303"); + + enum class Kind { + Information, + Note, + Warning, + Error + } + + fun kind(): Kind { + return when (val errorClass = code.substring(0..1)) { + "00" -> Kind.Information + "01" -> Kind.Note + "03" -> Kind.Warning + "06", "09" -> Kind.Error + else -> throw Exception("Unknown EBICS status code error class: $errorClass") + } + } + + companion object { + fun lookup(code: String): EbicsReturnCode { + for (x in entries) { + if (x.code == code) { + return x + } + } + throw Exception( + "Unknown EBICS status code: $code" + ) + } + } } \ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt @@ -0,0 +1,210 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.nexus.ebics + +import org.w3c.dom.Document +import tech.libeufin.common.crypto.CryptoUtil +import tech.libeufin.common.* +import tech.libeufin.nexus.* +import tech.libeufin.nexus.BankPublicKeysFile +import tech.libeufin.nexus.ClientPrivateKeysFile +import tech.libeufin.nexus.EbicsSetupConfig +import java.io.InputStream +import java.time.Instant +import java.time.ZoneId +import java.util.* +import javax.xml.datatype.DatatypeFactory +import java.security.interfaces.* + +/** EBICS protocol for key management */ +class Ebics3KeyMng( + private val cfg: EbicsSetupConfig, + private val clientKeys: ClientPrivateKeysFile +) { + fun INI(): ByteArray { + val inner = XMLOrderData(cfg, "ns2:SignaturePubKeyOrderData", "http://www.ebics.org/S001") { + el("ns2:SignaturePubKeyInfo") { + RSAKeyXml(clientKeys.signature_private_key) + el("ns2:SignatureVersion", "A006") + } + } + val doc = request("ebicsUnsecuredRequest") { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("PartnerID", cfg.ebicsPartnerId) + el("UserID", cfg.ebicsUserId) + el("OrderDetails") { + el("OrderType", "INI") + el("OrderAttribute", "DZNNN") + } + el("SecurityMedium", "0200") + } + el("mutable") + } + el("body/DataTransfer/OrderData", inner) + } + return XMLUtil.convertDomToBytes(doc) + } + + fun HIA(): ByteArray { + val inner = XMLOrderData(cfg, "ns2:HIARequestOrderData", "urn:org:ebics:H004") { + el("ns2:AuthenticationPubKeyInfo") { + RSAKeyXml(clientKeys.authentication_private_key) + el("ns2:AuthenticationVersion", "X002") + } + el("ns2:EncryptionPubKeyInfo") { + RSAKeyXml(clientKeys.encryption_private_key) + el("ns2:EncryptionVersion", "E002") + } + } + val doc = request("ebicsUnsecuredRequest") { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("PartnerID", cfg.ebicsPartnerId) + el("UserID", cfg.ebicsUserId) + el("OrderDetails") { + el("OrderType", "HIA") + el("OrderAttribute", "DZNNN") + } + el("SecurityMedium", "0200") + } + el("mutable") + } + el("body/DataTransfer/OrderData", inner) + } + return XMLUtil.convertDomToBytes(doc) + } + + fun HPB(): ByteArray { + val nonce = getNonce(128) + val doc = request("ebicsNoPubKeyDigestsRequest") { + el("header") { + attr("authenticate", "true") + el("static") { + el("HostID", cfg.ebicsHostId) + el("Nonce", nonce.encodeUpHex()) + el("Timestamp", Instant.now().xmlDateTime()) + el("PartnerID", cfg.ebicsPartnerId) + el("UserID", cfg.ebicsUserId) + el("OrderDetails") { + el("OrderType", "HPB") + el("OrderAttribute", "DZHNN") + } + el("SecurityMedium", "0000") + } + el("mutable") + } + el("AuthSignature") + el("body") + } + XMLUtil.signEbicsDocument(doc, clientKeys.authentication_private_key, "H004") + return XMLUtil.convertDomToBytes(doc) + } + + /* ----- Helpers ----- */ + + private fun request(name: String, build: XmlBuilder.() -> Unit): Document { + return XmlBuilder.toDom(name, "urn:org:ebics:H004") { + attr("http://www.w3.org/2000/xmlns/", "xmlns", "urn:org:ebics:H004") + attr("http://www.w3.org/2000/xmlns/", "xmlns:ds", "http://www.w3.org/2000/09/xmldsig#") + attr("Version", "H004") + attr("Revision", "1") + build() + } + } + + private fun XmlBuilder.RSAKeyXml(key: RSAPrivateCrtKey) { + el("ns2:PubKeyValue") { + el("ds:RSAKeyValue") { + el("ds:Modulus", key.modulus.encodeBase64()) + el("ds:Exponent", key.publicExponent.encodeBase64()) + } + } + } + + private fun XMLOrderData(cfg: EbicsSetupConfig, name: String, schema: String, build: XmlBuilder.() -> Unit): String { + return XmlBuilder.toBytes(name) { + attr("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#") + attr("xmlns:ns2", schema) + build() + el("ns2:PartnerID", cfg.ebicsPartnerId) + el("ns2:UserID", cfg.ebicsUserId) + }.inputStream().deflate().encodeBase64() + } + + companion object { + fun parseResponse(doc: Document, clientEncryptionKey: RSAPrivateCrtKey): EbicsResponse<InputStream?> { + return XmlDestructor.fromDoc(doc, "ebicsKeyManagementResponse") { + lateinit var technicalCode: EbicsReturnCode + lateinit var bankCode: EbicsReturnCode + var payload: InputStream? = null + one("header") { + one("mutable") { + technicalCode = EbicsReturnCode.lookup(one("ReturnCode").text()) + } + } + one("body") { + bankCode = EbicsReturnCode.lookup(one("ReturnCode").text()) + payload = opt("DataTransfer") { + val descriptionInfo = one("DataEncryptionInfo") { + DataEncryptionInfo( + one("TransactionKey").text().decodeBase64(), + one("EncryptionPubKeyDigest").text().decodeBase64() + ) + } + val chunk = one("OrderData").text().decodeBase64() + decryptAndDecompressPayload( + clientEncryptionKey, + descriptionInfo, + listOf(chunk) + ) + } + } + EbicsResponse( + technicalCode = technicalCode, + bankCode, + content = payload + ) + } + } + + fun parseHpbOrder(data: InputStream): Pair<RSAPublicKey, RSAPublicKey> { + return XmlDestructor.fromStream(data, "HPBResponseOrderData") { + val authPub = one("AuthenticationPubKeyInfo").one("PubKeyValue").one("RSAKeyValue") { + CryptoUtil.loadRsaPublicKeyFromComponents( + one("Modulus").text().decodeBase64(), + one("Exponent").text().decodeBase64(), + ) + } + val encPub = one("EncryptionPubKeyInfo").one("PubKeyValue").one("RSAKeyValue") { + CryptoUtil.loadRsaPublicKeyFromComponents( + one("Modulus").text().decodeBase64(), + one("Exponent").text().decodeBase64(), + ) + } + Pair(authPub, encPub) + } + } + } +} +\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsOrder.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsOrder.kt @@ -0,0 +1,59 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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.nexus.ebics + +// We will support more dialect in the future + +sealed class EbicsOrder(val schema: String) { + data class V2_5( + val type: String, + val attribute: String + ): EbicsOrder("H004") + data class V3( + val type: String, + val name: String? = null, + val scope: String? = null, + val messageName: String? = null, + val messageVersion: String? = null, + val container: String? = null, + ): EbicsOrder("H005") +} + +fun downloadDocService(doc: SupportedDocument, ebics2: Boolean): EbicsOrder { + return if (ebics2) { + when (doc) { + SupportedDocument.PAIN_002 -> EbicsOrder.V2_5("Z01", "DZHNN") + SupportedDocument.CAMT_052 -> EbicsOrder.V2_5("Z52", "DZHNN") + SupportedDocument.CAMT_053 -> EbicsOrder.V2_5("Z53", "DZHNN") + SupportedDocument.CAMT_054 -> EbicsOrder.V2_5("Z54", "DZHNN") + SupportedDocument.PAIN_002_LOGS -> EbicsOrder.V2_5("HAC", "DZHNN") + } + } else { + when (doc) { + SupportedDocument.PAIN_002 -> EbicsOrder.V3("BTD", "PSR", "CH", "pain.002", "10", "ZIP") + SupportedDocument.CAMT_052 -> EbicsOrder.V3("BTD", "STM", "CH", "camt.052", "08", "ZIP") + SupportedDocument.CAMT_053 -> EbicsOrder.V3("BTD", "EOP", "CH", "camt.053", "08", "ZIP") + SupportedDocument.CAMT_054 -> EbicsOrder.V3("BTD", "REP", "CH", "camt.054", "08", "ZIP") + SupportedDocument.PAIN_002_LOGS -> EbicsOrder.V3("HAC") + } + } +} + +fun uploadPaymentService(): EbicsOrder = + EbicsOrder.V3("BTU", "MCT", "CH", "pain.001", "09") diff --git a/nexus/src/test/kotlin/Ebics.kt b/nexus/src/test/kotlin/Ebics.kt @@ -1,90 +0,0 @@ -/* - * This file is part of LibEuFin. - * Copyright (C) 2024 Taler Systems S.A. - - * 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/> - */ - -import io.ktor.client.engine.mock.* -import io.ktor.http.* -import org.junit.Test -import tech.libeufin.ebics.XMLUtil -import tech.libeufin.ebics.ebics_h004.EbicsUnsecuredRequest -import tech.libeufin.nexus.ebics.* -import kotlin.io.path.Path -import kotlin.io.path.writeBytes -import kotlin.test.assertEquals - -class Ebics { - // Checks XML is valid and INI. - @Test - fun iniMessage() = conf { config -> - val msg = generateIniMessage(config, clientKeys) - val ini = XMLUtil.convertToJaxb<EbicsUnsecuredRequest>(msg.inputStream()) // ensures is valid - assertEquals(ini.value.header.static.orderDetails.orderType, "INI") // ensures is INI - } - - // Checks XML is valid and HIA. - @Test - fun hiaMessage() = conf { config -> - val msg = generateHiaMessage(config, clientKeys) - val ini = XMLUtil.convertToJaxb<EbicsUnsecuredRequest>(msg.inputStream()) // ensures is valid - assertEquals(ini.value.header.static.orderDetails.orderType, "HIA") // ensures is HIA - } - - // Checks XML is valid and HPB. - @Test - fun hpbMessage() = conf { config -> - val msg = generateHpbMessage(config, clientKeys) - val ini = XMLUtil.convertToJaxb<EbicsUnsecuredRequest>(msg.inputStream()) // ensures is valid - assertEquals(ini.value.header.static.orderDetails.orderType, "HPB") // ensures is HPB - } - // POSTs an EBICS message to the mock bank. Tests - // the main branches: unreachable bank, non-200 status - // code, and 200. - @Test - fun postMessage() = conf { config -> - val client404 = getMockedClient { - respondError(HttpStatusCode.NotFound) - } - val clientNoResponse = getMockedClient { - throw Exception("Network issue.") - } - val clientOk = getMockedClient { - respondOk("Not EBICS anyway.") - } - runCatching { - client404.postToBank("http://ignored.example.com/", "ignored".toByteArray()) - }.run { - val exp = exceptionOrNull()!! - assertEquals(exp.message, "Invalid response status: 404 Not Found") - } - runCatching { - clientNoResponse.postToBank("http://ignored.example.com/", "ignored".toByteArray()) - }.run { - val exp = exceptionOrNull()!! - assertEquals(exp.message, "Network issue.") - } - clientOk.postToBank("http://ignored.example.com/", "ignored".toByteArray()) - } - - // Tests that internal repr. of keys lead to valid PDF. - // Mainly tests that the function does not throw any error. - @Test - fun keysPdf() = conf { config -> - val pdf = generateKeysPdf(clientKeys, config) - Path("/tmp/libeufin-nexus-test-keys.pdf").writeBytes(pdf) - } -} -\ No newline at end of file diff --git a/nexus/src/test/kotlin/EbicsTest.kt b/nexus/src/test/kotlin/EbicsTest.kt @@ -0,0 +1,70 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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/> + */ + +import io.ktor.client.engine.mock.* +import io.ktor.http.* +import org.junit.Test +import tech.libeufin.nexus.* +import tech.libeufin.nexus.ebics.* +import kotlin.io.path.Path +import kotlin.io.path.writeBytes +import kotlin.test.* + +class EbicsTest { + // POSTs an EBICS message to the mock bank. Tests + // the main branches: unreachable bank, non-200 status + // code, and 200. + @Test + fun postMessage() = conf { config -> + assertFailsWith<EbicsError.Transport> { + getMockedClient { + respondError(HttpStatusCode.NotFound) + }.postToBank("http://ignored.example.com/", ByteArray(0), "Test") + }.run { + assertEquals("Test: bank HTTP error: 404 Not Found", message) + } + assertFailsWith<EbicsError.Transport> { + getMockedClient { + throw Exception("Simulate failure") + }.postToBank("http://ignored.example.com/", ByteArray(0), "Test") + }.run { + assertEquals("Test: failed to contact bank", message) + assertEquals("Simulate failure", cause!!.message) + } + assertFailsWith<EbicsError.Protocol> { + getMockedClient { + respondOk("<ebics broken></ebics>") + }.postToBank("http://ignored.example.com/", ByteArray(0), "Test") + }.run { + assertEquals("Test: invalid XML bank reponse", message) + assertEquals("Attribute name \"broken\" associated with an element type \"ebics\" must be followed by the ' = ' character.", cause!!.message) + } + getMockedClient { + respondOk("<ebics></ebics>") + }.postToBank("http://ignored.example.com/", ByteArray(0), "Test") + } + + // Tests that internal repr. of keys lead to valid PDF. + // Mainly tests that the function does not throw any error. + @Test + fun keysPdf() = conf { config -> + val pdf = generateKeysPdf(clientKeys, config) + Path("/tmp/libeufin-nexus-test-keys.pdf").writeBytes(pdf) + } +} +\ No newline at end of file diff --git a/nexus/src/test/kotlin/XmlCombinatorsTest.kt b/nexus/src/test/kotlin/XmlCombinatorsTest.kt @@ -0,0 +1,76 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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/> + */ + +import org.junit.Test +import tech.libeufin.nexus.XmlBuilder +import tech.libeufin.nexus.XMLUtil +import kotlin.test.assertEquals + +class XmlCombinatorsTest { + fun testBuilder(expected: String, root: String, builder: XmlBuilder.() -> Unit) { + val toBytes = XmlBuilder.toBytes(root, builder) + val toDom = XmlBuilder.toDom(root, null, builder) + //assertEquals(expected, toString) TODO fix empty tag being closed only with toString + assertEquals(expected, XMLUtil.convertDomToBytes(toDom).toString(Charsets.UTF_8)) + } + + @Test + fun testWithModularity() { + fun module(base: XmlBuilder) { + base.el("module") + } + testBuilder( + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><root><module/></root>", + "root" + ) { + module(this) + } + } + + @Test + fun testWithIterable() { + testBuilder( + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><iterable><endOfDocument><e1><e11>111</e11></e1><e2><e22>222</e22></e2><e3><e33>333</e33></e3><e4><e44>444</e44></e4><e5><e55>555</e55></e5><e6><e66>666</e66></e6><e7><e77>777</e77></e7><e8><e88>888</e88></e8><e9><e99>999</e99></e9><e10><e1010>101010</e1010></e10></endOfDocument></iterable>", + "iterable" + ) { + el("endOfDocument") { + for (i in 1..10) + el("e$i/e$i$i", "$i$i$i") + } + } + } + + @Test + fun testBasicXmlBuilding() { + testBuilder( + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><ebicsRequest version=\"H004\"><a><b><c attribute-of=\"c\"><d><e><f nested=\"true\"><g><h/></g></f></e></d></c></b></a><one_more/></ebicsRequest>", + "ebicsRequest" + ) { + attr("version", "H004") + el("a/b/c") { + attr("attribute-of", "c") + el("d/e/f") { + attr("nested", "true") + el("g/h") + } + } + el("one_more") + } + } +} diff --git a/nexus/src/test/kotlin/XmlUtilTest.kt b/nexus/src/test/kotlin/XmlUtilTest.kt @@ -0,0 +1,73 @@ +/* + * This file is part of LibEuFin. + * Copyright (C) 2024 Taler Systems S.A. + + * 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/> + */ + +import org.junit.Assert.assertTrue +import org.junit.Test +import tech.libeufin.common.crypto.CryptoUtil +import tech.libeufin.common.decodeBase64 +import tech.libeufin.nexus.XMLUtil +import java.security.KeyPairGenerator +import javax.xml.transform.stream.StreamSource + +class XmlUtilTest { + + @Test + fun basicSigningTest() { + val doc = XMLUtil.parseIntoDom(""" + <myMessage xmlns:ebics="urn:org:ebics:H004"> + <ebics:AuthSignature /> + <foo authenticate="true">Hello World</foo> + </myMessage> + """.trimIndent().toByteArray().inputStream()) + val kpg = KeyPairGenerator.getInstance("RSA") + kpg.initialize(2048) + val pair = kpg.genKeyPair() + val otherPair = kpg.genKeyPair() + XMLUtil.signEbicsDocument(doc, pair.private, "H004") + kotlin.test.assertTrue(XMLUtil.verifyEbicsDocument(doc, pair.public, "H004")) + kotlin.test.assertFalse(XMLUtil.verifyEbicsDocument(doc, otherPair.public, "H004")) + } + + @Test + fun multiAuthSigningTest() { + val doc = XMLUtil.parseIntoDom(""" + <myMessage xmlns:ebics="urn:org:ebics:H004"> + <ebics:AuthSignature /> + <foo authenticate="true">Hello World</foo> + <bar authenticate="true">Another one!</bar> + </myMessage> + """.trimIndent().toByteArray().inputStream()) + val kpg = KeyPairGenerator.getInstance("RSA") + kpg.initialize(2048) + val pair = kpg.genKeyPair() + XMLUtil.signEbicsDocument(doc, pair.private, "H004") + kotlin.test.assertTrue(XMLUtil.verifyEbicsDocument(doc, pair.public, "H004")) + } + + @Test + fun testRefSignature() { + val classLoader = ClassLoader.getSystemClassLoader() + val docText = classLoader.getResourceAsStream("signature1/doc.xml") + val doc = XMLUtil.parseIntoDom(docText) + val keyStream = classLoader.getResourceAsStream("signature1/public_key.txt") + val keyBytes = keyStream.decodeBase64().readAllBytes() + val key = CryptoUtil.loadRsaPublicKey(keyBytes) + assertTrue(XMLUtil.verifyEbicsDocument(doc, key, "H004")) + } +} +\ No newline at end of file diff --git a/ebics/src/test/resources/signature1/doc.xml b/nexus/src/test/resources/signature1/doc.xml diff --git a/ebics/src/test/resources/signature1/public_key.txt b/nexus/src/test/resources/signature1/public_key.txt diff --git a/settings.gradle b/settings.gradle @@ -2,5 +2,4 @@ rootProject.name = 'libeufin' include("bank") include("nexus") include("common") -include("testbench") -include("ebics") -\ No newline at end of file +include("testbench") +\ No newline at end of file diff --git a/testbench/src/main/kotlin/Main.kt b/testbench/src/main/kotlin/Main.kt @@ -121,8 +121,7 @@ class Cli : CliktCommand("Run integration tests on banks provider") { runBlocking { step("Init ${kind.name}") - if (ask("Reset DB ? y/n>") == "y") nexusCmd.test("dbinit -r $flags").assertOk() - else nexusCmd.test("dbinit $flags").assertOk() + nexusCmd.test("dbinit $flags").assertOk() val cmds = buildMap<String, suspend () -> Unit> { put("reset-db", suspend {