Bug: [FEATURE] Add auto retries configs in profile CRUD apis



### Feature Description

Add auto retries configs in profile CRUD apis
1. is_auto_retries_enabled - Boolean (denotes whether auto retries should be performed for a profile)
2. max_auto_retries_enabled - Int (i16) (maximum auto retries to be performed)


### Possible Implementation

Create two new fields in Profile Create, Update APIs and then send them back in the Profile Response
diff --git a/crates/api_models/src/admin.rs b/crates/api_models/src/admin.rs
index 6f656339569..6e7f4f29d03 100644
--- a/crates/api_models/src/admin.rs
+++ b/crates/api_models/src/admin.rs
@@ -1971,6 +1971,12 @@ pub struct ProfileCreate {
     /// If set to `true` is_network_tokenization_enabled will be checked.
     #[serde(default)]
     pub is_network_tokenization_enabled: bool,
+
+    /// Indicates if is_auto_retries_enabled is enabled or not.
+    pub is_auto_retries_enabled: Option<bool>,
+
+    /// Maximum number of auto retries allowed for a payment
+    pub max_auto_retries_enabled: Option<u8>,
 }
 
 #[nutype::nutype(
@@ -2202,6 +2208,13 @@ pub struct ProfileResponse {
     /// If set to `true` is_network_tokenization_enabled will be checked.
     #[schema(default = false, example = false)]
     pub is_network_tokenization_enabled: bool,
+
+    /// Indicates if is_auto_retries_enabled is enabled or not.
+    #[schema(default = false, example = false)]
+    pub is_auto_retries_enabled: bool,
+
+    /// Maximum number of auto retries allowed for a payment
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v2")]
@@ -2431,6 +2444,12 @@ pub struct ProfileUpdate {
 
     /// Indicates if is_network_tokenization_enabled is enabled or not.
     pub is_network_tokenization_enabled: Option<bool>,
+
+    /// Indicates if is_auto_retries_enabled is enabled or not.
+    pub is_auto_retries_enabled: Option<bool>,
+
+    /// Maximum number of auto retries allowed for a payment
+    pub max_auto_retries_enabled: Option<u8>,
 }
 
 #[cfg(feature = "v2")]
diff --git a/crates/diesel_models/src/business_profile.rs b/crates/diesel_models/src/business_profile.rs
index 4edc2ba2432..fd0abc16614 100644
--- a/crates/diesel_models/src/business_profile.rs
+++ b/crates/diesel_models/src/business_profile.rs
@@ -55,6 +55,8 @@ pub struct Profile {
     pub version: common_enums::ApiVersion,
     pub dynamic_routing_algorithm: Option<serde_json::Value>,
     pub is_network_tokenization_enabled: bool,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v1")]
@@ -96,6 +98,8 @@ pub struct ProfileNew {
     pub is_tax_connector_enabled: Option<bool>,
     pub version: common_enums::ApiVersion,
     pub is_network_tokenization_enabled: bool,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v1")]
@@ -134,6 +138,8 @@ pub struct ProfileUpdateInternal {
     pub is_tax_connector_enabled: Option<bool>,
     pub dynamic_routing_algorithm: Option<serde_json::Value>,
     pub is_network_tokenization_enabled: Option<bool>,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v1")]
@@ -171,6 +177,8 @@ impl ProfileUpdateInternal {
             is_tax_connector_enabled,
             dynamic_routing_algorithm,
             is_network_tokenization_enabled,
+            is_auto_retries_enabled,
+            max_auto_retries_enabled,
         } = self;
         Profile {
             profile_id: source.profile_id,
@@ -228,6 +236,8 @@ impl ProfileUpdateInternal {
                 .or(source.dynamic_routing_algorithm),
             is_network_tokenization_enabled: is_network_tokenization_enabled
                 .unwrap_or(source.is_network_tokenization_enabled),
+            is_auto_retries_enabled: is_auto_retries_enabled.or(source.is_auto_retries_enabled),
+            max_auto_retries_enabled: max_auto_retries_enabled.or(source.max_auto_retries_enabled),
         }
     }
 }
@@ -279,6 +289,8 @@ pub struct Profile {
     pub version: common_enums::ApiVersion,
     pub dynamic_routing_algorithm: Option<serde_json::Value>,
     pub is_network_tokenization_enabled: bool,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 impl Profile {
@@ -334,6 +346,8 @@ pub struct ProfileNew {
     pub id: common_utils::id_type::ProfileId,
     pub version: common_enums::ApiVersion,
     pub is_network_tokenization_enabled: bool,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v2")]
@@ -373,6 +387,8 @@ pub struct ProfileUpdateInternal {
     pub payout_routing_algorithm_id: Option<common_utils::id_type::RoutingId>,
     pub default_fallback_routing: Option<pii::SecretSerdeValue>,
     pub is_network_tokenization_enabled: Option<bool>,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v2")]
@@ -411,6 +427,8 @@ impl ProfileUpdateInternal {
             payout_routing_algorithm_id,
             default_fallback_routing,
             is_network_tokenization_enabled,
+            is_auto_retries_enabled,
+            max_auto_retries_enabled,
         } = self;
         Profile {
             id: source.id,
@@ -471,6 +489,8 @@ impl ProfileUpdateInternal {
             dynamic_routing_algorithm: None,
             is_network_tokenization_enabled: is_network_tokenization_enabled
                 .unwrap_or(source.is_network_tokenization_enabled),
+            is_auto_retries_enabled: is_auto_retries_enabled.or(source.is_auto_retries_enabled),
+            max_auto_retries_enabled: max_auto_retries_enabled.or(source.max_auto_retries_enabled),
         }
     }
 }
diff --git a/crates/diesel_models/src/schema.rs b/crates/diesel_models/src/schema.rs
index 9ff7c958df1..fe22dcd87a3 100644
--- a/crates/diesel_models/src/schema.rs
+++ b/crates/diesel_models/src/schema.rs
@@ -211,6 +211,8 @@ diesel::table! {
         version -> ApiVersion,
         dynamic_routing_algorithm -> Nullable<Json>,
         is_network_tokenization_enabled -> Bool,
+        is_auto_retries_enabled -> Nullable<Bool>,
+        max_auto_retries_enabled -> Nullable<Int2>,
     }
 }
 
diff --git a/crates/diesel_models/src/schema_v2.rs b/crates/diesel_models/src/schema_v2.rs
index a66286e02db..674123fbaae 100644
--- a/crates/diesel_models/src/schema_v2.rs
+++ b/crates/diesel_models/src/schema_v2.rs
@@ -218,6 +218,8 @@ diesel::table! {
         version -> ApiVersion,
         dynamic_routing_algorithm -> Nullable<Json>,
         is_network_tokenization_enabled -> Bool,
+        is_auto_retries_enabled -> Nullable<Bool>,
+        max_auto_retries_enabled -> Nullable<Int2>,
     }
 }
 
diff --git a/crates/hyperswitch_domain_models/src/business_profile.rs b/crates/hyperswitch_domain_models/src/business_profile.rs
index 156ca4d2feb..75cdd40024f 100644
--- a/crates/hyperswitch_domain_models/src/business_profile.rs
+++ b/crates/hyperswitch_domain_models/src/business_profile.rs
@@ -56,6 +56,8 @@ pub struct Profile {
     pub version: common_enums::ApiVersion,
     pub dynamic_routing_algorithm: Option<serde_json::Value>,
     pub is_network_tokenization_enabled: bool,
+    pub is_auto_retries_enabled: bool,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v1")]
@@ -94,6 +96,8 @@ pub struct ProfileSetter {
     pub is_tax_connector_enabled: bool,
     pub dynamic_routing_algorithm: Option<serde_json::Value>,
     pub is_network_tokenization_enabled: bool,
+    pub is_auto_retries_enabled: bool,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v1")]
@@ -139,6 +143,8 @@ impl From<ProfileSetter> for Profile {
             version: consts::API_VERSION,
             dynamic_routing_algorithm: value.dynamic_routing_algorithm,
             is_network_tokenization_enabled: value.is_network_tokenization_enabled,
+            is_auto_retries_enabled: value.is_auto_retries_enabled,
+            max_auto_retries_enabled: value.max_auto_retries_enabled,
         }
     }
 }
@@ -186,6 +192,8 @@ pub struct ProfileGeneralUpdate {
     pub is_tax_connector_enabled: Option<bool>,
     pub dynamic_routing_algorithm: Option<serde_json::Value>,
     pub is_network_tokenization_enabled: Option<bool>,
+    pub is_auto_retries_enabled: Option<bool>,
+    pub max_auto_retries_enabled: Option<i16>,
 }
 
 #[cfg(feature = "v1")]
@@ -246,6 +254,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                     is_tax_connector_enabled,
                     dynamic_routing_algorithm,
                     is_network_tokenization_enabled,
+                    is_auto_retries_enabled,
+                    max_auto_retries_enabled,
                 } = *update;
 
                 Self {
@@ -281,6 +291,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                     is_tax_connector_enabled,
                     dynamic_routing_algorithm,
                     is_network_tokenization_enabled,
+                    is_auto_retries_enabled,
+                    max_auto_retries_enabled,
                 }
             }
             ProfileUpdate::RoutingAlgorithmUpdate {
@@ -318,6 +330,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 is_tax_connector_enabled: None,
                 dynamic_routing_algorithm: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::DynamicRoutingAlgorithmUpdate {
                 dynamic_routing_algorithm,
@@ -353,6 +367,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 is_tax_connector_enabled: None,
                 dynamic_routing_algorithm,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::ExtendedCardInfoUpdate {
                 is_extended_card_info_enabled,
@@ -388,6 +404,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 is_tax_connector_enabled: None,
                 dynamic_routing_algorithm: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::ConnectorAgnosticMitUpdate {
                 is_connector_agnostic_mit_enabled,
@@ -423,6 +441,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 is_tax_connector_enabled: None,
                 dynamic_routing_algorithm: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::NetworkTokenizationUpdate {
                 is_network_tokenization_enabled,
@@ -458,6 +478,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 is_tax_connector_enabled: None,
                 dynamic_routing_algorithm: None,
                 is_network_tokenization_enabled,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
         }
     }
@@ -512,6 +534,8 @@ impl super::behaviour::Conversion for Profile {
             version: self.version,
             dynamic_routing_algorithm: self.dynamic_routing_algorithm,
             is_network_tokenization_enabled: self.is_network_tokenization_enabled,
+            is_auto_retries_enabled: Some(self.is_auto_retries_enabled),
+            max_auto_retries_enabled: self.max_auto_retries_enabled,
         })
     }
 
@@ -578,6 +602,8 @@ impl super::behaviour::Conversion for Profile {
                 version: item.version,
                 dynamic_routing_algorithm: item.dynamic_routing_algorithm,
                 is_network_tokenization_enabled: item.is_network_tokenization_enabled,
+                is_auto_retries_enabled: item.is_auto_retries_enabled.unwrap_or(false),
+                max_auto_retries_enabled: item.max_auto_retries_enabled,
             })
         }
         .await
@@ -628,6 +654,8 @@ impl super::behaviour::Conversion for Profile {
             is_tax_connector_enabled: Some(self.is_tax_connector_enabled),
             version: self.version,
             is_network_tokenization_enabled: self.is_network_tokenization_enabled,
+            is_auto_retries_enabled: Some(self.is_auto_retries_enabled),
+            max_auto_retries_enabled: self.max_auto_retries_enabled,
         })
     }
 }
@@ -896,6 +924,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                     tax_connector_id: None,
                     is_tax_connector_enabled: None,
                     is_network_tokenization_enabled,
+                    is_auto_retries_enabled: None,
+                    max_auto_retries_enabled: None,
                 }
             }
             ProfileUpdate::RoutingAlgorithmUpdate {
@@ -934,6 +964,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 tax_connector_id: None,
                 is_tax_connector_enabled: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::ExtendedCardInfoUpdate {
                 is_extended_card_info_enabled,
@@ -970,6 +1002,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 tax_connector_id: None,
                 is_tax_connector_enabled: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::ConnectorAgnosticMitUpdate {
                 is_connector_agnostic_mit_enabled,
@@ -1006,6 +1040,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 tax_connector_id: None,
                 is_tax_connector_enabled: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::DefaultRoutingFallbackUpdate {
                 default_fallback_routing,
@@ -1042,6 +1078,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 tax_connector_id: None,
                 is_tax_connector_enabled: None,
                 is_network_tokenization_enabled: None,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
             ProfileUpdate::NetworkTokenizationUpdate {
                 is_network_tokenization_enabled,
@@ -1078,6 +1116,8 @@ impl From<ProfileUpdate> for ProfileUpdateInternal {
                 tax_connector_id: None,
                 is_tax_connector_enabled: None,
                 is_network_tokenization_enabled,
+                is_auto_retries_enabled: None,
+                max_auto_retries_enabled: None,
             },
         }
     }
@@ -1134,6 +1174,8 @@ impl super::behaviour::Conversion for Profile {
             version: self.version,
             dynamic_routing_algorithm: None,
             is_network_tokenization_enabled: self.is_network_tokenization_enabled,
+            is_auto_retries_enabled: None,
+            max_auto_retries_enabled: None,
         })
     }
 
@@ -1253,6 +1295,8 @@ impl super::behaviour::Conversion for Profile {
             is_tax_connector_enabled: Some(self.is_tax_connector_enabled),
             version: self.version,
             is_network_tokenization_enabled: self.is_network_tokenization_enabled,
+            is_auto_retries_enabled: None,
+            max_auto_retries_enabled: None,
         })
     }
 }
diff --git a/crates/router/src/core/admin.rs b/crates/router/src/core/admin.rs
index ad9925a241f..d27b6b82fd4 100644
--- a/crates/router/src/core/admin.rs
+++ b/crates/router/src/core/admin.rs
@@ -3537,6 +3537,8 @@ impl ProfileCreateBridge for api::ProfileCreate {
                 .always_collect_shipping_details_from_wallet_connector,
             dynamic_routing_algorithm: None,
             is_network_tokenization_enabled: self.is_network_tokenization_enabled,
+            is_auto_retries_enabled: self.is_auto_retries_enabled.unwrap_or_default(),
+            max_auto_retries_enabled: self.max_auto_retries_enabled.map(i16::from),
         }))
     }
 
@@ -3884,6 +3886,8 @@ impl ProfileUpdateBridge for api::ProfileUpdate {
                 is_tax_connector_enabled: self.is_tax_connector_enabled,
                 dynamic_routing_algorithm: self.dynamic_routing_algorithm,
                 is_network_tokenization_enabled: self.is_network_tokenization_enabled,
+                is_auto_retries_enabled: self.is_auto_retries_enabled,
+                max_auto_retries_enabled: self.max_auto_retries_enabled.map(i16::from),
             },
         )))
     }
diff --git a/crates/router/src/types/api/admin.rs b/crates/router/src/types/api/admin.rs
index c7b76d1780a..8d52e5dc11a 100644
--- a/crates/router/src/types/api/admin.rs
+++ b/crates/router/src/types/api/admin.rs
@@ -168,6 +168,8 @@ impl ForeignTryFrom<domain::Profile> for ProfileResponse {
             tax_connector_id: item.tax_connector_id,
             is_tax_connector_enabled: item.is_tax_connector_enabled,
             is_network_tokenization_enabled: item.is_network_tokenization_enabled,
+            is_auto_retries_enabled: item.is_auto_retries_enabled,
+            max_auto_retries_enabled: item.max_auto_retries_enabled,
         })
     }
 }
@@ -353,5 +355,7 @@ pub async fn create_profile_from_merchant_account(
         is_tax_connector_enabled: request.is_tax_connector_enabled,
         dynamic_routing_algorithm: None,
         is_network_tokenization_enabled: request.is_network_tokenization_enabled,
+        is_auto_retries_enabled: request.is_auto_retries_enabled.unwrap_or_default(),
+        max_auto_retries_enabled: request.max_auto_retries_enabled.map(i16::from),
     }))
 }
diff --git a/migrations/2024-09-26-113912_add-auto-retries-configs-in-profile/down.sql b/migrations/2024-09-26-113912_add-auto-retries-configs-in-profile/down.sql
new file mode 100644
index 00000000000..3751f25da4b
--- /dev/null
+++ b/migrations/2024-09-26-113912_add-auto-retries-configs-in-profile/down.sql
@@ -0,0 +1,6 @@
+-- This file should undo anything in `up.sql`
+-- Drop is_auto_retries_enabled column from business_profile table
+ALTER TABLE business_profile DROP COLUMN IF EXISTS is_auto_retries_enabled;
+
+-- Drop max_auto_retries_enabled column from business_profile table
+ALTER TABLE business_profile DROP COLUMN IF EXISTS max_auto_retries_enabled;
diff --git a/migrations/2024-09-26-113912_add-auto-retries-configs-in-profile/up.sql b/migrations/2024-09-26-113912_add-auto-retries-configs-in-profile/up.sql
new file mode 100644
index 00000000000..05b6a114a31
--- /dev/null
+++ b/migrations/2024-09-26-113912_add-auto-retries-configs-in-profile/up.sql
@@ -0,0 +1,6 @@
+-- Your SQL goes here
+-- Add is_auto_retries_enabled column in business_profile table
+ALTER TABLE business_profile ADD COLUMN IF NOT EXISTS is_auto_retries_enabled BOOLEAN;
+
+-- Add max_auto_retries_enabled column in business_profile table
+ALTER TABLE business_profile ADD COLUMN IF NOT EXISTS max_auto_retries_enabled SMALLINT;

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
add auto retries configs in profile CRUD apis
1. is_auto_retries_enabled - Boolean (denotes whether auto retries should be performed for a profile)
2. max_auto_retries_enabled - Int (maximum auto retries to be performed)

closes - https://github.com/juspay/hyperswitch/issues/8556

### Additional Changes

- [x] This PR modifies the API contract
- [x] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
4. `crates/router/src/configs`
5. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->


## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->
Tested Manually
1. Profile Create

```
curl --location '{{BASE_URL}}/account/{{MERCHANT_ID}}/business_profile' \
--header 'Content-Type: application/json' \
--header 'api-key: {{ADMIN_API_KEY}}' \
--data '{
    "is_auto_retries_enabled": true,
    "max_auto_retries_enabled": 1
}'
```

Response
`{
    "merchant_id": "merchant_1727371477",
    "profile_id": "pro_jIc12oz9zLreWO4gJqXZ",
    "profile_name": "default",
    "return_url": "https://example.com/success",
    "enable_payment_response_hash": true,
    "payment_response_hash_key": "uskD31l0vpyRXItGriQ2FZvyhgNJvY5eo3rpy7mnJ0iqm0ExGMgenVstuaVaTxtI",
    "redirect_to_merchant_with_http_post": false,
    "webhook_details": {
        "webhook_version": "1.0.1",
        "webhook_username": "ekart_retail",
        "webhook_password": "password_ekart@123",
        "webhook_url": "https://eop67yav2axa2pv.m.pipedream.net/",
        "payment_created_enabled": true,
        "payment_succeeded_enabled": true,
        "payment_failed_enabled": true
    },
    "metadata": null,
    "routing_algorithm": null,
    "intent_fulfillment_time": 900,
    "frm_routing_algorithm": null,
    "payout_routing_algorithm": null,
    "applepay_verified_domains": null,
    "session_expiry": 900,
    "payment_link_config": null,
    "authentication_connector_details": null,
    "use_billing_as_payment_method_billing": true,
    "extended_card_info_config": null,
    "collect_shipping_details_from_wallet_connector": false,
    "collect_billing_details_from_wallet_connector": false,
    "always_collect_shipping_details_from_wallet_connector": false,
    "always_collect_billing_details_from_wallet_connector": false,
    "is_connector_agnostic_mit_enabled": false,
    "payout_link_config": null,
    "outgoing_webhook_custom_http_headers": null,
    "tax_connector_id": null,
    "is_tax_connector_enabled": false,
    "is_network_tokenization_enabled": false,
    "is_auto_retries_enabled": true,
    "max_auto_retries_enabled": 1
}`

2. Profile Update

```
curl --location '{{BASE_URL}}/account/{{MERCHANT_ID}}/business_profile/{{PROFILE_ID}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: {{ADMIN_API_KEY}}' \
--data '{
    "is_auto_retries_enabled": false,
    "max_auto_retries_enabled": 2
}'
```

Response:
`{
    "merchant_id": "merchant_1727371477",
    "profile_id": "pro_jIc12oz9zLreWO4gJqXZ",
    "profile_name": "default",
    "return_url": "https://example.com/success",
    "enable_payment_response_hash": true,
    "payment_response_hash_key": "uskD31l0vpyRXItGriQ2FZvyhgNJvY5eo3rpy7mnJ0iqm0ExGMgenVstuaVaTxtI",
    "redirect_to_merchant_with_http_post": false,
    "webhook_details": {
        "webhook_version": "1.0.1",
        "webhook_username": "ekart_retail",
        "webhook_password": "password_ekart@123",
        "webhook_url": "https://eop67yav2axa2pv.m.pipedream.net/",
        "payment_created_enabled": true,
        "payment_succeeded_enabled": true,
        "payment_failed_enabled": true
    },
    "metadata": null,
    "routing_algorithm": null,
    "intent_fulfillment_time": 900,
    "frm_routing_algorithm": null,
    "payout_routing_algorithm": null,
    "applepay_verified_domains": null,
    "session_expiry": 900,
    "payment_link_config": null,
    "authentication_connector_details": null,
    "use_billing_as_payment_method_billing": true,
    "extended_card_info_config": null,
    "collect_shipping_details_from_wallet_connector": false,
    "collect_billing_details_from_wallet_connector": false,
    "always_collect_shipping_details_from_wallet_connector": false,
    "always_collect_billing_details_from_wallet_connector": false,
    "is_connector_agnostic_mit_enabled": false,
    "payout_link_config": null,
    "outgoing_webhook_custom_http_headers": null,
    "tax_connector_id": null,
    "is_tax_connector_enabled": false,
    "is_network_tokenization_enabled": false,
    "is_auto_retries_enabled": false,
    "max_auto_retries_enabled": 2
}`

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
