use common_enums::CountryAlpha2; use common_utils::{id_type, pii}; use masking::Secret; use strum::EnumString; #[derive(Debug, serde::Deserialize, serde::Serialize)] pub enum SetMetaDataRequest { ProductionAgreement(ProductionAgreementRequest), SetupProcessor(SetupProcessor), ConfigureEndpoint, SetupComplete, FirstProcessorConnected(ProcessorConnected), SecondProcessorConnected(ProcessorConnected), ConfiguredRouting(ConfiguredRouting), TestPayment(TestPayment), IntegrationMethod(IntegrationMethod), ConfigurationType(ConfigurationType), IntegrationCompleted, SPRoutingConfigured(ConfiguredRouting), Feedback(Feedback), ProdIntent(ProdIntent), SPTestPayment, DownloadWoocom, ConfigureWoocom, SetupWoocomWebhook, IsMultipleConfiguration, #[serde(skip)] IsChangePasswordRequired, OnboardingSurvey(OnboardingSurvey), } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct ProductionAgreementRequest { pub version: String, #[serde(skip_deserializing)] pub ip_address: Option>, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct SetupProcessor { pub connector_id: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct ProcessorConnected { pub processor_id: id_type::MerchantConnectorAccountId, pub processor_name: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct OnboardingSurvey { pub designation: Option, pub about_business: Option, pub business_website: Option, pub hyperswitch_req: Option, pub major_markets: Option>, pub business_size: Option, pub required_features: Option>, pub required_processors: Option>, pub planned_live_date: Option, pub miscellaneous: Option, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct ConfiguredRouting { pub routing_id: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct TestPayment { pub payment_id: id_type::PaymentId, } #[derive(Debug, serde::Deserialize, serde::Serialize, Clone)] pub struct IntegrationMethod { pub integration_type: String, } #[derive(Debug, serde::Deserialize, serde::Serialize, Clone)] pub enum ConfigurationType { Single, Multiple, } #[derive(Debug, serde::Deserialize, serde::Serialize, Clone)] pub struct Feedback { pub email: pii::Email, pub description: Option, pub rating: Option, pub category: Option, } #[derive(Debug, serde::Deserialize, serde::Serialize, Clone)] pub struct ProdIntent { pub legal_business_name: Option, pub business_label: Option, pub business_location: Option, pub display_name: Option, pub poc_email: Option, pub business_type: Option, pub business_identifier: Option, pub business_website: Option, pub poc_name: Option, pub poc_contact: Option, pub comments: Option, pub is_completed: bool, } #[derive(Debug, serde::Deserialize, EnumString, serde::Serialize)] pub enum GetMetaDataRequest { ProductionAgreement, SetupProcessor, ConfigureEndpoint, SetupComplete, FirstProcessorConnected, SecondProcessorConnected, ConfiguredRouting, TestPayment, IntegrationMethod, ConfigurationType, IntegrationCompleted, StripeConnected, PaypalConnected, SPRoutingConfigured, Feedback, ProdIntent, SPTestPayment, DownloadWoocom, ConfigureWoocom, SetupWoocomWebhook, IsMultipleConfiguration, IsChangePasswordRequired, OnboardingSurvey, } #[derive(Debug, serde::Deserialize, serde::Serialize)] #[serde(transparent)] pub struct GetMultipleMetaDataPayload { pub results: Vec, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct GetMultipleMetaDataRequest { pub keys: String, } #[derive(Debug, serde::Serialize)] pub enum GetMetaDataResponse { ProductionAgreement(bool), SetupProcessor(Option), ConfigureEndpoint(bool), SetupComplete(bool), FirstProcessorConnected(Option), SecondProcessorConnected(Option), ConfiguredRouting(Option), TestPayment(Option), IntegrationMethod(Option), ConfigurationType(Option), IntegrationCompleted(bool), StripeConnected(Option), PaypalConnected(Option), SPRoutingConfigured(Option), Feedback(Option), ProdIntent(Option), SPTestPayment(bool), DownloadWoocom(bool), ConfigureWoocom(bool), SetupWoocomWebhook(bool), IsMultipleConfiguration(bool), IsChangePasswordRequired(bool), OnboardingSurvey(Option), }