diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index 777fed9b2cb4..a721feee8e1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -496,7 +496,23 @@ private void flattenContent(Content content, String name) { if (schema == null) { continue; } - String schemaName = resolveModelName(schema.getTitle(), name); // name example: testPost_request + // Check if schema has a $ref pointing to a component schema + // If so, prefer the referenced schema name over operation-based naming + String schemaName; + if (schema.get$ref() != null) { + String refName = ModelUtils.getSimpleRef(schema.get$ref()); + if (refName != null && openAPI.getComponents() != null && + openAPI.getComponents().getSchemas() != null && + openAPI.getComponents().getSchemas().containsKey(refName)) { + // Use the referenced schema name instead of operation-based name + schemaName = resolveModelName(schema.getTitle(), refName); + } else { + // Fallback to original behavior if ref doesn't point to a component schema + schemaName = resolveModelName(schema.getTitle(), name); + } + } else { + schemaName = resolveModelName(schema.getTitle(), name); // name example: testPost_request + } // Recursively gather/make inline models within this schema if any gatherInlineModels(schema, schemaName); if (isModelNeeded(schema)) { diff --git a/samples/client/echo_api/typescript-axios/build/api.ts b/samples/client/echo_api/typescript-axios/build/api.ts index 89ad20f49d80..7abe9f7beb2b 100644 --- a/samples/client/echo_api/typescript-axios/build/api.ts +++ b/samples/client/echo_api/typescript-axios/build/api.ts @@ -323,6 +323,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + const allowsAnonymous = true; localVarHeaderParameter['Accept'] = 'image/gif'; @@ -354,6 +355,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + const allowsAnonymous = true; localVarHeaderParameter['Content-Type'] = 'application/octet-stream'; localVarHeaderParameter['Accept'] = 'text/plain'; @@ -390,6 +392,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)(); + const allowsAnonymous = true; if (files) { files.forEach((element) => { @@ -430,6 +433,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)(); + const allowsAnonymous = true; if (myFile !== undefined) {