Skip to content

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

Merged
pull[bot] merged 30 commits into
code:mainfrom
fern-api:main
Jun 9, 2026
Merged

[pull] main from fern-api:main#780
pull[bot] merged 30 commits into
code:mainfrom
fern-api:main

Conversation

@pull

@pull pull Bot commented Jun 9, 2026

Copy link
Copy Markdown

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 : )

fern-support and others added 30 commits June 9, 2026 18:11
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…#16335)

* fix(go): generate compiling dynamic snippets for bytes request bodies

* chore: re-trigger CI (test-ete flaked on TS registry lookup)
…-body handling (#16403)

* fix(rust): use camelCase wire names in error field parsing and handle empty response bodies

- ErrorGenerator.ts: getStatusCodeFields now carries a wireName (camelCase)
  alongside each field's snake_case Rust name; buildSuccessConstruction and
  buildDynamicFieldAssignments use wireName for parsed.get() lookups so the
  generated code looks up "authType", "resourceId", "resourceType", etc.
  instead of the IR snake_case names that the API never sends
- http_client.rs (asIs template): parse_response and parse_response_raw now
  attempt serde_json::from_value(Value::Null) on an empty body rather than
  immediately returning Err, so endpoints returning 204 No Content or no body
  (e.g. HEAD) work correctly for unit-typed responses
- Updated all 9 ErrorGenerator snapshots to reflect the corrected wire keys

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(rust): derive error fields from IR type definition instead of hardcoded status-code map

resolveErrorFields() now reads errorDeclaration.type from the IR: if it resolves
to an object type, fields (name, wireName, type) are extracted directly from the
type's properties using getWireValue/snakeSafe, so the generated error parsing
code uses whatever field names and types the spec author actually defined.

Falls back to the existing hardcoded status-code map when no named object type
is present, so APIs without structured error types continue to work unchanged.

Also removes the name === "retry_after_seconds" string comparison in favour of
an extractionKind: "string" | "u64" discriminant derived from the TypeReference,
and consolidates all five callers (buildSuccessConstruction, buildFallbackConstruction,
buildDynamicFieldAssignments, buildMultiErrorMatchArm, buildErrorTypeMatchExpression)
onto the single resolveErrorFields() path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(rust): resolve versions.yml conflict, add unreleased changelog

---------

Co-authored-by: Naman Anand <info@buildwithfern.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…rovenance (#16404)

* fix(cli): populate repository.url in generated npm package.json for provenance

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: add repoUrl to test ResolvedOutputConfig objects

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: cade <info@buildwithfern.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
…120] (#16336)

* fix(swift): emit .rawValue for nullable enum query parameters

When a query parameter is a string-backed enum wrapped in Nullable<>,
the generator emitted .string($0) instead of .string($0.rawValue),
causing Swift compilation errors. This affected both Nullable<Enum>
(non-optional) and Nullable<Enum>? (optional) patterns.

The fix unwraps the Nullable wrapper before checking
resolvesToAnEnumWithRawValues, and adds the missing enum check
in the non-optional nullable code path.

Fixes FER-11120

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* ci: re-trigger CI (flaky test-ete timeout)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* Automated update of seed files

* Remove nullable-optional from allowed failures

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: kafkas <kafkas@users.noreply.github.com>
Co-authored-by: Anar Kafkas <anarkafkas@gmail.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
…ation, nested glue) (#16385)

* fix: three codegen bugs in CLI generator (multipart dep, mod.rs registration, nested glue)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(cli-generator): qualify nested SDK sub-clients through api::resources

The nested-glue fix emitted nested sub-client literals at
`api::<group>::<SubClient>`, but the leaf clients live under
`api::resources::<group>` and are not re-exported at the crate's
`api` root — only the top-level clients are. This caused E0433
'cannot find <group> in api' build failures for SDKs with 2+ level
nested groups. Qualify nested clients through `api::resources::`;
top-level clients are unchanged (they resolve via the api-root
re-export).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: cade <info@buildwithfern.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Cade Sarkin <cadesarkin@Cades-MacBook-Pro.local>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…error format strings (#16418)

- Wrap non-optional IR-derived error fields in Option to match constructor
  code that assigns None for missing fields (prevents type mismatch)
- Also handle nullable container type to avoid double Option wrapping
- Fix thiserror format strings: {{message}} -> {message} so field values
  are actually interpolated
- Update all test snapshots and seed fixtures
…16411)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Jun 9, 2026
@pull pull Bot added the ⤵️ pull label Jun 9, 2026
@pull pull Bot merged commit 7c238cb into code:main Jun 9, 2026
1 check failed
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