Skip to content

feat!: regenerate the SDK from the enhanced generator - #131

Open
mridang wants to merge 20 commits into
mainfrom
feat/better-enhanced-sdks
Open

mridang wants to merge 20 commits into
mainfrom
feat/better-enhanced-sdks

Conversation

@mridang

@mridang mridang commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

Regenerates the SDK from the enhanced openapi-generator-plus, with bespoke authenticators ported to the new interfaces and full unit + integration suites passing locally.

Closes #23
Closes #80
Closes #10
Closes #78
Closes #125
Closes #99

@mridang
mridang force-pushed the feat/better-enhanced-sdks branch from 33c23ba to 405e89a Compare June 13, 2026 11:28
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Qodana for Python

It seems all right 👌

No new problems were found according to the checks applied

💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

@mridang
mridang force-pushed the feat/better-enhanced-sdks branch from 0b2b17f to 924fe78 Compare June 13, 2026 13:17
@mridang mridang changed the title feat: regenerate SDK from enhanced generator with ported authenticators feat!: regenerate the SDK from the enhanced generator Jun 13, 2026
@mridang
mridang force-pushed the feat/better-enhanced-sdks branch 7 times, most recently from 2cedac9 to 6e38d33 Compare June 14, 2026 13:59
@mridang
mridang requested a review from Copilot June 16, 2026 02:36

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Regenerate the client from openapi-generator-plus with modernized
templates, authenticators ported to the new interfaces, and house
tooling aligned to the generator's output.

BREAKING CHANGE: new generated API surface, a raised minimum runtime,
and updated dependencies; not source-compatible with the prior release.
Regenerated against the generator that masks the bearer token in
BearerAuthenticator.__repr__. Add a redaction test to each bespoke
authenticator's own test file instead of an aggregate file.
@mridang
mridang force-pushed the feat/better-enhanced-sdks branch from fff7d85 to d18d679 Compare September 17, 2026 02:10
Regenerated from the local openapi-generator-plus:enhanced image.

- operations declared security: [] now pass a NO_AUTH sentinel that suppresses
  the client authenticator instead of falling back to it
- bare type: number Decimal fields serialize as unquoted JSON numbers via the
  JsonNumber alias; format: float/double widen integral JSON via LaxFloat
- multipart model parts route through ObjectSerializer; raw bytes parts guess
  their Content-Type from the field name
- BOM-less charset=utf-16 response bodies decode big-endian per RFC 2781
- anyOf without a discriminator retains every matching variant; date-times
  serialize with millisecond precision

Known generator issue: operations that rely on the root-level global security
are also emitted as NO_AUTH, so the integration specs currently fail with 401.
Operations that inherit the spec's global security requirement now pass
None as the per-call auth argument, so base_api falls back to the
client-level authenticator instead of the NO_AUTH sentinel. The sentinel
is now confined to its base_api definition.
…pled test

The generated api modules imported the NO_AUTH sentinel but never used it, since
every Zitadel operation inherits the global security requirement and so passes
no per-call auth override at all.

The generated DefaultApiClient unit test imported PhotoMetadata, a model that
only exists in the generator's own petstore spec, raising ModuleNotFoundError.
The test now declares its model part locally, so it holds for any spec. No
public API surface changes.
soupsieve 2.8.4 carries GHSA-j934-xhv5-fg8f and GHSA-gjv8-xp57-g29c, both
polynomial-time ReDoS in its selector regexes, fixed in 2.9.0.

It reaches the lockfile transitively through the docs toolchain (sphinx and furo
pull beautifulsoup4), so it is a dev-group dependency and never shipped in the
published package. Dependency review scans the whole lockfile delta, so it
blocked the branch regardless.
Removes fixture vocabulary the templates had been carrying as literals. The
documentation referenced a petApi property and a Pet model this package has
never contained, and several tests named their fixtures after it. Those values
are now derived from the spec being generated, so they describe this SDK.

No public API changes: the remaining edits are comments and test fixture data.
Picks up the generated-documentation fixes. The examples previously described
APIs this package does not have: a RequestContext parameter no generator
emits, accessors under the wrong name, and error handling that could not run
as written.
The twelve generators had drifted into twelve dialects describing the same
SDK. Each sentence now has one wording across every language, varying only in
a token the language genuinely calls by another name.
The package manifest declared MIT beside an Apache-2.0 LICENSE file. It is
maintained by hand, so the generator could not correct it; it now declares
Apache-2.0, and proc.yml records the same for the generated metadata.
api_response and oauth2_auth_code_authenticator held ApiHttpResponse and
OAuth2AuthorizationCodeAuthenticator; each file is now named after its class.
Adds the network and timeout errors, drops the one-off error types and
keeps the Zitadel root name through errorPrefix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants