Issue:
[BUG] docs: `amount` and `currency` are optional in OpenAPI docs

### Bug Description

The error 
```json
{
    "error": {
        "type": "invalid_request",
        "message": "Missing required param: currency",
        "code": "IR_04"
    }
}
``` 
Is thrown when creating a payment with no fields in the request body.The request is created as per the openapi schema shown [here](https://app.swaggerhub.com/apis-docs/bernard-eugine/HyperswitchAPI/0.0.1)

### Expected Behavior

The openapi schema should accurately tell which fields are mandatory in the request.

### Actual Behavior

Openapi schema lists all fields as optional.

### Steps To Reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code or configuration to reproduce, if relevant.
1. Create a payment with no fields in the request body.


### Context For The Bug

_No response_

### Environment

Local environment.

### 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!

Resolution:
<think>
PR Context:
- Title: feat(documentation): add polymorphic `generate_schema` macro
- Merged: 2023-05-19T11:33:50Z
- Files changed: 16 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 -->
This PR will allow us to specify which fields are mandatory in `PaymentsRequest` for a particular flow. A new macro is added called `PolymorphicSchema` ( Name is open for discussion ), which will generate different schemas as specified by 
`#[generate_schemas(PaymentsCreateRequest)]` , where we can specify which fields will be mandatory in PaymentsCrea
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(documentation): add polymorphic `generate_schema` macro (#1183)
Co-authored-by: pixincreate@wor
Files to modify:


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

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

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

**crates/router/src/configs/settings.rs**
  Modify existing code

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

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

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

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

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

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

**crates/router_derive/src/lib.rs**
  Add:
    - function: pub::polymorphic_schema

**crates/router_derive/src/macros.rs**
  Remove:
    - mod: private::helpers
  Add:
    - mod: pub::generate_schema
    - mod: private::helpers

**crates/router_derive/src/macros/generate_schema.rs**
  Add:
    - function: private::get_inner_path_ident
    - function: private::get_struct_fields
    - function: pub::polymorphic_macro_derive_inner