iso_20022_setr/
setr_016_001_04.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 ISO_YEAR_MONTH_REGEX: ::regex::Regex = ::regex::Regex::new(r#"^-?\d{4}-(0[1-9]|1[0-2])([+-]\d{2}:\d{2}|Z)?$"#).unwrap();
25}
26
27::lazy_static::lazy_static! {
28    static ref COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}"#).unwrap();
29}
30
31::lazy_static::lazy_static! {
32    static ref ACTIVE_OR_HISTORIC_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{3,3}"#).unwrap();
33}
34
35::lazy_static::lazy_static! {
36    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();
37}
38
39::lazy_static::lazy_static! {
40    static ref EXACT_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{4}"#).unwrap();
41}
42
43::lazy_static::lazy_static! {
44    static ref LEI_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z0-9]{18,18}[0-9]{2,2}"#).unwrap();
45}
46
47::lazy_static::lazy_static! {
48    static ref ACTIVE_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{3,3}"#).unwrap();
49}
50
51::lazy_static::lazy_static! {
52    static ref ISIN_OCT_2015_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}[A-Z0-9]{9,9}[0-9]{1,1}"#).unwrap();
53}
54
55::lazy_static::lazy_static! {
56    static ref BLOOMBERG_2_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"(BBG)[BCDFGHJKLMNPQRSTVWXYZ\d]{8}\d"#).unwrap();
57}
58
59::lazy_static::lazy_static! {
60    static ref MAX_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{1,4}"#).unwrap();
61}
62
63/// Returns the namespace of the schema
64pub fn namespace() -> String {
65    "urn:iso:std:iso:20022:tech:xsd:setr.016.001.04".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 IsoYearMonth {
79    #[validate(regex = "ISO_YEAR_MONTH_REGEX")]
80    #[serde(rename = "$text")]
81    pub value: String,
82}
83#[derive(
84    Debug,
85    Default,
86    Clone,
87    PartialEq,
88    ::serde::Serialize,
89    ::serde::Deserialize,
90    ::derive_builder::Builder,
91    ::validator::Validate,
92)]
93pub struct QuickIdentifier {
94    #[serde(rename = "$text")]
95    pub value: String,
96}
97#[derive(
98    Debug,
99    Default,
100    Clone,
101    PartialEq,
102    ::serde::Serialize,
103    ::serde::Deserialize,
104    ::derive_builder::Builder,
105    ::validator::Validate,
106)]
107pub struct PartyIdentification113 {
108    #[serde(rename = "Pty")]
109    pub pty: PartyIdentification90Choice,
110    #[serde(rename = "LEI", skip_serializing_if = "Option::is_none")]
111    pub lei: Option<LeiIdentifier>,
112}
113#[derive(
114    Debug,
115    Default,
116    Clone,
117    PartialEq,
118    ::serde::Serialize,
119    ::serde::Deserialize,
120    ::derive_builder::Builder,
121    ::validator::Validate,
122)]
123pub struct CountryCode {
124    #[validate(regex = "COUNTRY_CODE_REGEX")]
125    #[serde(rename = "$text")]
126    pub value: String,
127}
128#[derive(
129    Debug,
130    Default,
131    Clone,
132    PartialEq,
133    ::serde::Serialize,
134    ::serde::Deserialize,
135    ::derive_builder::Builder,
136    ::validator::Validate,
137)]
138pub struct ActiveOrHistoricCurrencyCode {
139    #[validate(regex = "ACTIVE_OR_HISTORIC_CURRENCY_CODE_REGEX")]
140    #[serde(rename = "$text")]
141    pub value: String,
142}
143#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
144pub enum CancelledStatusReason2Code {
145    #[serde(rename = "CANH")]
146    Canh,
147    #[serde(rename = "CANP")]
148    Canp,
149    #[serde(rename = "CXLR")]
150    Cxlr,
151    #[serde(rename = "CANO")]
152    Cano,
153    #[default]
154    Unknown,
155}
156#[derive(
157    Debug,
158    Default,
159    Clone,
160    PartialEq,
161    ::serde::Serialize,
162    ::serde::Deserialize,
163    ::derive_builder::Builder,
164    ::validator::Validate,
165)]
166pub struct AnyBicIdentifier {
167    #[validate(regex = "ANY_BIC_IDENTIFIER_REGEX")]
168    #[serde(rename = "$text")]
169    pub value: String,
170}
171#[derive(
172    Debug,
173    Default,
174    Clone,
175    PartialEq,
176    ::serde::Serialize,
177    ::serde::Deserialize,
178    ::derive_builder::Builder,
179    ::validator::Validate,
180)]
181pub struct InRepairStatusReason4ChoiceEnum {
182    #[serde(rename = "NoSpcfdRsn", skip_serializing_if = "Option::is_none")]
183    pub no_spcfd_rsn: Option<NoReasonCode>,
184    #[serde(rename = "RsnDtls", skip_serializing_if = "Option::is_none")]
185    pub rsn_dtls: Option<InRepairStatusReason4>,
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 InRepairStatusReason4Choice {
198    #[serde(flatten)]
199    pub value: InRepairStatusReason4ChoiceEnum,
200}
201#[derive(
202    Debug,
203    Default,
204    Clone,
205    PartialEq,
206    ::serde::Serialize,
207    ::serde::Deserialize,
208    ::derive_builder::Builder,
209    ::validator::Validate,
210)]
211pub struct Max350Text {
212    #[validate(length(min = 1, max = 350,))]
213    #[serde(rename = "$text")]
214    pub value: String,
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 PostalAddress1 {
227    #[serde(rename = "AdrTp", skip_serializing_if = "Option::is_none")]
228    pub adr_tp: Option<AddressType2Code>,
229    #[validate(length(min = 0, max = 5,))]
230    #[serde(rename = "AdrLine", default)]
231    pub adr_line: Vec<Max70Text>,
232    #[serde(rename = "StrtNm", skip_serializing_if = "Option::is_none")]
233    pub strt_nm: Option<Max70Text>,
234    #[serde(rename = "BldgNb", skip_serializing_if = "Option::is_none")]
235    pub bldg_nb: Option<Max16Text>,
236    #[serde(rename = "PstCd", skip_serializing_if = "Option::is_none")]
237    pub pst_cd: Option<Max16Text>,
238    #[serde(rename = "TwnNm", skip_serializing_if = "Option::is_none")]
239    pub twn_nm: Option<Max35Text>,
240    #[serde(rename = "CtrySubDvsn", skip_serializing_if = "Option::is_none")]
241    pub ctry_sub_dvsn: Option<Max35Text>,
242    #[serde(rename = "Ctry")]
243    pub ctry: CountryCode,
244}
245#[derive(
246    Debug,
247    Default,
248    Clone,
249    PartialEq,
250    ::serde::Serialize,
251    ::serde::Deserialize,
252    ::derive_builder::Builder,
253    ::validator::Validate,
254)]
255pub struct SicovamIdentifier {
256    #[serde(rename = "$text")]
257    pub value: String,
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 ActiveCurrencyAndAmount {
270    #[serde(rename = "ActiveCurrencyAndAmount")]
271    pub value: ActiveCurrencyAndAmountSimpleType,
272    #[serde(rename = "@Ccy")]
273    pub ccy: ActiveCurrencyCode,
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 CancelledReason12ChoiceEnum {
286    #[serde(rename = "NoSpcfdRsn", skip_serializing_if = "Option::is_none")]
287    pub no_spcfd_rsn: Option<NoReasonCode>,
288    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
289    pub cd: Option<CancelledStatusReason2Code>,
290    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
291    pub prtry: Option<GenericIdentification1>,
292}
293#[derive(
294    Debug,
295    Default,
296    Clone,
297    PartialEq,
298    ::serde::Serialize,
299    ::serde::Deserialize,
300    ::derive_builder::Builder,
301    ::validator::Validate,
302)]
303pub struct CancelledReason12Choice {
304    #[serde(flatten)]
305    pub value: CancelledReason12ChoiceEnum,
306}
307#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
308pub enum DeliveryReceiptType2Code {
309    #[serde(rename = "FREE")]
310    Free,
311    #[serde(rename = "APMT")]
312    Apmt,
313    #[default]
314    Unknown,
315}
316#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
317pub enum NoReasonCode {
318    #[serde(rename = "NORE")]
319    Nore,
320    #[default]
321    Unknown,
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 TickerIdentifier {
334    #[validate(length(min = 1, max = 35,))]
335    #[serde(rename = "$text")]
336    pub value: String,
337}
338#[derive(
339    Debug,
340    Default,
341    Clone,
342    PartialEq,
343    ::serde::Serialize,
344    ::serde::Deserialize,
345    ::derive_builder::Builder,
346    ::validator::Validate,
347)]
348pub struct AlternateSecurityIdentification7 {
349    #[validate]
350    #[serde(rename = "Id")]
351    pub id: Max35Text,
352    #[serde(rename = "IdSrc")]
353    pub id_src: IdentificationSource1Choice,
354}
355#[derive(
356    Debug,
357    Default,
358    Clone,
359    PartialEq,
360    ::serde::Serialize,
361    ::serde::Deserialize,
362    ::derive_builder::Builder,
363    ::validator::Validate,
364)]
365pub struct HoldBackInformation3 {
366    #[serde(rename = "Tp")]
367    pub tp: GateHoldBack1Code,
368    #[serde(rename = "Amt", skip_serializing_if = "Option::is_none")]
369    pub amt: Option<ActiveCurrencyAndAmount>,
370    #[serde(rename = "XpctdRlsDt", skip_serializing_if = "Option::is_none")]
371    pub xpctd_rls_dt: Option<IsoDate>,
372    #[serde(rename = "FinInstrmId", skip_serializing_if = "Option::is_none")]
373    pub fin_instrm_id: Option<SecurityIdentification25Choice>,
374    #[serde(rename = "FinInstrmNm", skip_serializing_if = "Option::is_none")]
375    pub fin_instrm_nm: Option<Max350Text>,
376    #[serde(rename = "RedCmpltn", skip_serializing_if = "Option::is_none")]
377    pub red_cmpltn: Option<RedemptionCompletion1Code>,
378}
379#[derive(
380    Debug,
381    Default,
382    Clone,
383    PartialEq,
384    ::serde::Serialize,
385    ::serde::Deserialize,
386    ::derive_builder::Builder,
387    ::validator::Validate,
388)]
389pub struct MessageIdentification1 {
390    #[validate]
391    #[serde(rename = "Id")]
392    pub id: Max35Text,
393    #[validate]
394    #[serde(rename = "CreDtTm")]
395    pub cre_dt_tm: IsoDateTime,
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 GenericIdentification1 {
408    #[validate]
409    #[serde(rename = "Id")]
410    pub id: Max35Text,
411    #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
412    pub schme_nm: Option<Max35Text>,
413    #[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
414    pub issr: Option<Max35Text>,
415}
416#[derive(
417    Debug,
418    Default,
419    Clone,
420    PartialEq,
421    ::serde::Serialize,
422    ::serde::Deserialize,
423    ::derive_builder::Builder,
424    ::validator::Validate,
425)]
426pub struct Max70Text {
427    #[validate(length(min = 1, max = 70,))]
428    #[serde(rename = "$text")]
429    pub value: String,
430}
431#[derive(
432    Debug,
433    Default,
434    Clone,
435    PartialEq,
436    ::serde::Serialize,
437    ::serde::Deserialize,
438    ::derive_builder::Builder,
439    ::validator::Validate,
440)]
441pub struct Extension1 {
442    #[validate]
443    #[serde(rename = "PlcAndNm")]
444    pub plc_and_nm: Max350Text,
445    #[validate]
446    #[serde(rename = "Txt")]
447    pub txt: Max350Text,
448}
449#[derive(
450    Debug,
451    Default,
452    Clone,
453    PartialEq,
454    ::serde::Serialize,
455    ::serde::Deserialize,
456    ::derive_builder::Builder,
457    ::validator::Validate,
458)]
459pub struct ActiveCurrencyAndAmountSimpleType {
460    #[validate(range(min = 0,))]
461    #[serde(rename = "$text")]
462    pub value: f64,
463}
464#[derive(
465    Debug,
466    Default,
467    Clone,
468    PartialEq,
469    ::serde::Serialize,
470    ::serde::Deserialize,
471    ::derive_builder::Builder,
472    ::validator::Validate,
473)]
474pub struct WertpapierIdentifier {
475    #[serde(rename = "$text")]
476    pub value: String,
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 PartiallySettled21ChoiceEnum {
489    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
490    pub prtry: Option<GenericIdentification1>,
491    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
492    pub cd: Option<SettledStatusReason2Code>,
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 PartiallySettled21Choice {
505    #[serde(flatten)]
506    pub value: PartiallySettled21ChoiceEnum,
507}
508#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
509pub enum OrderStatus4Code {
510    #[serde(rename = "PACK")]
511    Pack,
512    #[serde(rename = "COSE")]
513    Cose,
514    #[serde(rename = "STNP")]
515    Stnp,
516    #[serde(rename = "RECE")]
517    Rece,
518    #[serde(rename = "SETT")]
519    Sett,
520    #[serde(rename = "CPNP")]
521    Cpnp,
522    #[serde(rename = "CNFC")]
523    Cnfc,
524    #[serde(rename = "DONE")]
525    Done,
526    #[serde(rename = "DONF")]
527    Donf,
528    #[serde(rename = "OPOD")]
529    Opod,
530    #[serde(rename = "IACO")]
531    Iaco,
532    #[default]
533    Unknown,
534}
535#[derive(
536    Debug,
537    Default,
538    Clone,
539    PartialEq,
540    ::serde::Serialize,
541    ::serde::Deserialize,
542    ::derive_builder::Builder,
543    ::validator::Validate,
544)]
545pub struct Max16Text {
546    #[validate(length(min = 1, max = 16,))]
547    #[serde(rename = "$text")]
548    pub value: String,
549}
550#[derive(
551    Debug,
552    Default,
553    Clone,
554    PartialEq,
555    ::serde::Serialize,
556    ::serde::Deserialize,
557    ::derive_builder::Builder,
558    ::validator::Validate,
559)]
560pub struct ActiveOrHistoricCurrencyAndAmount {
561    #[serde(rename = "ActiveOrHistoricCurrencyAndAmount")]
562    pub value: ActiveOrHistoricCurrencyAndAmountSimpleType,
563    #[serde(rename = "@Ccy")]
564    pub ccy: ActiveOrHistoricCurrencyCode,
565}
566#[derive(
567    Debug,
568    Default,
569    Clone,
570    PartialEq,
571    ::serde::Serialize,
572    ::serde::Deserialize,
573    ::derive_builder::Builder,
574    ::validator::Validate,
575)]
576pub struct Exact4AlphaNumericText {
577    #[validate(regex = "EXACT_4_ALPHA_NUMERIC_TEXT_REGEX")]
578    #[serde(rename = "$text")]
579    pub value: String,
580}
581#[derive(
582    Debug,
583    Default,
584    Clone,
585    PartialEq,
586    ::serde::Serialize,
587    ::serde::Deserialize,
588    ::derive_builder::Builder,
589    ::validator::Validate,
590)]
591pub struct AdditionalAmount1ChoiceEnum {
592    #[serde(rename = "AddtlCshIn", skip_serializing_if = "Option::is_none")]
593    pub addtl_csh_in: Option<ActiveOrHistoricCurrencyAndAmount>,
594    #[serde(rename = "RsltgCshOut", skip_serializing_if = "Option::is_none")]
595    pub rsltg_csh_out: Option<ActiveOrHistoricCurrencyAndAmount>,
596}
597#[derive(
598    Debug,
599    Default,
600    Clone,
601    PartialEq,
602    ::serde::Serialize,
603    ::serde::Deserialize,
604    ::derive_builder::Builder,
605    ::validator::Validate,
606)]
607pub struct AdditionalAmount1Choice {
608    #[serde(flatten)]
609    pub value: AdditionalAmount1ChoiceEnum,
610}
611#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
612pub enum SuspendedStatusReason3Code {
613    #[serde(rename = "PRIC")]
614    Pric,
615    #[serde(rename = "FLOW")]
616    Flow,
617    #[default]
618    Unknown,
619}
620#[derive(
621    Debug,
622    Default,
623    Clone,
624    PartialEq,
625    ::serde::Serialize,
626    ::serde::Deserialize,
627    ::derive_builder::Builder,
628    ::validator::Validate,
629)]
630pub struct LeiIdentifier {
631    #[validate(regex = "LEI_IDENTIFIER_REGEX")]
632    #[serde(rename = "$text")]
633    pub value: String,
634}
635#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
636pub enum InvestmentFundFee1Code {
637    #[serde(rename = "BEND")]
638    Bend,
639    #[serde(rename = "BRKF")]
640    Brkf,
641    #[serde(rename = "COMM")]
642    Comm,
643    #[serde(rename = "CDPL")]
644    Cdpl,
645    #[serde(rename = "CDSC")]
646    Cdsc,
647    #[serde(rename = "CBCH")]
648    Cbch,
649    #[serde(rename = "DLEV")]
650    Dlev,
651    #[serde(rename = "FEND")]
652    Fend,
653    #[serde(rename = "INIT")]
654    Init,
655    #[serde(rename = "ADDF")]
656    Addf,
657    #[serde(rename = "POST")]
658    Post,
659    #[serde(rename = "PREM")]
660    Prem,
661    #[serde(rename = "CHAR")]
662    Char,
663    #[serde(rename = "SHIP")]
664    Ship,
665    #[serde(rename = "SWIT")]
666    Swit,
667    #[serde(rename = "UCIC")]
668    Ucic,
669    #[serde(rename = "REGF")]
670    Regf,
671    #[serde(rename = "PENA")]
672    Pena,
673    #[default]
674    Unknown,
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 OrderStatus3ChoiceEnum {
687    #[serde(rename = "Canc", skip_serializing_if = "Option::is_none")]
688    pub canc: Option<CancelledStatusReason16>,
689    #[serde(rename = "CondlyAccptd", skip_serializing_if = "Option::is_none")]
690    pub condly_accptd: Option<ConditionallyAcceptedStatus3Choice>,
691    #[serde(rename = "Rjctd", skip_serializing_if = "Option::is_none")]
692    pub rjctd: Option<RejectedStatus9>,
693    #[serde(rename = "Sspd", skip_serializing_if = "Option::is_none")]
694    pub sspd: Option<SuspendedStatusReason4Choice>,
695    #[serde(rename = "PrtlySttld", skip_serializing_if = "Option::is_none")]
696    pub prtly_sttld: Option<PartiallySettledStatus10>,
697    #[serde(rename = "Sts", skip_serializing_if = "Option::is_none")]
698    pub sts: Option<OrderStatus4Code>,
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 OrderStatus3Choice {
711    #[serde(flatten)]
712    pub value: OrderStatus3ChoiceEnum,
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 SecurityIdentification25ChoiceEnum {
725    #[serde(rename = "SEDOL", skip_serializing_if = "Option::is_none")]
726    pub sedol: Option<SedolIdentifier>,
727    #[serde(rename = "CTA", skip_serializing_if = "Option::is_none")]
728    pub cta: Option<ConsolidatedTapeAssociationIdentifier>,
729    #[serde(rename = "QUICK", skip_serializing_if = "Option::is_none")]
730    pub quick: Option<QuickIdentifier>,
731    #[serde(rename = "ISIN", skip_serializing_if = "Option::is_none")]
732    pub isin: Option<IsinOct2015Identifier>,
733    #[serde(rename = "Belgn", skip_serializing_if = "Option::is_none")]
734    pub belgn: Option<BelgianIdentifier>,
735    #[serde(rename = "RIC", skip_serializing_if = "Option::is_none")]
736    pub ric: Option<RicIdentifier>,
737    #[serde(rename = "Vlrn", skip_serializing_if = "Option::is_none")]
738    pub vlrn: Option<ValorenIdentifier>,
739    #[serde(rename = "Dtch", skip_serializing_if = "Option::is_none")]
740    pub dtch: Option<DutchIdentifier>,
741    #[serde(rename = "Cmon", skip_serializing_if = "Option::is_none")]
742    pub cmon: Option<EuroclearClearstreamIdentifier>,
743    #[serde(rename = "TckrSymb", skip_serializing_if = "Option::is_none")]
744    pub tckr_symb: Option<TickerIdentifier>,
745    #[serde(rename = "CUSIP", skip_serializing_if = "Option::is_none")]
746    pub cusip: Option<CusipIdentifier>,
747    #[serde(rename = "Wrtppr", skip_serializing_if = "Option::is_none")]
748    pub wrtppr: Option<WertpapierIdentifier>,
749    #[serde(rename = "SCVM", skip_serializing_if = "Option::is_none")]
750    pub scvm: Option<SicovamIdentifier>,
751    #[serde(rename = "OthrPrtryId", skip_serializing_if = "Option::is_none")]
752    pub othr_prtry_id: Option<AlternateSecurityIdentification7>,
753    #[serde(rename = "Blmbrg", skip_serializing_if = "Option::is_none")]
754    pub blmbrg: Option<Bloomberg2Identifier>,
755}
756#[derive(
757    Debug,
758    Default,
759    Clone,
760    PartialEq,
761    ::serde::Serialize,
762    ::serde::Deserialize,
763    ::derive_builder::Builder,
764    ::validator::Validate,
765)]
766pub struct SecurityIdentification25Choice {
767    #[serde(flatten)]
768    pub value: SecurityIdentification25ChoiceEnum,
769}
770#[derive(
771    Debug,
772    Default,
773    Clone,
774    PartialEq,
775    ::serde::Serialize,
776    ::serde::Deserialize,
777    ::derive_builder::Builder,
778    ::validator::Validate,
779)]
780pub struct IsoDate {
781    #[serde(rename = "$text")]
782    pub value: ::chrono::NaiveDate,
783}
784#[derive(
785    Debug,
786    Default,
787    Clone,
788    PartialEq,
789    ::serde::Serialize,
790    ::serde::Deserialize,
791    ::derive_builder::Builder,
792    ::validator::Validate,
793)]
794pub struct RicIdentifier {
795    #[validate(length(min = 1, max = 35,))]
796    #[serde(rename = "$text")]
797    pub value: String,
798}
799#[derive(
800    Debug,
801    Default,
802    Clone,
803    PartialEq,
804    ::serde::Serialize,
805    ::serde::Deserialize,
806    ::derive_builder::Builder,
807    ::validator::Validate,
808)]
809pub struct IndividualOrderStatusAndReason7 {
810    #[serde(rename = "MstrRef", skip_serializing_if = "Option::is_none")]
811    pub mstr_ref: Option<Max35Text>,
812    #[validate]
813    #[serde(rename = "OrdrRef")]
814    pub ordr_ref: Max35Text,
815    #[serde(rename = "ClntRef", skip_serializing_if = "Option::is_none")]
816    pub clnt_ref: Option<Max35Text>,
817    #[serde(rename = "DealRef", skip_serializing_if = "Option::is_none")]
818    pub deal_ref: Option<Max35Text>,
819    #[serde(rename = "CxlRef", skip_serializing_if = "Option::is_none")]
820    pub cxl_ref: Option<Max35Text>,
821    #[serde(rename = "OrdrSts")]
822    pub ordr_sts: OrderStatus5Choice,
823    #[validate(length(min = 0, max = 10,))]
824    #[serde(rename = "RprdFee", default)]
825    pub rprd_fee: Vec<Fee3>,
826    #[serde(rename = "StsInitr", skip_serializing_if = "Option::is_none")]
827    pub sts_initr: Option<PartyIdentification113>,
828    #[serde(rename = "OrdrData", skip_serializing_if = "Option::is_none")]
829    pub ordr_data: Option<FundOrderData5>,
830    #[serde(rename = "NewDtls", skip_serializing_if = "Option::is_none")]
831    pub new_dtls: Option<ExpectedExecutionDetails4>,
832    #[serde(rename = "GtgOrHldBckDtls", skip_serializing_if = "Option::is_none")]
833    pub gtg_or_hld_bck_dtls: Option<HoldBackInformation3>,
834}
835#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
836pub enum RejectedStatusReason11Code {
837    #[serde(rename = "BLCA")]
838    Blca,
839    #[serde(rename = "BLTR")]
840    Bltr,
841    #[serde(rename = "DOCC")]
842    Docc,
843    #[serde(rename = "ADEA")]
844    Adea,
845    #[serde(rename = "ILLI")]
846    Illi,
847    #[serde(rename = "BMIN")]
848    Bmin,
849    #[serde(rename = "BMRA")]
850    Bmra,
851    #[serde(rename = "BMRV")]
852    Bmrv,
853    #[serde(rename = "CUTO")]
854    Cuto,
855    #[serde(rename = "ICAG")]
856    Icag,
857    #[serde(rename = "IDDB")]
858    Iddb,
859    #[serde(rename = "ORRF")]
860    Orrf,
861    #[serde(rename = "FEEE")]
862    Feee,
863    #[serde(rename = "DSEC")]
864    Dsec,
865    #[serde(rename = "IDNA")]
866    Idna,
867    #[serde(rename = "DQUA")]
868    Dqua,
869    #[serde(rename = "CLOS")]
870    Clos,
871    #[serde(rename = "IPAC")]
872    Ipac,
873    #[serde(rename = "INSU")]
874    Insu,
875    #[serde(rename = "INTE")]
876    Inte,
877    #[serde(rename = "CASH")]
878    Cash,
879    #[serde(rename = "ICTR")]
880    Ictr,
881    #[serde(rename = "IOTP")]
882    Iotp,
883    #[serde(rename = "DFOR")]
884    Dfor,
885    #[serde(rename = "DMON")]
886    Dmon,
887    #[serde(rename = "SAFE")]
888    Safe,
889    #[serde(rename = "LOCK")]
890    Lock,
891    #[serde(rename = "NRGM")]
892    Nrgm,
893    #[serde(rename = "NSLA")]
894    Nsla,
895    #[serde(rename = "MONY")]
896    Mony,
897    #[serde(rename = "SECU")]
898    Secu,
899    #[serde(rename = "IPAY")]
900    Ipay,
901    #[serde(rename = "PRCT")]
902    Prct,
903    #[serde(rename = "DLVY")]
904    Dlvy,
905    #[serde(rename = "PHYS")]
906    Phys,
907    #[serde(rename = "PLCE")]
908    Plce,
909    #[serde(rename = "IVAG")]
910    Ivag,
911    #[serde(rename = "RTGS")]
912    Rtgs,
913    #[serde(rename = "ISAF")]
914    Isaf,
915    #[serde(rename = "NCRR")]
916    Ncrr,
917    #[serde(rename = "DDAT")]
918    Ddat,
919    #[serde(rename = "DEPT")]
920    Dept,
921    #[serde(rename = "SETR")]
922    Setr,
923    #[serde(rename = "IEXE")]
924    Iexe,
925    #[serde(rename = "SHIG")]
926    Shig,
927    #[serde(rename = "LATE")]
928    Late,
929    #[serde(rename = "SLOW")]
930    Slow,
931    #[serde(rename = "DTRD")]
932    Dtrd,
933    #[serde(rename = "UWAI")]
934    Uwai,
935    #[serde(rename = "UDCY")]
936    Udcy,
937    #[serde(rename = "UNAV")]
938    Unav,
939    #[serde(rename = "UPAY")]
940    Upay,
941    #[serde(rename = "URSC")]
942    Ursc,
943    #[serde(rename = "ULNK")]
944    Ulnk,
945    #[serde(rename = "UNSC")]
946    Unsc,
947    #[serde(rename = "POIN")]
948    Poin,
949    #[default]
950    Unknown,
951}
952#[derive(
953    Debug,
954    Default,
955    Clone,
956    PartialEq,
957    ::serde::Serialize,
958    ::serde::Deserialize,
959    ::derive_builder::Builder,
960    ::validator::Validate,
961)]
962pub struct DutchIdentifier {
963    #[serde(rename = "$text")]
964    pub value: String,
965}
966#[derive(
967    Debug,
968    Default,
969    Clone,
970    PartialEq,
971    ::serde::Serialize,
972    ::serde::Deserialize,
973    ::derive_builder::Builder,
974    ::validator::Validate,
975)]
976pub struct CusipIdentifier {
977    #[serde(rename = "$text")]
978    pub value: String,
979}
980#[derive(
981    Debug,
982    Default,
983    Clone,
984    PartialEq,
985    ::serde::Serialize,
986    ::serde::Deserialize,
987    ::derive_builder::Builder,
988    ::validator::Validate,
989)]
990pub struct Max140Text {
991    #[validate(length(min = 1, max = 140,))]
992    #[serde(rename = "$text")]
993    pub value: String,
994}
995#[derive(
996    Debug,
997    Default,
998    Clone,
999    PartialEq,
1000    ::serde::Serialize,
1001    ::serde::Deserialize,
1002    ::derive_builder::Builder,
1003    ::validator::Validate,
1004)]
1005pub struct InRepairStatusReason5ChoiceEnum {
1006    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1007    pub cd: Option<InRepairStatusReason1Code>,
1008    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1009    pub prtry: Option<GenericIdentification1>,
1010}
1011#[derive(
1012    Debug,
1013    Default,
1014    Clone,
1015    PartialEq,
1016    ::serde::Serialize,
1017    ::serde::Deserialize,
1018    ::derive_builder::Builder,
1019    ::validator::Validate,
1020)]
1021pub struct InRepairStatusReason5Choice {
1022    #[serde(flatten)]
1023    pub value: InRepairStatusReason5ChoiceEnum,
1024}
1025#[derive(
1026    Debug,
1027    Default,
1028    Clone,
1029    PartialEq,
1030    ::serde::Serialize,
1031    ::serde::Deserialize,
1032    ::derive_builder::Builder,
1033    ::validator::Validate,
1034)]
1035pub struct AdditionalReference8 {
1036    #[validate]
1037    #[serde(rename = "Ref")]
1038    pub r#ref: Max35Text,
1039    #[serde(rename = "RefIssr", skip_serializing_if = "Option::is_none")]
1040    pub ref_issr: Option<PartyIdentification113>,
1041    #[serde(rename = "MsgNm", skip_serializing_if = "Option::is_none")]
1042    pub msg_nm: Option<Max35Text>,
1043}
1044#[derive(
1045    Debug,
1046    Default,
1047    Clone,
1048    PartialEq,
1049    ::serde::Serialize,
1050    ::serde::Deserialize,
1051    ::derive_builder::Builder,
1052    ::validator::Validate,
1053)]
1054pub struct FundOrderData5 {
1055    #[serde(rename = "InvstmtAcctDtls", skip_serializing_if = "Option::is_none")]
1056    pub invstmt_acct_dtls: Option<InvestmentAccount58>,
1057    #[serde(rename = "FinInstrmDtls", skip_serializing_if = "Option::is_none")]
1058    pub fin_instrm_dtls: Option<FinancialInstrument57>,
1059    #[serde(rename = "UnitsNb", skip_serializing_if = "Option::is_none")]
1060    pub units_nb: Option<DecimalNumber>,
1061    #[serde(rename = "NetAmt", skip_serializing_if = "Option::is_none")]
1062    pub net_amt: Option<ActiveOrHistoricCurrencyAndAmount>,
1063    #[serde(rename = "GrssAmt", skip_serializing_if = "Option::is_none")]
1064    pub grss_amt: Option<ActiveOrHistoricCurrencyAndAmount>,
1065    #[serde(rename = "HldgsRedRate", skip_serializing_if = "Option::is_none")]
1066    pub hldgs_red_rate: Option<PercentageRate>,
1067    #[serde(rename = "SttlmAmt", skip_serializing_if = "Option::is_none")]
1068    pub sttlm_amt: Option<ActiveCurrencyAndAmount>,
1069    #[serde(rename = "UnitCcy", skip_serializing_if = "Option::is_none")]
1070    pub unit_ccy: Option<ActiveCurrencyCode>,
1071    #[serde(rename = "QtdCcy", skip_serializing_if = "Option::is_none")]
1072    pub qtd_ccy: Option<ActiveCurrencyCode>,
1073}
1074#[derive(
1075    Debug,
1076    Default,
1077    Clone,
1078    PartialEq,
1079    ::serde::Serialize,
1080    ::serde::Deserialize,
1081    ::derive_builder::Builder,
1082    ::validator::Validate,
1083)]
1084pub struct BelgianIdentifier {
1085    #[serde(rename = "$text")]
1086    pub value: String,
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 DecimalNumber {
1099    #[serde(rename = "$text")]
1100    pub value: f64,
1101}
1102#[derive(
1103    Debug,
1104    Default,
1105    Clone,
1106    PartialEq,
1107    ::serde::Serialize,
1108    ::serde::Deserialize,
1109    ::derive_builder::Builder,
1110    ::validator::Validate,
1111)]
1112pub struct ActiveCurrencyCode {
1113    #[validate(regex = "ACTIVE_CURRENCY_CODE_REGEX")]
1114    #[serde(rename = "$text")]
1115    pub value: String,
1116}
1117#[derive(
1118    Debug,
1119    Default,
1120    Clone,
1121    PartialEq,
1122    ::serde::Serialize,
1123    ::serde::Deserialize,
1124    ::derive_builder::Builder,
1125    ::validator::Validate,
1126)]
1127pub struct ExpectedExecutionDetails2 {
1128    #[serde(rename = "XpctdTradDtTm", skip_serializing_if = "Option::is_none")]
1129    pub xpctd_trad_dt_tm: Option<DateAndDateTimeChoice>,
1130    #[serde(rename = "XpctdCshSttlmDt", skip_serializing_if = "Option::is_none")]
1131    pub xpctd_csh_sttlm_dt: Option<IsoDate>,
1132}
1133#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1134pub enum DistributionPolicy1Code {
1135    #[serde(rename = "DIST")]
1136    Dist,
1137    #[serde(rename = "ACCU")]
1138    Accu,
1139    #[default]
1140    Unknown,
1141}
1142#[derive(
1143    Debug,
1144    Default,
1145    Clone,
1146    PartialEq,
1147    ::serde::Serialize,
1148    ::serde::Deserialize,
1149    ::derive_builder::Builder,
1150    ::validator::Validate,
1151)]
1152pub struct PartyIdentification90ChoiceEnum {
1153    #[serde(rename = "NmAndAdr", skip_serializing_if = "Option::is_none")]
1154    pub nm_and_adr: Option<NameAndAddress5>,
1155    #[serde(rename = "AnyBIC", skip_serializing_if = "Option::is_none")]
1156    pub any_bic: Option<AnyBicIdentifier>,
1157    #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")]
1158    pub prtry_id: Option<GenericIdentification1>,
1159}
1160#[derive(
1161    Debug,
1162    Default,
1163    Clone,
1164    PartialEq,
1165    ::serde::Serialize,
1166    ::serde::Deserialize,
1167    ::derive_builder::Builder,
1168    ::validator::Validate,
1169)]
1170pub struct PartyIdentification90Choice {
1171    #[serde(flatten)]
1172    pub value: PartyIdentification90ChoiceEnum,
1173}
1174#[derive(
1175    Debug,
1176    Default,
1177    Clone,
1178    PartialEq,
1179    ::serde::Serialize,
1180    ::serde::Deserialize,
1181    ::derive_builder::Builder,
1182    ::validator::Validate,
1183)]
1184pub struct References61ChoiceEnum {
1185    #[serde(rename = "OthrRef", skip_serializing_if = "Option::is_none")]
1186    pub othr_ref: Option<AdditionalReference8>,
1187    #[serde(rename = "RltdRef", skip_serializing_if = "Option::is_none")]
1188    pub rltd_ref: Option<AdditionalReference8>,
1189}
1190#[derive(
1191    Debug,
1192    Default,
1193    Clone,
1194    PartialEq,
1195    ::serde::Serialize,
1196    ::serde::Deserialize,
1197    ::derive_builder::Builder,
1198    ::validator::Validate,
1199)]
1200pub struct References61Choice {
1201    #[serde(flatten)]
1202    pub value: References61ChoiceEnum,
1203}
1204#[derive(
1205    Debug,
1206    Default,
1207    Clone,
1208    PartialEq,
1209    ::serde::Serialize,
1210    ::serde::Deserialize,
1211    ::derive_builder::Builder,
1212    ::validator::Validate,
1213)]
1214#[serde(rename = "Document")]
1215pub struct Document {
1216    #[validate]
1217    #[serde(rename = "OrdrInstrStsRpt")]
1218    pub ordr_instr_sts_rpt: OrderInstructionStatusReportV04,
1219    #[serde(rename = "@xmlns", default = "namespace")]
1220    pub xmlns: String,
1221}
1222#[derive(
1223    Debug,
1224    Default,
1225    Clone,
1226    PartialEq,
1227    ::serde::Serialize,
1228    ::serde::Deserialize,
1229    ::derive_builder::Builder,
1230    ::validator::Validate,
1231)]
1232pub struct ChargeType5ChoiceEnum {
1233    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1234    pub cd: Option<InvestmentFundFee1Code>,
1235    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1236    pub prtry: Option<GenericIdentification47>,
1237}
1238#[derive(
1239    Debug,
1240    Default,
1241    Clone,
1242    PartialEq,
1243    ::serde::Serialize,
1244    ::serde::Deserialize,
1245    ::derive_builder::Builder,
1246    ::validator::Validate,
1247)]
1248pub struct ChargeType5Choice {
1249    #[serde(flatten)]
1250    pub value: ChargeType5ChoiceEnum,
1251}
1252#[derive(
1253    Debug,
1254    Default,
1255    Clone,
1256    PartialEq,
1257    ::serde::Serialize,
1258    ::serde::Deserialize,
1259    ::derive_builder::Builder,
1260    ::validator::Validate,
1261)]
1262pub struct SedolIdentifier {
1263    #[serde(rename = "$text")]
1264    pub value: String,
1265}
1266#[derive(
1267    Debug,
1268    Default,
1269    Clone,
1270    PartialEq,
1271    ::serde::Serialize,
1272    ::serde::Deserialize,
1273    ::derive_builder::Builder,
1274    ::validator::Validate,
1275)]
1276pub struct Max35Text {
1277    #[validate(length(min = 1, max = 35,))]
1278    #[serde(rename = "$text")]
1279    pub value: String,
1280}
1281#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1282pub enum ConditionallyAcceptedStatusReason2Code {
1283    #[serde(rename = "DOCC")]
1284    Docc,
1285    #[serde(rename = "AWRM")]
1286    Awrm,
1287    #[serde(rename = "AWSM")]
1288    Awsm,
1289    #[serde(rename = "DUPL")]
1290    Dupl,
1291    #[serde(rename = "CRED")]
1292    Cred,
1293    #[default]
1294    Unknown,
1295}
1296#[derive(
1297    Debug,
1298    Default,
1299    Clone,
1300    PartialEq,
1301    ::serde::Serialize,
1302    ::serde::Deserialize,
1303    ::derive_builder::Builder,
1304    ::validator::Validate,
1305)]
1306pub struct Fee3 {
1307    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
1308    pub tp: Option<ChargeType5Choice>,
1309    #[serde(rename = "RprdStdAmt", skip_serializing_if = "Option::is_none")]
1310    pub rprd_std_amt: Option<ActiveCurrencyAndAmount>,
1311    #[serde(rename = "RprdStdRate", skip_serializing_if = "Option::is_none")]
1312    pub rprd_std_rate: Option<PercentageRate>,
1313    #[serde(rename = "RprdDscntAmt", skip_serializing_if = "Option::is_none")]
1314    pub rprd_dscnt_amt: Option<ActiveCurrencyAndAmount>,
1315    #[serde(rename = "RprdDscntRate", skip_serializing_if = "Option::is_none")]
1316    pub rprd_dscnt_rate: Option<PercentageRate>,
1317    #[serde(rename = "RprdReqdAmt", skip_serializing_if = "Option::is_none")]
1318    pub rprd_reqd_amt: Option<ActiveCurrencyAndAmount>,
1319    #[serde(rename = "RprdReqdRate", skip_serializing_if = "Option::is_none")]
1320    pub rprd_reqd_rate: Option<PercentageRate>,
1321    #[serde(rename = "ComrclAgrmtRef", skip_serializing_if = "Option::is_none")]
1322    pub comrcl_agrmt_ref: Option<Max35Text>,
1323    #[serde(
1324        rename = "NewComrclAgrmtRefInd",
1325        skip_serializing_if = "Option::is_none"
1326    )]
1327    pub new_comrcl_agrmt_ref_ind: Option<YesNoIndicator>,
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 IsoDateTime {
1340    #[serde(rename = "$text")]
1341    pub value: ::chrono::DateTime<::chrono::Utc>,
1342}
1343#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1344pub enum OrderOriginatorEligibility1Code {
1345    #[serde(rename = "ELIG")]
1346    Elig,
1347    #[serde(rename = "RETL")]
1348    Retl,
1349    #[serde(rename = "PROF")]
1350    Prof,
1351    #[default]
1352    Unknown,
1353}
1354#[derive(
1355    Debug,
1356    Default,
1357    Clone,
1358    PartialEq,
1359    ::serde::Serialize,
1360    ::serde::Deserialize,
1361    ::derive_builder::Builder,
1362    ::validator::Validate,
1363)]
1364pub struct OrderStatusAndReason10 {
1365    #[serde(rename = "MstrRef", skip_serializing_if = "Option::is_none")]
1366    pub mstr_ref: Option<Max35Text>,
1367    #[serde(rename = "OrdrSts")]
1368    pub ordr_sts: OrderStatus3Choice,
1369    #[serde(rename = "StsInitr", skip_serializing_if = "Option::is_none")]
1370    pub sts_initr: Option<PartyIdentification113>,
1371}
1372#[derive(
1373    Debug,
1374    Default,
1375    Clone,
1376    PartialEq,
1377    ::serde::Serialize,
1378    ::serde::Deserialize,
1379    ::derive_builder::Builder,
1380    ::validator::Validate,
1381)]
1382pub struct ConsolidatedTapeAssociationIdentifier {
1383    #[validate(length(min = 1, max = 35,))]
1384    #[serde(rename = "$text")]
1385    pub value: String,
1386}
1387#[derive(
1388    Debug,
1389    Default,
1390    Clone,
1391    PartialEq,
1392    ::serde::Serialize,
1393    ::serde::Deserialize,
1394    ::derive_builder::Builder,
1395    ::validator::Validate,
1396)]
1397pub struct GenericIdentification47 {
1398    #[validate]
1399    #[serde(rename = "Id")]
1400    pub id: Exact4AlphaNumericText,
1401    #[validate]
1402    #[serde(rename = "Issr")]
1403    pub issr: Max4AlphaNumericText,
1404    #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
1405    pub schme_nm: Option<Max4AlphaNumericText>,
1406}
1407#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1408pub enum InRepairStatusReason1Code {
1409    #[serde(rename = "COMA")]
1410    Coma,
1411    #[default]
1412    Unknown,
1413}
1414#[derive(
1415    Debug,
1416    Default,
1417    Clone,
1418    PartialEq,
1419    ::serde::Serialize,
1420    ::serde::Deserialize,
1421    ::derive_builder::Builder,
1422    ::validator::Validate,
1423)]
1424pub struct OrderInstructionStatusReportV04 {
1425    #[validate]
1426    #[serde(rename = "MsgId")]
1427    pub msg_id: MessageIdentification1,
1428    #[serde(rename = "Ref", skip_serializing_if = "Option::is_none")]
1429    pub r#ref: Option<References61Choice>,
1430    #[serde(rename = "StsRpt")]
1431    pub sts_rpt: Status24Choice,
1432    #[validate(length(min = 0,))]
1433    #[serde(rename = "Xtnsn", default)]
1434    pub xtnsn: Vec<Extension1>,
1435}
1436#[derive(
1437    Debug,
1438    Default,
1439    Clone,
1440    PartialEq,
1441    ::serde::Serialize,
1442    ::serde::Deserialize,
1443    ::derive_builder::Builder,
1444    ::validator::Validate,
1445)]
1446pub struct PartiallySettledStatus10 {
1447    #[serde(rename = "Rsn")]
1448    pub rsn: PartiallySettled21Choice,
1449    #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
1450    pub addtl_inf: Option<Max350Text>,
1451}
1452#[derive(
1453    Debug,
1454    Default,
1455    Clone,
1456    PartialEq,
1457    ::serde::Serialize,
1458    ::serde::Deserialize,
1459    ::derive_builder::Builder,
1460    ::validator::Validate,
1461)]
1462pub struct PercentageRate {
1463    #[serde(rename = "$text")]
1464    pub value: f64,
1465}
1466#[derive(
1467    Debug,
1468    Default,
1469    Clone,
1470    PartialEq,
1471    ::serde::Serialize,
1472    ::serde::Deserialize,
1473    ::derive_builder::Builder,
1474    ::validator::Validate,
1475)]
1476pub struct ConditionallyAcceptedStatusReason3ChoiceEnum {
1477    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1478    pub prtry: Option<GenericIdentification1>,
1479    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1480    pub cd: Option<ConditionallyAcceptedStatusReason2Code>,
1481}
1482#[derive(
1483    Debug,
1484    Default,
1485    Clone,
1486    PartialEq,
1487    ::serde::Serialize,
1488    ::serde::Deserialize,
1489    ::derive_builder::Builder,
1490    ::validator::Validate,
1491)]
1492pub struct ConditionallyAcceptedStatusReason3Choice {
1493    #[serde(flatten)]
1494    pub value: ConditionallyAcceptedStatusReason3ChoiceEnum,
1495}
1496#[derive(
1497    Debug,
1498    Default,
1499    Clone,
1500    PartialEq,
1501    ::serde::Serialize,
1502    ::serde::Deserialize,
1503    ::derive_builder::Builder,
1504    ::validator::Validate,
1505)]
1506pub struct IsinOct2015Identifier {
1507    #[validate(regex = "ISIN_OCT_2015_IDENTIFIER_REGEX")]
1508    #[serde(rename = "$text")]
1509    pub value: String,
1510}
1511#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1512pub enum SettledStatusReason2Code {
1513    #[serde(rename = "CPST")]
1514    Cpst,
1515    #[serde(rename = "GATM")]
1516    Gatm,
1517    #[serde(rename = "GAT1")]
1518    Gat1,
1519    #[serde(rename = "UCPS")]
1520    Ucps,
1521    #[serde(rename = "UPST")]
1522    Upst,
1523    #[default]
1524    Unknown,
1525}
1526#[derive(
1527    Debug,
1528    Default,
1529    Clone,
1530    PartialEq,
1531    ::serde::Serialize,
1532    ::serde::Deserialize,
1533    ::derive_builder::Builder,
1534    ::validator::Validate,
1535)]
1536pub struct Status24ChoiceEnum {
1537    #[serde(rename = "OrdrDtlsRpt", skip_serializing_if = "Option::is_none")]
1538    pub ordr_dtls_rpt: Option<OrderStatusAndReason10>,
1539    #[serde(rename = "IndvOrdrDtlsRpt", skip_serializing_if = "Option::is_none")]
1540    pub indv_ordr_dtls_rpt: Option<IndividualOrderStatusAndReason7>,
1541    #[serde(rename = "SwtchOrdrDtlsRpt", skip_serializing_if = "Option::is_none")]
1542    pub swtch_ordr_dtls_rpt: Option<SwitchOrderStatusAndReason2>,
1543}
1544#[derive(
1545    Debug,
1546    Default,
1547    Clone,
1548    PartialEq,
1549    ::serde::Serialize,
1550    ::serde::Deserialize,
1551    ::derive_builder::Builder,
1552    ::validator::Validate,
1553)]
1554pub struct Status24Choice {
1555    #[serde(flatten)]
1556    pub value: Status24ChoiceEnum,
1557}
1558#[derive(
1559    Debug,
1560    Default,
1561    Clone,
1562    PartialEq,
1563    ::serde::Serialize,
1564    ::serde::Deserialize,
1565    ::derive_builder::Builder,
1566    ::validator::Validate,
1567)]
1568pub struct ExpectedExecutionDetails4 {
1569    #[serde(rename = "XpctdTradDtTm", skip_serializing_if = "Option::is_none")]
1570    pub xpctd_trad_dt_tm: Option<DateAndDateTimeChoice>,
1571    #[serde(rename = "XpctdCshSttlmDt", skip_serializing_if = "Option::is_none")]
1572    pub xpctd_csh_sttlm_dt: Option<IsoDate>,
1573}
1574#[derive(
1575    Debug,
1576    Default,
1577    Clone,
1578    PartialEq,
1579    ::serde::Serialize,
1580    ::serde::Deserialize,
1581    ::derive_builder::Builder,
1582    ::validator::Validate,
1583)]
1584pub struct DateAndDateTimeChoiceEnum {
1585    #[serde(rename = "Dt", skip_serializing_if = "Option::is_none")]
1586    pub dt: Option<IsoDate>,
1587    #[serde(rename = "DtTm", skip_serializing_if = "Option::is_none")]
1588    pub dt_tm: Option<IsoDateTime>,
1589}
1590#[derive(
1591    Debug,
1592    Default,
1593    Clone,
1594    PartialEq,
1595    ::serde::Serialize,
1596    ::serde::Deserialize,
1597    ::derive_builder::Builder,
1598    ::validator::Validate,
1599)]
1600pub struct DateAndDateTimeChoice {
1601    #[serde(flatten)]
1602    pub value: DateAndDateTimeChoiceEnum,
1603}
1604#[derive(
1605    Debug,
1606    Default,
1607    Clone,
1608    PartialEq,
1609    ::serde::Serialize,
1610    ::serde::Deserialize,
1611    ::derive_builder::Builder,
1612    ::validator::Validate,
1613)]
1614pub struct IdentificationSource1ChoiceEnum {
1615    #[serde(rename = "Dmst", skip_serializing_if = "Option::is_none")]
1616    pub dmst: Option<CountryCode>,
1617    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1618    pub prtry: Option<Max35Text>,
1619}
1620#[derive(
1621    Debug,
1622    Default,
1623    Clone,
1624    PartialEq,
1625    ::serde::Serialize,
1626    ::serde::Deserialize,
1627    ::derive_builder::Builder,
1628    ::validator::Validate,
1629)]
1630pub struct IdentificationSource1Choice {
1631    #[serde(flatten)]
1632    pub value: IdentificationSource1ChoiceEnum,
1633}
1634#[derive(
1635    Debug,
1636    Default,
1637    Clone,
1638    PartialEq,
1639    ::serde::Serialize,
1640    ::serde::Deserialize,
1641    ::derive_builder::Builder,
1642    ::validator::Validate,
1643)]
1644pub struct SwitchLegReferences2 {
1645    #[serde(rename = "LegId")]
1646    pub leg_id: LegIdentification1Choice,
1647    #[serde(rename = "LegRjctnRsn", skip_serializing_if = "Option::is_none")]
1648    pub leg_rjctn_rsn: Option<Max350Text>,
1649    #[validate(length(min = 0, max = 10,))]
1650    #[serde(rename = "RprdFee", default)]
1651    pub rprd_fee: Vec<Fee3>,
1652    #[serde(rename = "InvstmtAcctDtls", skip_serializing_if = "Option::is_none")]
1653    pub invstmt_acct_dtls: Option<InvestmentAccount58>,
1654    #[serde(rename = "FinInstrmDtls", skip_serializing_if = "Option::is_none")]
1655    pub fin_instrm_dtls: Option<FinancialInstrument57>,
1656}
1657#[derive(
1658    Debug,
1659    Default,
1660    Clone,
1661    PartialEq,
1662    ::serde::Serialize,
1663    ::serde::Deserialize,
1664    ::derive_builder::Builder,
1665    ::validator::Validate,
1666)]
1667pub struct InvestmentAccount58 {
1668    #[validate]
1669    #[serde(rename = "AcctId")]
1670    pub acct_id: Max35Text,
1671    #[serde(rename = "AcctNm", skip_serializing_if = "Option::is_none")]
1672    pub acct_nm: Option<Max35Text>,
1673    #[serde(rename = "AcctDsgnt", skip_serializing_if = "Option::is_none")]
1674    pub acct_dsgnt: Option<Max35Text>,
1675    #[validate(length(min = 0,))]
1676    #[serde(rename = "OwnrId", default)]
1677    pub ownr_id: Vec<PartyIdentification113>,
1678    #[serde(rename = "AcctSvcr", skip_serializing_if = "Option::is_none")]
1679    pub acct_svcr: Option<PartyIdentification113>,
1680    #[serde(rename = "OrdrOrgtrElgblty", skip_serializing_if = "Option::is_none")]
1681    pub ordr_orgtr_elgblty: Option<OrderOriginatorEligibility1Code>,
1682    #[serde(rename = "SubAcctDtls", skip_serializing_if = "Option::is_none")]
1683    pub sub_acct_dtls: Option<SubAccount6>,
1684}
1685#[derive(
1686    Debug,
1687    Default,
1688    Clone,
1689    PartialEq,
1690    ::serde::Serialize,
1691    ::serde::Deserialize,
1692    ::derive_builder::Builder,
1693    ::validator::Validate,
1694)]
1695pub struct DateFormat42ChoiceEnum {
1696    #[serde(rename = "YrMnth", skip_serializing_if = "Option::is_none")]
1697    pub yr_mnth: Option<IsoYearMonth>,
1698    #[serde(rename = "YrMnthDay", skip_serializing_if = "Option::is_none")]
1699    pub yr_mnth_day: Option<IsoDate>,
1700}
1701#[derive(
1702    Debug,
1703    Default,
1704    Clone,
1705    PartialEq,
1706    ::serde::Serialize,
1707    ::serde::Deserialize,
1708    ::derive_builder::Builder,
1709    ::validator::Validate,
1710)]
1711pub struct DateFormat42Choice {
1712    #[serde(flatten)]
1713    pub value: DateFormat42ChoiceEnum,
1714}
1715#[derive(
1716    Debug,
1717    Default,
1718    Clone,
1719    PartialEq,
1720    ::serde::Serialize,
1721    ::serde::Deserialize,
1722    ::derive_builder::Builder,
1723    ::validator::Validate,
1724)]
1725pub struct RejectedReason20ChoiceEnum {
1726    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1727    pub cd: Option<RejectedStatusReason11Code>,
1728    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1729    pub prtry: Option<GenericIdentification1>,
1730}
1731#[derive(
1732    Debug,
1733    Default,
1734    Clone,
1735    PartialEq,
1736    ::serde::Serialize,
1737    ::serde::Deserialize,
1738    ::derive_builder::Builder,
1739    ::validator::Validate,
1740)]
1741pub struct RejectedReason20Choice {
1742    #[serde(flatten)]
1743    pub value: RejectedReason20ChoiceEnum,
1744}
1745#[derive(
1746    Debug,
1747    Default,
1748    Clone,
1749    PartialEq,
1750    ::serde::Serialize,
1751    ::serde::Deserialize,
1752    ::derive_builder::Builder,
1753    ::validator::Validate,
1754)]
1755pub struct EuroclearClearstreamIdentifier {
1756    #[validate(length(min = 1, max = 12,))]
1757    #[serde(rename = "$text")]
1758    pub value: String,
1759}
1760#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1761pub enum FormOfSecurity1Code {
1762    #[serde(rename = "BEAR")]
1763    Bear,
1764    #[serde(rename = "REGD")]
1765    Regd,
1766    #[default]
1767    Unknown,
1768}
1769#[derive(
1770    Debug,
1771    Default,
1772    Clone,
1773    PartialEq,
1774    ::serde::Serialize,
1775    ::serde::Deserialize,
1776    ::derive_builder::Builder,
1777    ::validator::Validate,
1778)]
1779pub struct SuspendedStatusReason4 {
1780    #[serde(rename = "Rsn")]
1781    pub rsn: SuspendedStatusReason5Choice,
1782    #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
1783    pub addtl_inf: Option<Max350Text>,
1784}
1785#[derive(
1786    Debug,
1787    Default,
1788    Clone,
1789    PartialEq,
1790    ::serde::Serialize,
1791    ::serde::Deserialize,
1792    ::derive_builder::Builder,
1793    ::validator::Validate,
1794)]
1795pub struct Bloomberg2Identifier {
1796    #[validate(regex = "BLOOMBERG_2_IDENTIFIER_REGEX")]
1797    #[serde(rename = "$text")]
1798    pub value: String,
1799}
1800#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1801pub enum GateHoldBack1Code {
1802    #[serde(rename = "GATE")]
1803    Gate,
1804    #[serde(rename = "HOLD")]
1805    Hold,
1806    #[default]
1807    Unknown,
1808}
1809#[derive(
1810    Debug,
1811    Default,
1812    Clone,
1813    PartialEq,
1814    ::serde::Serialize,
1815    ::serde::Deserialize,
1816    ::derive_builder::Builder,
1817    ::validator::Validate,
1818)]
1819pub struct Max4AlphaNumericText {
1820    #[validate(length(min = 1, max = 4,), regex = "MAX_4_ALPHA_NUMERIC_TEXT_REGEX")]
1821    #[serde(rename = "$text")]
1822    pub value: String,
1823}
1824#[derive(
1825    Debug,
1826    Default,
1827    Clone,
1828    PartialEq,
1829    ::serde::Serialize,
1830    ::serde::Deserialize,
1831    ::derive_builder::Builder,
1832    ::validator::Validate,
1833)]
1834pub struct Series1 {
1835    #[serde(rename = "SrsDt", skip_serializing_if = "Option::is_none")]
1836    pub srs_dt: Option<DateFormat42Choice>,
1837    #[serde(rename = "SrsNm", skip_serializing_if = "Option::is_none")]
1838    pub srs_nm: Option<Max35Text>,
1839}
1840#[derive(
1841    Debug,
1842    Default,
1843    Clone,
1844    PartialEq,
1845    ::serde::Serialize,
1846    ::serde::Deserialize,
1847    ::derive_builder::Builder,
1848    ::validator::Validate,
1849)]
1850pub struct FinancialInstrument57 {
1851    #[serde(rename = "Id")]
1852    pub id: SecurityIdentification25Choice,
1853    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
1854    pub nm: Option<Max350Text>,
1855    #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
1856    pub shrt_nm: Option<Max35Text>,
1857    #[serde(rename = "SplmtryId", skip_serializing_if = "Option::is_none")]
1858    pub splmtry_id: Option<Max35Text>,
1859    #[serde(rename = "ClssTp", skip_serializing_if = "Option::is_none")]
1860    pub clss_tp: Option<Max35Text>,
1861    #[serde(rename = "SctiesForm", skip_serializing_if = "Option::is_none")]
1862    pub scties_form: Option<FormOfSecurity1Code>,
1863    #[serde(rename = "DstrbtnPlcy", skip_serializing_if = "Option::is_none")]
1864    pub dstrbtn_plcy: Option<DistributionPolicy1Code>,
1865    #[serde(rename = "PdctGrp", skip_serializing_if = "Option::is_none")]
1866    pub pdct_grp: Option<Max140Text>,
1867    #[serde(rename = "SrsId", skip_serializing_if = "Option::is_none")]
1868    pub srs_id: Option<Series1>,
1869}
1870#[derive(
1871    Debug,
1872    Default,
1873    Clone,
1874    PartialEq,
1875    ::serde::Serialize,
1876    ::serde::Deserialize,
1877    ::derive_builder::Builder,
1878    ::validator::Validate,
1879)]
1880pub struct OrderStatus4ChoiceEnum {
1881    #[serde(rename = "Sspd", skip_serializing_if = "Option::is_none")]
1882    pub sspd: Option<SuspendedStatusReason4Choice>,
1883    #[serde(rename = "Rjctd", skip_serializing_if = "Option::is_none")]
1884    pub rjctd: Option<RejectedStatus9>,
1885    #[serde(rename = "CondlyAccptd", skip_serializing_if = "Option::is_none")]
1886    pub condly_accptd: Option<ConditionallyAcceptedStatus3Choice>,
1887    #[serde(rename = "InRpr", skip_serializing_if = "Option::is_none")]
1888    pub in_rpr: Option<InRepairStatusReason4Choice>,
1889    #[serde(rename = "Canc", skip_serializing_if = "Option::is_none")]
1890    pub canc: Option<CancelledStatusReason16>,
1891    #[serde(rename = "PrtlySttld", skip_serializing_if = "Option::is_none")]
1892    pub prtly_sttld: Option<PartiallySettledStatus10>,
1893    #[serde(rename = "Sts", skip_serializing_if = "Option::is_none")]
1894    pub sts: Option<OrderStatus4Code>,
1895}
1896#[derive(
1897    Debug,
1898    Default,
1899    Clone,
1900    PartialEq,
1901    ::serde::Serialize,
1902    ::serde::Deserialize,
1903    ::derive_builder::Builder,
1904    ::validator::Validate,
1905)]
1906pub struct OrderStatus4Choice {
1907    #[serde(flatten)]
1908    pub value: OrderStatus4ChoiceEnum,
1909}
1910#[derive(
1911    Debug,
1912    Default,
1913    Clone,
1914    PartialEq,
1915    ::serde::Serialize,
1916    ::serde::Deserialize,
1917    ::derive_builder::Builder,
1918    ::validator::Validate,
1919)]
1920pub struct SwitchOrderStatusAndReason2 {
1921    #[serde(rename = "MstrRef", skip_serializing_if = "Option::is_none")]
1922    pub mstr_ref: Option<Max35Text>,
1923    #[validate]
1924    #[serde(rename = "OrdrRef")]
1925    pub ordr_ref: Max35Text,
1926    #[serde(rename = "ClntRef", skip_serializing_if = "Option::is_none")]
1927    pub clnt_ref: Option<Max35Text>,
1928    #[serde(rename = "DealRef", skip_serializing_if = "Option::is_none")]
1929    pub deal_ref: Option<Max35Text>,
1930    #[serde(rename = "CxlRef", skip_serializing_if = "Option::is_none")]
1931    pub cxl_ref: Option<Max35Text>,
1932    #[serde(rename = "OrdrSts")]
1933    pub ordr_sts: OrderStatus4Choice,
1934    #[validate(length(min = 0,))]
1935    #[serde(rename = "LegInf", default)]
1936    pub leg_inf: Vec<SwitchLegReferences2>,
1937    #[serde(rename = "StsInitr", skip_serializing_if = "Option::is_none")]
1938    pub sts_initr: Option<PartyIdentification113>,
1939    #[serde(rename = "OrdrData", skip_serializing_if = "Option::is_none")]
1940    pub ordr_data: Option<FundOrderData6>,
1941    #[serde(rename = "NewDtls", skip_serializing_if = "Option::is_none")]
1942    pub new_dtls: Option<ExpectedExecutionDetails2>,
1943}
1944#[derive(
1945    Debug,
1946    Default,
1947    Clone,
1948    PartialEq,
1949    ::serde::Serialize,
1950    ::serde::Deserialize,
1951    ::derive_builder::Builder,
1952    ::validator::Validate,
1953)]
1954pub struct ValorenIdentifier {
1955    #[serde(rename = "$text")]
1956    pub value: String,
1957}
1958#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1959pub enum RedemptionCompletion1Code {
1960    #[serde(rename = "RED0")]
1961    Red0,
1962    #[serde(rename = "RED1")]
1963    Red1,
1964    #[default]
1965    Unknown,
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 ConditionallyAcceptedStatusReason3 {
1978    #[serde(rename = "Rsn")]
1979    pub rsn: ConditionallyAcceptedStatusReason3Choice,
1980    #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
1981    pub addtl_inf: Option<Max350Text>,
1982}
1983#[derive(
1984    Debug,
1985    Default,
1986    Clone,
1987    PartialEq,
1988    ::serde::Serialize,
1989    ::serde::Deserialize,
1990    ::derive_builder::Builder,
1991    ::validator::Validate,
1992)]
1993pub struct SubAccount6 {
1994    #[validate]
1995    #[serde(rename = "Id")]
1996    pub id: Max35Text,
1997    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
1998    pub nm: Option<Max35Text>,
1999    #[serde(rename = "Chrtc", skip_serializing_if = "Option::is_none")]
2000    pub chrtc: Option<Max35Text>,
2001    #[serde(rename = "AcctDsgnt", skip_serializing_if = "Option::is_none")]
2002    pub acct_dsgnt: Option<Max35Text>,
2003}
2004#[derive(
2005    Debug,
2006    Default,
2007    Clone,
2008    PartialEq,
2009    ::serde::Serialize,
2010    ::serde::Deserialize,
2011    ::derive_builder::Builder,
2012    ::validator::Validate,
2013)]
2014pub struct CancelledStatusReason16 {
2015    #[serde(rename = "Rsn", skip_serializing_if = "Option::is_none")]
2016    pub rsn: Option<CancelledReason12Choice>,
2017    #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
2018    pub addtl_inf: Option<Max350Text>,
2019}
2020#[derive(
2021    Debug,
2022    Default,
2023    Clone,
2024    PartialEq,
2025    ::serde::Serialize,
2026    ::serde::Deserialize,
2027    ::derive_builder::Builder,
2028    ::validator::Validate,
2029)]
2030pub struct ConditionallyAcceptedStatus3ChoiceEnum {
2031    #[serde(rename = "NoSpcfdRsn", skip_serializing_if = "Option::is_none")]
2032    pub no_spcfd_rsn: Option<NoReasonCode>,
2033    #[serde(rename = "RsnDtls", skip_serializing_if = "Option::is_none")]
2034    pub rsn_dtls: Option<ConditionallyAcceptedStatusReason3>,
2035}
2036#[derive(
2037    Debug,
2038    Default,
2039    Clone,
2040    PartialEq,
2041    ::serde::Serialize,
2042    ::serde::Deserialize,
2043    ::derive_builder::Builder,
2044    ::validator::Validate,
2045)]
2046pub struct ConditionallyAcceptedStatus3Choice {
2047    #[serde(flatten)]
2048    pub value: ConditionallyAcceptedStatus3ChoiceEnum,
2049}
2050#[derive(
2051    Debug,
2052    Default,
2053    Clone,
2054    PartialEq,
2055    ::serde::Serialize,
2056    ::serde::Deserialize,
2057    ::derive_builder::Builder,
2058    ::validator::Validate,
2059)]
2060pub struct FundOrderData6 {
2061    #[serde(rename = "SttlmAmt", skip_serializing_if = "Option::is_none")]
2062    pub sttlm_amt: Option<ActiveCurrencyAndAmount>,
2063    #[serde(rename = "SttlmMtd", skip_serializing_if = "Option::is_none")]
2064    pub sttlm_mtd: Option<DeliveryReceiptType2Code>,
2065    #[serde(rename = "AddtlAmt", skip_serializing_if = "Option::is_none")]
2066    pub addtl_amt: Option<AdditionalAmount1Choice>,
2067    #[serde(rename = "UnitCcy", skip_serializing_if = "Option::is_none")]
2068    pub unit_ccy: Option<ActiveCurrencyCode>,
2069    #[serde(rename = "QtdCcy", skip_serializing_if = "Option::is_none")]
2070    pub qtd_ccy: Option<ActiveCurrencyCode>,
2071}
2072#[derive(
2073    Debug,
2074    Default,
2075    Clone,
2076    PartialEq,
2077    ::serde::Serialize,
2078    ::serde::Deserialize,
2079    ::derive_builder::Builder,
2080    ::validator::Validate,
2081)]
2082pub struct RejectedStatus9 {
2083    #[serde(rename = "Rsn", skip_serializing_if = "Option::is_none")]
2084    pub rsn: Option<RejectedReason20Choice>,
2085    #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
2086    pub addtl_inf: Option<Max350Text>,
2087}
2088#[derive(
2089    Debug,
2090    Default,
2091    Clone,
2092    PartialEq,
2093    ::serde::Serialize,
2094    ::serde::Deserialize,
2095    ::derive_builder::Builder,
2096    ::validator::Validate,
2097)]
2098pub struct SuspendedStatusReason4ChoiceEnum {
2099    #[serde(rename = "RsnDtls", skip_serializing_if = "Option::is_none")]
2100    pub rsn_dtls: Option<SuspendedStatusReason4>,
2101    #[serde(rename = "NoSpcfdRsn", skip_serializing_if = "Option::is_none")]
2102    pub no_spcfd_rsn: Option<NoReasonCode>,
2103}
2104#[derive(
2105    Debug,
2106    Default,
2107    Clone,
2108    PartialEq,
2109    ::serde::Serialize,
2110    ::serde::Deserialize,
2111    ::derive_builder::Builder,
2112    ::validator::Validate,
2113)]
2114pub struct SuspendedStatusReason4Choice {
2115    #[serde(flatten)]
2116    pub value: SuspendedStatusReason4ChoiceEnum,
2117}
2118#[derive(
2119    Debug,
2120    Default,
2121    Clone,
2122    PartialEq,
2123    ::serde::Serialize,
2124    ::serde::Deserialize,
2125    ::derive_builder::Builder,
2126    ::validator::Validate,
2127)]
2128pub struct SuspendedStatusReason5ChoiceEnum {
2129    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2130    pub prtry: Option<GenericIdentification1>,
2131    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2132    pub cd: Option<SuspendedStatusReason3Code>,
2133}
2134#[derive(
2135    Debug,
2136    Default,
2137    Clone,
2138    PartialEq,
2139    ::serde::Serialize,
2140    ::serde::Deserialize,
2141    ::derive_builder::Builder,
2142    ::validator::Validate,
2143)]
2144pub struct SuspendedStatusReason5Choice {
2145    #[serde(flatten)]
2146    pub value: SuspendedStatusReason5ChoiceEnum,
2147}
2148#[derive(
2149    Debug,
2150    Default,
2151    Clone,
2152    PartialEq,
2153    ::serde::Serialize,
2154    ::serde::Deserialize,
2155    ::derive_builder::Builder,
2156    ::validator::Validate,
2157)]
2158pub struct YesNoIndicator {
2159    #[serde(rename = "$text")]
2160    pub value: bool,
2161}
2162#[derive(
2163    Debug,
2164    Default,
2165    Clone,
2166    PartialEq,
2167    ::serde::Serialize,
2168    ::serde::Deserialize,
2169    ::derive_builder::Builder,
2170    ::validator::Validate,
2171)]
2172pub struct ActiveOrHistoricCurrencyAndAmountSimpleType {
2173    #[validate(range(min = 0,))]
2174    #[serde(rename = "$text")]
2175    pub value: f64,
2176}
2177#[derive(
2178    Debug,
2179    Default,
2180    Clone,
2181    PartialEq,
2182    ::serde::Serialize,
2183    ::serde::Deserialize,
2184    ::derive_builder::Builder,
2185    ::validator::Validate,
2186)]
2187pub struct NameAndAddress5 {
2188    #[validate]
2189    #[serde(rename = "Nm")]
2190    pub nm: Max350Text,
2191    #[serde(rename = "Adr", skip_serializing_if = "Option::is_none")]
2192    pub adr: Option<PostalAddress1>,
2193}
2194#[derive(
2195    Debug,
2196    Default,
2197    Clone,
2198    PartialEq,
2199    ::serde::Serialize,
2200    ::serde::Deserialize,
2201    ::derive_builder::Builder,
2202    ::validator::Validate,
2203)]
2204pub struct LegIdentification1ChoiceEnum {
2205    #[serde(rename = "SbcptLegId", skip_serializing_if = "Option::is_none")]
2206    pub sbcpt_leg_id: Option<Max35Text>,
2207    #[serde(rename = "RedLegId", skip_serializing_if = "Option::is_none")]
2208    pub red_leg_id: Option<Max35Text>,
2209}
2210#[derive(
2211    Debug,
2212    Default,
2213    Clone,
2214    PartialEq,
2215    ::serde::Serialize,
2216    ::serde::Deserialize,
2217    ::derive_builder::Builder,
2218    ::validator::Validate,
2219)]
2220pub struct LegIdentification1Choice {
2221    #[serde(flatten)]
2222    pub value: LegIdentification1ChoiceEnum,
2223}
2224#[derive(
2225    Debug,
2226    Default,
2227    Clone,
2228    PartialEq,
2229    ::serde::Serialize,
2230    ::serde::Deserialize,
2231    ::derive_builder::Builder,
2232    ::validator::Validate,
2233)]
2234pub struct OrderStatus5ChoiceEnum {
2235    #[serde(rename = "PrtlySttld", skip_serializing_if = "Option::is_none")]
2236    pub prtly_sttld: Option<PartiallySettledStatus10>,
2237    #[serde(rename = "Canc", skip_serializing_if = "Option::is_none")]
2238    pub canc: Option<CancelledStatusReason16>,
2239    #[serde(rename = "Rjctd", skip_serializing_if = "Option::is_none")]
2240    pub rjctd: Option<RejectedStatus9>,
2241    #[serde(rename = "CondlyAccptd", skip_serializing_if = "Option::is_none")]
2242    pub condly_accptd: Option<ConditionallyAcceptedStatus3Choice>,
2243    #[serde(rename = "InRpr", skip_serializing_if = "Option::is_none")]
2244    pub in_rpr: Option<InRepairStatusReason4Choice>,
2245    #[serde(rename = "Sts", skip_serializing_if = "Option::is_none")]
2246    pub sts: Option<OrderStatus4Code>,
2247    #[serde(rename = "Sspd", skip_serializing_if = "Option::is_none")]
2248    pub sspd: Option<SuspendedStatusReason4Choice>,
2249}
2250#[derive(
2251    Debug,
2252    Default,
2253    Clone,
2254    PartialEq,
2255    ::serde::Serialize,
2256    ::serde::Deserialize,
2257    ::derive_builder::Builder,
2258    ::validator::Validate,
2259)]
2260pub struct OrderStatus5Choice {
2261    #[serde(flatten)]
2262    pub value: OrderStatus5ChoiceEnum,
2263}
2264#[derive(
2265    Debug,
2266    Default,
2267    Clone,
2268    PartialEq,
2269    ::serde::Serialize,
2270    ::serde::Deserialize,
2271    ::derive_builder::Builder,
2272    ::validator::Validate,
2273)]
2274pub struct InRepairStatusReason4 {
2275    #[serde(rename = "Rsn")]
2276    pub rsn: InRepairStatusReason5Choice,
2277    #[serde(rename = "AddtlInf", skip_serializing_if = "Option::is_none")]
2278    pub addtl_inf: Option<Max350Text>,
2279}
2280#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2281pub enum AddressType2Code {
2282    #[serde(rename = "ADDR")]
2283    Addr,
2284    #[serde(rename = "PBOX")]
2285    Pbox,
2286    #[serde(rename = "HOME")]
2287    Home,
2288    #[serde(rename = "BIZZ")]
2289    Bizz,
2290    #[serde(rename = "MLTO")]
2291    Mlto,
2292    #[serde(rename = "DLVY")]
2293    Dlvy,
2294    #[default]
2295    Unknown,
2296}