Fails to generate full client with open api version 3.1.0
Closed this issue · 3 comments
jacoobes commented
OpenAPITools/openapi-generator#14232
Im getting this same issue while trying to generate a client in typescript.
I edited the json spec to use 3.0.3 (which seems to fix the generation and everything generates correctly)
If theres more info needed, im willing to share
Possible Solution
- spec json should be reverted to open api version 3.0.3?
I installed the open api generator via npm.
npm i @openapitools/openapi-generator-cli
The full script I run
openapi-generator-cli generate -i discord-api-spec/specs/openapi.json -g typescript-fetch -o openapi --skip-validate-spec --additional-properties=supportsES6=true,typescriptThreePlus=true
[main] ERROR i.s.v.p.reference.ReferenceVisitor - Error resolving schema #/components/schemas/ApplicationFormPartial
java.lang.IllegalArgumentException: Cannot deserialize value of type `java.lang.Boolean` from Object value (token `JsonToken.START_OBJECT`)
at [Source: UNKNOWN; byte offset: #UNKNOWN]
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4449)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4380)
at io.swagger.v3.core.util.ModelDeserializer.deserializeJsonSchema(ModelDeserializer.java:157)
at io.swagger.v3.core.util.ModelDeserializer.deserialize(ModelDeserializer.java:44)
at io.swagger.v3.core.util.ModelDeserializer.deserialize(ModelDeserializer.java:33)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4730)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3677)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3645)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.deepcopy(OpenAPI31Traverser.java:922)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema(OpenAPI31Traverser.java:914)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchemaMap(OpenAPI31Traverser.java:946)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema(OpenAPI31Traverser.java:800)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchemaMap(OpenAPI31Traverser.java:946)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema(OpenAPI31Traverser.java:800)
at io.swagger.v3.parser.reference.ReferenceVisitor.resolveSchemaRef(ReferenceVisitor.java:233)
at io.swagger.v3.parser.reference.ReferenceVisitor.visitSchema(ReferenceVisitor.java:120)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema(OpenAPI31Traverser.java:790)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMediaType(OpenAPI31Traverser.java:603)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap(OpenAPI31Traverser.java:933)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseRequestBody(OpenAPI31Traverser.java:346)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOperation(OpenAPI31Traverser.java:229)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traversePathItem(OpenAPI31Traverser.java:409)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap(OpenAPI31Traverser.java:933)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traversePaths(OpenAPI31Traverser.java:197)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOpenApi(OpenAPI31Traverser.java:124)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverse(OpenAPI31Traverser.java:65)
at io.swagger.v3.parser.reference.OpenAPIDereferencer31.dereference(OpenAPIDereferencer31.java:74)
at io.swagger.v3.parser.OpenAPIV3Parser.resolve(OpenAPIV3Parser.java:221)
at io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:178)
at io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:94)
at io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16)
at org.openapitools.codegen.config.CodegenConfigurator.toContext(CodegenConfigurator.java:589)
at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:647)
at org.openapitools.codegen.cmd.Generate.execute(Generate.java:479)
at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.Boolean` from Object value (token
`JsonToken.START_OBJECT`)
A5rocks commented
These shouldn't work in a 3.0.3 tool.
https://spec.openapis.org/oas/v3.0.3
For a specific example, the above disallows "null"
type. The specs use that type.
jacoobes commented
Ah interesting, you're right. I switched back to 3.1.0 , but it seems like I don't get the entire spec generated due to the above error
mbialecka commented
That tool doesn't support 3.1.0 unfortunately. We don't plan to downgrade our spec.