Skip to content

[pull] main from fern-api:main#587

Merged
pull[bot] merged 11 commits intocode:mainfrom
fern-api:main
Mar 17, 2026
Merged

[pull] main from fern-api:main#587
pull[bot] merged 11 commits intocode:mainfrom
fern-api:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 17, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Swimburger and others added 11 commits March 17, 2026 14:18
…umber (#13639)

Co-authored-by: Niels Swimberghe <3382717+Swimburger@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: fern-support <fern-support@users.noreply.github.com>
…emes (#12676)

* fix(cli): set auth on WebSocket channels based on AsyncAPI server security

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): set auth on WebSocket channels based on auth overrides or security schemes

The buildChannel.ts in openapi-ir-to-fern hardcoded auth: false for all WebSocket
channels. This fix checks if auth is configured via generators.yml auth overrides
or if the OpenAPI IR has security schemes detected from the AsyncAPI spec, and sets
auth accordingly. This is the primary code path used by fern ir for non-OSS workspaces.

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): use local variable to avoid biome non-null assertion lint error

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): only set auth on WebSocket channels when authOverrides is configured

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): pass authOverrides to AsyncAPIConverterContext for docs generation path

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* add changes

* feat(cli): implement convertAsyncApiSecuritySchemes and clean up debug logging

- Implement convertAsyncApiSecuritySchemes() to convert native AsyncAPI
  security schemes (bearer, basic, apiKey, oauth2) from
  components.securitySchemes to IR AuthScheme objects
- Add convertSecurityScheme() private method following the same pattern
  as the OpenAPI SecuritySchemeConverter
- Remove debug logging from ChannelConverter3_0 and AsyncAPIConverter
- This ensures auth schemes flow through to FDR registration so the
  docs explorer can render auth forms for WebSocket endpoints

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix: update assembly snapshot for WebSocket auth changes

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): use authOverrides only for channel auth in buildChannel.ts and regenerate exhaustive.json

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): use securitySchemes instead of global security for channel auth detection

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

* fix(cli): use authOverrides only for channel auth in buildChannel.ts

In namespaced workspaces, context.ir.securitySchemes and context.ir.security
are polluted by other specs (e.g., trains OAuth2 bleeds into AsyncAPI channels).
Only authOverrides reliably indicates per-channel auth intent. Revert assembly
snapshot to match main (auth: false).

Co-Authored-By: will.kendall@buildwithfern.com <wpk235@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: will.kendall@buildwithfern.com <wpk235@gmail.com>
Co-authored-by: willkendall01 <will.kendall@buildwithfern.com>
Co-authored-by: William Kendall <43126467+willkendall01@users.noreply.github.com>
…CS0426) (#13571)

* fix: add global:: prefix for C# namespace/type name collisions (CS0426)

When a client class name matches a namespace root segment (e.g., class
'Candid' in namespace 'Candid.Net'), the C# compiler resolves
'Candid.Net' as looking for a 'Net' member on the 'Candid' type instead
of the 'Candid.Net' namespace.

This fix:
- Adds hasTypeNamespaceConflict() to NameRegistry to detect when a type
  name shadows a namespace root segment
- Updates ClassReference.writeInternal to use global:: prefix when the
  first namespace segment has a type/namespace conflict
- Updates Writer.stringifyImports to add global:: to using directives
  when the namespace root is shadowed by a type
- Registers NUnit and OneOf as known built-in identifiers to prevent
  false positives on framework namespaces

* fix(csharp): add global:: prefix for namespace/type name collisions (CS0426)

* Qualify C# namespaces to avoid conflicts

Add a qualifyNamespace helper to Generation (and expose via WithGeneration) so codegen can prefix namespaces with `global::` when a root segment conflicts with a type, avoiding CS0426. Pass qualifyNamespace into template contexts in CsharpProject and update templates/generators to use it (tests, JsonAssert, Http/Request/WebSocket generators and request wrappers) so emitted C# references are qualified when necessary.

* fix(csharp): qualify remaining template namespaces and add regression seed fixture

- Apply qualifyNamespace() to OptionalComparer.Template.cs and AdditionalPropertiesComparer.Template.cs
- Add csharp-namespace-conflict seed fixture with client-class-name matching namespace root
  (namespace: Seed.CsharpNamespaceConflict, client-class-name: Seed) to prevent regressions

* refactor(csharp): use pre-qualified namespace properties and fix CS0118 in DynamicSnippets

- Add qualifiedRoot/qualifiedCore to namespaces object in generation-info.ts
- Update all template files to use namespaces.qualifiedRoot/qualifiedCore
- Update endpoint generators to use this.namespaces.qualifiedCore
- Remove qualifyNamespace lambda from CsharpProject.ts template contexts
- Remove unused qualifyNamespace method from WithGeneration base class
- Fix CS0118 in ClassReference.ts when class name matches namespace root
- Merge PR #13597 seed test and remove namespace-client-collision from allowedFailures
- Regenerate seed output for namespace-client-collision and namespace-conflict

---------

Co-authored-by: Naman Anand <info@buildwithfern.com>
… config samples (#13644)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…sh/subscribe operations (#13641)

Co-authored-by: Niels Swimberghe <3382717+Swimburger@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…3630)

* Downgrade OpenAPI v2.0 check from error to warning

Co-Authored-By: jon <jon@buildwithfern.com>

* Add changelog entry for Swagger v2 warning downgrade (4.31.2)

Co-Authored-By: jon <jon@buildwithfern.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…#13626)

Add stripDatetimeMilliseconds to Ruby generator's WireTestSetupGenerator,
following the same pattern used by Python and PHP generators. Ruby's
DateTime/Time ISO 8601 serialization omits zero fractional seconds, so
WireMock stubs need .000 stripped from datetime query parameter values
for exact-match to work.
…neration runner (#13645)

* fix: resolve custom LICENSE path relative to generators.yml instead of fern.config.json

Co-Authored-By: judah <jsklan.development@gmail.com>

* fix(cli): skip GitHub clone and post-generation pipeline in preview mode

Co-Authored-By: judah <jsklan.development@gmail.com>

* fix(cli): allow clone in preview mode, only skip post-generation push

Co-Authored-By: judah <jsklan.development@gmail.com>

* fix(cli): run replay in preview mode, only skip push and PR creation

Co-Authored-By: judah <jsklan.development@gmail.com>

* rip out preview changes

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…set (#13625)

fix(python): skip Docker container management when WIREMOCK_URL is set

When WIREMOCK_URL environment variable is already set (e.g., by a CI/CD
pipeline providing an external WireMock sidecar container), skip starting
and stopping the Docker container. This matches the behavior of the PHP,
Ruby, and Rust SDK generators.
@pull pull bot locked and limited conversation to collaborators Mar 17, 2026
@pull pull bot added the ⤵️ pull label Mar 17, 2026
@pull pull bot merged commit aabbce7 into code:main Mar 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants