1use validator::Validate;
22
23::lazy_static::lazy_static! {
24 static ref EXACT_3_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{3}"#).unwrap();
25}
26
27::lazy_static::lazy_static! {
28 static ref ANY_BIC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"#).unwrap();
29}
30
31::lazy_static::lazy_static! {
32 static ref IBAN_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"#).unwrap();
33}
34
35::lazy_static::lazy_static! {
36 static ref COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}"#).unwrap();
37}
38
39::lazy_static::lazy_static! {
40 static ref BBAN_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{1,30}"#).unwrap();
41}
42
43::lazy_static::lazy_static! {
44 static ref EXACT_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{4}"#).unwrap();
45}
46
47::lazy_static::lazy_static! {
48 static ref UPIC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9]{8,17}"#).unwrap();
49}
50
51::lazy_static::lazy_static! {
52 static ref ISO_20022_MESSAGE_IDENTIFICATION_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-z]{4}\.[0-9]{3}\.[0-9]{3}\.[0-9]{2}"#).unwrap();
53}
54
55pub fn namespace() -> String {
57 "urn:iso:std:iso:20022:tech:xsd:setr.030.001.01".to_string()
58}
59
60#[derive(
61 Debug,
62 Default,
63 Clone,
64 PartialEq,
65 ::serde::Serialize,
66 ::serde::Deserialize,
67 ::derive_builder::Builder,
68 ::validator::Validate,
69)]
70pub struct AffirmationStatus7ChoiceEnum {
71 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
72 pub cd: Option<AffirmationStatus1Code>,
73 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
74 pub prtry: Option<GenericIdentification38>,
75}
76#[derive(
77 Debug,
78 Default,
79 Clone,
80 PartialEq,
81 ::serde::Serialize,
82 ::serde::Deserialize,
83 ::derive_builder::Builder,
84 ::validator::Validate,
85)]
86pub struct AffirmationStatus7Choice {
87 #[serde(flatten)]
88 pub value: AffirmationStatus7ChoiceEnum,
89}
90#[derive(
91 Debug,
92 Default,
93 Clone,
94 PartialEq,
95 ::serde::Serialize,
96 ::serde::Deserialize,
97 ::derive_builder::Builder,
98 ::validator::Validate,
99)]
100pub struct AlternatePartyIdentification5 {
101 #[serde(rename = "IdTp")]
102 pub id_tp: IdentificationType40Choice,
103 #[serde(rename = "Ctry")]
104 pub ctry: CountryCode,
105 #[validate]
106 #[serde(rename = "AltrnId")]
107 pub altrn_id: Max35Text,
108}
109#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
110pub enum UnaffirmedReason1Code {
111 #[serde(rename = "NAFF")]
112 Naff,
113 #[default]
114 Unknown,
115}
116#[derive(
117 Debug,
118 Default,
119 Clone,
120 PartialEq,
121 ::serde::Serialize,
122 ::serde::Deserialize,
123 ::derive_builder::Builder,
124 ::validator::Validate,
125)]
126pub struct Max140Text {
127 #[validate(length(min = 1, max = 140,))]
128 #[serde(rename = "$text")]
129 pub value: String,
130}
131#[derive(
132 Debug,
133 Default,
134 Clone,
135 PartialEq,
136 ::serde::Serialize,
137 ::serde::Deserialize,
138 ::derive_builder::Builder,
139 ::validator::Validate,
140)]
141pub struct Max350Text {
142 #[validate(length(min = 1, max = 350,))]
143 #[serde(rename = "$text")]
144 pub value: String,
145}
146#[derive(
147 Debug,
148 Default,
149 Clone,
150 PartialEq,
151 ::serde::Serialize,
152 ::serde::Deserialize,
153 ::derive_builder::Builder,
154 ::validator::Validate,
155)]
156pub struct Max35Text {
157 #[validate(length(min = 1, max = 35,))]
158 #[serde(rename = "$text")]
159 pub value: String,
160}
161#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
162pub enum Eligibility1Code {
163 #[serde(rename = "ELIG")]
164 Elig,
165 #[serde(rename = "RETL")]
166 Retl,
167 #[serde(rename = "PROF")]
168 Prof,
169 #[default]
170 Unknown,
171}
172#[derive(
173 Debug,
174 Default,
175 Clone,
176 PartialEq,
177 ::serde::Serialize,
178 ::serde::Deserialize,
179 ::derive_builder::Builder,
180 ::validator::Validate,
181)]
182pub struct Max16Text {
183 #[validate(length(min = 1, max = 16,))]
184 #[serde(rename = "$text")]
185 pub value: String,
186}
187#[derive(
188 Debug,
189 Default,
190 Clone,
191 PartialEq,
192 ::serde::Serialize,
193 ::serde::Deserialize,
194 ::derive_builder::Builder,
195 ::validator::Validate,
196)]
197pub struct SecuritiesAccount3 {
198 #[validate]
199 #[serde(rename = "Id")]
200 pub id: Max35Text,
201 #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
202 pub tp: Option<PurposeCode5Choice>,
203 #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
204 pub nm: Option<Max70Text>,
205}
206#[derive(
207 Debug,
208 Default,
209 Clone,
210 PartialEq,
211 ::serde::Serialize,
212 ::serde::Deserialize,
213 ::derive_builder::Builder,
214 ::validator::Validate,
215)]
216pub struct PartyIdentificationAndAccount78 {
217 #[serde(rename = "Id")]
218 pub id: PartyIdentification32Choice,
219 #[serde(rename = "AltrnId", skip_serializing_if = "Option::is_none")]
220 pub altrn_id: Option<AlternatePartyIdentification5>,
221 #[serde(rename = "Sd", skip_serializing_if = "Option::is_none")]
222 pub sd: Option<ClearingSide1Code>,
223 #[serde(rename = "ClrAcct", skip_serializing_if = "Option::is_none")]
224 pub clr_acct: Option<SecuritiesAccount20>,
225 #[serde(rename = "PrcgId", skip_serializing_if = "Option::is_none")]
226 pub prcg_id: Option<Max35Text>,
227 #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
228 pub addtl_inf: Option<PartyTextInformation1>,
229}
230#[derive(
231 Debug,
232 Default,
233 Clone,
234 PartialEq,
235 ::serde::Serialize,
236 ::serde::Deserialize,
237 ::derive_builder::Builder,
238 ::validator::Validate,
239)]
240pub struct ConfirmationPartyDetails2 {
241 #[serde(rename = "Id")]
242 pub id: PartyIdentification32Choice,
243 #[serde(rename = "AltrnId", skip_serializing_if = "Option::is_none")]
244 pub altrn_id: Option<AlternatePartyIdentification5>,
245 #[serde(rename = "PrcgId", skip_serializing_if = "Option::is_none")]
246 pub prcg_id: Option<Max35Text>,
247 #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
248 pub addtl_inf: Option<PartyTextInformation5>,
249 #[serde(rename = "InvstrCpcty", skip_serializing_if = "Option::is_none")]
250 pub invstr_cpcty: Option<InvestorCapacity3Choice>,
251 #[serde(rename = "TradgPtyCpcty", skip_serializing_if = "Option::is_none")]
252 pub tradg_pty_cpcty: Option<TradingPartyCapacity1Choice>,
253}
254#[derive(
255 Debug,
256 Default,
257 Clone,
258 PartialEq,
259 ::serde::Serialize,
260 ::serde::Deserialize,
261 ::derive_builder::Builder,
262 ::validator::Validate,
263)]
264pub struct PartyIdentification35ChoiceEnum {
265 #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")]
266 pub prtry_id: Option<GenericIdentification29>,
267 #[serde(rename = "BIC", skip_serializing_if = "Option::is_none")]
268 pub bic: Option<AnyBicIdentifier>,
269}
270#[derive(
271 Debug,
272 Default,
273 Clone,
274 PartialEq,
275 ::serde::Serialize,
276 ::serde::Deserialize,
277 ::derive_builder::Builder,
278 ::validator::Validate,
279)]
280pub struct PartyIdentification35Choice {
281 #[serde(flatten)]
282 pub value: PartyIdentification35ChoiceEnum,
283}
284#[derive(
285 Debug,
286 Default,
287 Clone,
288 PartialEq,
289 ::serde::Serialize,
290 ::serde::Deserialize,
291 ::derive_builder::Builder,
292 ::validator::Validate,
293)]
294pub struct SecuritiesAccount20 {
295 #[validate]
296 #[serde(rename = "Id")]
297 pub id: Max35Text,
298 #[serde(rename = "Tp")]
299 pub tp: ClearingAccountType1Code,
300 #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
301 pub nm: Option<Max70Text>,
302}
303#[derive(
304 Debug,
305 Default,
306 Clone,
307 PartialEq,
308 ::serde::Serialize,
309 ::serde::Deserialize,
310 ::derive_builder::Builder,
311 ::validator::Validate,
312)]
313pub struct GenericIdentification38 {
314 #[validate]
315 #[serde(rename = "Id")]
316 pub id: Exact4AlphaNumericText,
317 #[validate]
318 #[serde(rename = "Issr")]
319 pub issr: Max35Text,
320 #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
321 pub schme_nm: Option<Max35Text>,
322}
323#[derive(
324 Debug,
325 Default,
326 Clone,
327 PartialEq,
328 ::serde::Serialize,
329 ::serde::Deserialize,
330 ::derive_builder::Builder,
331 ::validator::Validate,
332)]
333pub struct IdentificationType40ChoiceEnum {
334 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
335 pub cd: Option<TypeOfIdentification2Code>,
336 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
337 pub prtry: Option<GenericIdentification29>,
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 IdentificationType40Choice {
350 #[serde(flatten)]
351 pub value: IdentificationType40ChoiceEnum,
352}
353#[derive(
354 Debug,
355 Default,
356 Clone,
357 PartialEq,
358 ::serde::Serialize,
359 ::serde::Deserialize,
360 ::derive_builder::Builder,
361 ::validator::Validate,
362)]
363pub struct ConfirmationPartyDetails4 {
364 #[serde(rename = "Id")]
365 pub id: PartyIdentification32Choice,
366 #[serde(rename = "SfkpgAcct", skip_serializing_if = "Option::is_none")]
367 pub sfkpg_acct: Option<SecuritiesAccount3>,
368 #[serde(rename = "CshDtls", skip_serializing_if = "Option::is_none")]
369 pub csh_dtls: Option<AccountIdentification3Choice>,
370 #[serde(rename = "AltrnId", skip_serializing_if = "Option::is_none")]
371 pub altrn_id: Option<AlternatePartyIdentification5>,
372 #[serde(rename = "PrcgId", skip_serializing_if = "Option::is_none")]
373 pub prcg_id: Option<Max35Text>,
374 #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
375 pub addtl_inf: Option<PartyTextInformation5>,
376}
377#[derive(
378 Debug,
379 Default,
380 Clone,
381 PartialEq,
382 ::serde::Serialize,
383 ::serde::Deserialize,
384 ::derive_builder::Builder,
385 ::validator::Validate,
386)]
387pub struct PartyTextInformation1 {
388 #[serde(rename = "DclrtnDtls", skip_serializing_if = "Option::is_none")]
389 pub dclrtn_dtls: Option<Max350Text>,
390 #[serde(rename = "PtyCtctDtls", skip_serializing_if = "Option::is_none")]
391 pub pty_ctct_dtls: Option<Max140Text>,
392 #[serde(rename = "RegnDtls", skip_serializing_if = "Option::is_none")]
393 pub regn_dtls: Option<Max350Text>,
394}
395#[derive(
396 Debug,
397 Default,
398 Clone,
399 PartialEq,
400 ::serde::Serialize,
401 ::serde::Deserialize,
402 ::derive_builder::Builder,
403 ::validator::Validate,
404)]
405pub struct Exact3NumericText {
406 #[validate(regex = "EXACT_3_NUMERIC_TEXT_REGEX")]
407 #[serde(rename = "$text")]
408 pub value: String,
409}
410#[derive(
411 Debug,
412 Default,
413 Clone,
414 PartialEq,
415 ::serde::Serialize,
416 ::serde::Deserialize,
417 ::derive_builder::Builder,
418 ::validator::Validate,
419)]
420pub struct ConfirmationPartyDetails3 {
421 #[serde(rename = "Id")]
422 pub id: PartyIdentification32Choice,
423 #[serde(rename = "SfkpgAcct", skip_serializing_if = "Option::is_none")]
424 pub sfkpg_acct: Option<SecuritiesAccount3>,
425 #[serde(rename = "CshDtls", skip_serializing_if = "Option::is_none")]
426 pub csh_dtls: Option<AccountIdentification3Choice>,
427 #[serde(rename = "AltrnId", skip_serializing_if = "Option::is_none")]
428 pub altrn_id: Option<AlternatePartyIdentification5>,
429 #[serde(rename = "PrcgId", skip_serializing_if = "Option::is_none")]
430 pub prcg_id: Option<Max35Text>,
431 #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
432 pub addtl_inf: Option<PartyTextInformation5>,
433 #[serde(rename = "PtyCpcty", skip_serializing_if = "Option::is_none")]
434 pub pty_cpcty: Option<TradingPartyCapacity2Choice>,
435}
436#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
437pub enum ClearingAccountType1Code {
438 #[serde(rename = "HOUS")]
439 Hous,
440 #[serde(rename = "CLIE")]
441 Clie,
442 #[serde(rename = "LIPR")]
443 Lipr,
444 #[default]
445 Unknown,
446}
447#[derive(
448 Debug,
449 Default,
450 Clone,
451 PartialEq,
452 ::serde::Serialize,
453 ::serde::Deserialize,
454 ::derive_builder::Builder,
455 ::validator::Validate,
456)]
457pub struct AnyBicIdentifier {
458 #[validate(regex = "ANY_BIC_IDENTIFIER_REGEX")]
459 #[serde(rename = "$text")]
460 pub value: String,
461}
462#[derive(
463 Debug,
464 Default,
465 Clone,
466 PartialEq,
467 ::serde::Serialize,
468 ::serde::Deserialize,
469 ::derive_builder::Builder,
470 ::validator::Validate,
471)]
472pub struct UnaffirmedReason2ChoiceEnum {
473 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
474 pub cd: Option<UnaffirmedReason1Code>,
475 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
476 pub prtry: Option<GenericIdentification38>,
477}
478#[derive(
479 Debug,
480 Default,
481 Clone,
482 PartialEq,
483 ::serde::Serialize,
484 ::serde::Deserialize,
485 ::derive_builder::Builder,
486 ::validator::Validate,
487)]
488pub struct UnaffirmedReason2Choice {
489 #[serde(flatten)]
490 pub value: UnaffirmedReason2ChoiceEnum,
491}
492#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
493pub enum TypeOfIdentification2Code {
494 #[serde(rename = "ARNU")]
495 Arnu,
496 #[serde(rename = "CHTY")]
497 Chty,
498 #[serde(rename = "CORP")]
499 Corp,
500 #[serde(rename = "FIIN")]
501 Fiin,
502 #[serde(rename = "TXID")]
503 Txid,
504 #[default]
505 Unknown,
506}
507#[derive(
508 Debug,
509 Default,
510 Clone,
511 PartialEq,
512 ::serde::Serialize,
513 ::serde::Deserialize,
514 ::derive_builder::Builder,
515 ::validator::Validate,
516)]
517pub struct TradingPartyCapacity1ChoiceEnum {
518 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
519 pub cd: Option<TradingCapacity4Code>,
520 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
521 pub prtry: Option<GenericIdentification38>,
522}
523#[derive(
524 Debug,
525 Default,
526 Clone,
527 PartialEq,
528 ::serde::Serialize,
529 ::serde::Deserialize,
530 ::derive_builder::Builder,
531 ::validator::Validate,
532)]
533pub struct TradingPartyCapacity1Choice {
534 #[serde(flatten)]
535 pub value: TradingPartyCapacity1ChoiceEnum,
536}
537#[derive(
538 Debug,
539 Default,
540 Clone,
541 PartialEq,
542 ::serde::Serialize,
543 ::serde::Deserialize,
544 ::derive_builder::Builder,
545 ::validator::Validate,
546)]
547pub struct Max210Text {
548 #[validate(length(min = 1, max = 210,))]
549 #[serde(rename = "$text")]
550 pub value: String,
551}
552#[derive(
553 Debug,
554 Default,
555 Clone,
556 PartialEq,
557 ::serde::Serialize,
558 ::serde::Deserialize,
559 ::derive_builder::Builder,
560 ::validator::Validate,
561)]
562pub struct Max34Text {
563 #[validate(length(min = 1, max = 34,))]
564 #[serde(rename = "$text")]
565 pub value: String,
566}
567#[derive(
568 Debug,
569 Default,
570 Clone,
571 PartialEq,
572 ::serde::Serialize,
573 ::serde::Deserialize,
574 ::derive_builder::Builder,
575 ::validator::Validate,
576)]
577pub struct SupplementaryData1<
578 A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
579> {
580 #[serde(rename = "PlcAndNm", skip_serializing_if = "Option::is_none")]
581 pub plc_and_nm: Option<Max350Text>,
582 #[validate]
583 #[serde(rename = "Envlp")]
584 pub envlp: SupplementaryDataEnvelope1<A>,
585}
586#[derive(
587 Debug,
588 Default,
589 Clone,
590 PartialEq,
591 ::serde::Serialize,
592 ::serde::Deserialize,
593 ::derive_builder::Builder,
594 ::validator::Validate,
595)]
596pub struct GenericIdentification29 {
597 #[validate]
598 #[serde(rename = "Id")]
599 pub id: Max35Text,
600 #[validate]
601 #[serde(rename = "Issr")]
602 pub issr: Max35Text,
603 #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
604 pub schme_nm: Option<Max35Text>,
605}
606#[derive(
607 Debug,
608 Default,
609 Clone,
610 PartialEq,
611 ::serde::Serialize,
612 ::serde::Deserialize,
613 ::derive_builder::Builder,
614 ::validator::Validate,
615)]
616pub struct ConfirmationParties3 {
617 #[validate]
618 #[serde(rename = "AffrmgPty")]
619 pub affrmg_pty: ConfirmationPartyDetails4,
620 #[serde(rename = "Buyr", skip_serializing_if = "Option::is_none")]
621 pub buyr: Option<ConfirmationPartyDetails2>,
622 #[serde(rename = "Brrwr", skip_serializing_if = "Option::is_none")]
623 pub brrwr: Option<ConfirmationPartyDetails2>,
624 #[serde(rename = "Sellr", skip_serializing_if = "Option::is_none")]
625 pub sellr: Option<ConfirmationPartyDetails2>,
626 #[serde(rename = "Lndr", skip_serializing_if = "Option::is_none")]
627 pub lndr: Option<ConfirmationPartyDetails2>,
628 #[serde(rename = "TradBnfcryPty", skip_serializing_if = "Option::is_none")]
629 pub trad_bnfcry_pty: Option<ConfirmationPartyDetails3>,
630}
631#[derive(
632 Debug,
633 Default,
634 Clone,
635 PartialEq,
636 ::serde::Serialize,
637 ::serde::Deserialize,
638 ::derive_builder::Builder,
639 ::validator::Validate,
640)]
641pub struct TransactiontIdentification4 {
642 #[validate]
643 #[serde(rename = "TxId")]
644 pub tx_id: Max35Text,
645}
646#[derive(
647 Debug,
648 Default,
649 Clone,
650 PartialEq,
651 ::serde::Serialize,
652 ::serde::Deserialize,
653 ::derive_builder::Builder,
654 ::validator::Validate,
655)]
656pub struct InvestorCapacity3ChoiceEnum {
657 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
658 pub cd: Option<Eligibility1Code>,
659 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
660 pub prtry: Option<GenericIdentification38>,
661}
662#[derive(
663 Debug,
664 Default,
665 Clone,
666 PartialEq,
667 ::serde::Serialize,
668 ::serde::Deserialize,
669 ::derive_builder::Builder,
670 ::validator::Validate,
671)]
672pub struct InvestorCapacity3Choice {
673 #[serde(flatten)]
674 pub value: InvestorCapacity3ChoiceEnum,
675}
676#[derive(
677 Debug,
678 Default,
679 Clone,
680 PartialEq,
681 ::serde::Serialize,
682 ::serde::Deserialize,
683 ::derive_builder::Builder,
684 ::validator::Validate,
685)]
686pub struct NameAndAddress13 {
687 #[validate]
688 #[serde(rename = "Nm")]
689 pub nm: Max350Text,
690 #[serde(rename = "Adr", skip_serializing_if = "Option::is_none")]
691 pub adr: Option<PostalAddress8>,
692}
693#[derive(
694 Debug,
695 Default,
696 Clone,
697 PartialEq,
698 ::serde::Serialize,
699 ::serde::Deserialize,
700 ::derive_builder::Builder,
701 ::validator::Validate,
702)]
703pub struct SimpleIdentificationInformation2 {
704 #[validate]
705 #[serde(rename = "Id")]
706 pub id: Max34Text,
707}
708#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
709pub enum TradingCapacity4Code {
710 #[serde(rename = "PRIN")]
711 Prin,
712 #[serde(rename = "CPRN")]
713 Cprn,
714 #[serde(rename = "RISP")]
715 Risp,
716 #[serde(rename = "PROP")]
717 Prop,
718 #[serde(rename = "AGEN")]
719 Agen,
720 #[serde(rename = "CAGN")]
721 Cagn,
722 #[serde(rename = "OAGN")]
723 Oagn,
724 #[serde(rename = "PRAG")]
725 Prag,
726 #[serde(rename = "BAGN")]
727 Bagn,
728 #[serde(rename = "INFI")]
729 Infi,
730 #[serde(rename = "MKTM")]
731 Mktm,
732 #[serde(rename = "MLTF")]
733 Mltf,
734 #[serde(rename = "RMKT")]
735 Rmkt,
736 #[serde(rename = "SINT")]
737 Sint,
738 #[serde(rename = "TAGT")]
739 Tagt,
740 #[default]
741 Unknown,
742}
743#[derive(
744 Debug,
745 Default,
746 Clone,
747 PartialEq,
748 ::serde::Serialize,
749 ::serde::Deserialize,
750 ::derive_builder::Builder,
751 ::validator::Validate,
752)]
753pub struct IbanIdentifier {
754 #[validate(regex = "IBAN_IDENTIFIER_REGEX")]
755 #[serde(rename = "$text")]
756 pub value: String,
757}
758#[derive(
759 Debug,
760 Default,
761 Clone,
762 PartialEq,
763 ::serde::Serialize,
764 ::serde::Deserialize,
765 ::derive_builder::Builder,
766 ::validator::Validate,
767)]
768pub struct CountryCode {
769 #[validate(regex = "COUNTRY_CODE_REGEX")]
770 #[serde(rename = "$text")]
771 pub value: String,
772}
773#[derive(
774 Debug,
775 Default,
776 Clone,
777 PartialEq,
778 ::serde::Serialize,
779 ::serde::Deserialize,
780 ::derive_builder::Builder,
781 ::validator::Validate,
782)]
783pub struct IdentificationReference8ChoiceEnum {
784 #[serde(rename = "BlckId", skip_serializing_if = "Option::is_none")]
785 pub blck_id: Option<Max35Text>,
786 #[serde(rename = "CmplcId", skip_serializing_if = "Option::is_none")]
787 pub cmplc_id: Option<Max35Text>,
788 #[serde(rename = "CollTxId", skip_serializing_if = "Option::is_none")]
789 pub coll_tx_id: Option<Max35Text>,
790 #[serde(rename = "IndvAllcnId", skip_serializing_if = "Option::is_none")]
791 pub indv_allcn_id: Option<Max35Text>,
792 #[serde(rename = "IndxId", skip_serializing_if = "Option::is_none")]
793 pub indx_id: Option<Max35Text>,
794 #[serde(rename = "MktInfrstrctrTxId", skip_serializing_if = "Option::is_none")]
795 pub mkt_infrstrctr_tx_id: Option<Max35Text>,
796 #[serde(rename = "InstgPtyTxId", skip_serializing_if = "Option::is_none")]
797 pub instg_pty_tx_id: Option<Max35Text>,
798 #[serde(rename = "PoolId", skip_serializing_if = "Option::is_none")]
799 pub pool_id: Option<Max35Text>,
800 #[serde(rename = "ScndryAllcnId", skip_serializing_if = "Option::is_none")]
801 pub scndry_allcn_id: Option<Max35Text>,
802 #[serde(rename = "ClntOrdrLkId", skip_serializing_if = "Option::is_none")]
803 pub clnt_ordr_lk_id: Option<Max35Text>,
804 #[serde(rename = "CmonId", skip_serializing_if = "Option::is_none")]
805 pub cmon_id: Option<Max35Text>,
806 #[serde(rename = "ExctgPtyTxId", skip_serializing_if = "Option::is_none")]
807 pub exctg_pty_tx_id: Option<Max35Text>,
808 #[serde(rename = "AllcnId", skip_serializing_if = "Option::is_none")]
809 pub allcn_id: Option<Max35Text>,
810}
811#[derive(
812 Debug,
813 Default,
814 Clone,
815 PartialEq,
816 ::serde::Serialize,
817 ::serde::Deserialize,
818 ::derive_builder::Builder,
819 ::validator::Validate,
820)]
821pub struct IdentificationReference8Choice {
822 #[serde(flatten)]
823 pub value: IdentificationReference8ChoiceEnum,
824}
825#[derive(
826 Debug,
827 Default,
828 Clone,
829 PartialEq,
830 ::serde::Serialize,
831 ::serde::Deserialize,
832 ::derive_builder::Builder,
833 ::validator::Validate,
834)]
835pub struct PartyTextInformation5 {
836 #[serde(rename = "DclrtnDtls", skip_serializing_if = "Option::is_none")]
837 pub dclrtn_dtls: Option<Max350Text>,
838 #[serde(rename = "PtyCtctDtls", skip_serializing_if = "Option::is_none")]
839 pub pty_ctct_dtls: Option<Max140Text>,
840}
841#[derive(
842 Debug,
843 Default,
844 Clone,
845 PartialEq,
846 ::serde::Serialize,
847 ::serde::Deserialize,
848 ::derive_builder::Builder,
849 ::validator::Validate,
850)]
851pub struct PartyIdentification32ChoiceEnum {
852 #[serde(rename = "NmAndAdr", skip_serializing_if = "Option::is_none")]
853 pub nm_and_adr: Option<NameAndAddress13>,
854 #[serde(rename = "BIC", skip_serializing_if = "Option::is_none")]
855 pub bic: Option<AnyBicIdentifier>,
856 #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")]
857 pub prtry_id: Option<GenericIdentification29>,
858}
859#[derive(
860 Debug,
861 Default,
862 Clone,
863 PartialEq,
864 ::serde::Serialize,
865 ::serde::Deserialize,
866 ::derive_builder::Builder,
867 ::validator::Validate,
868)]
869pub struct PartyIdentification32Choice {
870 #[serde(flatten)]
871 pub value: PartyIdentification32ChoiceEnum,
872}
873#[derive(
874 Debug,
875 Default,
876 Clone,
877 PartialEq,
878 ::serde::Serialize,
879 ::serde::Deserialize,
880 ::derive_builder::Builder,
881 ::validator::Validate,
882)]
883pub struct PurposeCode5ChoiceEnum {
884 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
885 pub prtry: Option<GenericIdentification38>,
886 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
887 pub cd: Option<SecuritiesAccountPurposeType1Code>,
888}
889#[derive(
890 Debug,
891 Default,
892 Clone,
893 PartialEq,
894 ::serde::Serialize,
895 ::serde::Deserialize,
896 ::derive_builder::Builder,
897 ::validator::Validate,
898)]
899pub struct PurposeCode5Choice {
900 #[serde(flatten)]
901 pub value: PurposeCode5ChoiceEnum,
902}
903#[derive(
904 Debug,
905 Default,
906 Clone,
907 PartialEq,
908 ::serde::Serialize,
909 ::serde::Deserialize,
910 ::derive_builder::Builder,
911 ::validator::Validate,
912)]
913pub struct BbanIdentifier {
914 #[validate(regex = "BBAN_IDENTIFIER_REGEX")]
915 #[serde(rename = "$text")]
916 pub value: String,
917}
918#[derive(
919 Debug,
920 Default,
921 Clone,
922 PartialEq,
923 ::serde::Serialize,
924 ::serde::Deserialize,
925 ::derive_builder::Builder,
926 ::validator::Validate,
927)]
928pub struct DocumentNumber4ChoiceEnum {
929 #[serde(rename = "PrtryNb", skip_serializing_if = "Option::is_none")]
930 pub prtry_nb: Option<GenericIdentification38>,
931 #[serde(rename = "LngNb", skip_serializing_if = "Option::is_none")]
932 pub lng_nb: Option<Iso20022MessageIdentificationText>,
933 #[serde(rename = "ShrtNb", skip_serializing_if = "Option::is_none")]
934 pub shrt_nb: Option<Exact3NumericText>,
935}
936#[derive(
937 Debug,
938 Default,
939 Clone,
940 PartialEq,
941 ::serde::Serialize,
942 ::serde::Deserialize,
943 ::derive_builder::Builder,
944 ::validator::Validate,
945)]
946pub struct DocumentNumber4Choice {
947 #[serde(flatten)]
948 pub value: DocumentNumber4ChoiceEnum,
949}
950#[derive(
951 Debug,
952 Default,
953 Clone,
954 PartialEq,
955 ::serde::Serialize,
956 ::serde::Deserialize,
957 ::derive_builder::Builder,
958 ::validator::Validate,
959)]
960pub struct Exact4AlphaNumericText {
961 #[validate(regex = "EXACT_4_ALPHA_NUMERIC_TEXT_REGEX")]
962 #[serde(rename = "$text")]
963 pub value: String,
964}
965#[derive(
966 Debug,
967 Default,
968 Clone,
969 PartialEq,
970 ::serde::Serialize,
971 ::serde::Deserialize,
972 ::derive_builder::Builder,
973 ::validator::Validate,
974)]
975pub struct TradingPartyCapacity2ChoiceEnum {
976 #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
977 pub cd: Option<TradingCapacity6Code>,
978 #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
979 pub prtry: Option<GenericIdentification29>,
980}
981#[derive(
982 Debug,
983 Default,
984 Clone,
985 PartialEq,
986 ::serde::Serialize,
987 ::serde::Deserialize,
988 ::derive_builder::Builder,
989 ::validator::Validate,
990)]
991pub struct TradingPartyCapacity2Choice {
992 #[serde(flatten)]
993 pub value: TradingPartyCapacity2ChoiceEnum,
994}
995#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
996pub enum AddressType2Code {
997 #[serde(rename = "ADDR")]
998 Addr,
999 #[serde(rename = "PBOX")]
1000 Pbox,
1001 #[serde(rename = "HOME")]
1002 Home,
1003 #[serde(rename = "BIZZ")]
1004 Bizz,
1005 #[serde(rename = "MLTO")]
1006 Mlto,
1007 #[serde(rename = "DLVY")]
1008 Dlvy,
1009 #[default]
1010 Unknown,
1011}
1012#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1013pub enum SecuritiesAccountPurposeType1Code {
1014 #[serde(rename = "MARG")]
1015 Marg,
1016 #[serde(rename = "SHOR")]
1017 Shor,
1018 #[serde(rename = "ABRD")]
1019 Abrd,
1020 #[serde(rename = "CEND")]
1021 Cend,
1022 #[serde(rename = "DVPA")]
1023 Dvpa,
1024 #[serde(rename = "PHYS")]
1025 Phys,
1026 #[default]
1027 Unknown,
1028}
1029#[derive(
1030 Debug,
1031 Default,
1032 Clone,
1033 PartialEq,
1034 ::serde::Serialize,
1035 ::serde::Deserialize,
1036 ::derive_builder::Builder,
1037 ::validator::Validate,
1038)]
1039pub struct StatusAndReason10 {
1040 #[serde(rename = "AffirmSts")]
1041 pub affirm_sts: AffirmationStatus7Choice,
1042 #[serde(rename = "UaffrmdRsn", skip_serializing_if = "Option::is_none")]
1043 pub uaffrmd_rsn: Option<UnaffirmedReason2Choice>,
1044 #[serde(rename = "AddtlRsnInf", skip_serializing_if = "Option::is_none")]
1045 pub addtl_rsn_inf: Option<Max210Text>,
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 SupplementaryDataEnvelope1<
1058 A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
1059> {
1060 #[validate]
1061 #[serde(flatten)]
1062 pub value: A,
1063}
1064#[derive(
1065 Debug,
1066 Default,
1067 Clone,
1068 PartialEq,
1069 ::serde::Serialize,
1070 ::serde::Deserialize,
1071 ::derive_builder::Builder,
1072 ::validator::Validate,
1073)]
1074pub struct Clearing3 {
1075 #[validate(length(min = 1,))]
1076 #[serde(rename = "ClrMmb", default)]
1077 pub clr_mmb: Vec<PartyIdentificationAndAccount78>,
1078 #[serde(rename = "ClrSgmt", skip_serializing_if = "Option::is_none")]
1079 pub clr_sgmt: Option<PartyIdentification35Choice>,
1080}
1081#[derive(
1082 Debug,
1083 Default,
1084 Clone,
1085 PartialEq,
1086 ::serde::Serialize,
1087 ::serde::Deserialize,
1088 ::derive_builder::Builder,
1089 ::validator::Validate,
1090)]
1091#[serde(rename = "Document")]
1092pub struct Document<
1093 A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
1094> {
1095 #[validate]
1096 #[serde(rename = "SctiesTradConfRspn")]
1097 pub scties_trad_conf_rspn: SecuritiesTradeConfirmationResponseV01<A>,
1098 #[serde(rename = "@xmlns", default = "namespace")]
1099 pub xmlns: String,
1100}
1101#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1102pub enum TradingCapacity6Code {
1103 #[serde(rename = "AGEN")]
1104 Agen,
1105 #[serde(rename = "BAGN")]
1106 Bagn,
1107 #[serde(rename = "CAGN")]
1108 Cagn,
1109 #[serde(rename = "CPRN")]
1110 Cprn,
1111 #[serde(rename = "OAGN")]
1112 Oagn,
1113 #[serde(rename = "PRAG")]
1114 Prag,
1115 #[serde(rename = "PRIN")]
1116 Prin,
1117 #[default]
1118 Unknown,
1119}
1120#[derive(
1121 Debug,
1122 Default,
1123 Clone,
1124 PartialEq,
1125 ::serde::Serialize,
1126 ::serde::Deserialize,
1127 ::derive_builder::Builder,
1128 ::validator::Validate,
1129)]
1130pub struct PostalAddress8 {
1131 #[serde(rename = "AdrTp", skip_serializing_if = "Option::is_none")]
1132 pub adr_tp: Option<AddressType2Code>,
1133 #[validate(length(min = 0, max = 5,))]
1134 #[serde(rename = "AdrLine", default)]
1135 pub adr_line: Vec<Max70Text>,
1136 #[serde(rename = "StrtNm", skip_serializing_if = "Option::is_none")]
1137 pub strt_nm: Option<Max70Text>,
1138 #[serde(rename = "BldgNb", skip_serializing_if = "Option::is_none")]
1139 pub bldg_nb: Option<Max16Text>,
1140 #[serde(rename = "PstCd", skip_serializing_if = "Option::is_none")]
1141 pub pst_cd: Option<Max16Text>,
1142 #[serde(rename = "TwnNm", skip_serializing_if = "Option::is_none")]
1143 pub twn_nm: Option<Max35Text>,
1144 #[serde(rename = "CtrySubDvsn", skip_serializing_if = "Option::is_none")]
1145 pub ctry_sub_dvsn: Option<Max35Text>,
1146 #[serde(rename = "Ctry")]
1147 pub ctry: CountryCode,
1148}
1149#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1150pub enum ClearingSide1Code {
1151 #[serde(rename = "BUYI")]
1152 Buyi,
1153 #[serde(rename = "SELL")]
1154 Sell,
1155 #[serde(rename = "LEND")]
1156 Lend,
1157 #[serde(rename = "BORW")]
1158 Borw,
1159 #[default]
1160 Unknown,
1161}
1162#[derive(
1163 Debug,
1164 Default,
1165 Clone,
1166 PartialEq,
1167 ::serde::Serialize,
1168 ::serde::Deserialize,
1169 ::derive_builder::Builder,
1170 ::validator::Validate,
1171)]
1172pub struct UpicIdentifier {
1173 #[validate(regex = "UPIC_IDENTIFIER_REGEX")]
1174 #[serde(rename = "$text")]
1175 pub value: String,
1176}
1177#[derive(
1178 Debug,
1179 Default,
1180 Clone,
1181 PartialEq,
1182 ::serde::Serialize,
1183 ::serde::Deserialize,
1184 ::derive_builder::Builder,
1185 ::validator::Validate,
1186)]
1187pub struct Iso20022MessageIdentificationText {
1188 #[validate(regex = "ISO_20022_MESSAGE_IDENTIFICATION_TEXT_REGEX")]
1189 #[serde(rename = "$text")]
1190 pub value: String,
1191}
1192#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1193pub enum AffirmationStatus1Code {
1194 #[serde(rename = "AFFI")]
1195 Affi,
1196 #[serde(rename = "NAFI")]
1197 Nafi,
1198 #[default]
1199 Unknown,
1200}
1201#[derive(
1202 Debug,
1203 Default,
1204 Clone,
1205 PartialEq,
1206 ::serde::Serialize,
1207 ::serde::Deserialize,
1208 ::derive_builder::Builder,
1209 ::validator::Validate,
1210)]
1211pub struct Max70Text {
1212 #[validate(length(min = 1, max = 70,))]
1213 #[serde(rename = "$text")]
1214 pub value: String,
1215}
1216#[derive(
1217 Debug,
1218 Default,
1219 Clone,
1220 PartialEq,
1221 ::serde::Serialize,
1222 ::serde::Deserialize,
1223 ::derive_builder::Builder,
1224 ::validator::Validate,
1225)]
1226pub struct Linkages15 {
1227 #[serde(rename = "MsgNb", skip_serializing_if = "Option::is_none")]
1228 pub msg_nb: Option<DocumentNumber4Choice>,
1229 #[serde(rename = "Ref")]
1230 pub r#ref: IdentificationReference8Choice,
1231}
1232#[derive(
1233 Debug,
1234 Default,
1235 Clone,
1236 PartialEq,
1237 ::serde::Serialize,
1238 ::serde::Deserialize,
1239 ::derive_builder::Builder,
1240 ::validator::Validate,
1241)]
1242pub struct SecuritiesTradeConfirmationResponseV01<
1243 A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
1244> {
1245 #[validate]
1246 #[serde(rename = "Id")]
1247 pub id: TransactiontIdentification4,
1248 #[validate(length(min = 1,))]
1249 #[serde(rename = "Refs", default)]
1250 pub refs: Vec<Linkages15>,
1251 #[validate]
1252 #[serde(rename = "Sts")]
1253 pub sts: StatusAndReason10,
1254 #[serde(rename = "ClrDtls", skip_serializing_if = "Option::is_none")]
1255 pub clr_dtls: Option<Clearing3>,
1256 #[validate(length(min = 0,))]
1257 #[serde(rename = "ConfPties", default)]
1258 pub conf_pties: Vec<ConfirmationParties3>,
1259 #[validate(length(min = 0,))]
1260 #[serde(rename = "SplmtryData", default)]
1261 pub splmtry_data: Vec<SupplementaryData1<A>>,
1262}
1263#[derive(
1264 Debug,
1265 Default,
1266 Clone,
1267 PartialEq,
1268 ::serde::Serialize,
1269 ::serde::Deserialize,
1270 ::derive_builder::Builder,
1271 ::validator::Validate,
1272)]
1273pub struct AccountIdentification3ChoiceEnum {
1274 #[serde(rename = "UPIC", skip_serializing_if = "Option::is_none")]
1275 pub upic: Option<UpicIdentifier>,
1276 #[serde(rename = "BBAN", skip_serializing_if = "Option::is_none")]
1277 pub bban: Option<BbanIdentifier>,
1278 #[serde(rename = "PrtryAcct", skip_serializing_if = "Option::is_none")]
1279 pub prtry_acct: Option<SimpleIdentificationInformation2>,
1280 #[serde(rename = "IBAN", skip_serializing_if = "Option::is_none")]
1281 pub iban: Option<IbanIdentifier>,
1282}
1283#[derive(
1284 Debug,
1285 Default,
1286 Clone,
1287 PartialEq,
1288 ::serde::Serialize,
1289 ::serde::Deserialize,
1290 ::derive_builder::Builder,
1291 ::validator::Validate,
1292)]
1293pub struct AccountIdentification3Choice {
1294 #[serde(flatten)]
1295 pub value: AccountIdentification3ChoiceEnum,
1296}