iso_20022_caad/
caad_003_001_02.rs

1// Copyright 2023 Emergent Financial, LLC - All Rights Reserved
2//
3//
4// This software is licensed under the Emergent Financial Limited Public License Version 1.0
5// (EF-LPLv1). You may use, copy, modify, and distribute this software under the terms and
6// conditions of the EF-LPL. For more information, please refer to the full text of the license
7// at https://github.com/emergentfinancial/ef-lpl.
8//
9//
10// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
11// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
14// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
15// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16//
17// See ISO-20022 Intellectual Property Rights Policy at
18// <https://www.iso20022.org/intellectual-property-rights>
19// for more information.
20
21use validator::Validate;
22
23::lazy_static::lazy_static! {
24    static ref EXTERNAL_ENCRYPTED_ELEMENT_IDENTIFICATION_1_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9A-F][0-9A-F]){1,3}"#).unwrap();
25}
26
27::lazy_static::lazy_static! {
28    static ref MAX_32_HEX_BINARY_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9A-F][0-9A-F]){1,32}"#).unwrap();
29}
30
31::lazy_static::lazy_static! {
32    static ref MAX_8_HEX_BINARY_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9A-F][0-9A-F]){1,8}"#).unwrap();
33}
34
35::lazy_static::lazy_static! {
36    static ref MAX_35_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
37}
38
39::lazy_static::lazy_static! {
40    static ref MAX_4_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,4}"#).unwrap();
41}
42
43::lazy_static::lazy_static! {
44    static ref MAX_500_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
45}
46
47::lazy_static::lazy_static! {
48    static ref MAX_3_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,3}"#).unwrap();
49}
50
51::lazy_static::lazy_static! {
52    static ref ISO_MAX_3_A_COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,3}"#).unwrap();
53}
54
55::lazy_static::lazy_static! {
56    static ref MAX_2_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,2}"#).unwrap();
57}
58
59::lazy_static::lazy_static! {
60    static ref MIN_5_MAX_16_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
61}
62
63::lazy_static::lazy_static! {
64    static ref MAX_5_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,5}"#).unwrap();
65}
66
67::lazy_static::lazy_static! {
68    static ref ISO_3_NUMERIC_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{3,3}"#).unwrap();
69}
70
71::lazy_static::lazy_static! {
72    static ref MAX_15_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,15}"#).unwrap();
73}
74
75::lazy_static::lazy_static! {
76    static ref MAX_100_K_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
77}
78
79::lazy_static::lazy_static! {
80    static ref MAX_12_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,12}"#).unwrap();
81}
82
83::lazy_static::lazy_static! {
84    static ref MAX_9999_HEX_BINARY_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9A-F][0-9A-F]){1,9999}"#).unwrap();
85}
86
87::lazy_static::lazy_static! {
88    static ref MAX_140_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
89}
90
91::lazy_static::lazy_static! {
92    static ref EXACT_1_HEX_BINARY_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9A-F][0-9A-F]){1}"#).unwrap();
93}
94
95::lazy_static::lazy_static! {
96    static ref MAX_8_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,8}"#).unwrap();
97}
98
99::lazy_static::lazy_static! {
100    static ref ISO_8583_RESPONSE_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9A-Z]{2,2}"#).unwrap();
101}
102
103::lazy_static::lazy_static! {
104    static ref MAX_5000_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
105}
106
107::lazy_static::lazy_static! {
108    static ref MAX_2_MB_BINARY_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Za-z0-9+/]{4}*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"#).unwrap();
109}
110
111::lazy_static::lazy_static! {
112    static ref ISO_3_NUMERIC_COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{3,3}"#).unwrap();
113}
114
115/// Returns the namespace of the schema
116pub fn namespace() -> String {
117    "urn:iso:std:iso:20022:tech:xsd:caad.003.001.02".to_string()
118}
119
120#[derive(
121    Debug,
122    Default,
123    Clone,
124    PartialEq,
125    ::serde::Serialize,
126    ::serde::Deserialize,
127    ::derive_builder::Builder,
128    ::validator::Validate,
129)]
130pub struct ExternalEncryptedElementIdentification1Code {
131    #[validate(regex = "EXTERNAL_ENCRYPTED_ELEMENT_IDENTIFICATION_1_CODE_REGEX")]
132    #[serde(rename = "$text")]
133    pub value: String,
134}
135#[derive(
136    Debug,
137    Default,
138    Clone,
139    PartialEq,
140    ::serde::Serialize,
141    ::serde::Deserialize,
142    ::derive_builder::Builder,
143    ::validator::Validate,
144)]
145pub struct IsoDate {
146    #[serde(rename = "$text")]
147    pub value: ::chrono::NaiveDate,
148}
149#[derive(
150    Debug,
151    Default,
152    Clone,
153    PartialEq,
154    ::serde::Serialize,
155    ::serde::Deserialize,
156    ::derive_builder::Builder,
157    ::validator::Validate,
158)]
159pub struct Parameter7 {
160    #[serde(rename = "InitlstnVctr", skip_serializing_if = "Option::is_none")]
161    pub initlstn_vctr: Option<Max500Binary>,
162    #[serde(rename = "BPddg", skip_serializing_if = "Option::is_none")]
163    pub b_pddg: Option<BytePadding1Code>,
164}
165#[derive(
166    Debug,
167    Default,
168    Clone,
169    PartialEq,
170    ::serde::Serialize,
171    ::serde::Deserialize,
172    ::derive_builder::Builder,
173    ::validator::Validate,
174)]
175pub struct Max32HexBinaryText {
176    #[validate(regex = "MAX_32_HEX_BINARY_TEXT_REGEX")]
177    #[serde(rename = "$text")]
178    pub value: String,
179}
180#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
181pub enum EncryptedDataFormat1Code {
182    #[serde(rename = "ASCI")]
183    Asci,
184    #[serde(rename = "BINF")]
185    Binf,
186    #[serde(rename = "EBCD")]
187    Ebcd,
188    #[serde(rename = "HEXF")]
189    Hexf,
190    #[serde(rename = "OTHN")]
191    Othn,
192    #[serde(rename = "OTHP")]
193    Othp,
194    #[default]
195    Unknown,
196}
197#[derive(
198    Debug,
199    Default,
200    Clone,
201    PartialEq,
202    ::serde::Serialize,
203    ::serde::Deserialize,
204    ::derive_builder::Builder,
205    ::validator::Validate,
206)]
207pub struct Amount17 {
208    #[validate]
209    #[serde(rename = "Amt")]
210    pub amt: ImpliedCurrencyAndAmount,
211    #[serde(rename = "Ccy", skip_serializing_if = "Option::is_none")]
212    pub ccy: Option<Iso3NumericCurrencyCode>,
213    #[serde(rename = "CdtDbt", skip_serializing_if = "Option::is_none")]
214    pub cdt_dbt: Option<CreditDebit3Code>,
215}
216#[derive(
217    Debug,
218    Default,
219    Clone,
220    PartialEq,
221    ::serde::Serialize,
222    ::serde::Deserialize,
223    ::derive_builder::Builder,
224    ::validator::Validate,
225)]
226pub struct Max8HexBinaryText {
227    #[validate(regex = "MAX_8_HEX_BINARY_TEXT_REGEX")]
228    #[serde(rename = "$text")]
229    pub value: String,
230}
231#[derive(
232    Debug,
233    Default,
234    Clone,
235    PartialEq,
236    ::serde::Serialize,
237    ::serde::Deserialize,
238    ::derive_builder::Builder,
239    ::validator::Validate,
240)]
241pub struct KekIdentifier2 {
242    #[validate]
243    #[serde(rename = "KeyId")]
244    pub key_id: Max140Text,
245    #[validate]
246    #[serde(rename = "KeyVrsn")]
247    pub key_vrsn: Max140Text,
248    #[serde(rename = "SeqNb", skip_serializing_if = "Option::is_none")]
249    pub seq_nb: Option<Number>,
250    #[serde(rename = "DerivtnId", skip_serializing_if = "Option::is_none")]
251    pub derivtn_id: Option<Min5Max16Binary>,
252}
253#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
254pub enum CreditDebit3Code {
255    #[serde(rename = "CRDT")]
256    Crdt,
257    #[serde(rename = "DBIT")]
258    Dbit,
259    #[default]
260    Unknown,
261}
262#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
263pub enum UserInterface7Code {
264    #[serde(rename = "OCAI")]
265    Ocai,
266    #[serde(rename = "CLRL")]
267    Clrl,
268    #[serde(rename = "CLRA")]
269    Clra,
270    #[default]
271    Unknown,
272}
273#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
274pub enum PartyType17Code {
275    #[serde(rename = "OTHN")]
276    Othn,
277    #[serde(rename = "OTHP")]
278    Othp,
279    #[serde(rename = "ACQR")]
280    Acqr,
281    #[serde(rename = "ACQP")]
282    Acqp,
283    #[serde(rename = "CISS")]
284    Ciss,
285    #[serde(rename = "CISP")]
286    Cisp,
287    #[serde(rename = "AGNT")]
288    Agnt,
289    #[default]
290    Unknown,
291}
292#[derive(
293    Debug,
294    Default,
295    Clone,
296    PartialEq,
297    ::serde::Serialize,
298    ::serde::Deserialize,
299    ::derive_builder::Builder,
300    ::validator::Validate,
301)]
302pub struct Max35Binary {
303    #[validate(length(min = 1, max = 35,), regex = "MAX_35_BINARY_REGEX")]
304    pub value: String,
305}
306#[derive(
307    Debug,
308    Default,
309    Clone,
310    PartialEq,
311    ::serde::Serialize,
312    ::serde::Deserialize,
313    ::derive_builder::Builder,
314    ::validator::Validate,
315)]
316pub struct EncryptedDataElement1 {
317    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
318    pub id: Option<ExternalEncryptedElementIdentification1Code>,
319    #[serde(rename = "OthrId", skip_serializing_if = "Option::is_none")]
320    pub othr_id: Option<Max35Text>,
321    #[serde(rename = "NcrptdData")]
322    pub ncrptd_data: EncryptedData1Choice,
323    #[serde(rename = "ClearTxtDataFrmt", skip_serializing_if = "Option::is_none")]
324    pub clear_txt_data_frmt: Option<EncryptedDataFormat1Code>,
325    #[serde(
326        rename = "OthrClearTxtDataFrmt",
327        skip_serializing_if = "Option::is_none"
328    )]
329    pub othr_clear_txt_data_frmt: Option<Max35Text>,
330}
331#[derive(
332    Debug,
333    Default,
334    Clone,
335    PartialEq,
336    ::serde::Serialize,
337    ::serde::Deserialize,
338    ::derive_builder::Builder,
339    ::validator::Validate,
340)]
341pub struct Max70Text {
342    #[validate(length(min = 1, max = 70,))]
343    #[serde(rename = "$text")]
344    pub value: String,
345}
346#[derive(
347    Debug,
348    Default,
349    Clone,
350    PartialEq,
351    ::serde::Serialize,
352    ::serde::Deserialize,
353    ::derive_builder::Builder,
354    ::validator::Validate,
355)]
356pub struct Max4NumericText {
357    #[validate(regex = "MAX_4_NUMERIC_TEXT_REGEX")]
358    #[serde(rename = "$text")]
359    pub value: String,
360}
361#[derive(
362    Debug,
363    Default,
364    Clone,
365    PartialEq,
366    ::serde::Serialize,
367    ::serde::Deserialize,
368    ::derive_builder::Builder,
369    ::validator::Validate,
370)]
371pub struct BatchTransferInitiationV02<
372    A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
373> {
374    #[validate]
375    #[serde(rename = "Hdr")]
376    pub hdr: Header60,
377    #[validate]
378    #[serde(rename = "Body")]
379    pub body: BatchTransferInitiation2<A>,
380    #[serde(rename = "SctyTrlr", skip_serializing_if = "Option::is_none")]
381    pub scty_trlr: Option<ContentInformationType20>,
382}
383#[derive(
384    Debug,
385    Default,
386    Clone,
387    PartialEq,
388    ::serde::Serialize,
389    ::serde::Deserialize,
390    ::derive_builder::Builder,
391    ::validator::Validate,
392)]
393pub struct Max500Binary {
394    #[validate(length(min = 1, max = 500,), regex = "MAX_500_BINARY_REGEX")]
395    pub value: String,
396}
397#[derive(
398    Debug,
399    Default,
400    Clone,
401    PartialEq,
402    ::serde::Serialize,
403    ::serde::Deserialize,
404    ::derive_builder::Builder,
405    ::validator::Validate,
406)]
407pub struct EncryptedData1ChoiceEnum {
408    #[serde(rename = "HexBinryVal", skip_serializing_if = "Option::is_none")]
409    pub hex_binry_val: Option<Max9999HexBinaryText>,
410    #[serde(rename = "BinryData", skip_serializing_if = "Option::is_none")]
411    pub binry_data: Option<Max100KBinary>,
412}
413#[derive(
414    Debug,
415    Default,
416    Clone,
417    PartialEq,
418    ::serde::Serialize,
419    ::serde::Deserialize,
420    ::derive_builder::Builder,
421    ::validator::Validate,
422)]
423pub struct EncryptedData1Choice {
424    #[serde(flatten)]
425    pub value: EncryptedData1ChoiceEnum,
426}
427#[derive(
428    Debug,
429    Default,
430    Clone,
431    PartialEq,
432    ::serde::Serialize,
433    ::serde::Deserialize,
434    ::derive_builder::Builder,
435    ::validator::Validate,
436)]
437pub struct Max3NumericText {
438    #[validate(regex = "MAX_3_NUMERIC_TEXT_REGEX")]
439    #[serde(rename = "$text")]
440    pub value: String,
441}
442#[derive(
443    Debug,
444    Default,
445    Clone,
446    PartialEq,
447    ::serde::Serialize,
448    ::serde::Deserialize,
449    ::derive_builder::Builder,
450    ::validator::Validate,
451)]
452pub struct ImpliedCurrencyAndAmount {
453    #[validate(range(min = 0,))]
454    #[serde(rename = "$text")]
455    pub value: f64,
456}
457#[derive(
458    Debug,
459    Default,
460    Clone,
461    PartialEq,
462    ::serde::Serialize,
463    ::serde::Deserialize,
464    ::derive_builder::Builder,
465    ::validator::Validate,
466)]
467pub struct Parameter14 {
468    #[serde(rename = "NcrptnFrmt", skip_serializing_if = "Option::is_none")]
469    pub ncrptn_frmt: Option<EncryptionFormat3Code>,
470    #[serde(rename = "InitlstnVctr", skip_serializing_if = "Option::is_none")]
471    pub initlstn_vctr: Option<Max500Binary>,
472    #[serde(rename = "BPddg", skip_serializing_if = "Option::is_none")]
473    pub b_pddg: Option<BytePadding1Code>,
474}
475#[derive(
476    Debug,
477    Default,
478    Clone,
479    PartialEq,
480    ::serde::Serialize,
481    ::serde::Deserialize,
482    ::derive_builder::Builder,
483    ::validator::Validate,
484)]
485pub struct ContentInformationType20 {
486    #[validate]
487    #[serde(rename = "MACData")]
488    pub mac_data: MacData1,
489    #[validate]
490    #[serde(rename = "MAC")]
491    pub mac: Max8HexBinaryText,
492}
493#[derive(
494    Debug,
495    Default,
496    Clone,
497    PartialEq,
498    ::serde::Serialize,
499    ::serde::Deserialize,
500    ::derive_builder::Builder,
501    ::validator::Validate,
502)]
503pub struct Transaction141 {
504    #[serde(rename = "TxId", skip_serializing_if = "Option::is_none")]
505    pub tx_id: Option<TransactionIdentification12>,
506    #[serde(rename = "BtchId", skip_serializing_if = "Option::is_none")]
507    pub btch_id: Option<Max70Text>,
508    #[serde(rename = "OrgnlBtchId", skip_serializing_if = "Option::is_none")]
509    pub orgnl_btch_id: Option<Max70Text>,
510    #[serde(rename = "NbOfMsgs", skip_serializing_if = "Option::is_none")]
511    pub nb_of_msgs: Option<Number>,
512    #[serde(rename = "BtchChcksm", skip_serializing_if = "Option::is_none")]
513    pub btch_chcksm: Option<Max35Binary>,
514    #[serde(rename = "ReqAck", skip_serializing_if = "Option::is_none")]
515    pub req_ack: Option<TrueFalseIndicator>,
516    #[validate(length(min = 0,))]
517    #[serde(rename = "ClrBtchData", default)]
518    pub clr_btch_data: Vec<ClearingBatchData2>,
519    #[serde(rename = "ClrCtrlTtls", skip_serializing_if = "Option::is_none")]
520    pub clr_ctrl_ttls: Option<ClearingControlTotals2>,
521    #[validate(length(min = 0,))]
522    #[serde(rename = "AgtData", default)]
523    pub agt_data: Vec<AdditionalInformation21>,
524    #[validate(length(min = 0,))]
525    #[serde(rename = "Rcrd", default)]
526    pub rcrd: Vec<Record2>,
527    #[validate(length(min = 0,))]
528    #[serde(rename = "AddtlData", default)]
529    pub addtl_data: Vec<AdditionalData1>,
530}
531#[derive(
532    Debug,
533    Default,
534    Clone,
535    PartialEq,
536    ::serde::Serialize,
537    ::serde::Deserialize,
538    ::derive_builder::Builder,
539    ::validator::Validate,
540)]
541pub struct SettlementReportingEntity1 {
542    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
543    pub tp: Option<Max35Text>,
544    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
545    pub id: Option<Max35Text>,
546}
547#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
548pub enum ContentType2Code {
549    #[serde(rename = "DATA")]
550    Data,
551    #[serde(rename = "SIGN")]
552    Sign,
553    #[serde(rename = "EVLP")]
554    Evlp,
555    #[serde(rename = "DGST")]
556    Dgst,
557    #[serde(rename = "AUTH")]
558    Auth,
559    #[default]
560    Unknown,
561}
562#[derive(
563    Debug,
564    Default,
565    Clone,
566    PartialEq,
567    ::serde::Serialize,
568    ::serde::Deserialize,
569    ::derive_builder::Builder,
570    ::validator::Validate,
571)]
572pub struct Header60 {
573    #[serde(rename = "MsgFctn")]
574    pub msg_fctn: MessageFunction17Code,
575    #[validate]
576    #[serde(rename = "PrtcolVrsn")]
577    pub prtcol_vrsn: Max2048Text,
578    #[serde(rename = "XchgId", skip_serializing_if = "Option::is_none")]
579    pub xchg_id: Option<Max35Text>,
580    #[serde(rename = "ReTrnsmssnCntr", skip_serializing_if = "Option::is_none")]
581    pub re_trnsmssn_cntr: Option<Max3NumericText>,
582    #[validate]
583    #[serde(rename = "CreDtTm")]
584    pub cre_dt_tm: IsoDateTime,
585    #[serde(rename = "BtchMgmtInf", skip_serializing_if = "Option::is_none")]
586    pub btch_mgmt_inf: Option<BatchManagementInformation1>,
587    #[validate]
588    #[serde(rename = "InitgPty")]
589    pub initg_pty: GenericIdentification183,
590    #[serde(rename = "RcptPty", skip_serializing_if = "Option::is_none")]
591    pub rcpt_pty: Option<GenericIdentification183>,
592    #[validate(length(min = 0,))]
593    #[serde(rename = "TracData", default)]
594    pub trac_data: Vec<AdditionalData1>,
595    #[validate(length(min = 0,))]
596    #[serde(rename = "Tracblt", default)]
597    pub tracblt: Vec<Traceability9>,
598}
599#[derive(
600    Debug,
601    Default,
602    Clone,
603    PartialEq,
604    ::serde::Serialize,
605    ::serde::Deserialize,
606    ::derive_builder::Builder,
607    ::validator::Validate,
608)]
609pub struct ProtectedData1 {
610    #[serde(rename = "CnttTp")]
611    pub cntt_tp: ContentType3Code,
612    #[serde(rename = "EnvlpdData", skip_serializing_if = "Option::is_none")]
613    pub envlpd_data: Option<EnvelopedData6>,
614    #[serde(rename = "NcrptdData", skip_serializing_if = "Option::is_none")]
615    pub ncrptd_data: Option<EncryptedData1>,
616}
617#[derive(
618    Debug,
619    Default,
620    Clone,
621    PartialEq,
622    ::serde::Serialize,
623    ::serde::Deserialize,
624    ::derive_builder::Builder,
625    ::validator::Validate,
626)]
627pub struct IsoMax3ACountryCode {
628    #[validate(regex = "ISO_MAX_3_A_COUNTRY_CODE_REGEX")]
629    #[serde(rename = "$text")]
630    pub value: String,
631}
632#[derive(
633    Debug,
634    Default,
635    Clone,
636    PartialEq,
637    ::serde::Serialize,
638    ::serde::Deserialize,
639    ::derive_builder::Builder,
640    ::validator::Validate,
641)]
642pub struct Max2NumericText {
643    #[validate(regex = "MAX_2_NUMERIC_TEXT_REGEX")]
644    #[serde(rename = "$text")]
645    pub value: String,
646}
647#[derive(
648    Debug,
649    Default,
650    Clone,
651    PartialEq,
652    ::serde::Serialize,
653    ::serde::Deserialize,
654    ::derive_builder::Builder,
655    ::validator::Validate,
656)]
657pub struct Reconciliation3 {
658    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
659    pub id: Option<Max35Text>,
660    #[serde(rename = "Dt", skip_serializing_if = "Option::is_none")]
661    pub dt: Option<IsoDate>,
662    #[serde(rename = "ChckptRef", skip_serializing_if = "Option::is_none")]
663    pub chckpt_ref: Option<Max35Text>,
664}
665#[derive(
666    Debug,
667    Default,
668    Clone,
669    PartialEq,
670    ::serde::Serialize,
671    ::serde::Deserialize,
672    ::derive_builder::Builder,
673    ::validator::Validate,
674)]
675pub struct Jurisdiction2 {
676    #[serde(rename = "DmstInd", skip_serializing_if = "Option::is_none")]
677    pub dmst_ind: Option<TrueFalseIndicator>,
678    #[serde(rename = "DmstQlfctn", skip_serializing_if = "Option::is_none")]
679    pub dmst_qlfctn: Option<Max35Text>,
680}
681#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
682pub enum Response8Code {
683    #[serde(rename = "PRCS")]
684    Prcs,
685    #[serde(rename = "UNPR")]
686    Unpr,
687    #[serde(rename = "UNRV")]
688    Unrv,
689    #[serde(rename = "REJT")]
690    Rejt,
691    #[serde(rename = "TECH")]
692    Tech,
693    #[serde(rename = "OTHN")]
694    Othn,
695    #[serde(rename = "OTHP")]
696    Othp,
697    #[default]
698    Unknown,
699}
700#[derive(
701    Debug,
702    Default,
703    Clone,
704    PartialEq,
705    ::serde::Serialize,
706    ::serde::Deserialize,
707    ::derive_builder::Builder,
708    ::validator::Validate,
709)]
710pub struct Min5Max16Binary {
711    #[validate(length(min = 5, max = 16,), regex = "MIN_5_MAX_16_BINARY_REGEX")]
712    pub value: String,
713}
714#[derive(
715    Debug,
716    Default,
717    Clone,
718    PartialEq,
719    ::serde::Serialize,
720    ::serde::Deserialize,
721    ::derive_builder::Builder,
722    ::validator::Validate,
723)]
724pub struct EnvelopedData6 {
725    #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
726    pub vrsn: Option<Number>,
727    #[validate(length(min = 1,))]
728    #[serde(rename = "Rcpt", default)]
729    pub rcpt: Vec<Recipient7Choice>,
730    #[serde(rename = "NcrptdCntt", skip_serializing_if = "Option::is_none")]
731    pub ncrptd_cntt: Option<EncryptedContent5>,
732}
733#[derive(
734    Debug,
735    Default,
736    Clone,
737    PartialEq,
738    ::serde::Serialize,
739    ::serde::Deserialize,
740    ::derive_builder::Builder,
741    ::validator::Validate,
742)]
743pub struct Max350Text {
744    #[validate(length(min = 1, max = 350,))]
745    #[serde(rename = "$text")]
746    pub value: String,
747}
748#[derive(
749    Debug,
750    Default,
751    Clone,
752    PartialEq,
753    ::serde::Serialize,
754    ::serde::Deserialize,
755    ::derive_builder::Builder,
756    ::validator::Validate,
757)]
758pub struct SupplementaryData1<
759    A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
760> {
761    #[serde(rename = "PlcAndNm", skip_serializing_if = "Option::is_none")]
762    pub plc_and_nm: Option<Max350Text>,
763    #[validate]
764    #[serde(rename = "Envlp")]
765    pub envlp: SupplementaryDataEnvelope1<A>,
766}
767#[derive(
768    Debug,
769    Default,
770    Clone,
771    PartialEq,
772    ::serde::Serialize,
773    ::serde::Deserialize,
774    ::derive_builder::Builder,
775    ::validator::Validate,
776)]
777pub struct Exact15Text {
778    #[serde(rename = "$text")]
779    pub value: String,
780}
781#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
782pub enum AttributeType1Code {
783    #[serde(rename = "CNAT")]
784    Cnat,
785    #[serde(rename = "LATT")]
786    Latt,
787    #[serde(rename = "OATT")]
788    Oatt,
789    #[serde(rename = "OUAT")]
790    Ouat,
791    #[serde(rename = "CATT")]
792    Catt,
793    #[default]
794    Unknown,
795}
796#[derive(
797    Debug,
798    Default,
799    Clone,
800    PartialEq,
801    ::serde::Serialize,
802    ::serde::Deserialize,
803    ::derive_builder::Builder,
804    ::validator::Validate,
805)]
806pub struct KekIdentifier6 {
807    #[validate]
808    #[serde(rename = "KeyId")]
809    pub key_id: Max140Text,
810    #[serde(rename = "KeyVrsn", skip_serializing_if = "Option::is_none")]
811    pub key_vrsn: Option<Max140Text>,
812    #[serde(rename = "SeqNb", skip_serializing_if = "Option::is_none")]
813    pub seq_nb: Option<Number>,
814    #[serde(rename = "DerivtnId", skip_serializing_if = "Option::is_none")]
815    pub derivtn_id: Option<Min5Max16Binary>,
816}
817#[derive(
818    Debug,
819    Default,
820    Clone,
821    PartialEq,
822    ::serde::Serialize,
823    ::serde::Deserialize,
824    ::derive_builder::Builder,
825    ::validator::Validate,
826)]
827pub struct IsoTime {
828    #[serde(rename = "$value")]
829    pub value: ::chrono::naive::NaiveTime,
830}
831#[derive(
832    Debug,
833    Default,
834    Clone,
835    PartialEq,
836    ::serde::Serialize,
837    ::serde::Deserialize,
838    ::derive_builder::Builder,
839    ::validator::Validate,
840)]
841pub struct BatchManagementInformation1 {
842    #[serde(rename = "ColltnId", skip_serializing_if = "Option::is_none")]
843    pub colltn_id: Option<Max35Text>,
844    #[validate]
845    #[serde(rename = "BtchId")]
846    pub btch_id: Max35Text,
847    #[serde(rename = "MsgSeqNb", skip_serializing_if = "Option::is_none")]
848    pub msg_seq_nb: Option<Max15NumericText>,
849    #[serde(rename = "MsgChcksmInptVal", skip_serializing_if = "Option::is_none")]
850    pub msg_chcksm_inpt_val: Option<Max140Binary>,
851}
852#[derive(
853    Debug,
854    Default,
855    Clone,
856    PartialEq,
857    ::serde::Serialize,
858    ::serde::Deserialize,
859    ::derive_builder::Builder,
860    ::validator::Validate,
861)]
862pub struct KeyTransport6 {
863    #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
864    pub vrsn: Option<Number>,
865    #[serde(rename = "RcptId")]
866    pub rcpt_id: Recipient5Choice,
867    #[validate]
868    #[serde(rename = "KeyNcrptnAlgo")]
869    pub key_ncrptn_algo: AlgorithmIdentification27,
870    #[validate]
871    #[serde(rename = "NcrptdKey")]
872    pub ncrptd_key: Max5000Binary,
873}
874#[derive(
875    Debug,
876    Default,
877    Clone,
878    PartialEq,
879    ::serde::Serialize,
880    ::serde::Deserialize,
881    ::derive_builder::Builder,
882    ::validator::Validate,
883)]
884pub struct IsoDateTime {
885    #[serde(rename = "$text")]
886    pub value: ::chrono::DateTime<::chrono::Utc>,
887}
888#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
889pub enum OutputFormat4Code {
890    #[serde(rename = "FLNM")]
891    Flnm,
892    #[serde(rename = "MREF")]
893    Mref,
894    #[serde(rename = "OTHN")]
895    Othn,
896    #[serde(rename = "OTHP")]
897    Othp,
898    #[serde(rename = "SMSI")]
899    Smsi,
900    #[serde(rename = "TEXT")]
901    Text,
902    #[serde(rename = "URLI")]
903    Urli,
904    #[serde(rename = "HTML")]
905    Html,
906    #[default]
907    Unknown,
908}
909#[derive(
910    Debug,
911    Default,
912    Clone,
913    PartialEq,
914    ::serde::Serialize,
915    ::serde::Deserialize,
916    ::derive_builder::Builder,
917    ::validator::Validate,
918)]
919pub struct Record2 {
920    #[validate]
921    #[serde(rename = "SeqCntr")]
922    pub seq_cntr: Number,
923    #[serde(rename = "RcrdChcksmInptVal", skip_serializing_if = "Option::is_none")]
924    pub rcrd_chcksm_inpt_val: Option<Max140Binary>,
925    #[serde(rename = "ClrRcrdData", skip_serializing_if = "Option::is_none")]
926    pub clr_rcrd_data: Option<ClearingRecordData2>,
927    #[serde(rename = "RcrdMsg")]
928    pub rcrd_msg: RecordMessage1Choice,
929}
930#[derive(
931    Debug,
932    Default,
933    Clone,
934    PartialEq,
935    ::serde::Serialize,
936    ::serde::Deserialize,
937    ::derive_builder::Builder,
938    ::validator::Validate,
939)]
940pub struct RecordMessage1ChoiceEnum {
941    #[serde(rename = "NtwkMgmtInitn", skip_serializing_if = "Option::is_none")]
942    pub ntwk_mgmt_initn: Option<Max2MbBinary>,
943    #[serde(rename = "RtrvlInitn", skip_serializing_if = "Option::is_none")]
944    pub rtrvl_initn: Option<Max2MbBinary>,
945    #[serde(rename = "FinRspn", skip_serializing_if = "Option::is_none")]
946    pub fin_rspn: Option<Max2MbBinary>,
947    #[serde(rename = "VrfctnRspn", skip_serializing_if = "Option::is_none")]
948    pub vrfctn_rspn: Option<Max2MbBinary>,
949    #[serde(rename = "RcncltnInitn", skip_serializing_if = "Option::is_none")]
950    pub rcncltn_initn: Option<Max2MbBinary>,
951    #[serde(rename = "RcncltnRspn", skip_serializing_if = "Option::is_none")]
952    pub rcncltn_rspn: Option<Max2MbBinary>,
953    #[serde(rename = "FinInitn", skip_serializing_if = "Option::is_none")]
954    pub fin_initn: Option<Max2MbBinary>,
955    #[serde(rename = "RtrvlFlfmtRspn", skip_serializing_if = "Option::is_none")]
956    pub rtrvl_flfmt_rspn: Option<Max2MbBinary>,
957    #[serde(rename = "FrdRptgInitn", skip_serializing_if = "Option::is_none")]
958    pub frd_rptg_initn: Option<Max2MbBinary>,
959    #[serde(rename = "FeeColltnInitn", skip_serializing_if = "Option::is_none")]
960    pub fee_colltn_initn: Option<Max2MbBinary>,
961    #[serde(rename = "AuthstnInitn", skip_serializing_if = "Option::is_none")]
962    pub authstn_initn: Option<Max2MbBinary>,
963    #[serde(rename = "ChrgBckInitn", skip_serializing_if = "Option::is_none")]
964    pub chrg_bck_initn: Option<Max2MbBinary>,
965    #[serde(rename = "NqryRspn", skip_serializing_if = "Option::is_none")]
966    pub nqry_rspn: Option<Max2MbBinary>,
967    #[serde(rename = "CardMgmtRspn", skip_serializing_if = "Option::is_none")]
968    pub card_mgmt_rspn: Option<Max2MbBinary>,
969    #[serde(rename = "AdddmRspn", skip_serializing_if = "Option::is_none")]
970    pub adddm_rspn: Option<Max2MbBinary>,
971    #[serde(rename = "NtwkMgmtRspn", skip_serializing_if = "Option::is_none")]
972    pub ntwk_mgmt_rspn: Option<Max2MbBinary>,
973    #[serde(rename = "RtrvlRspn", skip_serializing_if = "Option::is_none")]
974    pub rtrvl_rspn: Option<Max2MbBinary>,
975    #[serde(rename = "FileActnRspn", skip_serializing_if = "Option::is_none")]
976    pub file_actn_rspn: Option<Max2MbBinary>,
977    #[serde(rename = "KeyXchgInitn", skip_serializing_if = "Option::is_none")]
978    pub key_xchg_initn: Option<Max2MbBinary>,
979    #[serde(rename = "SttlmRptgInitn", skip_serializing_if = "Option::is_none")]
980    pub sttlm_rptg_initn: Option<Max2MbBinary>,
981    #[serde(rename = "FeeColltnRspn", skip_serializing_if = "Option::is_none")]
982    pub fee_colltn_rspn: Option<Max2MbBinary>,
983    #[serde(rename = "FileActnInitn", skip_serializing_if = "Option::is_none")]
984    pub file_actn_initn: Option<Max2MbBinary>,
985    #[serde(rename = "FrdRptgRspn", skip_serializing_if = "Option::is_none")]
986    pub frd_rptg_rspn: Option<Max2MbBinary>,
987    #[serde(rename = "AdddmInitn", skip_serializing_if = "Option::is_none")]
988    pub adddm_initn: Option<Max2MbBinary>,
989    #[serde(rename = "RvslInitn", skip_serializing_if = "Option::is_none")]
990    pub rvsl_initn: Option<Max2MbBinary>,
991    #[serde(rename = "VrfctnInitn", skip_serializing_if = "Option::is_none")]
992    pub vrfctn_initn: Option<Max2MbBinary>,
993    #[serde(rename = "CardMgmtInitn", skip_serializing_if = "Option::is_none")]
994    pub card_mgmt_initn: Option<Max2MbBinary>,
995    #[serde(rename = "FrdDspstnInitn", skip_serializing_if = "Option::is_none")]
996    pub frd_dspstn_initn: Option<Max2MbBinary>,
997    #[serde(rename = "NqryInitn", skip_serializing_if = "Option::is_none")]
998    pub nqry_initn: Option<Max2MbBinary>,
999    #[serde(rename = "RtrvlFlfmtInitn", skip_serializing_if = "Option::is_none")]
1000    pub rtrvl_flfmt_initn: Option<Max2MbBinary>,
1001    #[serde(rename = "ChrgBckRspn", skip_serializing_if = "Option::is_none")]
1002    pub chrg_bck_rspn: Option<Max2MbBinary>,
1003    #[serde(rename = "RvslRspn", skip_serializing_if = "Option::is_none")]
1004    pub rvsl_rspn: Option<Max2MbBinary>,
1005    #[serde(rename = "AuthstnRspn", skip_serializing_if = "Option::is_none")]
1006    pub authstn_rspn: Option<Max2MbBinary>,
1007    #[serde(rename = "SttlmRptgRspn", skip_serializing_if = "Option::is_none")]
1008    pub sttlm_rptg_rspn: Option<Max2MbBinary>,
1009    #[serde(rename = "Err", skip_serializing_if = "Option::is_none")]
1010    pub err: Option<Max2MbBinary>,
1011    #[serde(rename = "FrdDspstnRspn", skip_serializing_if = "Option::is_none")]
1012    pub frd_dspstn_rspn: Option<Max2MbBinary>,
1013    #[serde(rename = "KeyXchgRspn", skip_serializing_if = "Option::is_none")]
1014    pub key_xchg_rspn: Option<Max2MbBinary>,
1015    #[serde(rename = "Amdmnt", skip_serializing_if = "Option::is_none")]
1016    pub amdmnt: Option<Max2MbBinary>,
1017}
1018#[derive(
1019    Debug,
1020    Default,
1021    Clone,
1022    PartialEq,
1023    ::serde::Serialize,
1024    ::serde::Deserialize,
1025    ::derive_builder::Builder,
1026    ::validator::Validate,
1027)]
1028pub struct RecordMessage1Choice {
1029    #[serde(flatten)]
1030    pub value: RecordMessage1ChoiceEnum,
1031}
1032#[derive(
1033    Debug,
1034    Default,
1035    Clone,
1036    PartialEq,
1037    ::serde::Serialize,
1038    ::serde::Deserialize,
1039    ::derive_builder::Builder,
1040    ::validator::Validate,
1041)]
1042pub struct Max5NumericText {
1043    #[validate(regex = "MAX_5_NUMERIC_TEXT_REGEX")]
1044    #[serde(rename = "$text")]
1045    pub value: String,
1046}
1047#[derive(
1048    Debug,
1049    Default,
1050    Clone,
1051    PartialEq,
1052    ::serde::Serialize,
1053    ::serde::Deserialize,
1054    ::derive_builder::Builder,
1055    ::validator::Validate,
1056)]
1057pub struct Max35Text {
1058    #[validate(length(min = 1, max = 35,))]
1059    #[serde(rename = "$text")]
1060    pub value: String,
1061}
1062#[derive(
1063    Debug,
1064    Default,
1065    Clone,
1066    PartialEq,
1067    ::serde::Serialize,
1068    ::serde::Deserialize,
1069    ::derive_builder::Builder,
1070    ::validator::Validate,
1071)]
1072pub struct ClearingBatchData2 {
1073    #[serde(rename = "ClrMtd")]
1074    pub clr_mtd: ClearingMethod2Code,
1075    #[serde(rename = "OthrClrMtd", skip_serializing_if = "Option::is_none")]
1076    pub othr_clr_mtd: Option<Max35Text>,
1077    #[serde(rename = "ClrPrty", skip_serializing_if = "Option::is_none")]
1078    pub clr_prty: Option<Max35Text>,
1079    #[serde(rename = "ClrDt", skip_serializing_if = "Option::is_none")]
1080    pub clr_dt: Option<IsoDate>,
1081    #[serde(rename = "ClrTtls", skip_serializing_if = "Option::is_none")]
1082    pub clr_ttls: Option<ClearingTotals2>,
1083    #[serde(rename = "IntrchngFee", skip_serializing_if = "Option::is_none")]
1084    pub intrchng_fee: Option<Amount17>,
1085    #[serde(rename = "AgtFee", skip_serializing_if = "Option::is_none")]
1086    pub agt_fee: Option<Amount17>,
1087}
1088#[derive(
1089    Debug,
1090    Default,
1091    Clone,
1092    PartialEq,
1093    ::serde::Serialize,
1094    ::serde::Deserialize,
1095    ::derive_builder::Builder,
1096    ::validator::Validate,
1097)]
1098pub struct Context17 {
1099    #[serde(rename = "TxCntxt", skip_serializing_if = "Option::is_none")]
1100    pub tx_cntxt: Option<TransactionContext10>,
1101}
1102#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1103pub enum Priority3Code {
1104    #[serde(rename = "URGT")]
1105    Urgt,
1106    #[serde(rename = "HIGH")]
1107    High,
1108    #[serde(rename = "NORM")]
1109    Norm,
1110    #[default]
1111    Unknown,
1112}
1113#[derive(
1114    Debug,
1115    Default,
1116    Clone,
1117    PartialEq,
1118    ::serde::Serialize,
1119    ::serde::Deserialize,
1120    ::derive_builder::Builder,
1121    ::validator::Validate,
1122)]
1123pub struct AlgorithmIdentification28 {
1124    #[serde(rename = "Algo")]
1125    pub algo: Algorithm13Code,
1126    #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
1127    pub param: Option<Parameter14>,
1128}
1129#[derive(
1130    Debug,
1131    Default,
1132    Clone,
1133    PartialEq,
1134    ::serde::Serialize,
1135    ::serde::Deserialize,
1136    ::derive_builder::Builder,
1137    ::validator::Validate,
1138)]
1139pub struct RelativeDistinguishedName1 {
1140    #[serde(rename = "AttrTp")]
1141    pub attr_tp: AttributeType1Code,
1142    #[validate]
1143    #[serde(rename = "AttrVal")]
1144    pub attr_val: Max140Text,
1145}
1146#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1147pub enum Algorithm8Code {
1148    #[serde(rename = "MGF1")]
1149    Mgf1,
1150    #[default]
1151    Unknown,
1152}
1153#[derive(
1154    Debug,
1155    Default,
1156    Clone,
1157    PartialEq,
1158    ::serde::Serialize,
1159    ::serde::Deserialize,
1160    ::derive_builder::Builder,
1161    ::validator::Validate,
1162)]
1163pub struct ClearingRecordData2 {
1164    #[serde(rename = "Orgtr", skip_serializing_if = "Option::is_none")]
1165    pub orgtr: Option<Originator1>,
1166    #[serde(rename = "Dstn", skip_serializing_if = "Option::is_none")]
1167    pub dstn: Option<Destination1>,
1168    #[serde(rename = "ClrMtd")]
1169    pub clr_mtd: ClearingMethod2Code,
1170    #[serde(rename = "OthrClrMtd", skip_serializing_if = "Option::is_none")]
1171    pub othr_clr_mtd: Option<Max35Text>,
1172    #[serde(rename = "ClrPrty", skip_serializing_if = "Option::is_none")]
1173    pub clr_prty: Option<Max35Text>,
1174    #[serde(rename = "ClrDt", skip_serializing_if = "Option::is_none")]
1175    pub clr_dt: Option<IsoDate>,
1176    #[serde(rename = "ClrAmt", skip_serializing_if = "Option::is_none")]
1177    pub clr_amt: Option<Amount17>,
1178    #[serde(rename = "IntrchngFee", skip_serializing_if = "Option::is_none")]
1179    pub intrchng_fee: Option<Amount17>,
1180    #[serde(rename = "AgtFee", skip_serializing_if = "Option::is_none")]
1181    pub agt_fee: Option<Amount17>,
1182    #[serde(rename = "OthrAmt", skip_serializing_if = "Option::is_none")]
1183    pub othr_amt: Option<OtherAmount4>,
1184}
1185#[derive(
1186    Debug,
1187    Default,
1188    Clone,
1189    PartialEq,
1190    ::serde::Serialize,
1191    ::serde::Deserialize,
1192    ::derive_builder::Builder,
1193    ::validator::Validate,
1194)]
1195pub struct Number {
1196    #[serde(rename = "$text")]
1197    pub value: f64,
1198}
1199#[derive(
1200    Debug,
1201    Default,
1202    Clone,
1203    PartialEq,
1204    ::serde::Serialize,
1205    ::serde::Deserialize,
1206    ::derive_builder::Builder,
1207    ::validator::Validate,
1208)]
1209pub struct Max20KText {
1210    #[validate(length(min = 1, max = 20000,))]
1211    #[serde(rename = "$text")]
1212    pub value: String,
1213}
1214#[derive(
1215    Debug,
1216    Default,
1217    Clone,
1218    PartialEq,
1219    ::serde::Serialize,
1220    ::serde::Deserialize,
1221    ::derive_builder::Builder,
1222    ::validator::Validate,
1223)]
1224pub struct EncryptedData1 {
1225    #[serde(rename = "Ctrl", skip_serializing_if = "Option::is_none")]
1226    pub ctrl: Option<Exact1HexBinaryText>,
1227    #[serde(rename = "KeySetIdr", skip_serializing_if = "Option::is_none")]
1228    pub key_set_idr: Option<Max8NumericText>,
1229    #[serde(rename = "DrvdInf", skip_serializing_if = "Option::is_none")]
1230    pub drvd_inf: Option<Max32HexBinaryText>,
1231    #[serde(rename = "Algo", skip_serializing_if = "Option::is_none")]
1232    pub algo: Option<Max2NumericText>,
1233    #[serde(rename = "KeyLngth", skip_serializing_if = "Option::is_none")]
1234    pub key_lngth: Option<Max4NumericText>,
1235    #[serde(rename = "KeyPrtcn", skip_serializing_if = "Option::is_none")]
1236    pub key_prtcn: Option<Max2NumericText>,
1237    #[serde(rename = "KeyIndx", skip_serializing_if = "Option::is_none")]
1238    pub key_indx: Option<Max5NumericText>,
1239    #[serde(rename = "PddgMtd", skip_serializing_if = "Option::is_none")]
1240    pub pddg_mtd: Option<Max2NumericText>,
1241    #[serde(rename = "NcrptdDataFrmt", skip_serializing_if = "Option::is_none")]
1242    pub ncrptd_data_frmt: Option<Max2NumericText>,
1243    #[validate(length(min = 1,))]
1244    #[serde(rename = "NcrptdDataElmt", default)]
1245    pub ncrptd_data_elmt: Vec<EncryptedDataElement1>,
1246}
1247#[derive(
1248    Debug,
1249    Default,
1250    Clone,
1251    PartialEq,
1252    ::serde::Serialize,
1253    ::serde::Deserialize,
1254    ::derive_builder::Builder,
1255    ::validator::Validate,
1256)]
1257pub struct Iso3NumericCurrencyCode {
1258    #[validate(regex = "ISO_3_NUMERIC_CURRENCY_CODE_REGEX")]
1259    #[serde(rename = "$text")]
1260    pub value: String,
1261}
1262#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1263pub enum BytePadding1Code {
1264    #[serde(rename = "LNGT")]
1265    Lngt,
1266    #[serde(rename = "NUL8")]
1267    Nul8,
1268    #[serde(rename = "NULG")]
1269    Nulg,
1270    #[serde(rename = "NULL")]
1271    Null,
1272    #[serde(rename = "RAND")]
1273    Rand,
1274    #[default]
1275    Unknown,
1276}
1277#[derive(
1278    Debug,
1279    Default,
1280    Clone,
1281    PartialEq,
1282    ::serde::Serialize,
1283    ::serde::Deserialize,
1284    ::derive_builder::Builder,
1285    ::validator::Validate,
1286)]
1287pub struct Max140Text {
1288    #[validate(length(min = 1, max = 140,))]
1289    #[serde(rename = "$text")]
1290    pub value: String,
1291}
1292#[derive(
1293    Debug,
1294    Default,
1295    Clone,
1296    PartialEq,
1297    ::serde::Serialize,
1298    ::serde::Deserialize,
1299    ::derive_builder::Builder,
1300    ::validator::Validate,
1301)]
1302pub struct IssuerAndSerialNumber1 {
1303    #[validate]
1304    #[serde(rename = "Issr")]
1305    pub issr: CertificateIssuer1,
1306    #[validate]
1307    #[serde(rename = "SrlNb")]
1308    pub srl_nb: Max35Binary,
1309}
1310#[derive(
1311    Debug,
1312    Default,
1313    Clone,
1314    PartialEq,
1315    ::serde::Serialize,
1316    ::serde::Deserialize,
1317    ::derive_builder::Builder,
1318    ::validator::Validate,
1319)]
1320pub struct Max15NumericText {
1321    #[validate(regex = "MAX_15_NUMERIC_TEXT_REGEX")]
1322    #[serde(rename = "$text")]
1323    pub value: String,
1324}
1325#[derive(
1326    Debug,
1327    Default,
1328    Clone,
1329    PartialEq,
1330    ::serde::Serialize,
1331    ::serde::Deserialize,
1332    ::derive_builder::Builder,
1333    ::validator::Validate,
1334)]
1335pub struct Parameter13 {
1336    #[serde(rename = "DgstAlgo", skip_serializing_if = "Option::is_none")]
1337    pub dgst_algo: Option<Algorithm20Code>,
1338    #[serde(rename = "MskGnrtrAlgo", skip_serializing_if = "Option::is_none")]
1339    pub msk_gnrtr_algo: Option<AlgorithmIdentification26>,
1340}
1341#[derive(
1342    Debug,
1343    Default,
1344    Clone,
1345    PartialEq,
1346    ::serde::Serialize,
1347    ::serde::Deserialize,
1348    ::derive_builder::Builder,
1349    ::validator::Validate,
1350)]
1351pub struct ResultData8 {
1352    #[serde(rename = "Rslt", skip_serializing_if = "Option::is_none")]
1353    pub rslt: Option<Response6Code>,
1354    #[serde(rename = "OthrRslt", skip_serializing_if = "Option::is_none")]
1355    pub othr_rslt: Option<Max35Text>,
1356    #[serde(rename = "RsltDtls")]
1357    pub rslt_dtls: Iso8583ResponseCode,
1358    #[serde(rename = "OthrRsltDtls", skip_serializing_if = "Option::is_none")]
1359    pub othr_rslt_dtls: Option<Max35Text>,
1360    #[validate(length(min = 0,))]
1361    #[serde(rename = "AddtlRsltInf", default)]
1362    pub addtl_rslt_inf: Vec<AdditionalData1>,
1363}
1364#[derive(
1365    Debug,
1366    Default,
1367    Clone,
1368    PartialEq,
1369    ::serde::Serialize,
1370    ::serde::Deserialize,
1371    ::derive_builder::Builder,
1372    ::validator::Validate,
1373)]
1374pub struct AlgorithmIdentification26 {
1375    #[serde(rename = "Algo")]
1376    pub algo: Algorithm8Code,
1377    #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
1378    pub param: Option<Algorithm5Code>,
1379}
1380#[derive(
1381    Debug,
1382    Default,
1383    Clone,
1384    PartialEq,
1385    ::serde::Serialize,
1386    ::serde::Deserialize,
1387    ::derive_builder::Builder,
1388    ::validator::Validate,
1389)]
1390pub struct Kek6 {
1391    #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
1392    pub vrsn: Option<Number>,
1393    #[validate]
1394    #[serde(rename = "KEKId")]
1395    pub kek_id: KekIdentifier6,
1396    #[validate]
1397    #[serde(rename = "KeyNcrptnAlgo")]
1398    pub key_ncrptn_algo: AlgorithmIdentification28,
1399    #[serde(rename = "NcrptdKey", skip_serializing_if = "Option::is_none")]
1400    pub ncrptd_key: Option<Max500Binary>,
1401}
1402#[derive(
1403    Debug,
1404    Default,
1405    Clone,
1406    PartialEq,
1407    ::serde::Serialize,
1408    ::serde::Deserialize,
1409    ::derive_builder::Builder,
1410    ::validator::Validate,
1411)]
1412pub struct ProcessingResult20 {
1413    #[validate]
1414    #[serde(rename = "RsltData")]
1415    pub rslt_data: ResultData8,
1416    #[serde(rename = "OrgnlRsltData", skip_serializing_if = "Option::is_none")]
1417    pub orgnl_rslt_data: Option<ResultData7>,
1418}
1419#[derive(
1420    Debug,
1421    Default,
1422    Clone,
1423    PartialEq,
1424    ::serde::Serialize,
1425    ::serde::Deserialize,
1426    ::derive_builder::Builder,
1427    ::validator::Validate,
1428)]
1429#[serde(rename = "Document")]
1430pub struct Document<
1431    A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
1432> {
1433    #[validate]
1434    #[serde(rename = "BtchTrfInitn")]
1435    pub btch_trf_initn: BatchTransferInitiationV02<A>,
1436    #[serde(rename = "@xmlns", default = "namespace")]
1437    pub xmlns: String,
1438}
1439#[derive(
1440    Debug,
1441    Default,
1442    Clone,
1443    PartialEq,
1444    ::serde::Serialize,
1445    ::serde::Deserialize,
1446    ::derive_builder::Builder,
1447    ::validator::Validate,
1448)]
1449pub struct Max100KBinary {
1450    #[validate(length(min = 1, max = 102400,), regex = "MAX_100_K_BINARY_REGEX")]
1451    pub value: String,
1452}
1453#[derive(
1454    Debug,
1455    Default,
1456    Clone,
1457    PartialEq,
1458    ::serde::Serialize,
1459    ::serde::Deserialize,
1460    ::derive_builder::Builder,
1461    ::validator::Validate,
1462)]
1463pub struct Max12NumericText {
1464    #[validate(regex = "MAX_12_NUMERIC_TEXT_REGEX")]
1465    #[serde(rename = "$text")]
1466    pub value: String,
1467}
1468#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1469pub enum Algorithm13Code {
1470    #[serde(rename = "EA2C")]
1471    Ea2C,
1472    #[serde(rename = "E3DC")]
1473    E3Dc,
1474    #[serde(rename = "DKP9")]
1475    Dkp9,
1476    #[serde(rename = "UKPT")]
1477    Ukpt,
1478    #[serde(rename = "UKA1")]
1479    Uka1,
1480    #[serde(rename = "EA9C")]
1481    Ea9C,
1482    #[serde(rename = "EA5C")]
1483    Ea5C,
1484    #[default]
1485    Unknown,
1486}
1487#[derive(
1488    Debug,
1489    Default,
1490    Clone,
1491    PartialEq,
1492    ::serde::Serialize,
1493    ::serde::Deserialize,
1494    ::derive_builder::Builder,
1495    ::validator::Validate,
1496)]
1497pub struct AdditionalData1 {
1498    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
1499    pub tp: Option<Max35Text>,
1500    #[serde(rename = "Val", skip_serializing_if = "Option::is_none")]
1501    pub val: Option<Max2048Text>,
1502}
1503#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1504pub enum ClearingMethod2Code {
1505    #[serde(rename = "DAYC")]
1506    Dayc,
1507    #[serde(rename = "DFRD")]
1508    Dfrd,
1509    #[serde(rename = "INST")]
1510    Inst,
1511    #[serde(rename = "OTHN")]
1512    Othn,
1513    #[serde(rename = "OTHP")]
1514    Othp,
1515    #[serde(rename = "RLTM")]
1516    Rltm,
1517    #[default]
1518    Unknown,
1519}
1520#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1521pub enum MessageFunction17Code {
1522    #[serde(rename = "NOTI")]
1523    Noti,
1524    #[serde(rename = "REQU")]
1525    Requ,
1526    #[serde(rename = "ADVC")]
1527    Advc,
1528    #[default]
1529    Unknown,
1530}
1531#[derive(
1532    Debug,
1533    Default,
1534    Clone,
1535    PartialEq,
1536    ::serde::Serialize,
1537    ::serde::Deserialize,
1538    ::derive_builder::Builder,
1539    ::validator::Validate,
1540)]
1541pub struct ResultData7 {
1542    #[serde(rename = "Rslt", skip_serializing_if = "Option::is_none")]
1543    pub rslt: Option<Response8Code>,
1544    #[serde(rename = "OthrRslt", skip_serializing_if = "Option::is_none")]
1545    pub othr_rslt: Option<Max35Text>,
1546    #[serde(rename = "RsltDtls")]
1547    pub rslt_dtls: Iso8583ResponseCode,
1548    #[serde(rename = "OthrRsltDtls", skip_serializing_if = "Option::is_none")]
1549    pub othr_rslt_dtls: Option<Max35Text>,
1550    #[serde(
1551        rename = "TempScrCardDataReusePrtd",
1552        skip_serializing_if = "Option::is_none"
1553    )]
1554    pub temp_scr_card_data_reuse_prtd: Option<TrueFalseIndicator>,
1555    #[validate(length(min = 0,))]
1556    #[serde(rename = "AddtlRsltInf", default)]
1557    pub addtl_rslt_inf: Vec<AdditionalData1>,
1558}
1559#[derive(
1560    Debug,
1561    Default,
1562    Clone,
1563    PartialEq,
1564    ::serde::Serialize,
1565    ::serde::Deserialize,
1566    ::derive_builder::Builder,
1567    ::validator::Validate,
1568)]
1569pub struct Environment4 {
1570    #[serde(rename = "Orgtr", skip_serializing_if = "Option::is_none")]
1571    pub orgtr: Option<Originator1>,
1572    #[validate]
1573    #[serde(rename = "Dstn")]
1574    pub dstn: Destination1,
1575}
1576#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1577pub enum Algorithm7Code {
1578    #[serde(rename = "ERSA")]
1579    Ersa,
1580    #[serde(rename = "RSAO")]
1581    Rsao,
1582    #[default]
1583    Unknown,
1584}
1585#[derive(
1586    Debug,
1587    Default,
1588    Clone,
1589    PartialEq,
1590    ::serde::Serialize,
1591    ::serde::Deserialize,
1592    ::derive_builder::Builder,
1593    ::validator::Validate,
1594)]
1595pub struct Recipient7ChoiceEnum {
1596    #[serde(rename = "KeyIdr", skip_serializing_if = "Option::is_none")]
1597    pub key_idr: Option<KekIdentifier6>,
1598    #[serde(rename = "KeyTrnsprt", skip_serializing_if = "Option::is_none")]
1599    pub key_trnsprt: Option<KeyTransport6>,
1600    #[serde(rename = "KEK", skip_serializing_if = "Option::is_none")]
1601    pub kek: Option<Kek6>,
1602}
1603#[derive(
1604    Debug,
1605    Default,
1606    Clone,
1607    PartialEq,
1608    ::serde::Serialize,
1609    ::serde::Deserialize,
1610    ::derive_builder::Builder,
1611    ::validator::Validate,
1612)]
1613pub struct Recipient7Choice {
1614    #[serde(flatten)]
1615    pub value: Recipient7ChoiceEnum,
1616}
1617#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1618pub enum PartyType18Code {
1619    #[serde(rename = "ACQR")]
1620    Acqr,
1621    #[serde(rename = "CISS")]
1622    Ciss,
1623    #[serde(rename = "CSCH")]
1624    Csch,
1625    #[serde(rename = "AGNT")]
1626    Agnt,
1627    #[default]
1628    Unknown,
1629}
1630#[derive(
1631    Debug,
1632    Default,
1633    Clone,
1634    PartialEq,
1635    ::serde::Serialize,
1636    ::serde::Deserialize,
1637    ::derive_builder::Builder,
1638    ::validator::Validate,
1639)]
1640pub struct Max9999HexBinaryText {
1641    #[validate(regex = "MAX_9999_HEX_BINARY_TEXT_REGEX")]
1642    #[serde(rename = "$text")]
1643    pub value: String,
1644}
1645#[derive(
1646    Debug,
1647    Default,
1648    Clone,
1649    PartialEq,
1650    ::serde::Serialize,
1651    ::serde::Deserialize,
1652    ::derive_builder::Builder,
1653    ::validator::Validate,
1654)]
1655pub struct ClearingTotals2 {
1656    #[validate]
1657    #[serde(rename = "Cnt")]
1658    pub cnt: Number,
1659    #[validate]
1660    #[serde(rename = "AcmltdAmt")]
1661    pub acmltd_amt: Amount17,
1662}
1663#[derive(
1664    Debug,
1665    Default,
1666    Clone,
1667    PartialEq,
1668    ::serde::Serialize,
1669    ::serde::Deserialize,
1670    ::derive_builder::Builder,
1671    ::validator::Validate,
1672)]
1673pub struct SettlementServiceMode1 {
1674    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
1675    pub tp: Option<Max35Text>,
1676    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
1677    pub id: Option<Max35Text>,
1678    #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
1679    pub shrt_nm: Option<Max35Text>,
1680    #[serde(rename = "SttlmPrty", skip_serializing_if = "Option::is_none")]
1681    pub sttlm_prty: Option<Priority3Code>,
1682}
1683#[derive(
1684    Debug,
1685    Default,
1686    Clone,
1687    PartialEq,
1688    ::serde::Serialize,
1689    ::serde::Deserialize,
1690    ::derive_builder::Builder,
1691    ::validator::Validate,
1692)]
1693pub struct SettlementService4 {
1694    #[serde(rename = "SttlmSvcApld", skip_serializing_if = "Option::is_none")]
1695    pub sttlm_svc_apld: Option<SettlementServiceMode1>,
1696    #[serde(rename = "SttlmSvcDts", skip_serializing_if = "Option::is_none")]
1697    pub sttlm_svc_dts: Option<SettlementServiceDate2>,
1698    #[serde(rename = "SttlmRptgNtty", skip_serializing_if = "Option::is_none")]
1699    pub sttlm_rptg_ntty: Option<SettlementReportingEntity1>,
1700    #[validate(length(min = 0,))]
1701    #[serde(rename = "AddtlSttlmInf", default)]
1702    pub addtl_sttlm_inf: Vec<AdditionalData1>,
1703}
1704#[derive(
1705    Debug,
1706    Default,
1707    Clone,
1708    PartialEq,
1709    ::serde::Serialize,
1710    ::serde::Deserialize,
1711    ::derive_builder::Builder,
1712    ::validator::Validate,
1713)]
1714pub struct Max140Binary {
1715    #[validate(length(min = 1, max = 140,), regex = "MAX_140_BINARY_REGEX")]
1716    pub value: String,
1717}
1718#[derive(
1719    Debug,
1720    Default,
1721    Clone,
1722    PartialEq,
1723    ::serde::Serialize,
1724    ::serde::Deserialize,
1725    ::derive_builder::Builder,
1726    ::validator::Validate,
1727)]
1728pub struct TransactionIdentification12 {
1729    #[validate]
1730    #[serde(rename = "SysTracAudtNb")]
1731    pub sys_trac_audt_nb: Max12NumericText,
1732    #[validate]
1733    #[serde(rename = "TrnsmssnDtTm")]
1734    pub trnsmssn_dt_tm: IsoDateTime,
1735    #[serde(rename = "RtrvlRefNb", skip_serializing_if = "Option::is_none")]
1736    pub rtrvl_ref_nb: Option<Exact12Text>,
1737    #[serde(rename = "LifeCyclTracIdData", skip_serializing_if = "Option::is_none")]
1738    pub life_cycl_trac_id_data: Option<TransactionLifeCycleIdentification2>,
1739}
1740#[derive(
1741    Debug,
1742    Default,
1743    Clone,
1744    PartialEq,
1745    ::serde::Serialize,
1746    ::serde::Deserialize,
1747    ::derive_builder::Builder,
1748    ::validator::Validate,
1749)]
1750pub struct EncryptedContent5 {
1751    #[serde(rename = "CnttTp")]
1752    pub cntt_tp: ContentType2Code,
1753    #[validate]
1754    #[serde(rename = "CnttNcrptnAlgo")]
1755    pub cntt_ncrptn_algo: AlgorithmIdentification25,
1756    #[validate(length(min = 1,))]
1757    #[serde(rename = "NcrptdDataElmt", default)]
1758    pub ncrptd_data_elmt: Vec<EncryptedDataElement1>,
1759}
1760#[derive(
1761    Debug,
1762    Default,
1763    Clone,
1764    PartialEq,
1765    ::serde::Serialize,
1766    ::serde::Deserialize,
1767    ::derive_builder::Builder,
1768    ::validator::Validate,
1769)]
1770pub struct Originator1 {
1771    #[validate]
1772    #[serde(rename = "Id")]
1773    pub id: Max35Text,
1774    #[serde(rename = "Assgnr", skip_serializing_if = "Option::is_none")]
1775    pub assgnr: Option<Max35Text>,
1776    #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
1777    pub ctry: Option<Iso3NumericCountryCode>,
1778    #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
1779    pub shrt_nm: Option<Max35Text>,
1780}
1781#[derive(
1782    Debug,
1783    Default,
1784    Clone,
1785    PartialEq,
1786    ::serde::Serialize,
1787    ::serde::Deserialize,
1788    ::derive_builder::Builder,
1789    ::validator::Validate,
1790)]
1791pub struct AdditionalInformation21 {
1792    #[serde(rename = "Rcpt", skip_serializing_if = "Option::is_none")]
1793    pub rcpt: Option<PartyType23Code>,
1794    #[validate(length(min = 0,))]
1795    #[serde(rename = "Trgt", default)]
1796    pub trgt: Vec<UserInterface7Code>,
1797    #[serde(rename = "Frmt", skip_serializing_if = "Option::is_none")]
1798    pub frmt: Option<OutputFormat4Code>,
1799    #[validate]
1800    #[serde(rename = "Val")]
1801    pub val: Max20KText,
1802}
1803#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1804pub enum Algorithm20Code {
1805    #[serde(rename = "HS25")]
1806    Hs25,
1807    #[serde(rename = "HS38")]
1808    Hs38,
1809    #[serde(rename = "HS51")]
1810    Hs51,
1811    #[default]
1812    Unknown,
1813}
1814#[derive(
1815    Debug,
1816    Default,
1817    Clone,
1818    PartialEq,
1819    ::serde::Serialize,
1820    ::serde::Deserialize,
1821    ::derive_builder::Builder,
1822    ::validator::Validate,
1823)]
1824pub struct Exact1HexBinaryText {
1825    #[validate(regex = "EXACT_1_HEX_BINARY_TEXT_REGEX")]
1826    #[serde(rename = "$text")]
1827    pub value: String,
1828}
1829#[derive(
1830    Debug,
1831    Default,
1832    Clone,
1833    PartialEq,
1834    ::serde::Serialize,
1835    ::serde::Deserialize,
1836    ::derive_builder::Builder,
1837    ::validator::Validate,
1838)]
1839pub struct TransactionLifeCycleIdentification2 {
1840    #[validate]
1841    #[serde(rename = "Id")]
1842    pub id: Exact15Text,
1843}
1844#[derive(
1845    Debug,
1846    Default,
1847    Clone,
1848    PartialEq,
1849    ::serde::Serialize,
1850    ::serde::Deserialize,
1851    ::derive_builder::Builder,
1852    ::validator::Validate,
1853)]
1854pub struct Exact12Text {
1855    #[serde(rename = "$text")]
1856    pub value: String,
1857}
1858#[derive(
1859    Debug,
1860    Default,
1861    Clone,
1862    PartialEq,
1863    ::serde::Serialize,
1864    ::serde::Deserialize,
1865    ::derive_builder::Builder,
1866    ::validator::Validate,
1867)]
1868pub struct MacData1 {
1869    #[validate]
1870    #[serde(rename = "Ctrl")]
1871    pub ctrl: Exact1HexBinaryText,
1872    #[validate]
1873    #[serde(rename = "KeySetIdr")]
1874    pub key_set_idr: Max8NumericText,
1875    #[serde(rename = "DrvdInf", skip_serializing_if = "Option::is_none")]
1876    pub drvd_inf: Option<Max32HexBinaryText>,
1877    #[validate]
1878    #[serde(rename = "Algo")]
1879    pub algo: Max2NumericText,
1880    #[serde(rename = "KeyLngth", skip_serializing_if = "Option::is_none")]
1881    pub key_lngth: Option<Max4NumericText>,
1882    #[serde(rename = "KeyPrtcn", skip_serializing_if = "Option::is_none")]
1883    pub key_prtcn: Option<Max2NumericText>,
1884    #[serde(rename = "KeyIndx", skip_serializing_if = "Option::is_none")]
1885    pub key_indx: Option<Max5NumericText>,
1886    #[serde(rename = "PddgMtd", skip_serializing_if = "Option::is_none")]
1887    pub pddg_mtd: Option<Max2NumericText>,
1888    #[serde(rename = "InitlstnVctr", skip_serializing_if = "Option::is_none")]
1889    pub initlstn_vctr: Option<Max32HexBinaryText>,
1890}
1891#[derive(
1892    Debug,
1893    Default,
1894    Clone,
1895    PartialEq,
1896    ::serde::Serialize,
1897    ::serde::Deserialize,
1898    ::derive_builder::Builder,
1899    ::validator::Validate,
1900)]
1901pub struct Max8NumericText {
1902    #[validate(regex = "MAX_8_NUMERIC_TEXT_REGEX")]
1903    #[serde(rename = "$text")]
1904    pub value: String,
1905}
1906#[derive(
1907    Debug,
1908    Default,
1909    Clone,
1910    PartialEq,
1911    ::serde::Serialize,
1912    ::serde::Deserialize,
1913    ::derive_builder::Builder,
1914    ::validator::Validate,
1915)]
1916pub struct Destination1 {
1917    #[validate]
1918    #[serde(rename = "Id")]
1919    pub id: Max35Text,
1920    #[serde(rename = "Assgnr", skip_serializing_if = "Option::is_none")]
1921    pub assgnr: Option<Max35Text>,
1922    #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
1923    pub ctry: Option<Iso3NumericCountryCode>,
1924    #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
1925    pub shrt_nm: Option<Max35Text>,
1926}
1927#[derive(
1928    Debug,
1929    Default,
1930    Clone,
1931    PartialEq,
1932    ::serde::Serialize,
1933    ::serde::Deserialize,
1934    ::derive_builder::Builder,
1935    ::validator::Validate,
1936)]
1937pub struct GenericIdentification183 {
1938    #[validate]
1939    #[serde(rename = "Id")]
1940    pub id: Max35Text,
1941    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
1942    pub tp: Option<PartyType17Code>,
1943    #[serde(rename = "OthrTp", skip_serializing_if = "Option::is_none")]
1944    pub othr_tp: Option<Max35Text>,
1945    #[serde(rename = "Assgnr", skip_serializing_if = "Option::is_none")]
1946    pub assgnr: Option<PartyType18Code>,
1947    #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
1948    pub ctry: Option<IsoMax3ACountryCode>,
1949    #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
1950    pub shrt_nm: Option<Max35Text>,
1951}
1952#[derive(
1953    Debug,
1954    Default,
1955    Clone,
1956    PartialEq,
1957    ::serde::Serialize,
1958    ::serde::Deserialize,
1959    ::derive_builder::Builder,
1960    ::validator::Validate,
1961)]
1962pub struct Iso8583ResponseCode {
1963    #[validate(regex = "ISO_8583_RESPONSE_CODE_REGEX")]
1964    #[serde(rename = "$text")]
1965    pub value: String,
1966}
1967#[derive(
1968    Debug,
1969    Default,
1970    Clone,
1971    PartialEq,
1972    ::serde::Serialize,
1973    ::serde::Deserialize,
1974    ::derive_builder::Builder,
1975    ::validator::Validate,
1976)]
1977pub struct Max2048Text {
1978    #[validate(length(min = 1, max = 2048,))]
1979    #[serde(rename = "$text")]
1980    pub value: String,
1981}
1982#[derive(
1983    Debug,
1984    Default,
1985    Clone,
1986    PartialEq,
1987    ::serde::Serialize,
1988    ::serde::Deserialize,
1989    ::derive_builder::Builder,
1990    ::validator::Validate,
1991)]
1992pub struct Recipient5ChoiceEnum {
1993    #[serde(rename = "IssrAndSrlNb", skip_serializing_if = "Option::is_none")]
1994    pub issr_and_srl_nb: Option<IssuerAndSerialNumber1>,
1995    #[serde(rename = "KeyIdr", skip_serializing_if = "Option::is_none")]
1996    pub key_idr: Option<KekIdentifier2>,
1997}
1998#[derive(
1999    Debug,
2000    Default,
2001    Clone,
2002    PartialEq,
2003    ::serde::Serialize,
2004    ::serde::Deserialize,
2005    ::derive_builder::Builder,
2006    ::validator::Validate,
2007)]
2008pub struct Recipient5Choice {
2009    #[serde(flatten)]
2010    pub value: Recipient5ChoiceEnum,
2011}
2012#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2013pub enum Response6Code {
2014    #[serde(rename = "UNPR")]
2015    Unpr,
2016    #[serde(rename = "PPRC")]
2017    Pprc,
2018    #[serde(rename = "PRCS")]
2019    Prcs,
2020    #[serde(rename = "REJT")]
2021    Rejt,
2022    #[serde(rename = "OTHP")]
2023    Othp,
2024    #[serde(rename = "OTHN")]
2025    Othn,
2026    #[serde(rename = "TECH")]
2027    Tech,
2028    #[serde(rename = "UNRV")]
2029    Unrv,
2030    #[default]
2031    Unknown,
2032}
2033#[derive(
2034    Debug,
2035    Default,
2036    Clone,
2037    PartialEq,
2038    ::serde::Serialize,
2039    ::serde::Deserialize,
2040    ::derive_builder::Builder,
2041    ::validator::Validate,
2042)]
2043pub struct SupplementaryDataEnvelope1<
2044    A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
2045> {
2046    #[validate]
2047    #[serde(flatten)]
2048    pub value: A,
2049}
2050#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2051pub enum EncryptionFormat3Code {
2052    #[serde(rename = "TR34")]
2053    Tr34,
2054    #[serde(rename = "TR31")]
2055    Tr31,
2056    #[serde(rename = "CTCE")]
2057    Ctce,
2058    #[serde(rename = "CBCE")]
2059    Cbce,
2060    #[default]
2061    Unknown,
2062}
2063#[derive(
2064    Debug,
2065    Default,
2066    Clone,
2067    PartialEq,
2068    ::serde::Serialize,
2069    ::serde::Deserialize,
2070    ::derive_builder::Builder,
2071    ::validator::Validate,
2072)]
2073pub struct AlgorithmIdentification27 {
2074    #[serde(rename = "Algo")]
2075    pub algo: Algorithm7Code,
2076    #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
2077    pub param: Option<Parameter13>,
2078}
2079#[derive(
2080    Debug,
2081    Default,
2082    Clone,
2083    PartialEq,
2084    ::serde::Serialize,
2085    ::serde::Deserialize,
2086    ::derive_builder::Builder,
2087    ::validator::Validate,
2088)]
2089pub struct OtherAmount4 {
2090    #[validate]
2091    #[serde(rename = "ClrCnt")]
2092    pub clr_cnt: Number,
2093    #[validate]
2094    #[serde(rename = "ClrAmt")]
2095    pub clr_amt: Amount17,
2096    #[serde(rename = "IntrchngFee", skip_serializing_if = "Option::is_none")]
2097    pub intrchng_fee: Option<Amount17>,
2098    #[serde(rename = "AgtFee", skip_serializing_if = "Option::is_none")]
2099    pub agt_fee: Option<Amount17>,
2100}
2101#[derive(
2102    Debug,
2103    Default,
2104    Clone,
2105    PartialEq,
2106    ::serde::Serialize,
2107    ::serde::Deserialize,
2108    ::derive_builder::Builder,
2109    ::validator::Validate,
2110)]
2111pub struct Traceability9 {
2112    #[validate]
2113    #[serde(rename = "RlayId")]
2114    pub rlay_id: GenericIdentification183,
2115    #[serde(rename = "TracDtTmIn", skip_serializing_if = "Option::is_none")]
2116    pub trac_dt_tm_in: Option<IsoDateTime>,
2117    #[serde(rename = "TracDtTmOut", skip_serializing_if = "Option::is_none")]
2118    pub trac_dt_tm_out: Option<IsoDateTime>,
2119}
2120#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2121pub enum PartyType23Code {
2122    #[serde(rename = "OTHN")]
2123    Othn,
2124    #[serde(rename = "OTHP")]
2125    Othp,
2126    #[serde(rename = "CLRA")]
2127    Clra,
2128    #[default]
2129    Unknown,
2130}
2131#[derive(
2132    Debug,
2133    Default,
2134    Clone,
2135    PartialEq,
2136    ::serde::Serialize,
2137    ::serde::Deserialize,
2138    ::derive_builder::Builder,
2139    ::validator::Validate,
2140)]
2141pub struct CardProgrammeMode3 {
2142    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
2143    pub tp: Option<Max35Text>,
2144    #[validate]
2145    #[serde(rename = "Id")]
2146    pub id: Max35Text,
2147    #[validate(length(min = 0,))]
2148    #[serde(rename = "AddtlId", default)]
2149    pub addtl_id: Vec<AdditionalData1>,
2150}
2151#[derive(
2152    Debug,
2153    Default,
2154    Clone,
2155    PartialEq,
2156    ::serde::Serialize,
2157    ::serde::Deserialize,
2158    ::derive_builder::Builder,
2159    ::validator::Validate,
2160)]
2161pub struct ClearingControlTotals2 {
2162    #[validate]
2163    #[serde(rename = "ClrCtrlCnt")]
2164    pub clr_ctrl_cnt: Number,
2165    #[validate]
2166    #[serde(rename = "ClrCtrlAmt")]
2167    pub clr_ctrl_amt: Amount17,
2168}
2169#[derive(
2170    Debug,
2171    Default,
2172    Clone,
2173    PartialEq,
2174    ::serde::Serialize,
2175    ::serde::Deserialize,
2176    ::derive_builder::Builder,
2177    ::validator::Validate,
2178)]
2179pub struct Max5000Binary {
2180    #[validate(length(min = 1, max = 5000,), regex = "MAX_5000_BINARY_REGEX")]
2181    pub value: String,
2182}
2183#[derive(
2184    Debug,
2185    Default,
2186    Clone,
2187    PartialEq,
2188    ::serde::Serialize,
2189    ::serde::Deserialize,
2190    ::derive_builder::Builder,
2191    ::validator::Validate,
2192)]
2193pub struct TransactionContext10 {
2194    #[serde(rename = "CardPrgrmmApld", skip_serializing_if = "Option::is_none")]
2195    pub card_prgrmm_apld: Option<CardProgrammeMode3>,
2196    #[serde(rename = "Jursdctn", skip_serializing_if = "Option::is_none")]
2197    pub jursdctn: Option<Jurisdiction2>,
2198    #[serde(rename = "SttlmSvc", skip_serializing_if = "Option::is_none")]
2199    pub sttlm_svc: Option<SettlementService4>,
2200    #[serde(rename = "Rcncltn", skip_serializing_if = "Option::is_none")]
2201    pub rcncltn: Option<Reconciliation3>,
2202    #[validate(length(min = 0,))]
2203    #[serde(rename = "AddtlData", default)]
2204    pub addtl_data: Vec<AdditionalData1>,
2205}
2206#[derive(
2207    Debug,
2208    Default,
2209    Clone,
2210    PartialEq,
2211    ::serde::Serialize,
2212    ::serde::Deserialize,
2213    ::derive_builder::Builder,
2214    ::validator::Validate,
2215)]
2216pub struct CertificateIssuer1 {
2217    #[validate(length(min = 1,))]
2218    #[serde(rename = "RltvDstngshdNm", default)]
2219    pub rltv_dstngshd_nm: Vec<RelativeDistinguishedName1>,
2220}
2221#[derive(
2222    Debug,
2223    Default,
2224    Clone,
2225    PartialEq,
2226    ::serde::Serialize,
2227    ::serde::Deserialize,
2228    ::derive_builder::Builder,
2229    ::validator::Validate,
2230)]
2231pub struct Max2MbBinary {
2232    #[validate(length(min = 1, max = 2097152,), regex = "MAX_2_MB_BINARY_REGEX")]
2233    pub value: String,
2234}
2235#[derive(
2236    Debug,
2237    Default,
2238    Clone,
2239    PartialEq,
2240    ::serde::Serialize,
2241    ::serde::Deserialize,
2242    ::derive_builder::Builder,
2243    ::validator::Validate,
2244)]
2245pub struct TrueFalseIndicator {
2246    #[serde(rename = "$text")]
2247    pub value: bool,
2248}
2249#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2250pub enum Algorithm5Code {
2251    #[serde(rename = "HS25")]
2252    Hs25,
2253    #[serde(rename = "HS38")]
2254    Hs38,
2255    #[serde(rename = "HS51")]
2256    Hs51,
2257    #[default]
2258    Unknown,
2259}
2260#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2261pub enum ContentType3Code {
2262    #[serde(rename = "EVLP")]
2263    Evlp,
2264    #[serde(rename = "IFSE")]
2265    Ifse,
2266    #[default]
2267    Unknown,
2268}
2269#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2270pub enum Algorithm23Code {
2271    #[serde(rename = "EA2C")]
2272    Ea2C,
2273    #[serde(rename = "E3DC")]
2274    E3Dc,
2275    #[serde(rename = "EA9C")]
2276    Ea9C,
2277    #[serde(rename = "EA5C")]
2278    Ea5C,
2279    #[serde(rename = "EA2R")]
2280    Ea2R,
2281    #[serde(rename = "EA9R")]
2282    Ea9R,
2283    #[serde(rename = "EA5R")]
2284    Ea5R,
2285    #[serde(rename = "E3DR")]
2286    E3Dr,
2287    #[serde(rename = "E36C")]
2288    E36C,
2289    #[serde(rename = "E36R")]
2290    E36R,
2291    #[serde(rename = "SD5C")]
2292    Sd5C,
2293    #[default]
2294    Unknown,
2295}
2296#[derive(
2297    Debug,
2298    Default,
2299    Clone,
2300    PartialEq,
2301    ::serde::Serialize,
2302    ::serde::Deserialize,
2303    ::derive_builder::Builder,
2304    ::validator::Validate,
2305)]
2306pub struct SettlementServiceDate2 {
2307    #[serde(rename = "ReqdSttlmDt", skip_serializing_if = "Option::is_none")]
2308    pub reqd_sttlm_dt: Option<IsoDate>,
2309    #[serde(rename = "DfrrdSttlmInd", skip_serializing_if = "Option::is_none")]
2310    pub dfrrd_sttlm_ind: Option<TrueFalseIndicator>,
2311    #[serde(rename = "SttlmDt", skip_serializing_if = "Option::is_none")]
2312    pub sttlm_dt: Option<IsoDate>,
2313    #[serde(rename = "SttlmTm", skip_serializing_if = "Option::is_none")]
2314    pub sttlm_tm: Option<IsoTime>,
2315    #[serde(rename = "SttlmPrd", skip_serializing_if = "Option::is_none")]
2316    pub sttlm_prd: Option<Max35Text>,
2317    #[serde(rename = "SttlmCutOffTm", skip_serializing_if = "Option::is_none")]
2318    pub sttlm_cut_off_tm: Option<IsoDateTime>,
2319}
2320#[derive(
2321    Debug,
2322    Default,
2323    Clone,
2324    PartialEq,
2325    ::serde::Serialize,
2326    ::serde::Deserialize,
2327    ::derive_builder::Builder,
2328    ::validator::Validate,
2329)]
2330pub struct AlgorithmIdentification25 {
2331    #[serde(rename = "Algo")]
2332    pub algo: Algorithm23Code,
2333    #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
2334    pub param: Option<Parameter7>,
2335}
2336#[derive(
2337    Debug,
2338    Default,
2339    Clone,
2340    PartialEq,
2341    ::serde::Serialize,
2342    ::serde::Deserialize,
2343    ::derive_builder::Builder,
2344    ::validator::Validate,
2345)]
2346pub struct Iso3NumericCountryCode {
2347    #[validate(regex = "ISO_3_NUMERIC_COUNTRY_CODE_REGEX")]
2348    #[serde(rename = "$text")]
2349    pub value: String,
2350}
2351#[derive(
2352    Debug,
2353    Default,
2354    Clone,
2355    PartialEq,
2356    ::serde::Serialize,
2357    ::serde::Deserialize,
2358    ::derive_builder::Builder,
2359    ::validator::Validate,
2360)]
2361pub struct BatchTransferInitiation2<
2362    A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
2363> {
2364    #[validate]
2365    #[serde(rename = "Envt")]
2366    pub envt: Environment4,
2367    #[serde(rename = "Cntxt", skip_serializing_if = "Option::is_none")]
2368    pub cntxt: Option<Context17>,
2369    #[validate]
2370    #[serde(rename = "Tx")]
2371    pub tx: Transaction141,
2372    #[serde(rename = "PrcgRslt", skip_serializing_if = "Option::is_none")]
2373    pub prcg_rslt: Option<ProcessingResult20>,
2374    #[validate(length(min = 0,))]
2375    #[serde(rename = "PrtctdData", default)]
2376    pub prtctd_data: Vec<ProtectedData1>,
2377    #[validate(length(min = 0,))]
2378    #[serde(rename = "SplmtryData", default)]
2379    pub splmtry_data: Vec<SupplementaryData1<A>>,
2380}