1use validator::Validate;
22
23::lazy_static::lazy_static! {
24 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();
25}
26
27::lazy_static::lazy_static! {
28 static ref ACTIVE_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{3,3}"#).unwrap();
29}
30
31::lazy_static::lazy_static! {
32 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();
33}
34
35::lazy_static::lazy_static! {
36 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();
37}
38
39::lazy_static::lazy_static! {
40 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();
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_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();
49}
50
51::lazy_static::lazy_static! {
52 static ref MAX_3_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{1,3}"#).unwrap();
53}
54
55::lazy_static::lazy_static! {
56 static ref MIN_2_MAX_3_ALPHA_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z]{2,3}"#).unwrap();
57}
58
59::lazy_static::lazy_static! {
60 static ref COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}"#).unwrap();
61}
62
63pub fn namespace() -> String {
65 "urn:iso:std:iso:20022:tech:xsd:caam.009.001.02".to_string()
66}
67
68#[derive(
69 Debug,
70 Default,
71 Clone,
72 PartialEq,
73 ::serde::Serialize,
74 ::serde::Deserialize,
75 ::derive_builder::Builder,
76 ::validator::Validate,
77)]
78pub struct Parameter5 {
79 #[serde(rename = "DgstAlgo", skip_serializing_if = "Option::is_none")]
80 pub dgst_algo: Option<Algorithm11Code>,
81}
82#[derive(
83 Debug,
84 Default,
85 Clone,
86 PartialEq,
87 ::serde::Serialize,
88 ::serde::Deserialize,
89 ::derive_builder::Builder,
90 ::validator::Validate,
91)]
92pub struct AtmReconciliationAdvice2 {
93 #[validate]
94 #[serde(rename = "Envt")]
95 pub envt: AtmEnvironment10,
96 #[validate(length(min = 0,))]
97 #[serde(rename = "CmdRslt", default)]
98 pub cmd_rslt: Vec<AtmCommand8>,
99 #[serde(rename = "CmdCntxt", skip_serializing_if = "Option::is_none")]
100 pub cmd_cntxt: Option<AtmCommand9>,
101 #[validate]
102 #[serde(rename = "Tx")]
103 pub tx: AtmTransaction25,
104}
105#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
106pub enum AtmCounterType1Code {
107 #[serde(rename = "INQU")]
108 Inqu,
109 #[serde(rename = "CTXN")]
110 Ctxn,
111 #[serde(rename = "CTOF")]
112 Ctof,
113 #[serde(rename = "BDAY")]
114 Bday,
115 #[serde(rename = "PRTN")]
116 Prtn,
117 #[serde(rename = "OPER")]
118 Oper,
119 #[default]
120 Unknown,
121}
122#[derive(
123 Debug,
124 Default,
125 Clone,
126 PartialEq,
127 ::serde::Serialize,
128 ::serde::Deserialize,
129 ::derive_builder::Builder,
130 ::validator::Validate,
131)]
132pub struct Number {
133 #[serde(rename = "$text")]
134 pub value: f64,
135}
136#[derive(
137 Debug,
138 Default,
139 Clone,
140 PartialEq,
141 ::serde::Serialize,
142 ::serde::Deserialize,
143 ::derive_builder::Builder,
144 ::validator::Validate,
145)]
146pub struct AtmCassette2 {
147 #[serde(rename = "PhysId", skip_serializing_if = "Option::is_none")]
148 pub phys_id: Option<Max35Text>,
149 #[validate]
150 #[serde(rename = "LogclId")]
151 pub logcl_id: Max35Text,
152 #[serde(rename = "SrlNb", skip_serializing_if = "Option::is_none")]
153 pub srl_nb: Option<Max35Text>,
154 #[serde(rename = "Tp")]
155 pub tp: AtmCassetteType1Code,
156 #[validate(length(min = 0,))]
157 #[serde(rename = "SubTp", default)]
158 pub sub_tp: Vec<AtmNoteType1Code>,
159 #[serde(rename = "MdiaTp", skip_serializing_if = "Option::is_none")]
160 pub mdia_tp: Option<AtmMediaType1Code>,
161 #[validate(length(min = 0,))]
162 #[serde(rename = "MdiaCntrs", default)]
163 pub mdia_cntrs: Vec<AtmCassetteCounters3>,
164}
165#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
166pub enum BytePadding1Code {
167 #[serde(rename = "LNGT")]
168 Lngt,
169 #[serde(rename = "NUL8")]
170 Nul8,
171 #[serde(rename = "NULG")]
172 Nulg,
173 #[serde(rename = "NULL")]
174 Null,
175 #[serde(rename = "RAND")]
176 Rand,
177 #[default]
178 Unknown,
179}
180#[derive(
181 Debug,
182 Default,
183 Clone,
184 PartialEq,
185 ::serde::Serialize,
186 ::serde::Deserialize,
187 ::derive_builder::Builder,
188 ::validator::Validate,
189)]
190pub struct GeographicCoordinates1 {
191 #[validate]
192 #[serde(rename = "Lat")]
193 pub lat: Max16Text,
194 #[validate]
195 #[serde(rename = "Long")]
196 pub long: Max16Text,
197}
198#[derive(
199 Debug,
200 Default,
201 Clone,
202 PartialEq,
203 ::serde::Serialize,
204 ::serde::Deserialize,
205 ::derive_builder::Builder,
206 ::validator::Validate,
207)]
208pub struct Max140Binary {
209 #[validate(length(min = 1, max = 140,), regex = "MAX_140_BINARY_REGEX")]
210 pub value: String,
211}
212#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
213pub enum TransactionEnvironment3Code {
214 #[serde(rename = "BRCH")]
215 Brch,
216 #[serde(rename = "MERC")]
217 Merc,
218 #[serde(rename = "OTHR")]
219 Othr,
220 #[default]
221 Unknown,
222}
223#[derive(
224 Debug,
225 Default,
226 Clone,
227 PartialEq,
228 ::serde::Serialize,
229 ::serde::Deserialize,
230 ::derive_builder::Builder,
231 ::validator::Validate,
232)]
233pub struct ActiveCurrencyCode {
234 #[validate(regex = "ACTIVE_CURRENCY_CODE_REGEX")]
235 #[serde(rename = "$text")]
236 pub value: String,
237}
238#[derive(
239 Debug,
240 Default,
241 Clone,
242 PartialEq,
243 ::serde::Serialize,
244 ::serde::Deserialize,
245 ::derive_builder::Builder,
246 ::validator::Validate,
247)]
248pub struct UtmCoordinates1 {
249 #[validate]
250 #[serde(rename = "UTMZone")]
251 pub utm_zone: Max16Text,
252 #[validate]
253 #[serde(rename = "UTMEstwrd")]
254 pub utm_estwrd: Number,
255 #[validate]
256 #[serde(rename = "UTMNrthwrd")]
257 pub utm_nrthwrd: Number,
258}
259#[derive(
260 Debug,
261 Default,
262 Clone,
263 PartialEq,
264 ::serde::Serialize,
265 ::serde::Deserialize,
266 ::derive_builder::Builder,
267 ::validator::Validate,
268)]
269pub struct TerminalHosting1 {
270 #[serde(rename = "Ctgy", skip_serializing_if = "Option::is_none")]
271 pub ctgy: Option<TransactionEnvironment3Code>,
272 #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
273 pub id: Option<Max35Text>,
274}
275#[derive(
276 Debug,
277 Default,
278 Clone,
279 PartialEq,
280 ::serde::Serialize,
281 ::serde::Deserialize,
282 ::derive_builder::Builder,
283 ::validator::Validate,
284)]
285pub struct AlgorithmIdentification11 {
286 #[serde(rename = "Algo")]
287 pub algo: Algorithm7Code,
288 #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
289 pub param: Option<Parameter4>,
290}
291#[derive(
292 Debug,
293 Default,
294 Clone,
295 PartialEq,
296 ::serde::Serialize,
297 ::serde::Deserialize,
298 ::derive_builder::Builder,
299 ::validator::Validate,
300)]
301pub struct IsoDateTime {
302 #[serde(rename = "$text")]
303 pub value: ::chrono::DateTime<::chrono::Utc>,
304}
305#[derive(
306 Debug,
307 Default,
308 Clone,
309 PartialEq,
310 ::serde::Serialize,
311 ::serde::Deserialize,
312 ::derive_builder::Builder,
313 ::validator::Validate,
314)]
315pub struct AtmConfigurationParameter1 {
316 #[serde(rename = "Tp")]
317 pub tp: DataSetCategory7Code,
318 #[validate]
319 #[serde(rename = "Vrsn")]
320 pub vrsn: Max35Text,
321}
322#[derive(
323 Debug,
324 Default,
325 Clone,
326 PartialEq,
327 ::serde::Serialize,
328 ::serde::Deserialize,
329 ::derive_builder::Builder,
330 ::validator::Validate,
331)]
332pub struct ContentInformationType10 {
333 #[serde(rename = "CnttTp")]
334 pub cntt_tp: ContentType2Code,
335 #[validate]
336 #[serde(rename = "EnvlpdData")]
337 pub envlpd_data: EnvelopedData4,
338}
339#[derive(
340 Debug,
341 Default,
342 Clone,
343 PartialEq,
344 ::serde::Serialize,
345 ::serde::Deserialize,
346 ::derive_builder::Builder,
347 ::validator::Validate,
348)]
349pub struct Max35Binary {
350 #[validate(length(min = 1, max = 35,), regex = "MAX_35_BINARY_REGEX")]
351 pub value: String,
352}
353#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
354pub enum TransactionEnvironment2Code {
355 #[serde(rename = "PRIV")]
356 Priv,
357 #[serde(rename = "PUBL")]
358 Publ,
359 #[default]
360 Unknown,
361}
362#[derive(
363 Debug,
364 Default,
365 Clone,
366 PartialEq,
367 ::serde::Serialize,
368 ::serde::Deserialize,
369 ::derive_builder::Builder,
370 ::validator::Validate,
371)]
372pub struct EncryptedContent3 {
373 #[serde(rename = "CnttTp")]
374 pub cntt_tp: ContentType2Code,
375 #[validate]
376 #[serde(rename = "CnttNcrptnAlgo")]
377 pub cntt_ncrptn_algo: AlgorithmIdentification14,
378 #[validate]
379 #[serde(rename = "NcrptdData")]
380 pub ncrptd_data: Max100KBinary,
381}
382#[derive(
383 Debug,
384 Default,
385 Clone,
386 PartialEq,
387 ::serde::Serialize,
388 ::serde::Deserialize,
389 ::derive_builder::Builder,
390 ::validator::Validate,
391)]
392pub struct AtmEquipment1 {
393 #[serde(rename = "Manfctr", skip_serializing_if = "Option::is_none")]
394 pub manfctr: Option<Max35Text>,
395 #[serde(rename = "Mdl", skip_serializing_if = "Option::is_none")]
396 pub mdl: Option<Max35Text>,
397 #[serde(rename = "SrlNb", skip_serializing_if = "Option::is_none")]
398 pub srl_nb: Option<Max35Text>,
399 #[serde(rename = "ApplPrvdr", skip_serializing_if = "Option::is_none")]
400 pub appl_prvdr: Option<Max35Text>,
401 #[serde(rename = "ApplNm", skip_serializing_if = "Option::is_none")]
402 pub appl_nm: Option<Max35Text>,
403 #[serde(rename = "ApplVrsn", skip_serializing_if = "Option::is_none")]
404 pub appl_vrsn: Option<Max35Text>,
405 #[serde(rename = "ApprvlNb", skip_serializing_if = "Option::is_none")]
406 pub apprvl_nb: Option<Max35Text>,
407 #[validate(length(min = 0,))]
408 #[serde(rename = "CfgtnParam", default)]
409 pub cfgtn_param: Vec<AtmConfigurationParameter1>,
410}
411#[derive(
412 Debug,
413 Default,
414 Clone,
415 PartialEq,
416 ::serde::Serialize,
417 ::serde::Deserialize,
418 ::derive_builder::Builder,
419 ::validator::Validate,
420)]
421pub struct RelativeDistinguishedName1 {
422 #[serde(rename = "AttrTp")]
423 pub attr_tp: AttributeType1Code,
424 #[validate]
425 #[serde(rename = "AttrVal")]
426 pub attr_val: Max140Text,
427}
428#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
429pub enum AtmCounterType2Code {
430 #[serde(rename = "BDAY")]
431 Bday,
432 #[serde(rename = "INQU")]
433 Inqu,
434 #[serde(rename = "CTOF")]
435 Ctof,
436 #[serde(rename = "OPER")]
437 Oper,
438 #[default]
439 Unknown,
440}
441#[derive(
442 Debug,
443 Default,
444 Clone,
445 PartialEq,
446 ::serde::Serialize,
447 ::serde::Deserialize,
448 ::derive_builder::Builder,
449 ::validator::Validate,
450)]
451pub struct AtmReconciliationAdviceV02 {
452 #[validate]
453 #[serde(rename = "Hdr")]
454 pub hdr: Header32,
455 #[serde(
456 rename = "PrtctdATMRcncltnAdvc",
457 skip_serializing_if = "Option::is_none"
458 )]
459 pub prtctd_atm_rcncltn_advc: Option<ContentInformationType10>,
460 #[serde(rename = "ATMRcncltnAdvc", skip_serializing_if = "Option::is_none")]
461 pub atm_rcncltn_advc: Option<AtmReconciliationAdvice2>,
462 #[serde(rename = "SctyTrlr", skip_serializing_if = "Option::is_none")]
463 pub scty_trlr: Option<ContentInformationType15>,
464}
465#[derive(
466 Debug,
467 Default,
468 Clone,
469 PartialEq,
470 ::serde::Serialize,
471 ::serde::Deserialize,
472 ::derive_builder::Builder,
473 ::validator::Validate,
474)]
475pub struct Acquirer7 {
476 #[serde(rename = "AcqrgInstn", skip_serializing_if = "Option::is_none")]
477 pub acqrg_instn: Option<Max35Text>,
478 #[serde(rename = "Brnch", skip_serializing_if = "Option::is_none")]
479 pub brnch: Option<Max35Text>,
480}
481#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
482pub enum Algorithm15Code {
483 #[serde(rename = "EA2C")]
484 Ea2C,
485 #[serde(rename = "E3DC")]
486 E3Dc,
487 #[serde(rename = "EA9C")]
488 Ea9C,
489 #[serde(rename = "EA5C")]
490 Ea5C,
491 #[default]
492 Unknown,
493}
494#[derive(
495 Debug,
496 Default,
497 Clone,
498 PartialEq,
499 ::serde::Serialize,
500 ::serde::Deserialize,
501 ::derive_builder::Builder,
502 ::validator::Validate,
503)]
504pub struct EnvelopedData4 {
505 #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
506 pub vrsn: Option<Number>,
507 #[validate(length(min = 1,))]
508 #[serde(rename = "Rcpt", default)]
509 pub rcpt: Vec<Recipient4Choice>,
510 #[serde(rename = "NcrptdCntt", skip_serializing_if = "Option::is_none")]
511 pub ncrptd_cntt: Option<EncryptedContent3>,
512}
513#[derive(
514 Debug,
515 Default,
516 Clone,
517 PartialEq,
518 ::serde::Serialize,
519 ::serde::Deserialize,
520 ::derive_builder::Builder,
521 ::validator::Validate,
522)]
523pub struct AutomatedTellerMachine8 {
524 #[validate]
525 #[serde(rename = "Id")]
526 pub id: Max35Text,
527 #[serde(rename = "AddtlId", skip_serializing_if = "Option::is_none")]
528 pub addtl_id: Option<Max35Text>,
529 #[serde(rename = "SeqNb", skip_serializing_if = "Option::is_none")]
530 pub seq_nb: Option<Max35Text>,
531 #[serde(rename = "BaseCcy")]
532 pub base_ccy: ActiveCurrencyCode,
533 #[serde(rename = "Lctn", skip_serializing_if = "Option::is_none")]
534 pub lctn: Option<PostalAddress17>,
535 #[serde(rename = "LctnCtgy", skip_serializing_if = "Option::is_none")]
536 pub lctn_ctgy: Option<TransactionEnvironment2Code>,
537 #[serde(rename = "Eqpmnt", skip_serializing_if = "Option::is_none")]
538 pub eqpmnt: Option<AtmEquipment1>,
539}
540#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
541pub enum AtmNoteType1Code {
542 #[serde(rename = "ALLT")]
543 Allt,
544 #[serde(rename = "CNTR")]
545 Cntr,
546 #[serde(rename = "IDVD")]
547 Idvd,
548 #[serde(rename = "SCNT")]
549 Scnt,
550 #[serde(rename = "UNFT")]
551 Unft,
552 #[default]
553 Unknown,
554}
555#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
556pub enum AtmOperation1Code {
557 #[serde(rename = "ADJU")]
558 Adju,
559 #[serde(rename = "INSR")]
560 Insr,
561 #[serde(rename = "LOAD")]
562 Load,
563 #[serde(rename = "REMV")]
564 Remv,
565 #[serde(rename = "UNLD")]
566 Unld,
567 #[default]
568 Unknown,
569}
570#[derive(
571 Debug,
572 Default,
573 Clone,
574 PartialEq,
575 ::serde::Serialize,
576 ::serde::Deserialize,
577 ::derive_builder::Builder,
578 ::validator::Validate,
579)]
580pub struct AtmEnvironment10 {
581 #[serde(rename = "Acqrr", skip_serializing_if = "Option::is_none")]
582 pub acqrr: Option<Acquirer7>,
583 #[serde(rename = "ATMMgrId", skip_serializing_if = "Option::is_none")]
584 pub atm_mgr_id: Option<Max35Text>,
585 #[serde(rename = "HstgNtty", skip_serializing_if = "Option::is_none")]
586 pub hstg_ntty: Option<TerminalHosting1>,
587 #[validate]
588 #[serde(rename = "ATM")]
589 pub atm: AutomatedTellerMachine8,
590}
591#[derive(
592 Debug,
593 Default,
594 Clone,
595 PartialEq,
596 ::serde::Serialize,
597 ::serde::Deserialize,
598 ::derive_builder::Builder,
599 ::validator::Validate,
600)]
601pub struct EncapsulatedContent3 {
602 #[serde(rename = "CnttTp")]
603 pub cntt_tp: ContentType2Code,
604 #[serde(rename = "Cntt", skip_serializing_if = "Option::is_none")]
605 pub cntt: Option<Max100KBinary>,
606}
607#[derive(
608 Debug,
609 Default,
610 Clone,
611 PartialEq,
612 ::serde::Serialize,
613 ::serde::Deserialize,
614 ::derive_builder::Builder,
615 ::validator::Validate,
616)]
617pub struct Max100KBinary {
618 #[validate(length(min = 1, max = 102400,), regex = "MAX_100_K_BINARY_REGEX")]
619 pub value: String,
620}
621#[derive(
622 Debug,
623 Default,
624 Clone,
625 PartialEq,
626 ::serde::Serialize,
627 ::serde::Deserialize,
628 ::derive_builder::Builder,
629 ::validator::Validate,
630)]
631pub struct Min5Max16Binary {
632 #[validate(length(min = 5, max = 16,), regex = "MIN_5_MAX_16_BINARY_REGEX")]
633 pub value: String,
634}
635#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
636pub enum TerminalManagementActionResult2Code {
637 #[serde(rename = "CNTE")]
638 Cnte,
639 #[serde(rename = "FMTE")]
640 Fmte,
641 #[serde(rename = "HRDW")]
642 Hrdw,
643 #[serde(rename = "NSUP")]
644 Nsup,
645 #[serde(rename = "SECR")]
646 Secr,
647 #[serde(rename = "SUCC")]
648 Succ,
649 #[serde(rename = "SYNE")]
650 Syne,
651 #[serde(rename = "TIMO")]
652 Timo,
653 #[serde(rename = "UKRF")]
654 Ukrf,
655 #[default]
656 Unknown,
657}
658#[derive(
659 Debug,
660 Default,
661 Clone,
662 PartialEq,
663 ::serde::Serialize,
664 ::serde::Deserialize,
665 ::derive_builder::Builder,
666 ::validator::Validate,
667)]
668pub struct AtmCommand9 {
669 #[serde(rename = "Tp")]
670 pub tp: AtmCommand5Code,
671 #[serde(rename = "CmdId", skip_serializing_if = "Option::is_none")]
672 pub cmd_id: Option<AtmCommandIdentification1>,
673}
674#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
675pub enum Algorithm7Code {
676 #[serde(rename = "ERSA")]
677 Ersa,
678 #[serde(rename = "RSAO")]
679 Rsao,
680 #[default]
681 Unknown,
682}
683#[derive(
684 Debug,
685 Default,
686 Clone,
687 PartialEq,
688 ::serde::Serialize,
689 ::serde::Deserialize,
690 ::derive_builder::Builder,
691 ::validator::Validate,
692)]
693pub struct AlgorithmIdentification13 {
694 #[serde(rename = "Algo")]
695 pub algo: Algorithm13Code,
696 #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
697 pub param: Option<Parameter6>,
698}
699#[derive(
700 Debug,
701 Default,
702 Clone,
703 PartialEq,
704 ::serde::Serialize,
705 ::serde::Deserialize,
706 ::derive_builder::Builder,
707 ::validator::Validate,
708)]
709pub struct Max500Binary {
710 #[validate(length(min = 1, max = 500,), regex = "MAX_500_BINARY_REGEX")]
711 pub value: String,
712}
713#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
714pub enum AtmCassetteType1Code {
715 #[serde(rename = "DPST")]
716 Dpst,
717 #[serde(rename = "DISP")]
718 Disp,
719 #[serde(rename = "RCYC")]
720 Rcyc,
721 #[serde(rename = "RJCT")]
722 Rjct,
723 #[serde(rename = "RPLT")]
724 Rplt,
725 #[serde(rename = "RTRC")]
726 Rtrc,
727 #[default]
728 Unknown,
729}
730#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
731pub enum AtmMediaType3Code {
732 #[serde(rename = "CNTR")]
733 Cntr,
734 #[serde(rename = "FITN")]
735 Fitn,
736 #[serde(rename = "FITU")]
737 Fitu,
738 #[serde(rename = "SPCT")]
739 Spct,
740 #[serde(rename = "UNFT")]
741 Unft,
742 #[serde(rename = "UNRG")]
743 Unrg,
744 #[default]
745 Unknown,
746}
747#[derive(
748 Debug,
749 Default,
750 Clone,
751 PartialEq,
752 ::serde::Serialize,
753 ::serde::Deserialize,
754 ::derive_builder::Builder,
755 ::validator::Validate,
756)]
757pub struct AtmMessageFunction2 {
758 #[serde(rename = "Fctn")]
759 pub fctn: MessageFunction11Code,
760 #[serde(rename = "ATMSvcCd", skip_serializing_if = "Option::is_none")]
761 pub atm_svc_cd: Option<Max35Text>,
762 #[serde(rename = "HstSvcCd", skip_serializing_if = "Option::is_none")]
763 pub hst_svc_cd: Option<Max35Text>,
764}
765#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
766pub enum Algorithm12Code {
767 #[serde(rename = "MACC")]
768 Macc,
769 #[serde(rename = "MCCS")]
770 Mccs,
771 #[serde(rename = "CMA1")]
772 Cma1,
773 #[serde(rename = "MCC1")]
774 Mcc1,
775 #[serde(rename = "CMA9")]
776 Cma9,
777 #[serde(rename = "CMA5")]
778 Cma5,
779 #[default]
780 Unknown,
781}
782#[derive(
783 Debug,
784 Default,
785 Clone,
786 PartialEq,
787 ::serde::Serialize,
788 ::serde::Deserialize,
789 ::derive_builder::Builder,
790 ::validator::Validate,
791)]
792pub struct AlgorithmIdentification12 {
793 #[serde(rename = "Algo")]
794 pub algo: Algorithm8Code,
795 #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
796 pub param: Option<Parameter5>,
797}
798#[derive(
799 Debug,
800 Default,
801 Clone,
802 PartialEq,
803 ::serde::Serialize,
804 ::serde::Deserialize,
805 ::derive_builder::Builder,
806 ::validator::Validate,
807)]
808pub struct AuthenticatedData4 {
809 #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
810 pub vrsn: Option<Number>,
811 #[validate(length(min = 1,))]
812 #[serde(rename = "Rcpt", default)]
813 pub rcpt: Vec<Recipient4Choice>,
814 #[validate]
815 #[serde(rename = "MACAlgo")]
816 pub mac_algo: AlgorithmIdentification15,
817 #[validate]
818 #[serde(rename = "NcpsltdCntt")]
819 pub ncpsltd_cntt: EncapsulatedContent3,
820 #[validate]
821 #[serde(rename = "MAC")]
822 pub mac: Max140Binary,
823}
824#[derive(
825 Debug,
826 Default,
827 Clone,
828 PartialEq,
829 ::serde::Serialize,
830 ::serde::Deserialize,
831 ::derive_builder::Builder,
832 ::validator::Validate,
833)]
834pub struct Max70Text {
835 #[validate(length(min = 1, max = 70,))]
836 #[serde(rename = "$text")]
837 pub value: String,
838}
839#[derive(
840 Debug,
841 Default,
842 Clone,
843 PartialEq,
844 ::serde::Serialize,
845 ::serde::Deserialize,
846 ::derive_builder::Builder,
847 ::validator::Validate,
848)]
849pub struct Max140Text {
850 #[validate(length(min = 1, max = 140,))]
851 #[serde(rename = "$text")]
852 pub value: String,
853}
854#[derive(
855 Debug,
856 Default,
857 Clone,
858 PartialEq,
859 ::serde::Serialize,
860 ::serde::Deserialize,
861 ::derive_builder::Builder,
862 ::validator::Validate,
863)]
864pub struct GenericIdentification77 {
865 #[validate]
866 #[serde(rename = "Id")]
867 pub id: Max35Text,
868 #[serde(rename = "Tp")]
869 pub tp: PartyType12Code,
870 #[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
871 pub issr: Option<PartyType12Code>,
872 #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
873 pub ctry: Option<Min2Max3AlphaText>,
874 #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
875 pub shrt_nm: Option<Max35Text>,
876}
877#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
878pub enum Algorithm11Code {
879 #[serde(rename = "HS25")]
880 Hs25,
881 #[serde(rename = "HS38")]
882 Hs38,
883 #[serde(rename = "HS51")]
884 Hs51,
885 #[serde(rename = "HS01")]
886 Hs01,
887 #[default]
888 Unknown,
889}
890#[derive(
891 Debug,
892 Default,
893 Clone,
894 PartialEq,
895 ::serde::Serialize,
896 ::serde::Deserialize,
897 ::derive_builder::Builder,
898 ::validator::Validate,
899)]
900pub struct KeyTransport4 {
901 #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
902 pub vrsn: Option<Number>,
903 #[serde(rename = "RcptId")]
904 pub rcpt_id: Recipient5Choice,
905 #[validate]
906 #[serde(rename = "KeyNcrptnAlgo")]
907 pub key_ncrptn_algo: AlgorithmIdentification11,
908 #[validate]
909 #[serde(rename = "NcrptdKey")]
910 pub ncrptd_key: Max5000Binary,
911}
912#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
913pub enum PartyType12Code {
914 #[serde(rename = "ACQR")]
915 Acqr,
916 #[serde(rename = "ATMG")]
917 Atmg,
918 #[serde(rename = "CISP")]
919 Cisp,
920 #[serde(rename = "DLIS")]
921 Dlis,
922 #[serde(rename = "HSTG")]
923 Hstg,
924 #[serde(rename = "ITAG")]
925 Itag,
926 #[serde(rename = "OATM")]
927 Oatm,
928 #[default]
929 Unknown,
930}
931#[derive(
932 Debug,
933 Default,
934 Clone,
935 PartialEq,
936 ::serde::Serialize,
937 ::serde::Deserialize,
938 ::derive_builder::Builder,
939 ::validator::Validate,
940)]
941pub struct Recipient5ChoiceEnum {
942 #[serde(rename = "IssrAndSrlNb", skip_serializing_if = "Option::is_none")]
943 pub issr_and_srl_nb: Option<IssuerAndSerialNumber1>,
944 #[serde(rename = "KeyIdr", skip_serializing_if = "Option::is_none")]
945 pub key_idr: Option<KekIdentifier2>,
946}
947#[derive(
948 Debug,
949 Default,
950 Clone,
951 PartialEq,
952 ::serde::Serialize,
953 ::serde::Deserialize,
954 ::derive_builder::Builder,
955 ::validator::Validate,
956)]
957pub struct Recipient5Choice {
958 #[serde(flatten)]
959 pub value: Recipient5ChoiceEnum,
960}
961#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
962pub enum AttributeType1Code {
963 #[serde(rename = "CNAT")]
964 Cnat,
965 #[serde(rename = "LATT")]
966 Latt,
967 #[serde(rename = "OATT")]
968 Oatt,
969 #[serde(rename = "OUAT")]
970 Ouat,
971 #[serde(rename = "CATT")]
972 Catt,
973 #[default]
974 Unknown,
975}
976#[derive(
977 Debug,
978 Default,
979 Clone,
980 PartialEq,
981 ::serde::Serialize,
982 ::serde::Deserialize,
983 ::derive_builder::Builder,
984 ::validator::Validate,
985)]
986pub struct Max5000Binary {
987 #[validate(length(min = 1, max = 5000,), regex = "MAX_5000_BINARY_REGEX")]
988 pub value: String,
989}
990#[derive(
991 Debug,
992 Default,
993 Clone,
994 PartialEq,
995 ::serde::Serialize,
996 ::serde::Deserialize,
997 ::derive_builder::Builder,
998 ::validator::Validate,
999)]
1000pub struct AtmTransaction25 {
1001 #[serde(rename = "TpOfOpr", skip_serializing_if = "Option::is_none")]
1002 pub tp_of_opr: Option<AtmOperation1Code>,
1003 #[validate]
1004 #[serde(rename = "TxId")]
1005 pub tx_id: TransactionIdentifier1,
1006 #[validate]
1007 #[serde(rename = "RcncltnId")]
1008 pub rcncltn_id: Max35Text,
1009 #[validate(length(min = 0,))]
1010 #[serde(rename = "ATMTtls", default)]
1011 pub atm_ttls: Vec<AtmTotals1>,
1012 #[validate(length(min = 0,))]
1013 #[serde(rename = "Csstt", default)]
1014 pub csstt: Vec<AtmCassette2>,
1015 #[validate(length(min = 0,))]
1016 #[serde(rename = "TxTtls", default)]
1017 pub tx_ttls: Vec<AtmTotals3>,
1018 #[serde(rename = "RtndCard", skip_serializing_if = "Option::is_none")]
1019 pub rtnd_card: Option<Number>,
1020 #[serde(rename = "AddtlTxInf", skip_serializing_if = "Option::is_none")]
1021 pub addtl_tx_inf: Option<Max140Text>,
1022}
1023#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1024pub enum Algorithm8Code {
1025 #[serde(rename = "MGF1")]
1026 Mgf1,
1027 #[default]
1028 Unknown,
1029}
1030#[derive(
1031 Debug,
1032 Default,
1033 Clone,
1034 PartialEq,
1035 ::serde::Serialize,
1036 ::serde::Deserialize,
1037 ::derive_builder::Builder,
1038 ::validator::Validate,
1039)]
1040pub struct Header32 {
1041 #[validate]
1042 #[serde(rename = "MsgFctn")]
1043 pub msg_fctn: AtmMessageFunction2,
1044 #[validate]
1045 #[serde(rename = "PrtcolVrsn")]
1046 pub prtcol_vrsn: Max6Text,
1047 #[validate]
1048 #[serde(rename = "XchgId")]
1049 pub xchg_id: Max3NumericText,
1050 #[serde(rename = "ReTrnsmssnCntr", skip_serializing_if = "Option::is_none")]
1051 pub re_trnsmssn_cntr: Option<Number>,
1052 #[validate]
1053 #[serde(rename = "CreDtTm")]
1054 pub cre_dt_tm: IsoDateTime,
1055 #[validate]
1056 #[serde(rename = "InitgPty")]
1057 pub initg_pty: Max35Text,
1058 #[serde(rename = "RcptPty", skip_serializing_if = "Option::is_none")]
1059 pub rcpt_pty: Option<Max35Text>,
1060 #[serde(rename = "PrcStat", skip_serializing_if = "Option::is_none")]
1061 pub prc_stat: Option<Max35Text>,
1062 #[validate(length(min = 0,))]
1063 #[serde(rename = "Tracblt", default)]
1064 pub tracblt: Vec<Traceability4>,
1065}
1066#[derive(
1067 Debug,
1068 Default,
1069 Clone,
1070 PartialEq,
1071 ::serde::Serialize,
1072 ::serde::Deserialize,
1073 ::derive_builder::Builder,
1074 ::validator::Validate,
1075)]
1076pub struct AtmTotals1 {
1077 #[serde(rename = "MdiaTp", skip_serializing_if = "Option::is_none")]
1078 pub mdia_tp: Option<AtmMediaType1Code>,
1079 #[serde(rename = "Ccy", skip_serializing_if = "Option::is_none")]
1080 pub ccy: Option<ActiveCurrencyCode>,
1081 #[serde(rename = "ATMBal", skip_serializing_if = "Option::is_none")]
1082 pub atm_bal: Option<ImpliedCurrencyAndAmount>,
1083 #[serde(rename = "ATMCur", skip_serializing_if = "Option::is_none")]
1084 pub atm_cur: Option<ImpliedCurrencyAndAmount>,
1085 #[serde(rename = "ATMBalNb", skip_serializing_if = "Option::is_none")]
1086 pub atm_bal_nb: Option<Number>,
1087 #[serde(rename = "ATMCurNb", skip_serializing_if = "Option::is_none")]
1088 pub atm_cur_nb: Option<Number>,
1089}
1090#[derive(
1091 Debug,
1092 Default,
1093 Clone,
1094 PartialEq,
1095 ::serde::Serialize,
1096 ::serde::Deserialize,
1097 ::derive_builder::Builder,
1098 ::validator::Validate,
1099)]
1100pub struct Max3NumericText {
1101 #[validate(regex = "MAX_3_NUMERIC_TEXT_REGEX")]
1102 #[serde(rename = "$text")]
1103 pub value: String,
1104}
1105#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1106pub enum EncryptionFormat1Code {
1107 #[serde(rename = "TR31")]
1108 Tr31,
1109 #[serde(rename = "TR34")]
1110 Tr34,
1111 #[default]
1112 Unknown,
1113}
1114#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1115pub enum MessageFunction11Code {
1116 #[serde(rename = "BALN")]
1117 Baln,
1118 #[serde(rename = "CMPA")]
1119 Cmpa,
1120 #[serde(rename = "CMPD")]
1121 Cmpd,
1122 #[serde(rename = "ACMD")]
1123 Acmd,
1124 #[serde(rename = "DVCC")]
1125 Dvcc,
1126 #[serde(rename = "DIAQ")]
1127 Diaq,
1128 #[serde(rename = "DIAP")]
1129 Diap,
1130 #[serde(rename = "GSTS")]
1131 Gsts,
1132 #[serde(rename = "INQQ")]
1133 Inqq,
1134 #[serde(rename = "INQP")]
1135 Inqp,
1136 #[serde(rename = "KYAQ")]
1137 Kyaq,
1138 #[serde(rename = "KYAP")]
1139 Kyap,
1140 #[serde(rename = "PINQ")]
1141 Pinq,
1142 #[serde(rename = "PINP")]
1143 Pinp,
1144 #[serde(rename = "RJAQ")]
1145 Rjaq,
1146 #[serde(rename = "RJAP")]
1147 Rjap,
1148 #[serde(rename = "WITV")]
1149 Witv,
1150 #[serde(rename = "WITK")]
1151 Witk,
1152 #[serde(rename = "WITQ")]
1153 Witq,
1154 #[serde(rename = "WITP")]
1155 Witp,
1156 #[serde(rename = "INQC")]
1157 Inqc,
1158 #[serde(rename = "H2AP")]
1159 H2Ap,
1160 #[serde(rename = "H2AQ")]
1161 H2Aq,
1162 #[serde(rename = "TMOP")]
1163 Tmop,
1164 #[serde(rename = "CSEC")]
1165 Csec,
1166 #[serde(rename = "DSEC")]
1167 Dsec,
1168 #[serde(rename = "SKSC")]
1169 Sksc,
1170 #[serde(rename = "SSTS")]
1171 Ssts,
1172 #[serde(rename = "DPSK")]
1173 Dpsk,
1174 #[serde(rename = "DPSV")]
1175 Dpsv,
1176 #[serde(rename = "DPSQ")]
1177 Dpsq,
1178 #[serde(rename = "DPSP")]
1179 Dpsp,
1180 #[serde(rename = "EXPK")]
1181 Expk,
1182 #[serde(rename = "EXPV")]
1183 Expv,
1184 #[serde(rename = "TRFQ")]
1185 Trfq,
1186 #[serde(rename = "TRFP")]
1187 Trfp,
1188 #[serde(rename = "RPTC")]
1189 Rptc,
1190 #[default]
1191 Unknown,
1192}
1193#[derive(
1194 Debug,
1195 Default,
1196 Clone,
1197 PartialEq,
1198 ::serde::Serialize,
1199 ::serde::Deserialize,
1200 ::derive_builder::Builder,
1201 ::validator::Validate,
1202)]
1203pub struct AtmCommand8 {
1204 #[serde(rename = "Tp")]
1205 pub tp: AtmCommand5Code,
1206 #[serde(rename = "ReqrdDtTm", skip_serializing_if = "Option::is_none")]
1207 pub reqrd_dt_tm: Option<IsoDateTime>,
1208 #[validate]
1209 #[serde(rename = "PrcdDtTm")]
1210 pub prcd_dt_tm: IsoDateTime,
1211 #[serde(rename = "CmdId", skip_serializing_if = "Option::is_none")]
1212 pub cmd_id: Option<AtmCommandIdentification1>,
1213 #[serde(rename = "Rslt")]
1214 pub rslt: TerminalManagementActionResult2Code,
1215 #[serde(rename = "AddtlErrInf", skip_serializing_if = "Option::is_none")]
1216 pub addtl_err_inf: Option<Max140Text>,
1217}
1218#[derive(
1219 Debug,
1220 Default,
1221 Clone,
1222 PartialEq,
1223 ::serde::Serialize,
1224 ::serde::Deserialize,
1225 ::derive_builder::Builder,
1226 ::validator::Validate,
1227)]
1228pub struct Kek4 {
1229 #[serde(rename = "Vrsn", skip_serializing_if = "Option::is_none")]
1230 pub vrsn: Option<Number>,
1231 #[validate]
1232 #[serde(rename = "KEKId")]
1233 pub kek_id: KekIdentifier2,
1234 #[validate]
1235 #[serde(rename = "KeyNcrptnAlgo")]
1236 pub key_ncrptn_algo: AlgorithmIdentification13,
1237 #[validate]
1238 #[serde(rename = "NcrptdKey")]
1239 pub ncrptd_key: Max500Binary,
1240}
1241#[derive(
1242 Debug,
1243 Default,
1244 Clone,
1245 PartialEq,
1246 ::serde::Serialize,
1247 ::serde::Deserialize,
1248 ::derive_builder::Builder,
1249 ::validator::Validate,
1250)]
1251pub struct Min2Max3AlphaText {
1252 #[validate(regex = "MIN_2_MAX_3_ALPHA_TEXT_REGEX")]
1253 #[serde(rename = "$text")]
1254 pub value: String,
1255}
1256#[derive(
1257 Debug,
1258 Default,
1259 Clone,
1260 PartialEq,
1261 ::serde::Serialize,
1262 ::serde::Deserialize,
1263 ::derive_builder::Builder,
1264 ::validator::Validate,
1265)]
1266pub struct Parameter7 {
1267 #[serde(rename = "InitlstnVctr", skip_serializing_if = "Option::is_none")]
1268 pub initlstn_vctr: Option<Max500Binary>,
1269 #[serde(rename = "BPddg", skip_serializing_if = "Option::is_none")]
1270 pub b_pddg: Option<BytePadding1Code>,
1271}
1272#[derive(
1273 Debug,
1274 Default,
1275 Clone,
1276 PartialEq,
1277 ::serde::Serialize,
1278 ::serde::Deserialize,
1279 ::derive_builder::Builder,
1280 ::validator::Validate,
1281)]
1282pub struct PostalAddress17 {
1283 #[validate(length(min = 0, max = 2,))]
1284 #[serde(rename = "AdrLine", default)]
1285 pub adr_line: Vec<Max70Text>,
1286 #[serde(rename = "StrtNm", skip_serializing_if = "Option::is_none")]
1287 pub strt_nm: Option<Max70Text>,
1288 #[serde(rename = "BldgNb", skip_serializing_if = "Option::is_none")]
1289 pub bldg_nb: Option<Max16Text>,
1290 #[serde(rename = "PstCd", skip_serializing_if = "Option::is_none")]
1291 pub pst_cd: Option<Max16Text>,
1292 #[validate]
1293 #[serde(rename = "TwnNm")]
1294 pub twn_nm: Max35Text,
1295 #[validate(length(min = 0, max = 2,))]
1296 #[serde(rename = "CtrySubDvsn", default)]
1297 pub ctry_sub_dvsn: Vec<Max35Text>,
1298 #[serde(rename = "Ctry")]
1299 pub ctry: CountryCode,
1300 #[serde(rename = "GLctn", skip_serializing_if = "Option::is_none")]
1301 pub g_lctn: Option<GeographicLocation1Choice>,
1302}
1303#[derive(
1304 Debug,
1305 Default,
1306 Clone,
1307 PartialEq,
1308 ::serde::Serialize,
1309 ::serde::Deserialize,
1310 ::derive_builder::Builder,
1311 ::validator::Validate,
1312)]
1313pub struct AtmCassetteCounters3 {
1314 #[serde(rename = "UnitVal", skip_serializing_if = "Option::is_none")]
1315 pub unit_val: Option<ImpliedCurrencyAndAmount>,
1316 #[serde(rename = "Ccy", skip_serializing_if = "Option::is_none")]
1317 pub ccy: Option<ActiveCurrencyCode>,
1318 #[serde(rename = "MdiaCtgy", skip_serializing_if = "Option::is_none")]
1319 pub mdia_ctgy: Option<AtmMediaType3Code>,
1320 #[validate]
1321 #[serde(rename = "CurNb")]
1322 pub cur_nb: Number,
1323 #[serde(rename = "CurAmt", skip_serializing_if = "Option::is_none")]
1324 pub cur_amt: Option<ImpliedCurrencyAndAmount>,
1325 #[validate(length(min = 0,))]
1326 #[serde(rename = "FlowTtls", default)]
1327 pub flow_ttls: Vec<AtmCassetteCounters4>,
1328}
1329#[derive(
1330 Debug,
1331 Default,
1332 Clone,
1333 PartialEq,
1334 ::serde::Serialize,
1335 ::serde::Deserialize,
1336 ::derive_builder::Builder,
1337 ::validator::Validate,
1338)]
1339pub struct AlgorithmIdentification15 {
1340 #[serde(rename = "Algo")]
1341 pub algo: Algorithm12Code,
1342 #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
1343 pub param: Option<Parameter7>,
1344}
1345#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1346pub enum ContentType2Code {
1347 #[serde(rename = "DATA")]
1348 Data,
1349 #[serde(rename = "SIGN")]
1350 Sign,
1351 #[serde(rename = "EVLP")]
1352 Evlp,
1353 #[serde(rename = "DGST")]
1354 Dgst,
1355 #[serde(rename = "AUTH")]
1356 Auth,
1357 #[default]
1358 Unknown,
1359}
1360#[derive(
1361 Debug,
1362 Default,
1363 Clone,
1364 PartialEq,
1365 ::serde::Serialize,
1366 ::serde::Deserialize,
1367 ::derive_builder::Builder,
1368 ::validator::Validate,
1369)]
1370pub struct Max6Text {
1371 #[validate(length(min = 1, max = 6,))]
1372 #[serde(rename = "$text")]
1373 pub value: String,
1374}
1375#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1376pub enum AtmCommand5Code {
1377 #[serde(rename = "ABAL")]
1378 Abal,
1379 #[serde(rename = "CCNT")]
1380 Ccnt,
1381 #[serde(rename = "RPTC")]
1382 Rptc,
1383 #[default]
1384 Unknown,
1385}
1386#[derive(
1387 Debug,
1388 Default,
1389 Clone,
1390 PartialEq,
1391 ::serde::Serialize,
1392 ::serde::Deserialize,
1393 ::derive_builder::Builder,
1394 ::validator::Validate,
1395)]
1396pub struct CountryCode {
1397 #[validate(regex = "COUNTRY_CODE_REGEX")]
1398 #[serde(rename = "$text")]
1399 pub value: String,
1400}
1401#[derive(
1402 Debug,
1403 Default,
1404 Clone,
1405 PartialEq,
1406 ::serde::Serialize,
1407 ::serde::Deserialize,
1408 ::derive_builder::Builder,
1409 ::validator::Validate,
1410)]
1411pub struct AlgorithmIdentification14 {
1412 #[serde(rename = "Algo")]
1413 pub algo: Algorithm15Code,
1414 #[serde(rename = "Param", skip_serializing_if = "Option::is_none")]
1415 pub param: Option<Parameter6>,
1416}
1417#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1418pub enum DataSetCategory7Code {
1419 #[serde(rename = "ATMC")]
1420 Atmc,
1421 #[serde(rename = "ATMP")]
1422 Atmp,
1423 #[serde(rename = "APPR")]
1424 Appr,
1425 #[serde(rename = "CRAP")]
1426 Crap,
1427 #[serde(rename = "CPRC")]
1428 Cprc,
1429 #[serde(rename = "OEXR")]
1430 Oexr,
1431 #[serde(rename = "AMNT")]
1432 Amnt,
1433 #[serde(rename = "LOCC")]
1434 Locc,
1435 #[serde(rename = "MNOC")]
1436 Mnoc,
1437 #[default]
1438 Unknown,
1439}
1440#[derive(
1441 Debug,
1442 Default,
1443 Clone,
1444 PartialEq,
1445 ::serde::Serialize,
1446 ::serde::Deserialize,
1447 ::derive_builder::Builder,
1448 ::validator::Validate,
1449)]
1450pub struct Recipient4ChoiceEnum {
1451 #[serde(rename = "KeyIdr", skip_serializing_if = "Option::is_none")]
1452 pub key_idr: Option<KekIdentifier2>,
1453 #[serde(rename = "KeyTrnsprt", skip_serializing_if = "Option::is_none")]
1454 pub key_trnsprt: Option<KeyTransport4>,
1455 #[serde(rename = "KEK", skip_serializing_if = "Option::is_none")]
1456 pub kek: Option<Kek4>,
1457}
1458#[derive(
1459 Debug,
1460 Default,
1461 Clone,
1462 PartialEq,
1463 ::serde::Serialize,
1464 ::serde::Deserialize,
1465 ::derive_builder::Builder,
1466 ::validator::Validate,
1467)]
1468pub struct Recipient4Choice {
1469 #[serde(flatten)]
1470 pub value: Recipient4ChoiceEnum,
1471}
1472#[derive(
1473 Debug,
1474 Default,
1475 Clone,
1476 PartialEq,
1477 ::serde::Serialize,
1478 ::serde::Deserialize,
1479 ::derive_builder::Builder,
1480 ::validator::Validate,
1481)]
1482pub struct AtmCassetteCounters4 {
1483 #[serde(rename = "Tp")]
1484 pub tp: AtmCounterType1Code,
1485 #[serde(rename = "AddedNb", skip_serializing_if = "Option::is_none")]
1486 pub added_nb: Option<Number>,
1487 #[serde(rename = "RmvdNb", skip_serializing_if = "Option::is_none")]
1488 pub rmvd_nb: Option<Number>,
1489 #[serde(rename = "DspnsdNb", skip_serializing_if = "Option::is_none")]
1490 pub dspnsd_nb: Option<Number>,
1491 #[serde(rename = "DpstdNb", skip_serializing_if = "Option::is_none")]
1492 pub dpstd_nb: Option<Number>,
1493 #[serde(rename = "RcycldNb", skip_serializing_if = "Option::is_none")]
1494 pub rcycld_nb: Option<Number>,
1495 #[serde(rename = "RtrctdNb", skip_serializing_if = "Option::is_none")]
1496 pub rtrctd_nb: Option<Number>,
1497 #[serde(rename = "RjctdNb", skip_serializing_if = "Option::is_none")]
1498 pub rjctd_nb: Option<Number>,
1499 #[serde(rename = "PresntdNb", skip_serializing_if = "Option::is_none")]
1500 pub presntd_nb: Option<Number>,
1501}
1502#[derive(
1503 Debug,
1504 Default,
1505 Clone,
1506 PartialEq,
1507 ::serde::Serialize,
1508 ::serde::Deserialize,
1509 ::derive_builder::Builder,
1510 ::validator::Validate,
1511)]
1512pub struct KekIdentifier2 {
1513 #[validate]
1514 #[serde(rename = "KeyId")]
1515 pub key_id: Max140Text,
1516 #[validate]
1517 #[serde(rename = "KeyVrsn")]
1518 pub key_vrsn: Max140Text,
1519 #[serde(rename = "SeqNb", skip_serializing_if = "Option::is_none")]
1520 pub seq_nb: Option<Number>,
1521 #[serde(rename = "DerivtnId", skip_serializing_if = "Option::is_none")]
1522 pub derivtn_id: Option<Min5Max16Binary>,
1523}
1524#[derive(
1525 Debug,
1526 Default,
1527 Clone,
1528 PartialEq,
1529 ::serde::Serialize,
1530 ::serde::Deserialize,
1531 ::derive_builder::Builder,
1532 ::validator::Validate,
1533)]
1534#[serde(rename = "Document")]
1535pub struct Document {
1536 #[serde(rename = "ATMRcncltnAdvc")]
1537 pub atm_rcncltn_advc: AtmReconciliationAdviceV02,
1538 #[serde(rename = "@xmlns", default = "namespace")]
1539 pub xmlns: String,
1540}
1541#[derive(
1542 Debug,
1543 Default,
1544 Clone,
1545 PartialEq,
1546 ::serde::Serialize,
1547 ::serde::Deserialize,
1548 ::derive_builder::Builder,
1549 ::validator::Validate,
1550)]
1551pub struct Max16Text {
1552 #[validate(length(min = 1, max = 16,))]
1553 #[serde(rename = "$text")]
1554 pub value: String,
1555}
1556#[derive(
1557 Debug,
1558 Default,
1559 Clone,
1560 PartialEq,
1561 ::serde::Serialize,
1562 ::serde::Deserialize,
1563 ::derive_builder::Builder,
1564 ::validator::Validate,
1565)]
1566pub struct ContentInformationType15 {
1567 #[serde(rename = "CnttTp")]
1568 pub cntt_tp: ContentType2Code,
1569 #[validate]
1570 #[serde(rename = "AuthntcdData")]
1571 pub authntcd_data: AuthenticatedData4,
1572}
1573#[derive(
1574 Debug,
1575 Default,
1576 Clone,
1577 PartialEq,
1578 ::serde::Serialize,
1579 ::serde::Deserialize,
1580 ::derive_builder::Builder,
1581 ::validator::Validate,
1582)]
1583pub struct CertificateIssuer1 {
1584 #[validate(length(min = 1,))]
1585 #[serde(rename = "RltvDstngshdNm", default)]
1586 pub rltv_dstngshd_nm: Vec<RelativeDistinguishedName1>,
1587}
1588#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1589pub enum Algorithm13Code {
1590 #[serde(rename = "EA2C")]
1591 Ea2C,
1592 #[serde(rename = "E3DC")]
1593 E3Dc,
1594 #[serde(rename = "DKP9")]
1595 Dkp9,
1596 #[serde(rename = "UKPT")]
1597 Ukpt,
1598 #[serde(rename = "UKA1")]
1599 Uka1,
1600 #[serde(rename = "EA9C")]
1601 Ea9C,
1602 #[serde(rename = "EA5C")]
1603 Ea5C,
1604 #[default]
1605 Unknown,
1606}
1607#[derive(
1608 Debug,
1609 Default,
1610 Clone,
1611 PartialEq,
1612 ::serde::Serialize,
1613 ::serde::Deserialize,
1614 ::derive_builder::Builder,
1615 ::validator::Validate,
1616)]
1617pub struct IssuerAndSerialNumber1 {
1618 #[validate]
1619 #[serde(rename = "Issr")]
1620 pub issr: CertificateIssuer1,
1621 #[validate]
1622 #[serde(rename = "SrlNb")]
1623 pub srl_nb: Max35Binary,
1624}
1625#[derive(
1626 Debug,
1627 Default,
1628 Clone,
1629 PartialEq,
1630 ::serde::Serialize,
1631 ::serde::Deserialize,
1632 ::derive_builder::Builder,
1633 ::validator::Validate,
1634)]
1635pub struct Max35Text {
1636 #[validate(length(min = 1, max = 35,))]
1637 #[serde(rename = "$text")]
1638 pub value: String,
1639}
1640#[derive(
1641 Debug,
1642 Default,
1643 Clone,
1644 PartialEq,
1645 ::serde::Serialize,
1646 ::serde::Deserialize,
1647 ::derive_builder::Builder,
1648 ::validator::Validate,
1649)]
1650pub struct Parameter4 {
1651 #[serde(rename = "NcrptnFrmt", skip_serializing_if = "Option::is_none")]
1652 pub ncrptn_frmt: Option<EncryptionFormat1Code>,
1653 #[serde(rename = "DgstAlgo", skip_serializing_if = "Option::is_none")]
1654 pub dgst_algo: Option<Algorithm11Code>,
1655 #[serde(rename = "MskGnrtrAlgo", skip_serializing_if = "Option::is_none")]
1656 pub msk_gnrtr_algo: Option<AlgorithmIdentification12>,
1657}
1658#[derive(
1659 Debug,
1660 Default,
1661 Clone,
1662 PartialEq,
1663 ::serde::Serialize,
1664 ::serde::Deserialize,
1665 ::derive_builder::Builder,
1666 ::validator::Validate,
1667)]
1668pub struct Traceability4 {
1669 #[validate]
1670 #[serde(rename = "RlayId")]
1671 pub rlay_id: GenericIdentification77,
1672 #[serde(rename = "SeqNb", skip_serializing_if = "Option::is_none")]
1673 pub seq_nb: Option<Max35Text>,
1674 #[validate]
1675 #[serde(rename = "TracDtTmIn")]
1676 pub trac_dt_tm_in: IsoDateTime,
1677 #[validate]
1678 #[serde(rename = "TracDtTmOut")]
1679 pub trac_dt_tm_out: IsoDateTime,
1680}
1681#[derive(
1682 Debug,
1683 Default,
1684 Clone,
1685 PartialEq,
1686 ::serde::Serialize,
1687 ::serde::Deserialize,
1688 ::derive_builder::Builder,
1689 ::validator::Validate,
1690)]
1691pub struct AtmTotals3 {
1692 #[validate]
1693 #[serde(rename = "Id")]
1694 pub id: Max70Text,
1695 #[serde(rename = "AddtlId", skip_serializing_if = "Option::is_none")]
1696 pub addtl_id: Option<Max70Text>,
1697 #[serde(rename = "Prd")]
1698 pub prd: AtmCounterType2Code,
1699 #[serde(rename = "Ccy", skip_serializing_if = "Option::is_none")]
1700 pub ccy: Option<ActiveCurrencyCode>,
1701 #[validate]
1702 #[serde(rename = "Cnt")]
1703 pub cnt: Number,
1704 #[serde(rename = "Amt", skip_serializing_if = "Option::is_none")]
1705 pub amt: Option<ImpliedCurrencyAndAmount>,
1706}
1707#[derive(
1708 Debug,
1709 Default,
1710 Clone,
1711 PartialEq,
1712 ::serde::Serialize,
1713 ::serde::Deserialize,
1714 ::derive_builder::Builder,
1715 ::validator::Validate,
1716)]
1717pub struct TransactionIdentifier1 {
1718 #[validate]
1719 #[serde(rename = "TxDtTm")]
1720 pub tx_dt_tm: IsoDateTime,
1721 #[validate]
1722 #[serde(rename = "TxRef")]
1723 pub tx_ref: Max35Text,
1724}
1725#[derive(
1726 Debug,
1727 Default,
1728 Clone,
1729 PartialEq,
1730 ::serde::Serialize,
1731 ::serde::Deserialize,
1732 ::derive_builder::Builder,
1733 ::validator::Validate,
1734)]
1735pub struct GeographicLocation1ChoiceEnum {
1736 #[serde(rename = "GeogcCordints", skip_serializing_if = "Option::is_none")]
1737 pub geogc_cordints: Option<GeographicCoordinates1>,
1738 #[serde(rename = "UTMCordints", skip_serializing_if = "Option::is_none")]
1739 pub utm_cordints: Option<UtmCoordinates1>,
1740}
1741#[derive(
1742 Debug,
1743 Default,
1744 Clone,
1745 PartialEq,
1746 ::serde::Serialize,
1747 ::serde::Deserialize,
1748 ::derive_builder::Builder,
1749 ::validator::Validate,
1750)]
1751pub struct GeographicLocation1Choice {
1752 #[serde(flatten)]
1753 pub value: GeographicLocation1ChoiceEnum,
1754}
1755#[derive(
1756 Debug,
1757 Default,
1758 Clone,
1759 PartialEq,
1760 ::serde::Serialize,
1761 ::serde::Deserialize,
1762 ::derive_builder::Builder,
1763 ::validator::Validate,
1764)]
1765pub struct AtmCommandIdentification1 {
1766 #[serde(rename = "Orgn", skip_serializing_if = "Option::is_none")]
1767 pub orgn: Option<Max35Text>,
1768 #[serde(rename = "Ref", skip_serializing_if = "Option::is_none")]
1769 pub r#ref: Option<Max35Text>,
1770 #[serde(rename = "Prcr", skip_serializing_if = "Option::is_none")]
1771 pub prcr: Option<Max140Text>,
1772}
1773#[derive(
1774 Debug,
1775 Default,
1776 Clone,
1777 PartialEq,
1778 ::serde::Serialize,
1779 ::serde::Deserialize,
1780 ::derive_builder::Builder,
1781 ::validator::Validate,
1782)]
1783pub struct ImpliedCurrencyAndAmount {
1784 #[validate(range(min = 0,))]
1785 #[serde(rename = "$text")]
1786 pub value: f64,
1787}
1788#[derive(
1789 Debug,
1790 Default,
1791 Clone,
1792 PartialEq,
1793 ::serde::Serialize,
1794 ::serde::Deserialize,
1795 ::derive_builder::Builder,
1796 ::validator::Validate,
1797)]
1798pub struct Parameter6 {
1799 #[serde(rename = "NcrptnFrmt", skip_serializing_if = "Option::is_none")]
1800 pub ncrptn_frmt: Option<EncryptionFormat1Code>,
1801 #[serde(rename = "InitlstnVctr", skip_serializing_if = "Option::is_none")]
1802 pub initlstn_vctr: Option<Max500Binary>,
1803 #[serde(rename = "BPddg", skip_serializing_if = "Option::is_none")]
1804 pub b_pddg: Option<BytePadding1Code>,
1805}
1806#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1807pub enum AtmMediaType1Code {
1808 #[serde(rename = "CARD")]
1809 Card,
1810 #[serde(rename = "COIN")]
1811 Coin,
1812 #[serde(rename = "CMDT")]
1813 Cmdt,
1814 #[serde(rename = "CPNS")]
1815 Cpns,
1816 #[serde(rename = "NOTE")]
1817 Note,
1818 #[serde(rename = "STMP")]
1819 Stmp,
1820 #[serde(rename = "UDTM")]
1821 Udtm,
1822 #[default]
1823 Unknown,
1824}