Bug: [FEATURE] Add api-key support for routing APIs



### Feature Description

Need to add api-key auth for all routing APIs

### Possible Implementation

Just need to change auth implementation on handler

### Have you spent some time checking if this feature request has been raised before?

- [x] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [x] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

Yes, I am willing to submit a PR!
diff --git a/crates/router/src/core/routing/helpers.rs b/crates/router/src/core/routing/helpers.rs
index c65a8c6b9ec..e5cbd1b653f 100644
--- a/crates/router/src/core/routing/helpers.rs
+++ b/crates/router/src/core/routing/helpers.rs
@@ -1752,10 +1752,13 @@ where
     let algo_type_enabled_features = algo_type.get_enabled_features();
     if *algo_type_enabled_features == feature_to_enable {
         // algorithm already has the required feature
-        return Err(errors::ApiErrorResponse::PreconditionFailed {
-            message: format!("{} is already enabled", dynamic_routing_type),
-        }
-        .into());
+        let routing_algorithm = db
+            .find_routing_algorithm_by_profile_id_algorithm_id(&profile_id, &algo_type_algorithm_id)
+            .await
+            .to_not_found_response(errors::ApiErrorResponse::ResourceIdNotFound)?;
+        let updated_routing_record = routing_algorithm.foreign_into();
+
+        return Ok(ApplicationResponse::Json(updated_routing_record));
     };
     *algo_type_enabled_features = feature_to_enable;
     dynamic_routing_algo_ref.update_enabled_features(dynamic_routing_type, feature_to_enable);
diff --git a/crates/router/src/routes/routing.rs b/crates/router/src/routes/routing.rs
index 3dcc947d133..ba041cbe5ac 100644
--- a/crates/router/src/routes/routing.rs
+++ b/crates/router/src/routes/routing.rs
@@ -42,7 +42,6 @@ pub async fn routing_create_config(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -53,10 +52,6 @@ pub async fn routing_create_config(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::ProfileRoutingWrite,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -134,7 +129,6 @@ pub async fn routing_link_config(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -145,10 +139,6 @@ pub async fn routing_link_config(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::ProfileRoutingWrite,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -233,7 +223,6 @@ pub async fn routing_retrieve_config(
                 algorithm_id,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -244,10 +233,6 @@ pub async fn routing_retrieve_config(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::ProfileRoutingRead,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -324,7 +309,6 @@ pub async fn list_routing_configs(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -335,10 +319,6 @@ pub async fn list_routing_configs(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::MerchantRoutingRead,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -370,7 +350,6 @@ pub async fn list_routing_configs_for_profile(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -381,10 +360,6 @@ pub async fn list_routing_configs_for_profile(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::ProfileRoutingRead,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -464,7 +439,6 @@ pub async fn routing_unlink_config(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -475,10 +449,6 @@ pub async fn routing_unlink_config(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::ProfileRoutingWrite,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -556,7 +526,6 @@ pub async fn routing_update_default_config(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -567,10 +536,6 @@ pub async fn routing_update_default_config(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuth {
-            permission: Permission::MerchantRoutingWrite,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -644,9 +609,16 @@ pub async fn routing_retrieve_default_config(
                 transaction_type,
             )
         },
-        &auth::JWTAuth {
-            permission: Permission::ProfileRoutingRead,
-        },
+        auth::auth_type(
+            &auth::HeaderAuth(auth::ApiKeyAuth {
+                is_connected_allowed: false,
+                is_platform_allowed: false,
+            }),
+            &auth::JWTAuth {
+                permission: Permission::ProfileRoutingRead,
+            },
+            req.headers(),
+        ),
         api_locking::LockAction::NotApplicable,
     ))
     .await
@@ -992,7 +964,6 @@ pub async fn routing_retrieve_linked_config(
                     transaction_type,
                 )
             },
-            #[cfg(not(feature = "release"))]
             auth::auth_type(
                 &auth::HeaderAuth(auth::ApiKeyAuth {
                     is_connected_allowed: false,
@@ -1004,11 +975,6 @@ pub async fn routing_retrieve_linked_config(
                 },
                 req.headers(),
             ),
-            #[cfg(feature = "release")]
-            &auth::JWTAuthProfileFromRoute {
-                profile_id,
-                required_permission: Permission::ProfileRoutingRead,
-            },
             api_locking::LockAction::NotApplicable,
         ))
         .await
@@ -1030,7 +996,6 @@ pub async fn routing_retrieve_linked_config(
                     transaction_type,
                 )
             },
-            #[cfg(not(feature = "release"))]
             auth::auth_type(
                 &auth::HeaderAuth(auth::ApiKeyAuth {
                     is_connected_allowed: false,
@@ -1041,10 +1006,6 @@ pub async fn routing_retrieve_linked_config(
                 },
                 req.headers(),
             ),
-            #[cfg(feature = "release")]
-            &auth::JWTAuth {
-                permission: Permission::ProfileRoutingRead,
-            },
             api_locking::LockAction::NotApplicable,
         ))
         .await
@@ -1184,7 +1145,6 @@ pub async fn routing_update_default_config_for_profile(
                 transaction_type,
             )
         },
-        #[cfg(not(feature = "release"))]
         auth::auth_type(
             &auth::HeaderAuth(auth::ApiKeyAuth {
                 is_connected_allowed: false,
@@ -1196,11 +1156,6 @@ pub async fn routing_update_default_config_for_profile(
             },
             req.headers(),
         ),
-        #[cfg(feature = "release")]
-        &auth::JWTAuthProfileFromRoute {
-            profile_id: routing_payload_wrapper.profile_id,
-            required_permission: Permission::ProfileRoutingWrite,
-        },
         api_locking::LockAction::NotApplicable,
     ))
     .await

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

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

## Description
<!-- Describe your changes in detail -->
Added api-key auth for routing APIs
Earlier, all routing endpoints were only JWT auth based for release build and (api-key + JWT) for local development build. Have removed the feature flag based distinction and refactored auth for all routing endpoints to be (api-key + JWT) for both builds.


### Additional Changes

- [ ] This PR modifies the API contract
- [ ] 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`
2. `crates/router/src/configs`
3. `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)?
-->
Test all routing APIs with api-key auth
1. Create routing config (`/routing`)
2. List routing config  (`/routing`)
3. List active routing config (`/routing/active`)
4. List for profile (`/routing/list/profile`)
5. activate config (`routing/:id/activate`)
6. retrieve config (`routing/:id`)
7. deactivate (`routing/deactivate`)
8. default profile (`routing/default/profile`)
9. update default profile (`routing/default/profile/:profile_id`)
10. update default config (`/routing/default`)


```
curl --location 'http://127.0.0.1:8080/routing' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_nvORdH8glyzL3AyPwkWcb7GsLD7xi7PU7kHZpvRWlPJNnEz1dQPrCN1swXFFjKEk' \
--data '
{
    "name": "advanced config",
    "description": "It is my ADVANCED config",
    "profile_id": "pro_rfW0Fv5J0Cct1Bnw2EuS",
    "algorithm": {
        "type": "advanced",
        "data": {
            "defaultSelection": {
                "type": "priority",
                "data": [
                    {
                        "connector": "stripe",
                        "merchant_connector_id": "mca_aHTJXYcakT5Nlx48kuSh"
                    }
                ]
            },
            "rules": [
                {
                    "name": "cybersource first",
                    "connectorSelection": {
                        "type": "priority",
                        "data": [
                            {
                                "connector": "cybersource",
                                "merchant_connector_id": "mca_rJu5LzTmK2SjYgoRMWZ4"
                            }
                        ]
                    },
                    "statements": [
                        {
                            "condition": [
                                {
                                    "lhs": "upi",
                                    "comparison": "equal",
                                    "value": {
                                        "type": "enum_variant",
                                        "value": "upi_collect"
                                    },
                                    "metadata": {}
                                }
                            ],
                            "nested": [
                                {
                                    "condition": [
                                        {
                                            "lhs": "amount",
                                            "comparison": "greater_than",
                                            "value": {
                                                "type": "number",
                                                "value": 5000
                                            },
                                            "metadata": {}
                                        },
                                        {
                                            "lhs": "currency",
                                            "comparison": "equal",
                                            "value": {
                                                "type": "enum_variant",
                                                "value": "USD"
                                            },
                                            "metadata": {}
                                        }
                                    ]
                                },
                                {
                                    "condition": [
                                        {
                                            "lhs": "amount",
                                            "comparison": "greater_than",
                                            "value": {
                                                "type": "number",
                                                "value": 10000
                                            },
                                            "metadata": {}
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ],
            "metadata": {}
        }
    }
}'
```

```
 curl -X GET --location 'http://127.0.0.1:8080/routing' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio'
```

```
curl -X GET --location 'http://127.0.0.1:8080/routing' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg"
```

```
curl -X GET --location 'http://127.0.0.1:8080/routing/active' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio'
```

```
curl -X GET --location 'http://127.0.0.1:8080/routing/active' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg"
```

```
 curl --location 'http://127.0.0.1:8080/routing/list/profile' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Ri
```

```
 curl --location 'http://127.0.0.1:8080/routing/list/profile' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg"
```

```
curl --location --request POST 'http://localhost:8080/routing/routing_o7xnnpZ8MtkbuEpsDsjK/activate' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio'
```

```
curl --location --request POST 'http://localhost:8080/routing/routing_o7xnnpZ8MtkbuEpsDsjK/activate' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg"
```


```
curl --location 'http://127.0.0.1:8080/routing/routing_WkgC0lnKAnxSkBthgnK9' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio'
```

```
curl --location 'http://127.0.0.1:8080/routing/routing_WkgC0lnKAnxSkBthgnK9' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg"

```

```
 curl --location 'http://127.0.0.1:8080/routing/deactivate' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio' \
--data '{
    "profile_id": "pro_rfW0Fv5J0Cct1Bnw2EuS"
}'
```

```
curl --location 'http://127.0.0.1:8080/routing/deactivate' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg" \
--data '{
    "profile_id": "pro_rfW0Fv5J0Cct1Bnw2EuS"
}'

```

```
 curl --location 'http://127.0.0.1:8080/routing/default/profile' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio'
```

```
curl --location 'http://127.0.0.1:8080/routing/default/profile' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg"

```

```
curl --location 'http://127.0.0.1:8080/routing/default/profile/pro_rfW0Fv5J0Cct1Bnw2EuS' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_nvORdH8glyzL3AyPwkWcb7GsLD7xi7PU7kHZpvRWlPJNnEz1dQPrCN1swXFFjKEk' \
--data '[    
    {
        "connector": "paypal",
        "merchant_connector_id": "mca_yHGYuTt4V8DGigmrfwYc"
    }
]'
```
```
curl --location 'http://127.0.0.1:8080/routing/default/profile/pro_rfW0Fv5J0Cct1Bnw2EuS' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcF \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg" 

```

```
curl --location 'http://127.0.0.1:8080/routing/default' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_Qe471NOXDpSt0z1VFlmFpFrKNZ9vbxKju4iIyBWaJ0iOXwHpvqFDc26LfhF06Rio' \
--data '[    
    
    {
        "connector": "paypal",
        "merchant_connector_id": "mca_yHGYuTt4V8DGigmrfwYc"
    }                         
]'
```

```
curl --location 'http://127.0.0.1:8080/routing/default/profile/pro_rfW0Fv5J0Cct1Bnw2EuS' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg' \
--cookie "login_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZDA1ODU2ZWEtYWMxMy00MjcwLTg3NDAtNWFjOTk1NGFlZjhhIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzQ3ODIzMjg1Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTc0Nzk5NzIyMCwib3JnX2lkIjoib3JnX1MyU2t6WXRyMUREcFJrdHJiam5kIiwicHJvZmlsZV9pZCI6InByb19tNUd5bEw2azE1ejl6QXBjMjhmTyIsInRlbmFudF9pZCI6InB1YmxpYyJ9.GlOzvYtOi5FRHp1zwdf_6K6D14gdOx1N06TzpodI7Sg" \
--data '[    
    {
        "connector": "paypal",
        "merchant_connector_id": "mca_yHGYuTt4V8DGigmrfwYc"
    }
]'

```

Response in case of incorrect api-key used - 
```
{"error":{"type":"invalid_request","message":"API key not provided or invalid API key used","code":"IR_01"}
```

--> For SR based routing
Hit this curl consecutively two time. earlier it would have errored out saying the specific routing is already enabled, but now it will provide back the `routing_dictionary_record`.
```
curl --location --request POST 'http://localhost:8080/account/merchant_1747754221/business_profile/pro_zynmxiTVItHGAekOFaum/dynamic_routing/success_based/toggle?enable=metrics' \
--header 'api-key: dev_es32CnydqbfAKJTxccqSW25IhfJOjkvAAX5raCzR9BdZjdZ28jQy8uoGMNbwv5Kk'
```

## 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`
- [ ] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
