summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine A <>2024-03-12 11:02:45 +0100
committerAntoine A <>2024-03-12 11:02:45 +0100
commit3b0aa4610772ef5ace8442532b247f917e59af3a (patch)
treec68bf8973ca30af4ae5e75358a62d726f6eb21d1
parent90e9e6804f01793628b2abe0c2771fb96bf318e3 (diff)
parent0cc7f2a61b17f2870d1c8f9c45d0eb754a60a27b (diff)
downloadlibeufin-3b0aa4610772ef5ace8442532b247f917e59af3a.tar.gz
libeufin-3b0aa4610772ef5ace8442532b247f917e59af3a.tar.bz2
libeufin-3b0aa4610772ef5ace8442532b247f917e59af3a.zip
Clean EBICS implementation, replace JAXB code with Kotlin DSL XML combinators
-rw-r--r--Makefile4
-rw-r--r--common/src/main/kotlin/Cli.kt2
-rw-r--r--common/src/main/kotlin/crypto/utils.kt48
-rw-r--r--common/src/main/kotlin/helpers.kt (renamed from common/src/main/kotlin/Stream.kt)49
-rw-r--r--common/src/main/kotlin/strings.kt90
-rw-r--r--common/src/test/kotlin/CryptoUtilTest.kt18
-rw-r--r--ebics/build.gradle28
-rw-r--r--ebics/src/main/kotlin/Ebics.kt438
-rw-r--r--ebics/src/main/kotlin/EbicsOrderUtil.kt88
-rw-r--r--ebics/src/main/kotlin/XMLUtil.kt548
-rw-r--r--ebics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt102
-rw-r--r--ebics/src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt135
-rw-r--r--ebics/src/main/kotlin/ebics_h004/EbicsRequest.kt504
-rw-r--r--ebics/src/main/kotlin/ebics_h004/EbicsResponse.kt348
-rw-r--r--ebics/src/main/kotlin/ebics_h004/EbicsTypes.kt402
-rw-r--r--ebics/src/main/kotlin/ebics_h004/EbicsUnsecuredRequest.kt223
-rw-r--r--ebics/src/main/kotlin/ebics_h004/HIARequestOrderData.kt33
-rw-r--r--ebics/src/main/kotlin/ebics_h004/HKDResponseOrderData.kt14
-rw-r--r--ebics/src/main/kotlin/ebics_h004/HPBResponseOrderData.kt21
-rw-r--r--ebics/src/main/kotlin/ebics_h004/HTDResponseOrderData.kt14
-rw-r--r--ebics/src/main/kotlin/ebics_h004/package-info.java13
-rw-r--r--ebics/src/main/kotlin/ebics_h005/Ebics3Request.kt587
-rw-r--r--ebics/src/main/kotlin/ebics_h005/Ebics3Response.kt347
-rw-r--r--ebics/src/main/kotlin/ebics_h005/Ebics3Types.kt401
-rw-r--r--ebics/src/main/kotlin/ebics_h005/package-info.java13
-rw-r--r--ebics/src/main/kotlin/ebics_hev/EbicsMessages.kt92
-rw-r--r--ebics/src/main/kotlin/ebics_hev/package-info.java13
-rw-r--r--ebics/src/main/kotlin/ebics_s001/SignatureTypes.kt92
-rw-r--r--ebics/src/main/kotlin/ebics_s001/UserSignatureData.kt27
-rw-r--r--ebics/src/main/kotlin/ebics_s001/package-info.java13
-rw-r--r--ebics/src/main/kotlin/ebics_s002/SignatureTypes.kt91
-rw-r--r--ebics/src/main/kotlin/ebics_s002/UserSignatureDataEbics3.kt27
-rw-r--r--ebics/src/main/kotlin/ebics_s002/package-info.java13
-rw-r--r--ebics/src/main/resources/version.txt1
-rw-r--r--ebics/src/main/resources/xsd/camt.052.001.02.xsd1299
-rw-r--r--ebics/src/main/resources/xsd/camt.053.001.02.xsd1299
-rw-r--r--ebics/src/main/resources/xsd/camt.054.001.02.xsd1240
-rw-r--r--ebics/src/main/resources/xsd/ebics_H004.xsd11
-rw-r--r--ebics/src/main/resources/xsd/ebics_H005.xsd11
-rw-r--r--ebics/src/main/resources/xsd/ebics_hev.xsd135
-rw-r--r--ebics/src/main/resources/xsd/ebics_keymgmt_request_H004.xsd543
-rw-r--r--ebics/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd523
-rw-r--r--ebics/src/main/resources/xsd/ebics_keymgmt_response_H004.xsd137
-rw-r--r--ebics/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd137
-rw-r--r--ebics/src/main/resources/xsd/ebics_orders_H004.xsd1892
-rw-r--r--ebics/src/main/resources/xsd/ebics_orders_H005.xsd2094
-rw-r--r--ebics/src/main/resources/xsd/ebics_request_H004.xsd355
-rw-r--r--ebics/src/main/resources/xsd/ebics_request_H005.xsd349
-rw-r--r--ebics/src/main/resources/xsd/ebics_response_H004.xsd166
-rw-r--r--ebics/src/main/resources/xsd/ebics_response_H005.xsd167
-rw-r--r--ebics/src/main/resources/xsd/ebics_signature_S002.xsd177
-rw-r--r--ebics/src/main/resources/xsd/ebics_signatures.xsd217
-rw-r--r--ebics/src/main/resources/xsd/ebics_types_H004.xsd2426
-rw-r--r--ebics/src/main/resources/xsd/ebics_types_H005.xsd1885
-rw-r--r--ebics/src/main/resources/xsd/pain.001.001.03.ch.02.xsd1212
-rw-r--r--ebics/src/main/resources/xsd/pain.001.001.03.xsd922
-rw-r--r--ebics/src/main/resources/xsd/pain.001.001.09.ch.03.xsd1733
-rw-r--r--ebics/src/main/resources/xsd/pain.002.001.13.xsd1253
-rw-r--r--ebics/src/main/resources/xsd/xmldsig-core-schema.xsd318
-rw-r--r--ebics/src/test/kotlin/EbicsMessagesTest.kt365
-rw-r--r--ebics/src/test/kotlin/EbicsOrderUtilTest.kt308
-rw-r--r--ebics/src/test/kotlin/SignatureDataTest.kt97
-rw-r--r--ebics/src/test/kotlin/XmlCombinatorsTest.kt67
-rw-r--r--ebics/src/test/kotlin/XmlUtilTest.kt191
-rw-r--r--ebics/src/test/resources/ebics_hev.xml4
-rw-r--r--ebics/src/test/resources/ebics_ini_inner_key.xml14
-rw-r--r--ebics/src/test/resources/ebics_ini_request_sample.xml25
-rw-r--r--ebics/src/test/resources/hia_request.xml26
-rw-r--r--ebics/src/test/resources/hia_request_order_data.xml23
-rw-r--r--ebics/src/test/resources/hpb_request.xml43
-rw-r--r--nexus/build.gradle4
-rw-r--r--nexus/codegen.py (renamed from ebics/codegen.py)4
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt74
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt136
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt114
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt5
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt (renamed from ebics/src/main/kotlin/Iso20022CodeSets.kt)2
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022Constants.kt (renamed from ebics/src/main/kotlin/Iso20022Constants.kt)2
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Log.kt4
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt115
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt175
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt (renamed from ebics/src/main/kotlin/XmlCombinators.kt)123
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt379
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt443
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt347
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt616
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt210
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsOrder.kt59
-rw-r--r--nexus/src/test/kotlin/Ebics.kt90
-rw-r--r--nexus/src/test/kotlin/EbicsTest.kt70
-rw-r--r--nexus/src/test/kotlin/XmlCombinatorsTest.kt76
-rw-r--r--nexus/src/test/kotlin/XmlUtilTest.kt73
-rw-r--r--nexus/src/test/resources/signature1/doc.xml (renamed from ebics/src/test/resources/signature1/doc.xml)0
-rw-r--r--nexus/src/test/resources/signature1/public_key.txt (renamed from ebics/src/test/resources/signature1/public_key.txt)0
-rw-r--r--settings.gradle3
-rw-r--r--testbench/src/main/kotlin/Main.kt3
96 files changed, 1648 insertions, 27982 deletions
diff --git a/Makefile b/Makefile
index 864bff0c..004dc256 100644
--- 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
index 52c3ada3..fcf17688 100644
--- 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/crypto/utils.kt b/common/src/main/kotlin/crypto/utils.kt
index 6bad9741..2f98e064 100644
--- 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/Stream.kt b/common/src/main/kotlin/helpers.kt
index f20740d7..cd803f64 100644
--- a/common/src/main/kotlin/Stream.kt
+++ b/common/src/main/kotlin/helpers.kt
@@ -19,12 +19,48 @@
package tech.libeufin.common
-import java.io.FilterInputStream
-import java.io.InputStream
+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) {
@@ -46,6 +82,15 @@ fun InputStream.unzipEach(lambda: (String, InputStream) -> Unit) {
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)
diff --git a/common/src/main/kotlin/strings.kt b/common/src/main/kotlin/strings.kt
deleted file mode 100644
index 3fa5f564..00000000
--- a/common/src/main/kotlin/strings.kt
+++ /dev/null
@@ -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
index 11d87055..82f18ab9 100644
--- 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
deleted file mode 100644
index 59a3c51b..00000000
--- a/ebics/build.gradle
+++ /dev/null
@@ -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/src/main/kotlin/Ebics.kt b/ebics/src/main/kotlin/Ebics.kt
deleted file mode 100644
index e335e502..00000000
--- a/ebics/src/main/kotlin/Ebics.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 79c78a29..00000000
--- a/ebics/src/main/kotlin/EbicsOrderUtil.kt
+++ /dev/null
@@ -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/XMLUtil.kt b/ebics/src/main/kotlin/XMLUtil.kt
deleted file mode 100644
index fbebc124..00000000
--- a/ebics/src/main/kotlin/XMLUtil.kt
+++ /dev/null
@@ -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/ebics_h004/EbicsKeyManagementResponse.kt b/ebics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt
deleted file mode 100644
index 74d99c94..00000000
--- a/ebics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 2330ca0b..00000000
--- a/ebics/src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 7ca7c6b9..00000000
--- a/ebics/src/main/kotlin/ebics_h004/EbicsRequest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 373bb8f3..00000000
--- a/ebics/src/main/kotlin/ebics_h004/EbicsResponse.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index a2486408..00000000
--- a/ebics/src/main/kotlin/ebics_h004/EbicsTypes.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 3269f70c..00000000
--- a/ebics/src/main/kotlin/ebics_h004/EbicsUnsecuredRequest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 6268099b..00000000
--- a/ebics/src/main/kotlin/ebics_h004/HIARequestOrderData.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 92930155..00000000
--- a/ebics/src/main/kotlin/ebics_h004/HKDResponseOrderData.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 65b4098b..00000000
--- a/ebics/src/main/kotlin/ebics_h004/HPBResponseOrderData.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 46954355..00000000
--- a/ebics/src/main/kotlin/ebics_h004/HTDResponseOrderData.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index a16e907c..00000000
--- a/ebics/src/main/kotlin/ebics_h004/package-info.java
+++ /dev/null
@@ -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
deleted file mode 100644
index c8370d4c..00000000
--- a/ebics/src/main/kotlin/ebics_h005/Ebics3Request.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index dd4b18a2..00000000
--- a/ebics/src/main/kotlin/ebics_h005/Ebics3Response.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index a469217c..00000000
--- a/ebics/src/main/kotlin/ebics_h005/Ebics3Types.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index a5e16343..00000000
--- a/ebics/src/main/kotlin/ebics_h005/package-info.java
+++ /dev/null
@@ -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
deleted file mode 100644
index 506ba9fa..00000000
--- a/ebics/src/main/kotlin/ebics_hev/EbicsMessages.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 8d2c7b54..00000000
--- a/ebics/src/main/kotlin/ebics_hev/package-info.java
+++ /dev/null
@@ -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
deleted file mode 100644
index 4781ba26..00000000
--- a/ebics/src/main/kotlin/ebics_s001/SignatureTypes.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 7eb5e0ed..00000000
--- a/ebics/src/main/kotlin/ebics_s001/UserSignatureData.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index adda5875..00000000
--- a/ebics/src/main/kotlin/ebics_s001/package-info.java
+++ /dev/null
@@ -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
deleted file mode 100644
index c1d48e9b..00000000
--- a/ebics/src/main/kotlin/ebics_s002/SignatureTypes.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 082d0681..00000000
--- a/ebics/src/main/kotlin/ebics_s002/UserSignatureDataEbics3.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 5ddb1f77..00000000
--- a/ebics/src/main/kotlin/ebics_s002/package-info.java
+++ /dev/null
@@ -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
deleted file mode 100644
index 359d0539..00000000
--- a/ebics/src/main/resources/version.txt
+++ /dev/null
@@ -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
deleted file mode 100644
index 52abd831..00000000
--- a/ebics/src/main/resources/xsd/camt.052.001.02.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 0dc3b77e..00000000
--- a/ebics/src/main/resources/xsd/camt.053.001.02.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index b284c6dd..00000000
--- a/ebics/src/main/resources/xsd/camt.054.001.02.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index c5f7ec2c..00000000
--- a/ebics/src/main/resources/xsd/ebics_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 149bf263..00000000
--- a/ebics/src/main/resources/xsd/ebics_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 8ee84587..00000000
--- a/ebics/src/main/resources/xsd/ebics_hev.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 4a3d2b0b..00000000
--- a/ebics/src/main/resources/xsd/ebics_keymgmt_request_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index cb93d3c4..00000000
--- a/ebics/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 6de6984f..00000000
--- a/ebics/src/main/resources/xsd/ebics_keymgmt_response_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index dfc33909..00000000
--- a/ebics/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index dfb3914b..00000000
--- a/ebics/src/main/resources/xsd/ebics_orders_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 30db1213..00000000
--- a/ebics/src/main/resources/xsd/ebics_orders_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index efae61d9..00000000
--- a/ebics/src/main/resources/xsd/ebics_request_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index dc7ad70a..00000000
--- a/ebics/src/main/resources/xsd/ebics_request_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index f14ff99b..00000000
--- a/ebics/src/main/resources/xsd/ebics_response_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 841286b7..00000000
--- a/ebics/src/main/resources/xsd/ebics_response_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 3127faa7..00000000
--- a/ebics/src/main/resources/xsd/ebics_signature_S002.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 79abed9b..00000000
--- a/ebics/src/main/resources/xsd/ebics_signatures.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 461e377d..00000000
--- a/ebics/src/main/resources/xsd/ebics_types_H004.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index ea13f06b..00000000
--- a/ebics/src/main/resources/xsd/ebics_types_H005.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index b8ecce02..00000000
--- a/ebics/src/main/resources/xsd/pain.001.001.03.ch.02.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 60cd5d71..00000000
--- a/ebics/src/main/resources/xsd/pain.001.001.03.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index f12da93c..00000000
--- a/ebics/src/main/resources/xsd/pain.001.001.09.ch.03.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 01d18ba4..00000000
--- a/ebics/src/main/resources/xsd/pain.002.001.13.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 3c397a63..00000000
--- a/ebics/src/main/resources/xsd/xmldsig-core-schema.xsd
+++ /dev/null
@@ -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
deleted file mode 100644
index 28820374..00000000
--- a/ebics/src/test/kotlin/EbicsMessagesTest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 1e7afbc1..00000000
--- a/ebics/src/test/kotlin/EbicsOrderUtilTest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 9c5e4da6..00000000
--- a/ebics/src/test/kotlin/SignatureDataTest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 8d722414..00000000
--- a/ebics/src/test/kotlin/XmlCombinatorsTest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 8b8f340f..00000000
--- a/ebics/src/test/kotlin/XmlUtilTest.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 9f4598fe..00000000
--- a/ebics/src/test/resources/ebics_hev.xml
+++ /dev/null
@@ -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
deleted file mode 100644
index 7e199f4f..00000000
--- a/ebics/src/test/resources/ebics_ini_inner_key.xml
+++ /dev/null
@@ -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
deleted file mode 100644
index a9237a91..00000000
--- a/ebics/src/test/resources/ebics_ini_request_sample.xml
+++ /dev/null
@@ -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
deleted file mode 100644
index 0089a363..00000000
--- a/ebics/src/test/resources/hia_request.xml
+++ /dev/null
@@ -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
deleted file mode 100644
index cd1f4e4f..00000000
--- a/ebics/src/test/resources/hia_request_order_data.xml
+++ /dev/null
@@ -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
deleted file mode 100644
index 3a630fdd..00000000
--- a/ebics/src/test/resources/hpb_request.xml
+++ /dev/null
@@ -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
index be202f45..56eda968 100644
--- 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/ebics/codegen.py b/nexus/codegen.py
index 7b145662..634a9842 100644
--- a/ebics/codegen.py
+++ b/nexus/codegen.py
@@ -58,7 +58,7 @@ def iso20022codegen():
// THIS FILE IS GENERATED, DO NOT EDIT
-package tech.libeufin.ebics
+package tech.libeufin.nexus
{extractCodeSet("ExternalStatusReason1Code", "ExternalStatusReasonCode")}
@@ -66,7 +66,7 @@ package tech.libeufin.ebics
{extractCodeSet("ExternalPaymentTransactionStatus1Code", "ExternalPaymentTransactionStatusCode")}
"""
- with open("src/main/kotlin/Iso20022CodeSets.kt", "w") as file1:
+ 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
index 6b88362c..ca7b9116 100644
--- 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
index a9e595f4..b0cbc299 100644
--- 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
index d38ee64c..82c1a459 100644
--- 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
index fb9c03ce..a9f44077 100644
--- 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/ebics/src/main/kotlin/Iso20022CodeSets.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt
index f5e338df..bc2c7eae 100644
--- a/ebics/src/main/kotlin/Iso20022CodeSets.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022CodeSets.kt
@@ -19,7 +19,7 @@
// THIS FILE IS GENERATED, DO NOT EDIT
-package tech.libeufin.ebics
+package tech.libeufin.nexus
enum class ExternalStatusReasonCode(val isoCode: String, val description: String) {
AB01("AbortedClearingTimeout", "Clearing process aborted due to timeout."),
diff --git a/ebics/src/main/kotlin/Iso20022Constants.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022Constants.kt
index 961f5f90..abc7bc80 100644
--- a/ebics/src/main/kotlin/Iso20022Constants.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022Constants.kt
@@ -17,7 +17,7 @@
* <http://www.gnu.org/licenses/>
*/
-package tech.libeufin.ebics
+package tech.libeufin.nexus
enum class HacAction(val description: String) {
FILE_UPLOAD("File submitted to the bank"),
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Log.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Log.kt
index 9b4867d1..1367c97c 100644
--- 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
new file mode 100644
index 00000000..a485477c
--- /dev/null
+++ 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
new file mode 100644
index 00000000..2893f367
--- /dev/null
+++ 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/ebics/src/main/kotlin/XmlCombinators.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt
index ce1c9f37..cfb93782 100644
--- a/ebics/src/main/kotlin/XmlCombinators.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt
@@ -17,19 +17,64 @@
* <http://www.gnu.org/licenses/>
*/
-package tech.libeufin.ebics
+package tech.libeufin.nexus
-import org.w3c.dom.Element
+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
-class XmlBuilder(private val w: XMLStreamWriter) {
- fun el(path: String, lambda: XmlBuilder.() -> Unit = {}) {
+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)
}
@@ -39,35 +84,42 @@ class XmlBuilder(private val w: XMLStreamWriter) {
}
}
- fun el(path: String, content: String) {
- el(path) {
- text(content)
- }
+ override fun attr(namespace: String, name: String, value: String) {
+ w.writeAttribute(namespace, name, value)
}
- fun attr(name: String, value: String) {
+ override fun attr(name: String, value: String) {
w.writeAttribute(name, value)
}
- fun text(content: String) {
+ override 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()
+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)
@@ -131,13 +183,22 @@ class XmlDestructor internal constructor(private val el: Element) {
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}'")
+ 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)
+ }
}
- 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
deleted file mode 100644
index dd2cd67b..00000000
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt
+++ /dev/null
@@ -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
deleted file mode 100644
index 09aac3df..00000000
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt
+++ /dev/null
@@ -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
new file mode 100644
index 00000000..356d4b96
--- /dev/null
+++ 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
index c4231455..74c1dd32 100644
--- 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
new file mode 100644
index 00000000..a6d965e5
--- /dev/null
+++ 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
new file mode 100644
index 00000000..3c73fff0
--- /dev/null
+++ 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
deleted file mode 100644
index a1c86f20..00000000
--- a/nexus/src/test/kotlin/Ebics.kt
+++ /dev/null
@@ -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
new file mode 100644
index 00000000..a67a48d6
--- /dev/null
+++ 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
new file mode 100644
index 00000000..aeb8b327
--- /dev/null
+++ 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
new file mode 100644
index 00000000..03941f3f
--- /dev/null
+++ 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
index 271f8429..271f8429 100644
--- 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
index 6d52df58..6d52df58 100644
--- 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
index 48e088f8..310fbee3 100644
--- 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
index cf50c59d..1c21d8da 100644
--- 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 {