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 bulk tokenization flows
- Merged: 2025-03-07T13:24:06Z
- Files changed: 26 files
- Commits: 30 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
This PR introduces below changes

- Exposes two endpoints for
    - Single card tokenization
        - Tokenizing raw card details with the network
        - Tokenizing an existing payment method in HS with the network (card only)
    - Bulk tokenization
        - Tokenizing us
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(core): add bulk tokenization flows (#7066)
Co-authored-by: hyperswitch-bot[bot] <148525504+hype
Files to modify:


**crates/api_models/src/payment_methods.rs**
  Add:
    - function: private::from
    - struct: pub::CardNetworkTokenizeRequest
    - struct: pub::TokenizeCardRequest
    - struct: pub::TokenizePaymentMethodRequest
    - struct: pub::CardNetworkTokenizeResponse
    - enum: pub::TokenizeDataRequest
    - impl: impl common_utils::events::ApiEventMetric for CardNetworkTokenizeRequest
    - impl: impl common_utils::events::ApiEventMetric for CardNetworkTokenizeResponse
    - impl: impl From<&Card> for MigrateCardDetail

**crates/hyperswitch_domain_models/src/bulk_tokenization.rs**
  Add:
    - function: private::foreign_from
    - function: private::foreign_from
    - function: private::foreign_try_from
    - function: private::foreign_from
    - function: private::foreign_try_from
    - function: private::foreign_from
    - function: private::foreign_from
    - function: private::foreign_from
    - function: private::foreign_from
    - function: private::foreign_from
    - function: private::foreign_from
    - struct: pub::CardNetworkTokenizeRequest
    - struct: pub::TokenizeCardRequest
    - struct: pub::TokenizePaymentMethodRequest
    - struct: pub::CardNetworkTokenizeRecord
    - enum: pub::TokenizeDataRequest
    - impl: impl ForeignFrom<&CardNetworkTokenizeRecord> for payments_api::CustomerDetails
    - impl: impl ForeignFrom<&CardNetworkTokenizeRecord> for payments_api::Address
    - impl: impl ForeignTryFrom<CardNetworkTokenizeRecord> for payment_methods_api::CardNetworkTokenizeRequest
    - impl: impl ForeignFrom<&TokenizeCardRequest> for payment_methods_api::MigrateCardDetail
    - impl: impl ForeignTryFrom<CustomerDetails> for payments_api::CustomerDetails
    - impl: impl ForeignFrom<payment_methods_api::CardNetworkTokenizeRequest> for CardNetworkTokenizeRequest
    - impl: impl ForeignFrom<payment_methods_api::TokenizeDataRequest> for TokenizeDataRequest
    - impl: impl ForeignFrom<payments_api::CustomerDetails> for CustomerDetails
    - impl: impl ForeignFrom<payments_api::Address> for Address
    - impl: impl ForeignFrom<payments_api::AddressDetails> for AddressDetails
    - impl: impl ForeignFrom<payments_api::PhoneDetails> for PhoneDetails

**crates/hyperswitch_domain_models/src/lib.rs**
  Add:
    - mod: pub::bulk_tokenization

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

**crates/hyperswitch_domain_models/src/payment_method_data.rs**
  Add:
    - function: private::from
    - struct: pub::CardDetail
    - impl: impl From<&Card> for CardDetail

**crates/openapi/src/openapi.rs**
  Modify existing code

**crates/openapi/src/openapi_v2.rs**
  Modify existing code

**crates/openapi/src/routes/payment_method.rs**
  Add:
    - function: pub::tokenize_card_api
    - function: pub::tokenize_card_using_pm_api

**crates/router/src/core/errors.rs**
  Add:
    - enum: pub::BulkNetworkTokenizationError

**crates/router/src/core/payment_methods.rs**
  Add:
    - mod: pub::tokenize

**crates/router/src/core/payment_methods/cards.rs**
  Add:
    - function: pub::tokenize_card_flow
    - function: pub::execute_card_tokenization
    - function: pub::execute_payment_method_tokenization

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

**crates/router/src/core/payment_methods/tokenize.rs**
  Add:
    - function: pub::parse_csv
    - function: pub::get_tokenize_card_form_records
    - function: pub::tokenize_cards
    - function: private::new
    - function: private::encrypt_card
    - function: private::encrypt_network_token
    - function: private::fetch_bin_details_and_validate_card_network
    - function: private::tokenize_card
    - function: private::validate_card_network
    - function: private::store_network_token_in_locker
    - struct: pub::CardNetworkTokenizeForm
    - struct: pub::StoreLockerResponse
    - struct: pub::NetworkTokenizationBuilder
    - struct: pub::CardNetworkTokenizeExecutor
    - trait: pub::State
    - trait: pub::TransitionTo
    - trait: pub::NetworkTokenizationProcess
    - impl: impl NetworkTokenizationProcess<'a, D> for CardNetworkTokenizeExecutor<'a, D>
    - mod: pub::card_executor
    - mod: pub::payment_method_executor

**crates/router/src/core/payment_methods/tokenize/card_executor.rs**
  Add:
    - function: private::default
    - function: pub::new
    - function: pub::set_validate_result
    - function: pub::set_card_details
    - function: pub::set_customer
    - function: pub::get_optional_card_and_cvc
    - function: pub::set_token_details
    - function: pub::set_stored_card_response
    - function: pub::set_stored_token_response
    - function: pub::set_payment_method_response
    - function: pub::build
    - function: pub::validate_request_and_fetch_optional_customer
    - function: pub::create_customer
    - function: pub::store_card_and_token_in_locker
    - function: pub::store_card_in_locker
    - function: pub::create_payment_method
    - struct: pub::TokenizeWithCard
    - struct: pub::CardRequestValidated
    - struct: pub::CardDetailsAssigned
    - struct: pub::CustomerAssigned
    - struct: pub::CardTokenized
    - struct: pub::CardStored
    - struct: pub::CardTokenStored
    - struct: pub::PaymentMethodCreated
    - impl: impl State for TokenizeWithCard
    - impl: impl State for CustomerAssigned
    - impl: impl State for CardRequestValidated
    - impl: impl State for CardDetailsAssigned
    - impl: impl State for CardTokenized
    - impl: impl State for CardStored
    - impl: impl State for CardTokenStored
    - impl: impl State for PaymentMethodCreated
    - impl: impl TransitionTo<CardRequestValidated> for TokenizeWithCard
    - impl: impl TransitionTo<CardDetailsAssigned> for CardRequestValidated
    - impl: impl TransitionTo<CustomerAssigned> for CardDetailsAssigned
    - impl: impl TransitionTo<CardTokenized> for CustomerAssigned
    - impl: impl TransitionTo<CardTokenStored> for CardTokenized
    - impl: impl TransitionTo<PaymentMethodCreated> for CardTokenStored
    - impl: impl Default for NetworkTokenizationBuilder<'_, TokenizeWithCard>
    - impl: impl NetworkTokenizationBuilder<'a, TokenizeWithCard>
    - impl: impl NetworkTokenizationBuilder<'a, CardRequestValidated>
    - impl: impl NetworkTokenizationBuilder<'a, CardDetailsAssigned>
    - impl: impl NetworkTokenizationBuilder<'a, CustomerAssigned>
    - impl: impl NetworkTokenizationBuilder<'a, CardTokenized>
    - impl: impl NetworkTokenizationBuilder<'a, CardStored>
    - impl: impl NetworkTokenizationBuilder<'a, CardTokenStored>
    - impl: impl NetworkTokenizationBuilder<'_, PaymentMethodCreated>
    - impl: impl CardNetworkTokenizeExecutor<'_, domain::TokenizeCardRequest>

**crates/router/src/core/payment_methods/tokenize/payment_method_executor.rs**
  Add:
    - function: private::default
    - function: pub::new
    - function: pub::set_payment_method
    - function: pub::set_validate_result
    - function: pub::set_card_details
    - function: pub::get_optional_card_and_cvc
    - function: pub::set_token_details
    - function: pub::set_stored_token_response
    - function: pub::set_payment_method
    - function: pub::build
    - function: pub::fetch_payment_method
    - function: pub::validate_request_and_locker_reference_and_customer
    - function: pub::update_payment_method
    - struct: pub::TokenizeWithPmId
    - struct: pub::PmValidated
    - struct: pub::PmFetched
    - struct: pub::PmAssigned
    - struct: pub::PmTokenized
    - struct: pub::PmTokenStored
    - struct: pub::PmTokenUpdated
    - impl: impl State for TokenizeWithPmId
    - impl: impl State for PmValidated
    - impl: impl State for PmFetched
    - impl: impl State for PmAssigned
    - impl: impl State for PmTokenized
    - impl: impl State for PmTokenStored
    - impl: impl State for PmTokenUpdated
    - impl: impl TransitionTo<PmFetched> for TokenizeWithPmId
    - impl: impl TransitionTo<PmValidated> for PmFetched
    - impl: impl TransitionTo<PmAssigned> for PmValidated
    - impl: impl TransitionTo<PmTokenized> for PmAssigned
    - impl: impl TransitionTo<PmTokenStored> for PmTokenized
    - impl: impl TransitionTo<PmTokenUpdated> for PmTokenStored
    - impl: impl Default for NetworkTokenizationBuilder<'_, TokenizeWithPmId>
    - impl: impl NetworkTokenizationBuilder<'a, TokenizeWithPmId>
    - impl: impl NetworkTokenizationBuilder<'a, PmFetched>
    - impl: impl NetworkTokenizationBuilder<'a, PmValidated>
    - impl: impl NetworkTokenizationBuilder<'a, PmAssigned>
    - impl: impl NetworkTokenizationBuilder<'a, PmTokenized>
    - impl: impl NetworkTokenizationBuilder<'a, PmTokenStored>
    - impl: impl NetworkTokenizationBuilder<'_, PmTokenUpdated>
    - impl: impl CardNetworkTokenizeExecutor<'_, domain::TokenizePaymentMethodRequest>

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

**crates/router/src/routes/app.rs**
  Modify existing code

**crates/router/src/routes/lock_utils.rs**
  Modify existing code

**crates/router/src/routes/payment_methods.rs**
  Add:
    - function: pub::tokenize_card_api
    - function: pub::tokenize_card_using_pm_api
    - function: pub::tokenize_card_batch_api

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

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

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

**crates/router/src/types/domain/payments.rs**
  Modify existing code

**crates/router_env/src/logger/types.rs**
  Modify existing code