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 5ea4a08a1a34..11691abbedb7 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 @@ -19,6 +19,7 @@ import io.swagger.v3.core.util.Json; import io.swagger.v3.oas.models.*; +import io.swagger.v3.oas.models.callbacks.Callback; import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.RequestBody; @@ -29,6 +30,7 @@ import org.slf4j.LoggerFactory; import java.util.*; +import java.util.stream.Collectors; public class InlineModelResolver { private OpenAPI openapi; @@ -64,7 +66,20 @@ private void flattenPaths(OpenAPI openAPI) { for (String pathname : paths.keySet()) { PathItem path = paths.get(pathname); + List operations = new ArrayList<>(path.readOperations()); + + // Include callback operation as well for (Operation operation : path.readOperations()) { + Map callbacks = operation.getCallbacks(); + if (callbacks != null) { + operations.addAll(callbacks.values().stream() + .flatMap(callback -> callback.values().stream()) + .flatMap(pathItem -> pathItem.readOperations().stream()) + .collect(Collectors.toList())); + } + } + + for (Operation operation : operations) { flattenRequestBody(openAPI, pathname, operation); flattenParameters(openAPI, pathname, operation); flattenResponses(openAPI, pathname, operation);