Issue:
chore(codeowners): add codeowners data for PR reviews

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates

## Description

Adding a CODEOWNERS file for facilitating PR reviews for teams


### Additional Changes

- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!-- Provide links to the files with corresponding changes -->


## 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 leads to better ownership boundaries & increased efficiency for reviewers

## 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)?
-->
Doesn't need to be tested

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed submitted code
- [ ] I added unit tests for my changes where possible
- [ ] I added a [CHANGELOG](/CHANGELOG.md) entry if applicable


Resolution:
<think>
PR Context:
- Title: feat(core): Add click to pay support in hyperswitch
- Merged: 2024-12-16T14:25:44Z
- Files changed: 30 files
- Commits: 30 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] New feature


## Description
<!-- Describe your changes in detail -->
Add click to pay and unified authentication service integration in core


## 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)?
-->

check payments sanity

#1 : Create Business profile with `"is_click_to_pay_enabled": true`


</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(core): Add click to pay support in hyperswitch (#6769)
Co-authored-by: sai-harsha-vardhan <hars
Files to modify:


**crates/api_models/src/connector_enums.rs**
  Modify existing code

**crates/common_enums/src/enums.rs**
  Modify existing code

**crates/connector_configs/src/connector.rs**
  Modify existing code

**crates/hyperswitch_connectors/src/connectors.rs**
  Add:
    - mod: pub::ctp_mastercard

**crates/hyperswitch_connectors/src/connectors/ctp_mastercard.rs**
  Add:
    - function: private::build_headers
    - function: private::id
    - function: private::base_url
    - function: private::get_webhook_object_reference_id
    - function: private::get_webhook_event_type
    - function: private::get_webhook_resource_object
    - struct: pub::CtpMastercard
    - impl: impl api::Payment for CtpMastercard
    - impl: impl api::PaymentSession for CtpMastercard
    - impl: impl api::ConnectorAccessToken for CtpMastercard
    - impl: impl api::MandateSetup for CtpMastercard
    - impl: impl api::PaymentAuthorize for CtpMastercard
    - impl: impl api::PaymentSync for CtpMastercard
    - impl: impl api::PaymentCapture for CtpMastercard
    - impl: impl api::PaymentVoid for CtpMastercard
    - impl: impl api::Refund for CtpMastercard
    - impl: impl api::RefundExecute for CtpMastercard
    - impl: impl api::RefundSync for CtpMastercard
    - impl: impl api::PaymentToken for CtpMastercard
    - impl: impl ConnectorIntegration<PaymentMethodToken, PaymentMethodTokenizationData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorCommonExt<Flow, Request, Response> for CtpMastercard
    - impl: impl ConnectorCommon for CtpMastercard
    - impl: impl ConnectorValidation for CtpMastercard
    - impl: impl ConnectorIntegration<Session, PaymentsSessionData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<AccessTokenAuth, AccessTokenRequestData, AccessToken> for CtpMastercard
    - impl: impl ConnectorIntegration<SetupMandate, SetupMandateRequestData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<PSync, PaymentsSyncData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<Capture, PaymentsCaptureData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<RSync, RefundsData, RefundsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<Void, PaymentsCancelData, PaymentsResponseData> for CtpMastercard
    - impl: impl ConnectorIntegration<Execute, RefundsData, RefundsResponseData> for CtpMastercard
    - impl: impl webhooks::IncomingWebhook for CtpMastercard

**crates/hyperswitch_connectors/src/connectors/unified_authentication_service.rs**
  Remove:
    - function: private::get_auth_header
    - function: private::get_headers
    - function: private::get_content_type
    - impl: impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData> for unified_authentication_service::UnifiedAuthenticationServicePaymentsRequest::try_from(
        req: &PaymentsAuthorizeRouterData,
                .url(&types::PaymentsAuthorizeType::get_url(
                .headers(types::PaymentsAuthorizeType::get_headers(
                .set_body(types::PaymentsAuthorizeType::get_request_body(
        data: &PaymentsAuthorizeRouterData,
    ) -> CustomResult<PaymentsAuthorizeRouterData, errors::ConnectorError> {
        let response: unified_authentication_service::UnifiedAuthenticationServicePaymentsResponse =
                .parse_struct("UnifiedAuthenticationService PaymentsAuthorizeResponse")
impl ConnectorIntegration<PSync, PaymentsSyncData, PaymentsResponseData>
    for UnifiedAuthenticationService
        req: &PaymentsSyncRouterData,
        _req: &PaymentsSyncRouterData,
        _connectors: &Connectors,
    ) -> CustomResult<String, errors::ConnectorError> {
        Err(errors::ConnectorError::NotImplemented("get_url method".to_string()).into())
    }

    fn build_request(
        &self,
        req: &PaymentsSyncRouterData,
        connectors: &Connectors,
    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
        Ok(Some(
            RequestBuilder::new()
                .method(Method::Get)
                .url(&types::PaymentsSyncType::get_url(self, req, connectors)?)
                .attach_default_headers()
                .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?)
                .build(),
        ))
    }

    fn handle_response(
        &self,
        data: &PaymentsSyncRouterData,
        event_builder: Option<&mut ConnectorEvent>,
        res: Response,
    ) -> CustomResult<PaymentsSyncRouterData, errors::ConnectorError> {
        let response: unified_authentication_service::UnifiedAuthenticationServicePaymentsResponse =
            res.response
                .parse_struct("unified_authentication_service PaymentsSyncResponse")
                .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
        event_builder.map(|i| i.set_response_body(&response));
        router_env::logger::info!(connector_response=?response);
        RouterData::try_from(ResponseRouterData {
            response,
            data: data.clone(),
            http_code: res.status_code,
        })
    }

    fn get_error_response(
        &self,
        res: Response,
        event_builder: Option<&mut ConnectorEvent>,
    ) -> CustomResult<ErrorResponse, errors::ConnectorError>
    - impl: impl ConnectorIntegration<Capture, PaymentsCaptureData, PaymentsResponseData> for UnifiedAuthenticationService
  Add:
    - impl: impl api::UnifiedAuthenticationService for UnifiedAuthenticationService
    - impl: impl api::UasPreAuthentication for UnifiedAuthenticationService
    - impl: impl api::UasPostAuthentication for UnifiedAuthenticationService

**crates/hyperswitch_connectors/src/connectors/unified_authentication_service/transformers.rs**
  Remove:
    - function: private::from
    - function: private::from
    - struct: pub::UnifiedAuthenticationServicePaymentsRequest
    - struct: pub::UnifiedAuthenticationServicePaymentsResponse
    - enum: pub::UnifiedAuthenticationServicePaymentStatus
    - impl: impl From<(StringMinorUnit, T)> for UnifiedAuthenticationServiceRouterData<T>
    - impl: impl From<UnifiedAuthenticationServicePaymentStatus> for common_enums::AttemptStatus
  Add:
    - struct: pub::UnifiedAuthenticationServicePreAuthenticateRequest
    - struct: pub::PaymentDetails
    - struct: pub::TransactionDetails
    - struct: pub::ThreeDSData
    - struct: pub::Acquirer
    - struct: pub::BrowserInfo
    - struct: pub::AuthenticationInfo
    - struct: pub::CtpServiceDetails
    - struct: pub::ServiceSessionIds
    - struct: pub::MerchantDetails
    - struct: pub::Address
    - enum: pub::AuthType

**crates/hyperswitch_connectors/src/constants.rs**
  Modify existing code

**crates/hyperswitch_connectors/src/default_implementations.rs**
  Modify existing code

**crates/hyperswitch_connectors/src/default_implementations_v2.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/payment_method_data.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/router_flow_types.rs**
  Add:
    - mod: pub::unified_authentication_service

**crates/hyperswitch_domain_models/src/router_flow_types/unified_authentication_service.rs**
  Add:
    - struct: pub::PreAuthenticate
    - struct: pub::PostAuthenticate

**crates/hyperswitch_domain_models/src/router_request_types/unified_authentication_service.rs**
  Remove:
    - struct: pub::UasPostAuthenticationRequestData
  Add:
    - struct: pub::UasPostAuthenticationRequestData

**crates/hyperswitch_domain_models/src/types.rs**
  Modify existing code

**crates/hyperswitch_interfaces/src/api.rs**
  Add:
    - trait: pub::UnifiedAuthenticationService
    - trait: pub::UasPreAuthentication
    - trait: pub::UasPostAuthentication
    - trait: pub::UnifiedAuthenticationServiceV2
    - trait: pub::UasPreAuthenticationV2
    - trait: pub::UasPostAuthenticationV2

**crates/hyperswitch_interfaces/src/configs.rs**
  Add:
    - function: pub::validate
    - struct: pub::NoParams
    - impl: impl NoParams

**crates/hyperswitch_interfaces/src/types.rs**
  Modify existing code

**crates/router/src/connector.rs**
  Modify existing code

**crates/router/src/connector/adyen/transformers.rs**
  Remove:
    - function: private::get_optional_shopper_email
  Add:
    - function: private::try_from
    - function: private::try_from
    - impl: impl TryFrom<(&domain::NetworkTokenData, Option<Secret<String>>)> for AdyenPaymentMethod<'_>
    - impl: impl TryFrom<(
        &AdyenRouterData<&types::PaymentsAuthorizeRouterData>,
        &domain::NetworkTokenData,
    )> for AdyenPaymentRequest<'_>

**crates/router/src/core/admin.rs**
  Modify existing code

**crates/router/src/core/payment_methods.rs**
  Modify existing code

**crates/router/src/core/payment_methods/network_tokenization.rs**
  Modify existing code

**crates/router/src/core/payments.rs**
  Modify existing code

**crates/router/src/core/payments/connector_integration_v2_impls.rs**
  Remove:
    - impl: impl api::UasPreAuthenticationV2 for $connector
    - impl: impl api::UasPostAuthenticationV2 for $connector
  Add:
    - impl: impl UasPreAuthenticationV2 for $connector
    - impl: impl UasPostAuthenticationV2 for $connector

**crates/router/src/core/payments/flows.rs**
  Remove:
    - impl: impl api::UnifiedAuthenticationService for connector::DummyConnector<T>

**crates/router/src/core/payments/helpers.rs**
  Modify existing code

**crates/router/src/core/payments/operations/payment_complete_authorize.rs**
  Modify existing code

**crates/router/src/core/payments/operations/payment_confirm.rs**
  Modify existing code

**crates/router/src/core/payments/operations/payment_create.rs**
  Modify existing code

**crates/router/src/core/payments/operations/payment_update.rs**
  Modify existing code

**crates/router/src/core/payments/transformers.rs**
  Modify existing code

**crates/router/src/core/unified_authentication_service.rs**
  Modify existing code

**crates/router/src/core/unified_authentication_service/transformers.rs**
  Modify existing code

**crates/router/src/core/unified_authentication_service/types.rs**
  Modify existing code

**crates/router/src/types/api.rs**
  Remove:
    - mod: pub::unified_authentication_service
    - mod: pub::unified_authentication_service_v2

**crates/router/src/types/api/authentication.rs**
  Modify existing code

**crates/router/src/types/api/unified_authentication_service.rs**
  Remove:
    - struct: pub::PreAuthenticate
    - struct: pub::PostAuthenticate
    - trait: pub::UnifiedAuthenticationService
    - trait: pub::UasPreAuthentication
    - trait: pub::UasPostAuthentication

**crates/router/src/types/api/unified_authentication_service_v2.rs**
  Remove:
    - trait: pub::UnifiedAuthenticationServiceV2
    - trait: pub::UasPreAuthenticationV2
    - trait: pub::UasPostAuthenticationV2

**crates/router/src/types/transformers.rs**
  Modify existing code