feat(core): add api for hypersense integration

# Hypersense
### Description:
#### An AI Ops tool build for Payments Cost Observability
- Monitor your overall transaction payment-related costs across multiple regions, PSPs, and businesses. 
- Obtain actionable insights to optimise costs, track cost deviations, and effectively audit PSP invoices.

Learn more: [Hypersense site](https://www.hypersense.io/)
## Purpose of Change
To integrate hypersense with hyperswitch dashboard.


## Proposed Changes
- add endpoints for, get `token`, `verify_token` and `signout` for `hypersense` integration.
- limit the scope of the use of token by introducing a new type of token, `ExternalToken` 
containing enum `ExternalServiceType`

## Additional Changes
#### `external_service_auth` module and `ExternalToken`
- `external_service_auth` is a generic service used to issue, verify and invalidate `ExternalToken`,
which can be associated with an external service using the enum field `external_service_type: ExternalServiceType` in the `ExternalToken`.
- Essentially a new service can be integrated by simply creating routes and handlers, and calling the same core functions 
specified in `external_service_auth` modules.

<think>
PR Context:
- Title: feat(core): add hypersense integration api 
- Merged: 2025-02-19T08:52:58Z
- Files changed: 14 files
- Commits: 18 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
<!-- Describe your changes in detail -->
#### Endpoints
- GET `hypersense/token` (returns hypersense token).
- POST `hypersense/verify_token` (verifies the token passed as payload).
- POST `hypersense/signout` (invalidates the token).

 
### Additional Changes

- [x] This PR 
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(core): add hypersense integration api  (#7218)
Co-authored-by: hyperswitch-bot[bot] <148525504+
Files to modify:


**crates/api_models/src/events.rs**
  Add:
    - mod: pub::external_service_auth

**crates/api_models/src/events/external_service_auth.rs**
  Add:
    - function: private::get_api_event_type
    - function: private::get_api_event_type
    - function: private::get_api_event_type
    - function: private::get_api_event_type
    - impl: impl ApiEventMetric for ExternalTokenResponse
    - impl: impl ApiEventMetric for ExternalVerifyTokenRequest
    - impl: impl ApiEventMetric for ExternalVerifyTokenResponse
    - impl: impl ApiEventMetric for ExternalSignoutTokenRequest

**crates/api_models/src/external_service_auth.rs**
  Add:
    - function: pub::get_user_id
    - struct: pub::ExternalTokenResponse
    - struct: pub::ExternalVerifyTokenRequest
    - struct: pub::ExternalSignoutTokenRequest
    - enum: pub::ExternalVerifyTokenResponse
    - impl: impl ExternalVerifyTokenResponse

**crates/api_models/src/lib.rs**
  Add:
    - mod: pub::external_service_auth

**crates/common_utils/src/events.rs**
  Modify existing code

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

**crates/router/src/core/external_service_auth.rs**
  Add:
    - function: pub::generate_external_token
    - function: pub::signout_external_token
    - function: pub::verify_external_token

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

**crates/router/src/routes.rs**
  Add:
    - mod: pub::hypersense

**crates/router/src/routes/app.rs**
  Add:
    - function: pub::server
    - struct: pub::Hypersense
    - impl: impl Hypersense

**crates/router/src/routes/hypersense.rs**
  Add:
    - function: pub::get_hypersense_token
    - function: pub::signout_hypersense_token
    - function: pub::verify_hypersense_token

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

**crates/router/src/services/authentication.rs**
  Add:
    - function: pub::new_token
    - function: pub::check_service_type
    - struct: pub::ExternalToken
    - enum: pub::ExternalServiceType
    - impl: impl ExternalToken

**crates/router_env/src/logger/types.rs**
  Modify existing code
{"issue_number": 7217, "pr_number": 7218, "commits_count": 1, "files_changed": 14, "response_length": 2990, "file_count": 16, "needs_breakdown": true}