Skip to content

Add response=sealed|plain mode for OpenAPI client generation#622

Open
dsudomoin wants to merge 1 commit intokora-projects:masterfrom
dsudomoin:feature/openapi-plain-response-mode-v2
Open

Add response=sealed|plain mode for OpenAPI client generation#622
dsudomoin wants to merge 1 commit intokora-projects:masterfrom
dsudomoin:feature/openapi-plain-response-mode-v2

Conversation

@dsudomoin
Copy link
Copy Markdown

Summary

  • When response=plain, client methods return success type directly instead of sealed interface
  • Error responses throw HttpClientDecodedResponseException (typed body) or HttpClientResponseException (raw)
  • Falls back to sealed mode when 2xx responses have different data types
  • Reimplemented from scratch for 2.0.0 architecture (JavaPoet/KotlinPoet code generators)

Changes

  • http-client-common: HttpClientDecodedResponseException + protected constructor in HttpClientResponseException
  • openapi-generator: ResponseStyle enum, response CLI option, plain response vendor extensions
  • Java generators: ApiResponseGenerator, ClientApiGenerator, ClientResponseMapperGenerator
  • Kotlin generators: Same as Java
  • Tests: petstoreV3_plain_response.yaml spec + plainResponse option

Supersedes #615 (was targeting 1.0, rewritten for master/2.0.0).

🤖 Generated with Claude Code

When response=plain is set, client methods return success type directly
instead of sealed interface wrapper. Error responses throw exceptions:
- HttpClientDecodedResponseException for errors with described schemas
- HttpClientResponseException.fromResponse() for unmatched errors

Falls back to sealed mode when 2xx responses have different data types.

Changes:
- Add HttpClientDecodedResponseException in http-client-common
- Add ResponseStyle enum and response CLI option to CodegenParams
- Add plain response vendor extensions in KoraCodegen.postProcessOperationsWithModels
- Update Java/Kotlin ApiResponseGenerator to skip plain response operations
- Update Java/Kotlin ClientApiGenerator for plain return types
- Update Java/Kotlin ClientResponseMapperGenerator with PlainResponseMapper
- Add petstoreV3_plain_response.yaml test spec and plainResponse test option

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dsudomoin
Copy link
Copy Markdown
Author

@GoodforGod @Squiry я переписал короче под 2.0 все это дело, теперь мусташа нет

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant