use validator::Validate;
::lazy_static::lazy_static! {
static ref EXACT_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{4}"#).unwrap();
}
::lazy_static::lazy_static! {
static ref BICFI_DEC_2014_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"#).unwrap();
}
::lazy_static::lazy_static! {
static ref ACTIVE_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{3,3}"#).unwrap();
}
::lazy_static::lazy_static! {
static ref IBAN_2007_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"#).unwrap();
}
::lazy_static::lazy_static! {
static ref LEI_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z0-9]{18,18}[0-9]{2,2}"#).unwrap();
}
::lazy_static::lazy_static! {
static ref COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}"#).unwrap();
}
pub fn namespace() -> String {
"urn:iso:std:iso:20022:tech:xsd:camt.009.001.07".to_string()
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ImpliedCurrencyAndAmount {
#[validate(range(min = 0,))]
#[serde(rename = "$text")]
pub value: f64,
}
#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
pub enum QueryType2Code {
#[serde(rename = "ALLL")]
Alll,
#[serde(rename = "CHNG")]
Chng,
#[serde(rename = "MODF")]
Modf,
#[serde(rename = "DELD")]
Deld,
#[default]
Unknown,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct RequestType4ChoiceEnum {
#[serde(rename = "Enqry", skip_serializing_if = "Option::is_none")]
pub enqry: Option<ExternalEnquiryRequestType1Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<GenericIdentification1>,
#[serde(rename = "PmtCtrl", skip_serializing_if = "Option::is_none")]
pub pmt_ctrl: Option<ExternalPaymentControlRequestType1Code>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct RequestType4Choice {
#[serde(flatten)]
pub value: RequestType4ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Max35Text {
#[validate(length(min = 1, max = 35,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct BranchData3 {
#[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
pub id: Option<Max35Text>,
#[serde(rename = "LEI", skip_serializing_if = "Option::is_none")]
pub lei: Option<LeiIdentifier>,
#[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
pub nm: Option<Max140Text>,
#[serde(rename = "PstlAdr", skip_serializing_if = "Option::is_none")]
pub pstl_adr: Option<PostalAddress24>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Exact4AlphaNumericText {
#[validate(regex = "EXACT_4_ALPHA_NUMERIC_TEXT_REGEX")]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct MarketInfrastructureIdentification1ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<ExternalMarketInfrastructure1Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct MarketInfrastructureIdentification1Choice {
#[serde(flatten)]
pub value: MarketInfrastructureIdentification1ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Max34Text {
#[validate(length(min = 1, max = 34,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct SystemIdentification2ChoiceEnum {
#[serde(rename = "MktInfrstrctrId", skip_serializing_if = "Option::is_none")]
pub mkt_infrstrctr_id: Option<MarketInfrastructureIdentification1Choice>,
#[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
pub ctry: Option<CountryCode>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct SystemIdentification2Choice {
#[serde(flatten)]
pub value: SystemIdentification2ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct IsoDateTime {
#[serde(rename = "$text")]
pub value: ::chrono::DateTime<::chrono::Utc>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct GetLimitV07<
A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
> {
#[validate]
#[serde(rename = "MsgHdr")]
pub msg_hdr: MessageHeader9,
#[serde(rename = "LmtQryDef", skip_serializing_if = "Option::is_none")]
pub lmt_qry_def: Option<LimitQuery4>,
#[validate(length(min = 0,))]
#[serde(rename = "SplmtryData", default)]
pub splmtry_data: Vec<SupplementaryData1<A>>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct BicfiDec2014Identifier {
#[validate(regex = "BICFI_DEC_2014_IDENTIFIER_REGEX")]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct SupplementaryData1<
A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
> {
#[serde(rename = "PlcAndNm", skip_serializing_if = "Option::is_none")]
pub plc_and_nm: Option<Max350Text>,
#[validate]
#[serde(rename = "Envlp")]
pub envlp: SupplementaryDataEnvelope1<A>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct MessageHeader9 {
#[validate]
#[serde(rename = "MsgId")]
pub msg_id: Max35Text,
#[serde(rename = "CreDtTm", skip_serializing_if = "Option::is_none")]
pub cre_dt_tm: Option<IsoDateTime>,
#[serde(rename = "ReqTp", skip_serializing_if = "Option::is_none")]
pub req_tp: Option<RequestType4Choice>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ExternalMarketInfrastructure1Code {
#[validate(length(min = 1, max = 3,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
pub enum CreditDebitCode {
#[serde(rename = "CRDT")]
Crdt,
#[serde(rename = "DBIT")]
Dbit,
#[default]
Unknown,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ClearingSystemMemberIdentification2 {
#[serde(rename = "ClrSysId", skip_serializing_if = "Option::is_none")]
pub clr_sys_id: Option<ClearingSystemIdentification2Choice>,
#[validate]
#[serde(rename = "MmbId")]
pub mmb_id: Max35Text,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitCriteria6 {
#[serde(rename = "NewQryNm", skip_serializing_if = "Option::is_none")]
pub new_qry_nm: Option<Max35Text>,
#[validate(length(min = 0,))]
#[serde(rename = "SchCrit", default)]
pub sch_crit: Vec<LimitSearchCriteria6>,
#[serde(rename = "RtrCrit", skip_serializing_if = "Option::is_none")]
pub rtr_crit: Option<LimitReturnCriteria2>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Max16Text {
#[validate(length(min = 1, max = 16,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AmountRangeBoundary1 {
#[validate]
#[serde(rename = "BdryAmt")]
pub bdry_amt: ImpliedCurrencyAndAmount,
#[validate]
#[serde(rename = "Incl")]
pub incl: YesNoIndicator,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct FinancialInstitutionIdentification18 {
#[serde(rename = "BICFI", skip_serializing_if = "Option::is_none")]
pub bicfi: Option<BicfiDec2014Identifier>,
#[serde(rename = "ClrSysMmbId", skip_serializing_if = "Option::is_none")]
pub clr_sys_mmb_id: Option<ClearingSystemMemberIdentification2>,
#[serde(rename = "LEI", skip_serializing_if = "Option::is_none")]
pub lei: Option<LeiIdentifier>,
#[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
pub nm: Option<Max140Text>,
#[serde(rename = "PstlAdr", skip_serializing_if = "Option::is_none")]
pub pstl_adr: Option<PostalAddress24>,
#[serde(rename = "Othr", skip_serializing_if = "Option::is_none")]
pub othr: Option<GenericFinancialIdentification1>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
#[serde(rename = "Document")]
pub struct Document<
A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
> {
#[validate]
#[serde(rename = "GetLmt")]
pub get_lmt: GetLimitV07<A>,
#[serde(rename = "@xmlns", default = "namespace")]
pub xmlns: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ExternalClearingSystemIdentification1Code {
#[validate(length(min = 1, max = 5,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct FromToPercentageRange1 {
#[validate]
#[serde(rename = "Fr")]
pub fr: PercentageRangeBoundary1,
#[validate]
#[serde(rename = "To")]
pub to: PercentageRangeBoundary1,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct PostalAddress24 {
#[serde(rename = "AdrTp", skip_serializing_if = "Option::is_none")]
pub adr_tp: Option<AddressType3Choice>,
#[serde(rename = "Dept", skip_serializing_if = "Option::is_none")]
pub dept: Option<Max70Text>,
#[serde(rename = "SubDept", skip_serializing_if = "Option::is_none")]
pub sub_dept: Option<Max70Text>,
#[serde(rename = "StrtNm", skip_serializing_if = "Option::is_none")]
pub strt_nm: Option<Max70Text>,
#[serde(rename = "BldgNb", skip_serializing_if = "Option::is_none")]
pub bldg_nb: Option<Max16Text>,
#[serde(rename = "BldgNm", skip_serializing_if = "Option::is_none")]
pub bldg_nm: Option<Max35Text>,
#[serde(rename = "Flr", skip_serializing_if = "Option::is_none")]
pub flr: Option<Max70Text>,
#[serde(rename = "PstBx", skip_serializing_if = "Option::is_none")]
pub pst_bx: Option<Max16Text>,
#[serde(rename = "Room", skip_serializing_if = "Option::is_none")]
pub room: Option<Max70Text>,
#[serde(rename = "PstCd", skip_serializing_if = "Option::is_none")]
pub pst_cd: Option<Max16Text>,
#[serde(rename = "TwnNm", skip_serializing_if = "Option::is_none")]
pub twn_nm: Option<Max35Text>,
#[serde(rename = "TwnLctnNm", skip_serializing_if = "Option::is_none")]
pub twn_lctn_nm: Option<Max35Text>,
#[serde(rename = "DstrctNm", skip_serializing_if = "Option::is_none")]
pub dstrct_nm: Option<Max35Text>,
#[serde(rename = "CtrySubDvsn", skip_serializing_if = "Option::is_none")]
pub ctry_sub_dvsn: Option<Max35Text>,
#[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
pub ctry: Option<CountryCode>,
#[validate(length(min = 0, max = 7,))]
#[serde(rename = "AdrLine", default)]
pub adr_line: Vec<Max70Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ImpliedCurrencyAndAmountRange1 {
#[serde(rename = "Amt")]
pub amt: ImpliedCurrencyAmountRange1Choice,
#[serde(rename = "CdtDbtInd", skip_serializing_if = "Option::is_none")]
pub cdt_dbt_ind: Option<CreditDebitCode>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct PercentageRange1ChoiceEnum {
#[serde(rename = "Fr", skip_serializing_if = "Option::is_none")]
pub fr: Option<PercentageRangeBoundary1>,
#[serde(rename = "FrTo", skip_serializing_if = "Option::is_none")]
pub fr_to: Option<FromToPercentageRange1>,
#[serde(rename = "NEQ", skip_serializing_if = "Option::is_none")]
pub neq: Option<PercentageRate>,
#[serde(rename = "To", skip_serializing_if = "Option::is_none")]
pub to: Option<PercentageRangeBoundary1>,
#[serde(rename = "EQ", skip_serializing_if = "Option::is_none")]
pub eq: Option<PercentageRate>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct PercentageRange1Choice {
#[serde(flatten)]
pub value: PercentageRange1ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct DateAndPeriod2ChoiceEnum {
#[serde(rename = "Prd", skip_serializing_if = "Option::is_none")]
pub prd: Option<Period2>,
#[serde(rename = "FrDt", skip_serializing_if = "Option::is_none")]
pub fr_dt: Option<IsoDate>,
#[serde(rename = "Dt", skip_serializing_if = "Option::is_none")]
pub dt: Option<IsoDate>,
#[serde(rename = "ToDt", skip_serializing_if = "Option::is_none")]
pub to_dt: Option<IsoDate>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct DateAndPeriod2Choice {
#[serde(flatten)]
pub value: DateAndPeriod2ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AccountIdentification4ChoiceEnum {
#[serde(rename = "Othr", skip_serializing_if = "Option::is_none")]
pub othr: Option<GenericAccountIdentification1>,
#[serde(rename = "IBAN", skip_serializing_if = "Option::is_none")]
pub iban: Option<Iban2007Identifier>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AccountIdentification4Choice {
#[serde(flatten)]
pub value: AccountIdentification4ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Period2 {
#[validate]
#[serde(rename = "FrDt")]
pub fr_dt: IsoDate,
#[validate]
#[serde(rename = "ToDt")]
pub to_dt: IsoDate,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Max70Text {
#[validate(length(min = 1, max = 70,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ActiveAmountRange3ChoiceEnum {
#[serde(rename = "ImpldCcyAndAmtRg", skip_serializing_if = "Option::is_none")]
pub impld_ccy_and_amt_rg: Option<ImpliedCurrencyAndAmountRange1>,
#[serde(rename = "CcyAndAmtRg", skip_serializing_if = "Option::is_none")]
pub ccy_and_amt_rg: Option<ActiveCurrencyAndAmountRange3>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ActiveAmountRange3Choice {
#[serde(flatten)]
pub value: ActiveAmountRange3ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct RequestedIndicator {
#[serde(rename = "$text")]
pub value: bool,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct PercentageRate {
#[serde(rename = "$text")]
pub value: f64,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Max140Text {
#[validate(length(min = 1, max = 140,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ExternalFinancialInstitutionIdentification1Code {
#[validate(length(min = 1, max = 4,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct BranchAndFinancialInstitutionIdentification6 {
#[validate]
#[serde(rename = "FinInstnId")]
pub fin_instn_id: FinancialInstitutionIdentification18,
#[serde(rename = "BrnchId", skip_serializing_if = "Option::is_none")]
pub brnch_id: Option<BranchData3>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AccountSchemeName1ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<ExternalAccountIdentification1Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AccountSchemeName1Choice {
#[serde(flatten)]
pub value: AccountSchemeName1ChoiceEnum,
}
#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
pub enum AddressType2Code {
#[serde(rename = "ADDR")]
Addr,
#[serde(rename = "PBOX")]
Pbox,
#[serde(rename = "HOME")]
Home,
#[serde(rename = "BIZZ")]
Bizz,
#[serde(rename = "MLTO")]
Mlto,
#[serde(rename = "DLVY")]
Dlvy,
#[default]
Unknown,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct FinancialIdentificationSchemeName1ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<ExternalFinancialInstitutionIdentification1Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct FinancialIdentificationSchemeName1Choice {
#[serde(flatten)]
pub value: FinancialIdentificationSchemeName1ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct GenericAccountIdentification1 {
#[validate]
#[serde(rename = "Id")]
pub id: Max34Text,
#[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
pub schme_nm: Option<AccountSchemeName1Choice>,
#[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
pub issr: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ActiveCurrencyCode {
#[validate(regex = "ACTIVE_CURRENCY_CODE_REGEX")]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct SupplementaryDataEnvelope1<
A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
> {
#[validate]
#[serde(flatten)]
pub value: A,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitSearchCriteria6 {
#[serde(rename = "SysId", skip_serializing_if = "Option::is_none")]
pub sys_id: Option<SystemIdentification2Choice>,
#[validate(length(min = 0,))]
#[serde(rename = "BilLmtCtrPtyId", default)]
pub bil_lmt_ctr_pty_id: Vec<BranchAndFinancialInstitutionIdentification6>,
#[validate(length(min = 0,))]
#[serde(rename = "DfltLmtTp", default)]
pub dflt_lmt_tp: Vec<LimitType1Choice>,
#[validate(length(min = 0,))]
#[serde(rename = "CurLmtTp", default)]
pub cur_lmt_tp: Vec<LimitType1Choice>,
#[serde(rename = "AcctOwnr", skip_serializing_if = "Option::is_none")]
pub acct_ownr: Option<BranchAndFinancialInstitutionIdentification6>,
#[serde(rename = "AcctId", skip_serializing_if = "Option::is_none")]
pub acct_id: Option<AccountIdentification4Choice>,
#[serde(rename = "UsdAmt", skip_serializing_if = "Option::is_none")]
pub usd_amt: Option<ActiveAmountRange3Choice>,
#[serde(rename = "UsdPctg", skip_serializing_if = "Option::is_none")]
pub usd_pctg: Option<PercentageRange1Choice>,
#[serde(rename = "LmtCcy", skip_serializing_if = "Option::is_none")]
pub lmt_ccy: Option<ActiveCurrencyCode>,
#[serde(rename = "LmtAmt", skip_serializing_if = "Option::is_none")]
pub lmt_amt: Option<ActiveAmountRange3Choice>,
#[serde(rename = "LmtVldAsOfDt", skip_serializing_if = "Option::is_none")]
pub lmt_vld_as_of_dt: Option<DateAndPeriod2Choice>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitQuery4 {
#[serde(rename = "QryTp", skip_serializing_if = "Option::is_none")]
pub qry_tp: Option<QueryType2Code>,
#[serde(rename = "LmtCrit", skip_serializing_if = "Option::is_none")]
pub lmt_crit: Option<LimitCriteria6Choice>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct FromToAmountRange1 {
#[validate]
#[serde(rename = "FrAmt")]
pub fr_amt: AmountRangeBoundary1,
#[validate]
#[serde(rename = "ToAmt")]
pub to_amt: AmountRangeBoundary1,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitReturnCriteria2 {
#[serde(rename = "StartDtTmInd", skip_serializing_if = "Option::is_none")]
pub start_dt_tm_ind: Option<RequestedIndicator>,
#[serde(rename = "StsInd", skip_serializing_if = "Option::is_none")]
pub sts_ind: Option<RequestedIndicator>,
#[serde(rename = "UsdAmtInd", skip_serializing_if = "Option::is_none")]
pub usd_amt_ind: Option<RequestedIndicator>,
#[serde(rename = "UsdPctgInd", skip_serializing_if = "Option::is_none")]
pub usd_pctg_ind: Option<RequestedIndicator>,
}
#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
pub enum LimitType3Code {
#[serde(rename = "MULT")]
Mult,
#[serde(rename = "BILI")]
Bili,
#[serde(rename = "MAND")]
Mand,
#[serde(rename = "DISC")]
Disc,
#[serde(rename = "NELI")]
Neli,
#[serde(rename = "INBI")]
Inbi,
#[serde(rename = "GLBL")]
Glbl,
#[serde(rename = "DIDB")]
Didb,
#[serde(rename = "SPLC")]
Splc,
#[serde(rename = "SPLF")]
Splf,
#[serde(rename = "TDLC")]
Tdlc,
#[serde(rename = "TDLF")]
Tdlf,
#[serde(rename = "UCDT")]
Ucdt,
#[serde(rename = "ACOL")]
Acol,
#[serde(rename = "EXGT")]
Exgt,
#[default]
Unknown,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ActiveCurrencyAndAmountRange3 {
#[serde(rename = "Amt")]
pub amt: ImpliedCurrencyAmountRange1Choice,
#[serde(rename = "CdtDbtInd", skip_serializing_if = "Option::is_none")]
pub cdt_dbt_ind: Option<CreditDebitCode>,
#[serde(rename = "Ccy")]
pub ccy: ActiveCurrencyCode,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ClearingSystemIdentification2ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<ExternalClearingSystemIdentification1Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ClearingSystemIdentification2Choice {
#[serde(flatten)]
pub value: ClearingSystemIdentification2ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct PercentageRangeBoundary1 {
#[validate]
#[serde(rename = "BdryRate")]
pub bdry_rate: PercentageRate,
#[validate]
#[serde(rename = "Incl")]
pub incl: YesNoIndicator,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Iban2007Identifier {
#[validate(regex = "IBAN_2007_IDENTIFIER_REGEX")]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct Max350Text {
#[validate(length(min = 1, max = 350,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ExternalEnquiryRequestType1Code {
#[validate(length(min = 1, max = 4,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitCriteria6ChoiceEnum {
#[serde(rename = "QryNm", skip_serializing_if = "Option::is_none")]
pub qry_nm: Option<Max35Text>,
#[serde(rename = "NewCrit", skip_serializing_if = "Option::is_none")]
pub new_crit: Option<LimitCriteria6>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitCriteria6Choice {
#[serde(flatten)]
pub value: LimitCriteria6ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LeiIdentifier {
#[validate(regex = "LEI_IDENTIFIER_REGEX")]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct IsoDate {
#[serde(rename = "$text")]
pub value: ::chrono::NaiveDate,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct GenericIdentification1 {
#[validate]
#[serde(rename = "Id")]
pub id: Max35Text,
#[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
pub schme_nm: Option<Max35Text>,
#[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
pub issr: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ImpliedCurrencyAmountRange1ChoiceEnum {
#[serde(rename = "EQAmt", skip_serializing_if = "Option::is_none")]
pub eq_amt: Option<ImpliedCurrencyAndAmount>,
#[serde(rename = "FrToAmt", skip_serializing_if = "Option::is_none")]
pub fr_to_amt: Option<FromToAmountRange1>,
#[serde(rename = "ToAmt", skip_serializing_if = "Option::is_none")]
pub to_amt: Option<AmountRangeBoundary1>,
#[serde(rename = "FrAmt", skip_serializing_if = "Option::is_none")]
pub fr_amt: Option<AmountRangeBoundary1>,
#[serde(rename = "NEQAmt", skip_serializing_if = "Option::is_none")]
pub neq_amt: Option<ImpliedCurrencyAndAmount>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ImpliedCurrencyAmountRange1Choice {
#[serde(flatten)]
pub value: ImpliedCurrencyAmountRange1ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AddressType3ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<AddressType2Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<GenericIdentification30>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct AddressType3Choice {
#[serde(flatten)]
pub value: AddressType3ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct GenericIdentification30 {
#[validate]
#[serde(rename = "Id")]
pub id: Exact4AlphaNumericText,
#[validate]
#[serde(rename = "Issr")]
pub issr: Max35Text,
#[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
pub schme_nm: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitType1ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<LimitType3Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct LimitType1Choice {
#[serde(flatten)]
pub value: LimitType1ChoiceEnum,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ExternalPaymentControlRequestType1Code {
#[validate(length(min = 1, max = 4,))]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct GenericFinancialIdentification1 {
#[validate]
#[serde(rename = "Id")]
pub id: Max35Text,
#[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
pub schme_nm: Option<FinancialIdentificationSchemeName1Choice>,
#[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
pub issr: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct YesNoIndicator {
#[serde(rename = "$text")]
pub value: bool,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct CountryCode {
#[validate(regex = "COUNTRY_CODE_REGEX")]
#[serde(rename = "$text")]
pub value: String,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct ExternalAccountIdentification1Code {
#[validate(length(min = 1, max = 4,))]
#[serde(rename = "$text")]
pub value: String,
}