OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.81k stars 6.58k forks source link

[BUG][typescript-fetch] Error generating types with OAS 3.1 #18207

Closed gianlucaparadise closed 6 months ago

gianlucaparadise commented 7 months ago

Bug Report Checklist

Description

I want to generate typescript models from an OpenAPI 3.1.0 schema using the typescript-fetch generator. I'm not specifying any paths in the schema since I want to use the OpenAPI Document to generate reusable components.

Please consider that starting from Open API 3.1.0, paths property is optional (ref):

An OpenAPI Document now requires at least one of paths, components or webhooks to exist at the top level. While previous versions required paths, now a valid OpenAPI Document can describe only webhooks, or even only reusable components. Thus, an OpenAPI Document no longer necessarily describes an API.

openapi-generator version

7.5.0-SNAPSHOT

OpenAPI declaration file content or url

This is an example of a schema causing the bug.

openapi: 3.1.0
info:
  title: Example of specs for reusable components
  version: master

components:
  schemas:
    Planet:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PlanetType'
        name:
          type: string
    PlanetType:
      type: string
      enum:
        - SATURN
        - MARS
        - EARTH
      default: EARTH

I validated this file using:

docker run --rm \
  -v ${PWD}:/local openapitools/openapi-generator-cli validate \
  -i /local/openapi_example.yml

The output is:

Validating spec (/local/openapi_example.yml) Warnings:

  • Unused model: PlanetType
  • Unused model: Planet

[info] Spec has 2 recommendation(s).

Generation Details

The output is the following list of files:

.openapi-generator-ignore
index.ts
models/Planet.ts
models/PlanetType.ts
runtime.ts

From my tests it is correctly generating all the types, but it isn't working because the root index file index.ts is:

/* tslint:disable */
/* eslint-disable */
export * from './runtime';
export * from './models/index';

and there isn't any ./models/index.

Typescript gives me this error:

Cannot find module './models/index' or its corresponding type declarations. ts(2307)

Moreover, if I use withoutRuntimeChecks=true I don't get any type.

Steps to reproduce

You can reproduce the issue saving the schema above in a file called openapi_example.yml and running:

$ docker run --rm \
  -v ${PWD}:/local openapitools/openapi-generator-cli generate \
  -i /local/openapi_example.yml \
  -g typescript-fetch \
  -o /local/typescript \
  --additional-properties "supportsES6=true,withoutRuntimeChecks=false"
Related issues/PRs

None.

Suggest a fix

I don't have any suggestion, but I can work on a PR if you help me understand where should I apply the fix.

gianlucaparadise commented 7 months ago

In case it can be helpful, this is the output of the command using the --verbose flag:

Verbose output
[main] INFO  o.o.c.config.CodegenConfigurator - 
VERBOSE MODE: ON. Additional debug options are injected
 - [debugOpenAPI] prints the OpenAPI specification as interpreted by the codegen
 - [debugModels] prints models passed to the template engine
 - [debugOperations] prints operations passed to the template engine
 - [debugSupportingFiles] prints additional data passed to the template engine
[main] WARN  o.o.codegen.DefaultCodegen - Generation using 3.1.0 specs is in development and is not officially supported yet. If you would like to expedite development, please consider woking on the open issues in the 3.1.0 project: https://github.com/orgs/OpenAPITools/projects/4/views/1 and reach out to our team on Slack at https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g
[main] INFO  o.o.codegen.DefaultGenerator - Generating with dryRun=false
[main] INFO  o.o.codegen.DefaultGenerator - OpenAPI Generator: typescript-fetch (client)
[main] INFO  o.o.codegen.DefaultGenerator - Generator 'typescript-fetch' is considered stable.
{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "Example of specs for reusable components",
    "version" : "master"
  },
  "servers" : [ {
    "url" : "/"
  } ],
  "components" : {
    "schemas" : {
      "Planet" : {
        "properties" : {
          "type" : {
            "$ref" : "#/components/schemas/PlanetType"
          },
          "name" : { }
        }
      },
      "PlanetType" : {
        "default" : "EARTH",
        "enum" : [ "SATURN", "MARS", "EARTH" ]
      }
    }
  }
}
[main] INFO  o.o.c.l.AbstractTypeScriptClientCodegen - Hint: Environment variable 'TS_POST_PROCESS_FILE' (optional) not defined. E.g. to format the source code, please try 'export TS_POST_PROCESS_FILE="/usr/local/bin/prettier --write"' (Linux/Mac)
[main] INFO  o.o.c.l.AbstractTypeScriptClientCodegen - Note: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI).
[main] WARN  o.o.codegen.DefaultCodegen - Generation using 3.1.0 specs is in development and is not officially supported yet. If you would like to expedite development, please consider woking on the open issues in the 3.1.0 project: https://github.com/orgs/OpenAPITools/projects/4/views/1 and reach out to our team on Slack at https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g
[main] INFO  o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[main] INFO  o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[main] INFO  o.o.codegen.TemplateManager - writing file /local/typescript/models/Planet.ts
[main] INFO  o.o.codegen.TemplateManager - writing file /local/typescript/models/PlanetType.ts
[main] INFO  o.o.codegen.DefaultGenerator - ############ Model info ############
[ {
  "importPath" : "models.Planet",
  "hasImports" : true,
  "model" : {
    "anyOf" : [ ],
    "oneOf" : [ ],
    "allOf" : [ ],
    "name" : "Planet",
    "classname" : "Planet",
    "classVarName" : "planet",
    "modelJson" : "{\n  \"properties\" : {\n    \"type\" : {\n      \"$ref\" : \"#/components/schemas/PlanetType\"\n    },\n    \"name\" : {\n      \"type\" : \"string\"\n    }\n  }\n}",
    "dataType" : "object",
    "classFilename" : "Planet",
    "isAlias" : false,
    "isString" : false,
    "isInteger" : false,
    "isLong" : false,
    "isNumber" : false,
    "isNumeric" : false,
    "isFloat" : false,
    "isDouble" : false,
    "isDate" : false,
    "isDateTime" : false,
    "isDecimal" : false,
    "isShort" : false,
    "isUnboundedInteger" : false,
    "isPrimitiveType" : false,
    "isBoolean" : false,
    "isFreeFormObject" : false,
    "additionalPropertiesIsAnyType" : false,
    "vars" : [ {
      "openApiType" : "PlanetType",
      "baseName" : "type",
      "complexType" : "PlanetType",
      "getter" : "getType",
      "setter" : "setType",
      "dataType" : "PlanetType",
      "datatypeWithEnum" : "PlanetType",
      "name" : "type",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.type;",
      "baseType" : "PlanetType",
      "example" : "null",
      "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : false,
      "isModel" : false,
      "isContainer" : false,
      "isString" : false,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "allowableValues" : {
        "enumVars" : [ {
          "name" : "Saturn",
          "isString" : false,
          "value" : "'SATURN'"
        }, {
          "name" : "Mars",
          "isString" : false,
          "value" : "'MARS'"
        }, {
          "name" : "Earth",
          "isString" : false,
          "value" : "'EARTH'"
        } ],
        "values" : [ "SATURN", "MARS", "EARTH" ]
      },
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Type",
      "nameInSnakeCase" : "TYPE",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "PlanetType"
    }, {
      "openApiType" : "string",
      "baseName" : "name",
      "getter" : "getName",
      "setter" : "setName",
      "dataType" : "string",
      "datatypeWithEnum" : "string",
      "name" : "name",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.name;",
      "baseType" : "string",
      "example" : "null",
      "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : true,
      "isModel" : false,
      "isContainer" : false,
      "isString" : true,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Name",
      "nameInSnakeCase" : "NAME",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "string"
    } ],
    "allVars" : [ {
      "openApiType" : "PlanetType",
      "baseName" : "type",
      "complexType" : "PlanetType",
      "getter" : "getType",
      "setter" : "setType",
      "dataType" : "PlanetType",
      "datatypeWithEnum" : "PlanetType",
      "name" : "type",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.type;",
      "baseType" : "PlanetType",
      "example" : "null",
      "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : false,
      "isModel" : false,
      "isContainer" : false,
      "isString" : false,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "allowableValues" : {
        "enumVars" : [ {
          "name" : "Saturn",
          "isString" : false,
          "value" : "'SATURN'"
        }, {
          "name" : "Mars",
          "isString" : false,
          "value" : "'MARS'"
        }, {
          "name" : "Earth",
          "isString" : false,
          "value" : "'EARTH'"
        } ],
        "values" : [ "SATURN", "MARS", "EARTH" ]
      },
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Type",
      "nameInSnakeCase" : "TYPE",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "PlanetType"
    }, {
      "openApiType" : "string",
      "baseName" : "name",
      "getter" : "getName",
      "setter" : "setName",
      "dataType" : "string",
      "datatypeWithEnum" : "string",
      "name" : "name",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.name;",
      "baseType" : "string",
      "example" : "null",
      "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : true,
      "isModel" : false,
      "isContainer" : false,
      "isString" : true,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Name",
      "nameInSnakeCase" : "NAME",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "string"
    } ],
    "requiredVars" : [ ],
    "optionalVars" : [ {
      "openApiType" : "PlanetType",
      "baseName" : "type",
      "complexType" : "PlanetType",
      "getter" : "getType",
      "setter" : "setType",
      "dataType" : "PlanetType",
      "datatypeWithEnum" : "PlanetType",
      "name" : "type",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.type;",
      "baseType" : "PlanetType",
      "example" : "null",
      "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : false,
      "isModel" : false,
      "isContainer" : false,
      "isString" : false,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "allowableValues" : {
        "enumVars" : [ {
          "name" : "Saturn",
          "isString" : false,
          "value" : "'SATURN'"
        }, {
          "name" : "Mars",
          "isString" : false,
          "value" : "'MARS'"
        }, {
          "name" : "Earth",
          "isString" : false,
          "value" : "'EARTH'"
        } ],
        "values" : [ "SATURN", "MARS", "EARTH" ]
      },
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Type",
      "nameInSnakeCase" : "TYPE",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "PlanetType"
    }, {
      "openApiType" : "string",
      "baseName" : "name",
      "getter" : "getName",
      "setter" : "setName",
      "dataType" : "string",
      "datatypeWithEnum" : "string",
      "name" : "name",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.name;",
      "baseType" : "string",
      "example" : "null",
      "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : true,
      "isModel" : false,
      "isContainer" : false,
      "isString" : true,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Name",
      "nameInSnakeCase" : "NAME",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "string"
    } ],
    "readOnlyVars" : [ ],
    "readWriteVars" : [ {
      "openApiType" : "PlanetType",
      "baseName" : "type",
      "complexType" : "PlanetType",
      "getter" : "getType",
      "setter" : "setType",
      "dataType" : "PlanetType",
      "datatypeWithEnum" : "PlanetType",
      "name" : "type",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.type;",
      "baseType" : "PlanetType",
      "example" : "null",
      "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : false,
      "isModel" : false,
      "isContainer" : false,
      "isString" : false,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "allowableValues" : {
        "enumVars" : [ {
          "name" : "Saturn",
          "isString" : false,
          "value" : "'SATURN'"
        }, {
          "name" : "Mars",
          "isString" : false,
          "value" : "'MARS'"
        }, {
          "name" : "Earth",
          "isString" : false,
          "value" : "'EARTH'"
        } ],
        "values" : [ "SATURN", "MARS", "EARTH" ]
      },
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Type",
      "nameInSnakeCase" : "TYPE",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "PlanetType"
    }, {
      "openApiType" : "string",
      "baseName" : "name",
      "getter" : "getName",
      "setter" : "setName",
      "dataType" : "string",
      "datatypeWithEnum" : "string",
      "name" : "name",
      "defaultValue" : "undefined",
      "defaultValueWithParam" : " = data.name;",
      "baseType" : "string",
      "example" : "null",
      "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "required" : false,
      "deprecated" : false,
      "hasMoreNonReadOnly" : false,
      "isPrimitiveType" : true,
      "isModel" : false,
      "isContainer" : false,
      "isString" : true,
      "isNumeric" : false,
      "isInteger" : false,
      "isShort" : false,
      "isLong" : false,
      "isUnboundedInteger" : false,
      "isNumber" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDecimal" : false,
      "isByteArray" : false,
      "isBinary" : false,
      "isFile" : false,
      "isBoolean" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isUuid" : false,
      "isUri" : false,
      "isEmail" : false,
      "isPassword" : false,
      "isNull" : false,
      "isVoid" : false,
      "isFreeFormObject" : false,
      "isAnyType" : false,
      "isArray" : false,
      "isMap" : false,
      "isEnum" : false,
      "isInnerEnum" : false,
      "isEnumRef" : false,
      "isReadOnly" : false,
      "isWriteOnly" : false,
      "isNullable" : false,
      "isSelfReference" : false,
      "isCircularReference" : false,
      "isDiscriminator" : false,
      "isNew" : false,
      "vars" : [ ],
      "requiredVars" : [ ],
      "vendorExtensions" : { },
      "hasValidation" : false,
      "isInherited" : false,
      "nameInPascalCase" : "Name",
      "nameInSnakeCase" : "NAME",
      "uniqueItems" : false,
      "isXmlAttribute" : false,
      "isXmlWrapped" : false,
      "additionalPropertiesIsAnyType" : false,
      "hasVars" : false,
      "hasRequired" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "hasMultipleTypes" : false,
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isEntity" : false,
      "isUniqueId" : false,
      "keepAsJSObject" : false,
      "isReservedRecordField" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isEnumOrRef" : false,
      "hasItems" : false,
      "iexclusiveMaximum" : false,
      "datatype" : "string"
    } ],
    "parentVars" : [ ],
    "parentRequiredVars" : [ ],
    "nonNullableVars" : [ ],
    "mandatory" : [ ],
    "allMandatory" : [ ],
    "imports" : [ "PlanetType" ],
    "hasVars" : true,
    "emptyVars" : false,
    "hasMoreModels" : false,
    "hasEnums" : false,
    "isEnum" : false,
    "hasValidation" : false,
    "isNullable" : false,
    "hasRequired" : false,
    "hasOptional" : true,
    "isArray" : false,
    "hasChildren" : false,
    "isMap" : false,
    "isNull" : false,
    "isVoid" : false,
    "isDeprecated" : false,
    "hasReadOnly" : false,
    "hasOnlyReadOnly" : false,
    "vendorExtensions" : { },
    "hasMultipleTypes" : false,
    "testCases" : { },
    "schemaIsFromAdditionalProperties" : false,
    "isBooleanSchemaTrue" : false,
    "isBooleanSchemaFalse" : false,
    "isAdditionalPropertiesTrue" : false,
    "uniqueItems" : false,
    "exclusiveMinimum" : false,
    "exclusiveMaximum" : false,
    "isModel" : true,
    "hasDiscriminatorWithNonEmptyMapping" : false,
    "isAnyType" : false,
    "isUuid" : false,
    "isUri" : false,
    "modelImports" : [ ],
    "isEntity" : false,
    "hasReturnPassthroughVoid" : false,
    "dateType" : false,
    "dateTimeType" : false,
    "isBinary" : false,
    "isByteArray" : false,
    "isClassnameSanitized" : false,
    "hasItems" : false
  }
}, {
  "importPath" : "models.PlanetType",
  "hasImports" : false,
  "model" : {
    "anyOf" : [ ],
    "oneOf" : [ ],
    "allOf" : [ ],
    "name" : "PlanetType",
    "classname" : "PlanetType",
    "classVarName" : "planetType",
    "modelJson" : "{\n  \"type\" : \"string\",\n  \"default\" : \"EARTH\",\n  \"enum\" : [ \"SATURN\", \"MARS\", \"EARTH\" ]\n}",
    "dataType" : "string",
    "classFilename" : "PlanetType",
    "isAlias" : false,
    "isString" : true,
    "isInteger" : false,
    "isLong" : false,
    "isNumber" : false,
    "isNumeric" : false,
    "isFloat" : false,
    "isDouble" : false,
    "isDate" : false,
    "isDateTime" : false,
    "isDecimal" : false,
    "isShort" : false,
    "isUnboundedInteger" : false,
    "isPrimitiveType" : false,
    "isBoolean" : false,
    "isFreeFormObject" : false,
    "additionalPropertiesIsAnyType" : false,
    "vars" : [ ],
    "allVars" : [ ],
    "requiredVars" : [ ],
    "optionalVars" : [ ],
    "readOnlyVars" : [ ],
    "readWriteVars" : [ ],
    "parentVars" : [ ],
    "parentRequiredVars" : [ ],
    "nonNullableVars" : [ ],
    "allowableValues" : {
      "values" : [ "SATURN", "MARS", "EARTH" ],
      "enumVars" : [ {
        "name" : "Saturn",
        "isString" : false,
        "value" : "'SATURN'"
      }, {
        "name" : "Mars",
        "isString" : false,
        "value" : "'MARS'"
      }, {
        "name" : "Earth",
        "isString" : false,
        "value" : "'EARTH'"
      } ]
    },
    "mandatory" : [ ],
    "allMandatory" : [ ],
    "imports" : [ ],
    "hasVars" : false,
    "emptyVars" : false,
    "hasMoreModels" : false,
    "hasEnums" : false,
    "isEnum" : true,
    "hasValidation" : false,
    "isNullable" : false,
    "hasRequired" : false,
    "hasOptional" : false,
    "isArray" : false,
    "hasChildren" : false,
    "isMap" : false,
    "isNull" : false,
    "isVoid" : false,
    "isDeprecated" : false,
    "hasReadOnly" : false,
    "hasOnlyReadOnly" : true,
    "vendorExtensions" : { },
    "hasMultipleTypes" : false,
    "testCases" : { },
    "schemaIsFromAdditionalProperties" : false,
    "isBooleanSchemaTrue" : false,
    "isBooleanSchemaFalse" : false,
    "isAdditionalPropertiesTrue" : false,
    "uniqueItems" : false,
    "exclusiveMinimum" : false,
    "exclusiveMaximum" : false,
    "isModel" : false,
    "hasDiscriminatorWithNonEmptyMapping" : false,
    "isAnyType" : false,
    "isUuid" : false,
    "isUri" : false,
    "modelImports" : [ ],
    "isEntity" : false,
    "hasReturnPassthroughVoid" : false,
    "dateType" : false,
    "dateTimeType" : false,
    "isBinary" : false,
    "isByteArray" : false,
    "isClassnameSanitized" : false,
    "hasItems" : false
  }
} ]
[main] INFO  o.o.codegen.DefaultGenerator - ############ Operation info ############
[ ]
[main] INFO  o.o.codegen.DefaultGenerator - ############ Operation info ############
[ ]
[main] INFO  o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[main] INFO  o.o.codegen.DefaultGenerator - ############ Supporting file info ############
{
  "appVersion" : "master",
  "withoutRuntimeChecks" : "false",
  "generatorClass" : "org.openapitools.codegen.languages.TypeScriptFetchClientCodegen",
  "prefixParameterInterfaces" : false,
  "apiFolder" : "apis",
  "generateModelDocs" : true,
  "generateModelTests" : true,
  "generateApiTests" : true,
  "lambda" : {
    "lowercase" : { },
    "uppercase" : { },
    "snakecase" : { },
    "titlecase" : { },
    "kebabcase" : { },
    "camelcase" : { },
    "pascalcase" : { },
    "uncamelize" : { },
    "forwardslash" : { },
    "backslash" : { },
    "doublequote" : { },
    "indented" : { },
    "indented_8" : { },
    "indented_12" : { },
    "indented_16" : { },
    "indented_star_1" : { },
    "indented_star_4" : { }
  },
  "generateModels" : true,
  "inputSpec" : "/local/openapi_example.yml",
  "host" : "localhost",
  "useSingleRequestParameter" : true,
  "models" : [ {
    "importPath" : "models.Planet",
    "hasImports" : true,
    "model" : {
      "anyOf" : [ ],
      "oneOf" : [ ],
      "allOf" : [ ],
      "name" : "Planet",
      "classname" : "Planet",
      "classVarName" : "planet",
      "modelJson" : "{\n  \"properties\" : {\n    \"type\" : {\n      \"$ref\" : \"#/components/schemas/PlanetType\"\n    },\n    \"name\" : {\n      \"type\" : \"string\"\n    }\n  }\n}",
      "dataType" : "object",
      "classFilename" : "Planet",
      "isAlias" : false,
      "isString" : false,
      "isInteger" : false,
      "isLong" : false,
      "isNumber" : false,
      "isNumeric" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isDecimal" : false,
      "isShort" : false,
      "isUnboundedInteger" : false,
      "isPrimitiveType" : false,
      "isBoolean" : false,
      "isFreeFormObject" : false,
      "additionalPropertiesIsAnyType" : false,
      "vars" : [ {
        "openApiType" : "PlanetType",
        "baseName" : "type",
        "complexType" : "PlanetType",
        "getter" : "getType",
        "setter" : "setType",
        "dataType" : "PlanetType",
        "datatypeWithEnum" : "PlanetType",
        "name" : "type",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.type;",
        "baseType" : "PlanetType",
        "example" : "null",
        "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : false,
        "isModel" : false,
        "isContainer" : false,
        "isString" : false,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "allowableValues" : {
          "enumVars" : [ {
            "name" : "Saturn",
            "isString" : false,
            "value" : "'SATURN'"
          }, {
            "name" : "Mars",
            "isString" : false,
            "value" : "'MARS'"
          }, {
            "name" : "Earth",
            "isString" : false,
            "value" : "'EARTH'"
          } ],
          "values" : [ "SATURN", "MARS", "EARTH" ]
        },
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Type",
        "nameInSnakeCase" : "TYPE",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "PlanetType"
      }, {
        "openApiType" : "string",
        "baseName" : "name",
        "getter" : "getName",
        "setter" : "setName",
        "dataType" : "string",
        "datatypeWithEnum" : "string",
        "name" : "name",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.name;",
        "baseType" : "string",
        "example" : "null",
        "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : true,
        "isModel" : false,
        "isContainer" : false,
        "isString" : true,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Name",
        "nameInSnakeCase" : "NAME",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "string"
      } ],
      "allVars" : [ {
        "openApiType" : "PlanetType",
        "baseName" : "type",
        "complexType" : "PlanetType",
        "getter" : "getType",
        "setter" : "setType",
        "dataType" : "PlanetType",
        "datatypeWithEnum" : "PlanetType",
        "name" : "type",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.type;",
        "baseType" : "PlanetType",
        "example" : "null",
        "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : false,
        "isModel" : false,
        "isContainer" : false,
        "isString" : false,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "allowableValues" : {
          "enumVars" : [ {
            "name" : "Saturn",
            "isString" : false,
            "value" : "'SATURN'"
          }, {
            "name" : "Mars",
            "isString" : false,
            "value" : "'MARS'"
          }, {
            "name" : "Earth",
            "isString" : false,
            "value" : "'EARTH'"
          } ],
          "values" : [ "SATURN", "MARS", "EARTH" ]
        },
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Type",
        "nameInSnakeCase" : "TYPE",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "PlanetType"
      }, {
        "openApiType" : "string",
        "baseName" : "name",
        "getter" : "getName",
        "setter" : "setName",
        "dataType" : "string",
        "datatypeWithEnum" : "string",
        "name" : "name",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.name;",
        "baseType" : "string",
        "example" : "null",
        "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : true,
        "isModel" : false,
        "isContainer" : false,
        "isString" : true,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Name",
        "nameInSnakeCase" : "NAME",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "string"
      } ],
      "requiredVars" : [ ],
      "optionalVars" : [ {
        "openApiType" : "PlanetType",
        "baseName" : "type",
        "complexType" : "PlanetType",
        "getter" : "getType",
        "setter" : "setType",
        "dataType" : "PlanetType",
        "datatypeWithEnum" : "PlanetType",
        "name" : "type",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.type;",
        "baseType" : "PlanetType",
        "example" : "null",
        "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : false,
        "isModel" : false,
        "isContainer" : false,
        "isString" : false,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "allowableValues" : {
          "enumVars" : [ {
            "name" : "Saturn",
            "isString" : false,
            "value" : "'SATURN'"
          }, {
            "name" : "Mars",
            "isString" : false,
            "value" : "'MARS'"
          }, {
            "name" : "Earth",
            "isString" : false,
            "value" : "'EARTH'"
          } ],
          "values" : [ "SATURN", "MARS", "EARTH" ]
        },
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Type",
        "nameInSnakeCase" : "TYPE",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "PlanetType"
      }, {
        "openApiType" : "string",
        "baseName" : "name",
        "getter" : "getName",
        "setter" : "setName",
        "dataType" : "string",
        "datatypeWithEnum" : "string",
        "name" : "name",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.name;",
        "baseType" : "string",
        "example" : "null",
        "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : true,
        "isModel" : false,
        "isContainer" : false,
        "isString" : true,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Name",
        "nameInSnakeCase" : "NAME",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "string"
      } ],
      "readOnlyVars" : [ ],
      "readWriteVars" : [ {
        "openApiType" : "PlanetType",
        "baseName" : "type",
        "complexType" : "PlanetType",
        "getter" : "getType",
        "setter" : "setType",
        "dataType" : "PlanetType",
        "datatypeWithEnum" : "PlanetType",
        "name" : "type",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.type;",
        "baseType" : "PlanetType",
        "example" : "null",
        "jsonSchema" : "{\n  \"$ref\" : \"#/components/schemas/PlanetType\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : false,
        "isModel" : false,
        "isContainer" : false,
        "isString" : false,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "allowableValues" : {
          "enumVars" : [ {
            "name" : "Saturn",
            "isString" : false,
            "value" : "'SATURN'"
          }, {
            "name" : "Mars",
            "isString" : false,
            "value" : "'MARS'"
          }, {
            "name" : "Earth",
            "isString" : false,
            "value" : "'EARTH'"
          } ],
          "values" : [ "SATURN", "MARS", "EARTH" ]
        },
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Type",
        "nameInSnakeCase" : "TYPE",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "PlanetType"
      }, {
        "openApiType" : "string",
        "baseName" : "name",
        "getter" : "getName",
        "setter" : "setName",
        "dataType" : "string",
        "datatypeWithEnum" : "string",
        "name" : "name",
        "defaultValue" : "undefined",
        "defaultValueWithParam" : " = data.name;",
        "baseType" : "string",
        "example" : "null",
        "jsonSchema" : "{\n  \"type\" : \"string\"\n}",
        "exclusiveMinimum" : false,
        "exclusiveMaximum" : false,
        "required" : false,
        "deprecated" : false,
        "hasMoreNonReadOnly" : false,
        "isPrimitiveType" : true,
        "isModel" : false,
        "isContainer" : false,
        "isString" : true,
        "isNumeric" : false,
        "isInteger" : false,
        "isShort" : false,
        "isLong" : false,
        "isUnboundedInteger" : false,
        "isNumber" : false,
        "isFloat" : false,
        "isDouble" : false,
        "isDecimal" : false,
        "isByteArray" : false,
        "isBinary" : false,
        "isFile" : false,
        "isBoolean" : false,
        "isDate" : false,
        "isDateTime" : false,
        "isUuid" : false,
        "isUri" : false,
        "isEmail" : false,
        "isPassword" : false,
        "isNull" : false,
        "isVoid" : false,
        "isFreeFormObject" : false,
        "isAnyType" : false,
        "isArray" : false,
        "isMap" : false,
        "isEnum" : false,
        "isInnerEnum" : false,
        "isEnumRef" : false,
        "isReadOnly" : false,
        "isWriteOnly" : false,
        "isNullable" : false,
        "isSelfReference" : false,
        "isCircularReference" : false,
        "isDiscriminator" : false,
        "isNew" : false,
        "vars" : [ ],
        "requiredVars" : [ ],
        "vendorExtensions" : { },
        "hasValidation" : false,
        "isInherited" : false,
        "nameInPascalCase" : "Name",
        "nameInSnakeCase" : "NAME",
        "uniqueItems" : false,
        "isXmlAttribute" : false,
        "isXmlWrapped" : false,
        "additionalPropertiesIsAnyType" : false,
        "hasVars" : false,
        "hasRequired" : false,
        "hasDiscriminatorWithNonEmptyMapping" : false,
        "hasMultipleTypes" : false,
        "schemaIsFromAdditionalProperties" : false,
        "isBooleanSchemaTrue" : false,
        "isBooleanSchemaFalse" : false,
        "isEntity" : false,
        "isUniqueId" : false,
        "keepAsJSObject" : false,
        "isReservedRecordField" : false,
        "dateType" : false,
        "dateTimeType" : false,
        "isEnumOrRef" : false,
        "hasItems" : false,
        "iexclusiveMaximum" : false,
        "datatype" : "string"
      } ],
      "parentVars" : [ ],
      "parentRequiredVars" : [ ],
      "nonNullableVars" : [ ],
      "mandatory" : [ ],
      "allMandatory" : [ ],
      "imports" : [ "PlanetType" ],
      "hasVars" : true,
      "emptyVars" : false,
      "hasMoreModels" : true,
      "hasEnums" : false,
      "isEnum" : false,
      "hasValidation" : false,
      "isNullable" : false,
      "hasRequired" : false,
      "hasOptional" : true,
      "isArray" : false,
      "hasChildren" : false,
      "isMap" : false,
      "isNull" : false,
      "isVoid" : false,
      "isDeprecated" : false,
      "hasReadOnly" : false,
      "hasOnlyReadOnly" : false,
      "vendorExtensions" : { },
      "hasMultipleTypes" : false,
      "testCases" : { },
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isAdditionalPropertiesTrue" : false,
      "uniqueItems" : false,
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "isModel" : true,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "isAnyType" : false,
      "isUuid" : false,
      "isUri" : false,
      "modelImports" : [ ],
      "isEntity" : false,
      "hasReturnPassthroughVoid" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isBinary" : false,
      "isByteArray" : false,
      "isClassnameSanitized" : false,
      "hasItems" : false
    }
  }, {
    "importPath" : "models.PlanetType",
    "hasImports" : false,
    "model" : {
      "anyOf" : [ ],
      "oneOf" : [ ],
      "allOf" : [ ],
      "name" : "PlanetType",
      "classname" : "PlanetType",
      "classVarName" : "planetType",
      "modelJson" : "{\n  \"type\" : \"string\",\n  \"default\" : \"EARTH\",\n  \"enum\" : [ \"SATURN\", \"MARS\", \"EARTH\" ]\n}",
      "dataType" : "string",
      "classFilename" : "PlanetType",
      "isAlias" : false,
      "isString" : true,
      "isInteger" : false,
      "isLong" : false,
      "isNumber" : false,
      "isNumeric" : false,
      "isFloat" : false,
      "isDouble" : false,
      "isDate" : false,
      "isDateTime" : false,
      "isDecimal" : false,
      "isShort" : false,
      "isUnboundedInteger" : false,
      "isPrimitiveType" : false,
      "isBoolean" : false,
      "isFreeFormObject" : false,
      "additionalPropertiesIsAnyType" : false,
      "vars" : [ ],
      "allVars" : [ ],
      "requiredVars" : [ ],
      "optionalVars" : [ ],
      "readOnlyVars" : [ ],
      "readWriteVars" : [ ],
      "parentVars" : [ ],
      "parentRequiredVars" : [ ],
      "nonNullableVars" : [ ],
      "allowableValues" : {
        "values" : [ "SATURN", "MARS", "EARTH" ],
        "enumVars" : [ {
          "name" : "Saturn",
          "isString" : false,
          "value" : "'SATURN'"
        }, {
          "name" : "Mars",
          "isString" : false,
          "value" : "'MARS'"
        }, {
          "name" : "Earth",
          "isString" : false,
          "value" : "'EARTH'"
        } ]
      },
      "mandatory" : [ ],
      "allMandatory" : [ ],
      "imports" : [ ],
      "hasVars" : false,
      "emptyVars" : false,
      "hasMoreModels" : false,
      "hasEnums" : false,
      "isEnum" : true,
      "hasValidation" : false,
      "isNullable" : false,
      "hasRequired" : false,
      "hasOptional" : false,
      "isArray" : false,
      "hasChildren" : false,
      "isMap" : false,
      "isNull" : false,
      "isVoid" : false,
      "isDeprecated" : false,
      "hasReadOnly" : false,
      "hasOnlyReadOnly" : true,
      "vendorExtensions" : { },
      "hasMultipleTypes" : false,
      "testCases" : { },
      "schemaIsFromAdditionalProperties" : false,
      "isBooleanSchemaTrue" : false,
      "isBooleanSchemaFalse" : false,
      "isAdditionalPropertiesTrue" : false,
      "uniqueItems" : false,
      "exclusiveMinimum" : false,
      "exclusiveMaximum" : false,
      "isModel" : false,
      "hasDiscriminatorWithNonEmptyMapping" : false,
      "isAnyType" : false,
      "isUuid" : false,
      "isUri" : false,
      "modelImports" : [ ],
      "isEntity" : false,
      "hasReturnPassthroughVoid" : false,
      "dateType" : false,
      "dateTimeType" : false,
      "isBinary" : false,
      "isByteArray" : false,
      "isClassnameSanitized" : false,
      "hasItems" : false
    }
  } ],
  "importFileExtension" : "",
  "appDescription" : "No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)",
  "contextPath" : "",
  "releaseNote" : "Minor update",
  "version" : "master",
  "apiInfo" : {
    "apis" : [ ]
  },
  "useSagaAndRecords" : false,
  "modelPropertyNaming" : "camelCase",
  "isOriginalModelPropertyNaming" : false,
  "generateWebhooks" : true,
  "hasOperationServers" : false,
  "generatedYear" : "2024",
  "openAPI" : {
    "openapi" : "3.1.0",
    "info" : {
      "title" : "Example of specs for reusable components",
      "version" : "master"
    },
    "servers" : [ {
      "url" : "/"
    } ],
    "components" : {
      "schemas" : {
        "Planet" : {
          "properties" : {
            "type" : {
              "$ref" : "#/components/schemas/PlanetType"
            },
            "name" : {
              "type" : "string"
            }
          }
        },
        "PlanetType" : {
          "type" : "string",
          "default" : "EARTH",
          "enum" : [ "SATURN", "MARS", "EARTH" ]
        }
      }
    }
  },
  "scheme" : "http",
  "modelPackage" : "models",
  "gitHost" : "github.com",
  "generateApis" : true,
  "basePathWithoutHost" : "",
  "servers" : [ {
    "url" : "",
    "variables" : [ ],
    "vendorExtensions" : { }
  } ],
  "hideGenerationTimestamp" : true,
  "unescapedAppDescription" : "No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)",
  "appName" : "Example of specs for reusable components",
  "generateApiDocs" : true,
  "generatorVersion" : "7.5.0-SNAPSHOT",
  "supportsES6" : true,
  "apiPackage" : "apis",
  "hasServers" : true,
  "basePath" : "http://localhost",
  "webhooks" : [ ],
  "gitRepoId" : "GIT_REPO_ID",
  "generatedDate" : "2024-03-25T17:19:25.243863630Z[Etc/UTC]",
  "appDescriptionWithNewLines" : "No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)",
  "gitUserId" : "GIT_USER_ID"
}
[main] INFO  o.o.codegen.TemplateManager - writing file /local/typescript/index.ts
[main] INFO  o.o.codegen.TemplateManager - writing file /local/typescript/runtime.ts
[main] INFO  o.o.codegen.TemplateManager - Skipped /local/typescript/.openapi-generator-ignore (Skipped by supportingFiles options supplied by user.)
[main] INFO  o.o.codegen.TemplateManager - writing file /local/typescript/.openapi-generator/VERSION
[main] INFO  o.o.codegen.TemplateManager - writing file /local/typescript/.openapi-generator/FILES
################################################################################
# Thanks for using OpenAPI Generator.                                          #
# Please consider donation to help us maintain this project 🙏                 #
# https://opencollective.com/openapi_generator/donate                          #
################################################################################
wing328 commented 7 months ago

if you revert the spec to openapi 3.0.1,, the output works as expected, right?

gianlucaparadise commented 7 months ago

if you revert the spec to openapi 3.0.1,, the output works as expected, right?

No, unfortunately it still doesn't work because paths is optional starting from OpenAPI 3.1.0 and Validation doesn't work. This is what I get:

Exception in thread "main" org.openapitools.codegen.SpecValidationException: There were issues with the specification. The option can be disabled via validateSpec (Maven/Gradle) or --skip-validate-spec (CLI).
 | Error count: 1, Warning count: 2
Errors: 
        -attribute paths is missing
Warnings: 
        -attribute paths is missing

        at org.openapitools.codegen.config.CodegenConfigurator.toContext(CodegenConfigurator.java:717)
        at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:744)
        at org.openapitools.codegen.cmd.Generate.execute(Generate.java:527)
        at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
        at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
gianlucaparadise commented 7 months ago

I fixed this issue with a PR: https://github.com/OpenAPITools/openapi-generator/pull/18256

@wing328 Can you help me with the review process?

gianlucaparadise commented 6 months ago

Thank you for fixing this issue, very appreciated! 🙏 Which version of openapi-generator should I use to find the fix?

macjohnny commented 6 months ago

@gianlucaparadise i think this should be in 7.5.0

gianlucaparadise commented 6 months ago

@macjohnny I tested the bug fix with 7.5.0 and I can't see it (Also because 7.5.0 has been released one week before we closed the PR)

Will it be included in 7.6.0? (I'm asking because I don't see any milestone attached to this issue)

Thank you for your work! 🙏

cc @wing328

macjohnny commented 5 months ago

@gianlucaparadise the releases are cut from the master branch, so it should be in the next release after this was merged