use validator::Validate;
::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 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.018.001.05".to_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 BusinessDayReturnCriteria2 {
#[serde(rename = "SysDtInd", skip_serializing_if = "Option::is_none")]
pub sys_dt_ind: Option<RequestedIndicator>,
#[serde(rename = "SysStsInd", skip_serializing_if = "Option::is_none")]
pub sys_sts_ind: Option<RequestedIndicator>,
#[serde(rename = "SysCcyInd", skip_serializing_if = "Option::is_none")]
pub sys_ccy_ind: Option<RequestedIndicator>,
#[serde(rename = "ClsrPrdInd", skip_serializing_if = "Option::is_none")]
pub clsr_prd_ind: Option<RequestedIndicator>,
#[serde(rename = "EvtInd", skip_serializing_if = "Option::is_none")]
pub evt_ind: Option<RequestedIndicator>,
#[serde(rename = "SsnPrdInd", skip_serializing_if = "Option::is_none")]
pub ssn_prd_ind: Option<RequestedIndicator>,
#[serde(rename = "EvtTpInd", skip_serializing_if = "Option::is_none")]
pub evt_tp_ind: Option<RequestedIndicator>,
}
#[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 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 IsoDate {
#[serde(rename = "$text")]
pub value: ::chrono::NaiveDate,
}
#[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 MarketInfrastructureIdentification1ChoiceEnum {
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<Max35Text>,
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<ExternalMarketInfrastructure1Code>,
}
#[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 IsoDateTime {
#[serde(rename = "$text")]
pub value: ::chrono::DateTime<::chrono::Utc>,
}
#[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 = "GetBizDayInf")]
pub get_biz_day_inf: GetBusinessDayInformationV05<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 BusinessDayQuery2 {
#[serde(rename = "QryTp", skip_serializing_if = "Option::is_none")]
pub qry_tp: Option<QueryType2Code>,
#[serde(rename = "Crit", skip_serializing_if = "Option::is_none")]
pub crit: Option<BusinessDayCriteria3Choice>,
}
#[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,
::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 DateTimePeriod1 {
#[validate]
#[serde(rename = "FrDtTm")]
pub fr_dt_tm: IsoDateTime,
#[validate]
#[serde(rename = "ToDtTm")]
pub to_dt_tm: IsoDateTime,
}
#[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 DateTimePeriod1ChoiceEnum {
#[serde(rename = "ToDtTm", skip_serializing_if = "Option::is_none")]
pub to_dt_tm: Option<IsoDateTime>,
#[serde(rename = "FrDtTm", skip_serializing_if = "Option::is_none")]
pub fr_dt_tm: Option<IsoDateTime>,
#[serde(rename = "DtTmRg", skip_serializing_if = "Option::is_none")]
pub dt_tm_rg: Option<DateTimePeriod1>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct DateTimePeriod1Choice {
#[serde(flatten)]
pub value: DateTimePeriod1ChoiceEnum,
}
#[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 GetBusinessDayInformationV05<
A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate,
> {
#[validate]
#[serde(rename = "MsgHdr")]
pub msg_hdr: MessageHeader9,
#[serde(rename = "BizDayInfQryDef", skip_serializing_if = "Option::is_none")]
pub biz_day_inf_qry_def: Option<BusinessDayQuery2>,
#[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 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 BusinessDaySearchCriteria2 {
#[serde(rename = "SysDt", skip_serializing_if = "Option::is_none")]
pub sys_dt: Option<IsoDate>,
#[validate(length(min = 0,))]
#[serde(rename = "SysId", default)]
pub sys_id: Vec<SystemIdentification2Choice>,
#[validate(length(min = 0,))]
#[serde(rename = "SysCcy", default)]
pub sys_ccy: Vec<ActiveCurrencyCode>,
#[serde(rename = "EvtTp", skip_serializing_if = "Option::is_none")]
pub evt_tp: Option<SystemEventType2Choice>,
#[serde(rename = "ClsrPrd", skip_serializing_if = "Option::is_none")]
pub clsr_prd: Option<DateTimePeriod1Choice>,
}
#[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 BusinessDayCriteria3ChoiceEnum {
#[serde(rename = "NewCrit", skip_serializing_if = "Option::is_none")]
pub new_crit: Option<BusinessDayCriteria2>,
#[serde(rename = "QryNm", skip_serializing_if = "Option::is_none")]
pub qry_nm: Option<Max35Text>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct BusinessDayCriteria3Choice {
#[serde(flatten)]
pub value: BusinessDayCriteria3ChoiceEnum,
}
#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
pub enum SystemEventType2Code {
#[serde(rename = "LVCO")]
Lvco,
#[serde(rename = "LVCC")]
Lvcc,
#[serde(rename = "LVRT")]
Lvrt,
#[serde(rename = "EUSU")]
Eusu,
#[serde(rename = "STSU")]
Stsu,
#[serde(rename = "LWSU")]
Lwsu,
#[serde(rename = "EUCO")]
Euco,
#[serde(rename = "FIRE")]
Fire,
#[serde(rename = "STDY")]
Stdy,
#[serde(rename = "LTNC")]
Ltnc,
#[serde(rename = "CRCO")]
Crco,
#[serde(rename = "RECC")]
Recc,
#[serde(rename = "LTGC")]
Ltgc,
#[serde(rename = "LTDC")]
Ltdc,
#[serde(rename = "CUSC")]
Cusc,
#[serde(rename = "IBKC")]
Ibkc,
#[serde(rename = "SYSC")]
Sysc,
#[serde(rename = "SSSC")]
Sssc,
#[serde(rename = "REOP")]
Reop,
#[serde(rename = "PCOT")]
Pcot,
#[serde(rename = "NPCT")]
Npct,
#[serde(rename = "ESTF")]
Estf,
#[default]
Unknown,
}
#[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 BusinessDayCriteria2 {
#[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<BusinessDaySearchCriteria2>,
#[serde(rename = "RtrCrit", skip_serializing_if = "Option::is_none")]
pub rtr_crit: Option<BusinessDayReturnCriteria2>,
}
#[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 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 SystemEventType2ChoiceEnum {
#[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
pub cd: Option<SystemEventType2Code>,
#[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
pub prtry: Option<GenericIdentification1>,
}
#[derive(
Debug,
Default,
Clone,
PartialEq,
::serde::Serialize,
::serde::Deserialize,
::derive_builder::Builder,
::validator::Validate,
)]
pub struct SystemEventType2Choice {
#[serde(flatten)]
pub value: SystemEventType2ChoiceEnum,
}
#[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,
}