[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] branch master updated (90e9e680 -> 3b0aa461)
From: |
gnunet |
Subject: |
[libeufin] branch master updated (90e9e680 -> 3b0aa461) |
Date: |
Tue, 12 Mar 2024 11:03:10 +0100 |
This is an automated email from the git hooks/post-receive script.
antoine pushed a change to branch master
in repository libeufin.
from 90e9e680 project vesion 0.9.4a
new c5f106dd Simplify ebics mess
new 509c14f4 Ebics3 HAC
new 2cd837fe Use XML builder for Ebics3 download initialization
new b0387f14 Use XML builder for all Ebics3 download phases
new 4044e693 Use XML builder for all Ebics3 upload phases
new ff7e7905 Replace all Ebics3 JAXB logic with custom XML DSL
new c7344ce7 Clean EBICS3 protocol logic
new 86749086 Replace all Ebics2 JAXB logic with custom XML DSL
new ce979222 Replace JAXB everywhere
new 6f079d64 Merge ebics and nexus module
new 854803e6 Clean some code
new 8b0ca3db Clean & reafactor & optimize
new 298557c7 More simplification & refactoring
new 16b5d74c Better error message during ebics-setup
new 30eefb68 Eager base64 decoding for EBICS order data
new 861389ea Clean EBICS dialect logic
new 0d62875d Support both 2.5 and 3 EBICS version for download
new 0cc7f2a6 Clean code and fix tests
new 3b0aa461 Clean EBICS implementation, replace JAXB code with Kotlin DSL
XML combinators
The 19 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
Makefile | 4 -
common/src/main/kotlin/Cli.kt | 2 +-
common/src/main/kotlin/crypto/utils.kt | 48 +-
common/src/main/kotlin/{Stream.kt => helpers.kt} | 49 +-
common/src/main/kotlin/strings.kt | 90 -
common/src/test/kotlin/CryptoUtilTest.kt | 18 +-
ebics/build.gradle | 28 -
ebics/src/main/kotlin/Ebics.kt | 438 ----
ebics/src/main/kotlin/EbicsOrderUtil.kt | 88 -
ebics/src/main/kotlin/XMLUtil.kt | 548 -----
.../ebics_h004/EbicsKeyManagementResponse.kt | 102 -
.../src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt | 135 --
ebics/src/main/kotlin/ebics_h004/EbicsRequest.kt | 504 ----
ebics/src/main/kotlin/ebics_h004/EbicsResponse.kt | 348 ---
ebics/src/main/kotlin/ebics_h004/EbicsTypes.kt | 402 ----
.../kotlin/ebics_h004/EbicsUnsecuredRequest.kt | 223 --
.../main/kotlin/ebics_h004/HIARequestOrderData.kt | 33 -
.../main/kotlin/ebics_h004/HKDResponseOrderData.kt | 14 -
.../main/kotlin/ebics_h004/HPBResponseOrderData.kt | 21 -
.../main/kotlin/ebics_h004/HTDResponseOrderData.kt | 14 -
ebics/src/main/kotlin/ebics_h004/package-info.java | 13 -
ebics/src/main/kotlin/ebics_h005/Ebics3Request.kt | 587 -----
ebics/src/main/kotlin/ebics_h005/Ebics3Response.kt | 347 ---
ebics/src/main/kotlin/ebics_h005/Ebics3Types.kt | 401 ----
ebics/src/main/kotlin/ebics_h005/package-info.java | 13 -
ebics/src/main/kotlin/ebics_hev/EbicsMessages.kt | 92 -
ebics/src/main/kotlin/ebics_hev/package-info.java | 13 -
ebics/src/main/kotlin/ebics_s001/SignatureTypes.kt | 92 -
.../main/kotlin/ebics_s001/UserSignatureData.kt | 27 -
ebics/src/main/kotlin/ebics_s001/package-info.java | 13 -
ebics/src/main/kotlin/ebics_s002/SignatureTypes.kt | 91 -
.../kotlin/ebics_s002/UserSignatureDataEbics3.kt | 27 -
ebics/src/main/kotlin/ebics_s002/package-info.java | 13 -
ebics/src/main/resources/version.txt | 1 -
ebics/src/main/resources/xsd/camt.052.001.02.xsd | 1299 -----------
ebics/src/main/resources/xsd/camt.053.001.02.xsd | 1299 -----------
ebics/src/main/resources/xsd/camt.054.001.02.xsd | 1240 ----------
ebics/src/main/resources/xsd/ebics_H004.xsd | 11 -
ebics/src/main/resources/xsd/ebics_H005.xsd | 11 -
ebics/src/main/resources/xsd/ebics_hev.xsd | 135 --
.../resources/xsd/ebics_keymgmt_request_H004.xsd | 543 -----
.../resources/xsd/ebics_keymgmt_request_H005.xsd | 523 -----
.../resources/xsd/ebics_keymgmt_response_H004.xsd | 137 --
.../resources/xsd/ebics_keymgmt_response_H005.xsd | 137 --
ebics/src/main/resources/xsd/ebics_orders_H004.xsd | 1892 ---------------
ebics/src/main/resources/xsd/ebics_orders_H005.xsd | 2094 -----------------
.../src/main/resources/xsd/ebics_request_H004.xsd | 355 ---
.../src/main/resources/xsd/ebics_request_H005.xsd | 349 ---
.../src/main/resources/xsd/ebics_response_H004.xsd | 166 --
.../src/main/resources/xsd/ebics_response_H005.xsd | 167 --
.../main/resources/xsd/ebics_signature_S002.xsd | 177 --
ebics/src/main/resources/xsd/ebics_signatures.xsd | 217 --
ebics/src/main/resources/xsd/ebics_types_H004.xsd | 2426 --------------------
ebics/src/main/resources/xsd/ebics_types_H005.xsd | 1885 ---------------
.../main/resources/xsd/pain.001.001.03.ch.02.xsd | 1212 ----------
ebics/src/main/resources/xsd/pain.001.001.03.xsd | 922 --------
.../main/resources/xsd/pain.001.001.09.ch.03.xsd | 1733 --------------
ebics/src/main/resources/xsd/pain.002.001.13.xsd | 1253 ----------
.../src/main/resources/xsd/xmldsig-core-schema.xsd | 318 ---
ebics/src/test/kotlin/EbicsMessagesTest.kt | 365 ---
ebics/src/test/kotlin/EbicsOrderUtilTest.kt | 308 ---
ebics/src/test/kotlin/SignatureDataTest.kt | 97 -
ebics/src/test/kotlin/XmlCombinatorsTest.kt | 67 -
ebics/src/test/kotlin/XmlUtilTest.kt | 191 --
ebics/src/test/resources/ebics_hev.xml | 4 -
ebics/src/test/resources/ebics_ini_inner_key.xml | 14 -
.../test/resources/ebics_ini_request_sample.xml | 25 -
ebics/src/test/resources/hia_request.xml | 26 -
.../src/test/resources/hia_request_order_data.xml | 23 -
ebics/src/test/resources/hpb_request.xml | 43 -
nexus/build.gradle | 4 -
{ebics => nexus}/codegen.py | 4 +-
.../main/kotlin/tech/libeufin/nexus/EbicsFetch.kt | 74 +-
.../main/kotlin/tech/libeufin/nexus/EbicsSetup.kt | 136 +-
.../main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt | 114 +-
.../main/kotlin/tech/libeufin/nexus/Iso20022.kt | 5 +-
.../tech/libeufin/nexus}/Iso20022CodeSets.kt | 2 +-
.../tech/libeufin/nexus}/Iso20022Constants.kt | 2 +-
nexus/src/main/kotlin/tech/libeufin/nexus/Log.kt | 4 +-
nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt | 115 +
.../src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt | 175 ++
.../kotlin/tech/libeufin/nexus}/XmlCombinators.kt | 123 +-
.../kotlin/tech/libeufin/nexus/ebics/Ebics2.kt | 379 ---
.../kotlin/tech/libeufin/nexus/ebics/Ebics3.kt | 443 ----
.../kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt | 347 +++
.../tech/libeufin/nexus/ebics/EbicsCommon.kt | 616 ++---
.../tech/libeufin/nexus/ebics/EbicsKeyMng.kt | 210 ++
.../kotlin/tech/libeufin/nexus/ebics/EbicsOrder.kt | 59 +
nexus/src/test/kotlin/Ebics.kt | 90 -
nexus/src/test/kotlin/EbicsTest.kt | 70 +
nexus/src/test/kotlin/XmlCombinatorsTest.kt | 76 +
nexus/src/test/kotlin/XmlUtilTest.kt | 73 +
.../src/test/resources/signature1/doc.xml | 0
.../src/test/resources/signature1/public_key.txt | 0
settings.gradle | 3 +-
testbench/src/main/kotlin/Main.kt | 3 +-
96 files changed, 1648 insertions(+), 27982 deletions(-)
rename common/src/main/kotlin/{Stream.kt => helpers.kt} (55%)
delete mode 100644 common/src/main/kotlin/strings.kt
delete mode 100644 ebics/build.gradle
delete mode 100644 ebics/src/main/kotlin/Ebics.kt
delete mode 100644 ebics/src/main/kotlin/EbicsOrderUtil.kt
delete mode 100644 ebics/src/main/kotlin/XMLUtil.kt
delete mode 100644
ebics/src/main/kotlin/ebics_h004/EbicsKeyManagementResponse.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/EbicsNpkdRequest.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/EbicsRequest.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/EbicsResponse.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/EbicsTypes.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/EbicsUnsecuredRequest.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/HIARequestOrderData.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/HKDResponseOrderData.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/HPBResponseOrderData.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/HTDResponseOrderData.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h004/package-info.java
delete mode 100644 ebics/src/main/kotlin/ebics_h005/Ebics3Request.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h005/Ebics3Response.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h005/Ebics3Types.kt
delete mode 100644 ebics/src/main/kotlin/ebics_h005/package-info.java
delete mode 100644 ebics/src/main/kotlin/ebics_hev/EbicsMessages.kt
delete mode 100644 ebics/src/main/kotlin/ebics_hev/package-info.java
delete mode 100644 ebics/src/main/kotlin/ebics_s001/SignatureTypes.kt
delete mode 100644 ebics/src/main/kotlin/ebics_s001/UserSignatureData.kt
delete mode 100644 ebics/src/main/kotlin/ebics_s001/package-info.java
delete mode 100644 ebics/src/main/kotlin/ebics_s002/SignatureTypes.kt
delete mode 100644 ebics/src/main/kotlin/ebics_s002/UserSignatureDataEbics3.kt
delete mode 100644 ebics/src/main/kotlin/ebics_s002/package-info.java
delete mode 100644 ebics/src/main/resources/version.txt
delete mode 100644 ebics/src/main/resources/xsd/camt.052.001.02.xsd
delete mode 100644 ebics/src/main/resources/xsd/camt.053.001.02.xsd
delete mode 100644 ebics/src/main/resources/xsd/camt.054.001.02.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_hev.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_keymgmt_request_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_keymgmt_request_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_keymgmt_response_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_keymgmt_response_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_orders_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_orders_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_request_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_request_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_response_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_response_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_signature_S002.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_signatures.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_types_H004.xsd
delete mode 100644 ebics/src/main/resources/xsd/ebics_types_H005.xsd
delete mode 100644 ebics/src/main/resources/xsd/pain.001.001.03.ch.02.xsd
delete mode 100644 ebics/src/main/resources/xsd/pain.001.001.03.xsd
delete mode 100644 ebics/src/main/resources/xsd/pain.001.001.09.ch.03.xsd
delete mode 100644 ebics/src/main/resources/xsd/pain.002.001.13.xsd
delete mode 100644 ebics/src/main/resources/xsd/xmldsig-core-schema.xsd
delete mode 100644 ebics/src/test/kotlin/EbicsMessagesTest.kt
delete mode 100644 ebics/src/test/kotlin/EbicsOrderUtilTest.kt
delete mode 100644 ebics/src/test/kotlin/SignatureDataTest.kt
delete mode 100644 ebics/src/test/kotlin/XmlCombinatorsTest.kt
delete mode 100644 ebics/src/test/kotlin/XmlUtilTest.kt
delete mode 100644 ebics/src/test/resources/ebics_hev.xml
delete mode 100644 ebics/src/test/resources/ebics_ini_inner_key.xml
delete mode 100644 ebics/src/test/resources/ebics_ini_request_sample.xml
delete mode 100644 ebics/src/test/resources/hia_request.xml
delete mode 100644 ebics/src/test/resources/hia_request_order_data.xml
delete mode 100644 ebics/src/test/resources/hpb_request.xml
rename {ebics => nexus}/codegen.py (95%)
rename {ebics/src/main/kotlin =>
nexus/src/main/kotlin/tech/libeufin/nexus}/Iso20022CodeSets.kt (99%)
rename {ebics/src/main/kotlin =>
nexus/src/main/kotlin/tech/libeufin/nexus}/Iso20022Constants.kt (97%)
create mode 100644 nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt
create mode 100644 nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt
rename {ebics/src/main/kotlin =>
nexus/src/main/kotlin/tech/libeufin/nexus}/XmlCombinators.kt (52%)
delete mode 100644 nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt
delete mode 100644 nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt
create mode 100644 nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt
create mode 100644
nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt
create mode 100644
nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsOrder.kt
delete mode 100644 nexus/src/test/kotlin/Ebics.kt
create mode 100644 nexus/src/test/kotlin/EbicsTest.kt
create mode 100644 nexus/src/test/kotlin/XmlCombinatorsTest.kt
create mode 100644 nexus/src/test/kotlin/XmlUtilTest.kt
rename {ebics => nexus}/src/test/resources/signature1/doc.xml (100%)
rename {ebics => nexus}/src/test/resources/signature1/public_key.txt (100%)
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()
@@ -80,6 +77,22 @@ object CryptoUtil {
return pub
}
+ /**
+ * 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.
*/
@@ -109,36 +122,19 @@ object CryptoUtil {
return RsaCrtKeyPair(priv, pub)
}
- /**
- * 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
similarity index 55%
rename from common/src/main/kotlin/Stream.kt
rename to 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\.,;:'\+\-/\(\)?\*\[\]\{\}\\`´~
]|[!"#%&<>÷=@_$£]|[àáâäçèéêëìíîïñòóôöùúûüýßÀÁÂÄÇÈÉÊËÌÍÎÏÒÓÔÖÙÚÛÜÑ])*"/>
- </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]|[+|\?|/|\-|:|\(|\)|\.|,|'|\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+dA6O49eXP0Ar5UA
[...]
- </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+PUlk5oQim7B6eoNW2qo4Ljxu4jbFWLM4M7n4geL2
[...]
- </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
similarity index 95%
rename from ebics/codegen.py
rename to 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
@@ -66,53 +64,6 @@ data class FetchContext(
val fileLogger: FileLogger
)
-/**
- * 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()}")
@@ -91,43 +91,6 @@ private fun askUserToAcceptKeys(bankKeys:
BankPublicKeysFile): Boolean {
return userResponse == "yes, accept"
}
-/**
- * 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
@@ -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,28 +25,10 @@ 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.
*/
@@ -70,16 +52,6 @@ data class SubmissionContext(
val fileLogger: FileLogger
)
-/**
- * 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
@@ -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
similarity index 99%
rename from ebics/src/main/kotlin/Iso20022CodeSets.kt
rename to 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
similarity index 97%
rename from ebics/src/main/kotlin/Iso20022Constants.kt
rename to 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
similarity index 52%
rename from ebics/src/main/kotlin/XmlCombinators.kt
rename to 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,163 +109,48 @@ 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.
*
@@ -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,141 +170,97 @@ 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.
*
@@ -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
@@ -479,32 +311,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
@@ -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
similarity index 100%
rename from ebics/src/test/resources/signature1/doc.xml
rename to 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
similarity index 100%
rename from ebics/src/test/resources/signature1/public_key.txt
rename to 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 {
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libeufin] branch master updated (90e9e680 -> 3b0aa461),
gnunet <=