swagger-parser icon indicating copy to clipboard operation
swagger-parser copied to clipboard

Discriminator mapping refs (anyOf) & callback refs not processed

Open anthochristen opened this issue 1 year ago • 5 comments

When relative paths are used in discriminator mappings (anyOf) & callbacks the references are not processed.

Discriminator Mapping Ref sync issue:

  "requestBody": {
      "required": true,
      "content": {
          "application/json": {
              "schema": {
                  "anyOf": [
                      {
                          "$ref": "../components/schemas/adoption_request_for_bird.json"
                      },
                      {
                          "$ref": "../components/schemas/adoption_request_for_cat.json"
                      }
                  ],
                  "discriminator": {
                      "propertyName": "animal_type",
                      "mapping": {
                          "BIRD": "../components/schemas/adoption_request_for_bird.json",
                          "CAT": "../components/schemas/adoption_request_for_cat.json"
                      }
                  }
              }

In this case post the parsing the anyOf schemas becomes #/components/schemas/adoption_request_for_bird but the disciminator mapping still remains as ../components/schemas/adoption_request_for_bird.json. However the same works for OneOf.

Callback Ref issues:

{
  "{$request.body#/callback_url}/start": {
    "put": {
      "summary": "Does a callback",
      "description": "You know what it does",
      "requestBody": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "../../../schemas/payload.json"
            }
          }
        }
      },
      "responses": {
        "204": {
          "description": "Your server implementation should return this HTTP status code if the data was received successfully."
        }
      }
    }
  }
}

In this case the payload schema is incorrectly searched from the openapi.json base path instead of the relative path from the callback. Also this (looking in base path instead of relative path) seems to occur for parameter examples too.

anthochristen avatar May 01 '24 19:05 anthochristen

The relative refs issue in callbacks & parameter examples can be worked around by changing the ref path to be relative from base directory, instead of current directory.

But the Discriminator mapping ref issue breaks codegen, it is not able to resolve the Type. And creates some ERRORUNKNOWN class and compilation fails.

anthochristen avatar May 01 '24 19:05 anthochristen

@frantuma any updates on the PR for this issue?

anthochristen avatar May 06 '24 08:05 anthochristen

These issues are not present in the npm swagger-parser library.

anthochristen avatar May 08 '24 06:05 anthochristen

@frantuma / @gracekarina, Can you help check if #2087 help solve this as expected?

anthochristen avatar Jun 18 '24 04:06 anthochristen

@frantuma / @gracekarina, Can you help check if #2087 help solve this as expected?

ponelat I don't see any active changes to this repo, is this not actively maintined? Any help on this would be useful.

anthochristen avatar Oct 16 '24 05:10 anthochristen

fixed in #2087

frantuma avatar Oct 23 '24 09:10 frantuma