Skip to content

SDK regeneration: July 2026 - #108

Merged
niteshsandal-merge merged 9 commits into
mainfrom
fern-bot/2026-01-21T19-46Z
Jul 16, 2026
Merged

SDK regeneration: July 2026#108
niteshsandal-merge merged 9 commits into
mainfrom
fern-bot/2026-01-21T19-46Z

Conversation

@fern-api

@fern-api fern-api Bot commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Automated SDK generation by Fern

fern-api Bot added 2 commits July 15, 2026 12:55
Generated by Fern
CLI Version: unknown
Generators:
  - fernapi/fern-java-sdk: 3.18.5
@fern-api
fern-api Bot force-pushed the fern-bot/2026-01-21T19-46Z branch from 3b20af2 to b239a38 Compare July 15, 2026 12:55
niteshsandal-merge and others added 7 commits July 15, 2026 10:27
okhttp3.internal.Util was removed in okhttp 5.x (pinned to 5.2.1).
Drop the import and use try-with-resources to close the source,
matching the non-legacy generated copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Guards the generate-unknown-as-json-node: false config: Employee
.getFieldMappings() must stay Optional<Map<String, Object>> and not
revert to a Jackson 2 JsonNode type in the public API. The explicit
local type is a compile-time tripwire — if a future regen flips the
flag back, test compilation fails. Also round-trips a realistic
field_mappings payload through ObjectMappers.JSON_MAPPER.

Protected in .fernignore so it survives regeneration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ports the language-agnostic custom tests the Python and Node SDKs
hand-maintain, adapted to Java and kept fully offline (no new deps;
HTTP-level cases use the JDK HttpServer):

- EnumForwardCompatTest: unknown enum values round-trip (deserialize,
  serialize, and in a model field) without throwing
- OneOfUnionTest: FK oneOf unions (AccountCompany) deserialize/serialize
  both the UUID-string and expanded-object variants
- ExpandQueryParamTest: guards the Merge-patched QueryStringMapper —
  expand joins as one CSV param, string==list equivalence, empty omitted,
  non-expand repeats, nested object bracket-key flattening
- DateTimeSerializationTest: OffsetDateTime serializes UTC as Z and
  preserves non-UTC instants
- ErrorResponseTest: 404/502 map to ApiError with status+body, non-JSON
  body doesn't crash, client honors the configured base URL
- EnvironmentRoutingTest: production/sandbox/EU/custom base-URL mapping

All protected in .fernignore so they survive regeneration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds list/retrieve/expand smoke tests for every connector resource in
ats, chat, crm, filestorage, hris, knowledgebase, and ticketing,
mirroring the per-category integration suites in the Python and Node
SDKs. Each class reads MERGE_API_KEY_<CATEGORY> / MERGE_ACCOUNT_TOKEN_
<CATEGORY> and fails fast if unset (matching the existing Java
integration test), builds the client, and exercises the real API.

- IntegrationSupport: shared helpers (smokeList, smokeListAndRetrieve,
  reflective idOf) so retrieve tests need no per-model imports
- retrieve/expand guard on empty result sets; list always asserts
- utility/admin resources (account-details, passthrough, scopes, issues,
  sync-status, etc.) and accounting are excluded
- ci.yml test job wired with the per-category secrets
- all files protected in .fernignore

These require the MERGE_API_KEY_<CATEGORY>/MERGE_ACCOUNT_TOKEN_<CATEGORY>
secrets to be set for the repo; without them the test job fails fast.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The API key is account-wide; only the linked-account token is
per-category. Route all seven new per-category integration tests
through one shared MERGE_API_KEY_SECONDARY (mirroring the primary/
secondary key pattern in the Python/Node SDKs) instead of a separate
MERGE_API_KEY_<CATEGORY> per category. The pre-existing
CursorPaginationIntegrationTest keeps MERGE_API_KEY_FILESTORAGE.
Per-category MERGE_ACCOUNT_TOKEN_<CATEGORY> tokens are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MERGE_ACCOUNT_TOKEN_FILESTORAGE is a linked-account token provisioned
under MERGE_API_KEY_FILESTORAGE, so pairing it with the shared
MERGE_API_KEY_SECONDARY fails auth. Use MERGE_API_KEY_FILESTORAGE for
the File Storage test, matching the token's org (same pairing as the
existing CursorPaginationIntegrationTest). The other six categories keep
MERGE_API_KEY_SECONDARY.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
filestorage Group.users is generated as List<String> (not widened to a
union), so expand=users returns full user objects the model cannot
deserialize (MismatchedInputException). child_groups IS widened
(GroupChildGroupsItem), so expand=child_groups deserializes correctly.
Switch the groups expand smoke test to child_groups.

Note: the Group.users expand gap is a real SDK modeling issue to fix at
the spec level (widen the field like child_groups).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@niteshsandal-merge niteshsandal-merge changed the title SDK regeneration SDK regeneration: July 2026 Jul 16, 2026
@niteshsandal-merge
niteshsandal-merge merged commit 801f99c into main Jul 16, 2026
3 checks passed
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