Bug: [BUG] Validate and update 4xx in Files - Delete endpoint



### Bug Description

The following error is being thrown with a 400 error code when we're hitting the Files - Delete endpoint : 

`"error": {
        "type": "invalid_request",
        "message": "Payment method type not supported",
        "code": "HE_03",
        "reason": "Not Supported if provider is not Router"
    }`

### Expected Behavior

The error should make more sense. The message should be updated accordingly.

### Actual Behavior

It throws a Bad Request Error (400) with an irrelevant message.

### Steps To Reproduce

Hit the Files - Delete endpoint.

### Environment

Local

### Have you spent some time to check if this bug has been raised before?

- [X] I checked and didn't find 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/compatibility/stripe/errors.rs b/crates/router/src/compatibility/stripe/errors.rs
index 7e341f071d2..c056b454a6c 100644
--- a/crates/router/src/compatibility/stripe/errors.rs
+++ b/crates/router/src/compatibility/stripe/errors.rs
@@ -202,6 +202,8 @@ pub enum StripeErrorCode {
     FileNotFound,
     #[error(error_type = StripeErrorType::HyperswitchError, code = "", message = "File not available")]
     FileNotAvailable,
+    #[error(error_type = StripeErrorType::InvalidRequestError, code = "", message = "Not Supported because provider is not Router")]
+    FileProviderNotSupported,
     #[error(error_type = StripeErrorType::HyperswitchError, code = "", message = "There was an issue with processing webhooks")]
     WebhookProcessingError,
     #[error(error_type = StripeErrorType::InvalidRequestError, code = "payment_method_unactivated", message = "The operation cannot be performed as the payment method used has not been activated. Activate the payment method in the Dashboard, then try again.")]
@@ -523,6 +525,9 @@ impl From<errors::ApiErrorResponse> for StripeErrorCode {
                 Self::MerchantConnectorAccountDisabled
             }
             errors::ApiErrorResponse::NotSupported { .. } => Self::InternalServerError,
+            errors::ApiErrorResponse::FileProviderNotSupported { .. } => {
+                Self::FileProviderNotSupported
+            }
             errors::ApiErrorResponse::WebhookBadRequest
             | errors::ApiErrorResponse::WebhookResourceNotFound
             | errors::ApiErrorResponse::WebhookProcessingFailure
@@ -590,6 +595,7 @@ impl actix_web::ResponseError for StripeErrorCode {
             | Self::MissingDisputeId
             | Self::FileNotFound
             | Self::FileNotAvailable
+            | Self::FileProviderNotSupported
             | Self::PaymentMethodUnactivated => StatusCode::BAD_REQUEST,
             Self::RefundFailed
             | Self::InternalServerError
diff --git a/crates/router/src/core/errors/api_error_response.rs b/crates/router/src/core/errors/api_error_response.rs
index 2154e07c275..6b0142f4bc0 100644
--- a/crates/router/src/core/errors/api_error_response.rs
+++ b/crates/router/src/core/errors/api_error_response.rs
@@ -91,6 +91,8 @@ pub enum ApiErrorResponse {
     MissingRequiredFields { field_names: Vec<&'static str> },
     #[error(error_type = ErrorType::InvalidRequestError, code = "IR_22", message = "Access forbidden. Not authorized to access this resource")]
     AccessForbidden,
+    #[error(error_type = ErrorType::InvalidRequestError, code = "IR_23", message = "{message}")]
+    FileProviderNotSupported { message: String },
     #[error(error_type = ErrorType::InvalidRequestError, code = "IR_23", message = "{entity} expired or invalid")]
     UnprocessableEntity { entity: String },
     #[error(error_type = ErrorType::ConnectorError, code = "CE_00", message = "{code}: {message}", ignore = "status_code")]
@@ -349,6 +351,9 @@ impl common_utils::errors::ErrorSwitch<api_models::errors::types::ApiErrorRespon
                 ApiError::new("IR", 21, "Missing required params".to_string(), Some(Extra {data: Some(serde_json::json!(field_names)), ..Default::default() })),
             ),
             Self::AccessForbidden => AER::ForbiddenCommonResource(ApiError::new("IR", 22, "Access forbidden. Not authorized to access this resource", None)),
+            Self::FileProviderNotSupported { message } => {
+                AER::BadRequest(ApiError::new("IR", 23, message.to_string(), None))
+            },
             Self::UnprocessableEntity {entity} => AER::Unprocessable(ApiError::new("IR", 23, format!("{entity} expired or invalid"), None)),
             Self::ExternalConnectorError {
                 code,
diff --git a/crates/router/src/core/files/helpers.rs b/crates/router/src/core/files/helpers.rs
index 2cd504d58d2..c0a7a39a44e 100644
--- a/crates/router/src/core/files/helpers.rs
+++ b/crates/router/src/core/files/helpers.rs
@@ -143,8 +143,8 @@ pub async fn delete_file_using_file_id(
             )
             .await
         }
-        _ => Err(errors::ApiErrorResponse::NotSupported {
-            message: "Not Supported if provider is not Router".to_owned(),
+        _ => Err(errors::ApiErrorResponse::FileProviderNotSupported {
+            message: "Not Supported because provider is not Router".to_string(),
         }
         .into()),
     }

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

- [x] Bugfix

## Description
<!-- Describe your changes in detail -->
Introduced new error `FileProviderNotSupported` and fixed the error mapping for the `Files - Delete` endpoint thrown when the file storage is not `router`.

## 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 its an obvious bug or documentation fix
that will have little conversation).
-->
This PR solves [this](https://github.com/juspay/hyperswitch/issues/1512) issue.

## 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 using Postman.

## 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 submitted code