Skip to content

OAS 3.0.1 Dictionaries are parsed incorrectly #27

@TheMatrix97

Description

@TheMatrix97

Steps to reproduce

Define a OAS with the following definition endpoint definition:

"/price/getprice": {
      "get": {
        "tags": [
          "price-controller"
        ],
        "summary": "Get the price of data",
        "operationId": "getPrice",
        "parameters": [
          {
            "name": "parameters",
            "in": "query",
            "description": "characteristic parameters of the data",
            "required": true,
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "price of data",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },

Current Behavior

It generates the following service

export interface PriceControllerService {
  getPrice(parameters: {
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
    [additionalProperty: string]: any;
  }): Promise<string>;
}

This result is wrong! Based on the documentation https://swagger.io/docs/specification/data-models/dictionaries/ it should pass all the query attributes directly, instead of trying nest them under parameters: {}.
So when calling the endpoint -> /price/getprice?a=1&b=2 it throws the error MISSING_REQUIRED_PARAMETERS

{
    "error": {
        "statusCode": 400,
        "name": "BadRequestError",
        "message": "Required parameter parameters is missing!",
        "code": "MISSING_REQUIRED_PARAMETER"
    }
}

Expected Behavior

It should support Maps and Dictionaries and somehow allow dynamic parameters throught the query. Is there any solution implemented? Thanks!

Link to reproduction sandbox

Additional information

Related Issues

See Reporting Issues for more tips on writing good issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    Icebox

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions