5.24.0

(feat): Add an opt-in optional-auth config flag. When enabled, client auth parameters (bearer token, basic auth username/password, header auth) are made optional even when the API spec mandates auth on all endpoints (isAuthMandatory=true). Auth headers are only sent when credentials are provided. Useful for hand-maintained wrapper clients that authenticate via external means (e.g. cloud provider credentials). Defaults to false, so existing behavior is unchanged.

5.23.0

(feat): Add an opt-in runtime_version config flag. When enabled, the SDK version reported in the telemetry headers (X-Fern-SDK-Version and the version segment of User-Agent) is resolved at runtime via importlib.metadata.version(<dist>) instead of being baked in as a literal at generation time. This lets the reported version track the actually-installed package version — for example when an external tool such as release-please sets the published version after generation — rather than a version the SDK may never publish. Falls back to the generation-time version when the distribution is not installed (e.g. running from source). Disabled by default, so existing generated output is unchanged, and subject to omit_fern_headers.

5.22.2

(fix): Fix multipart form list-of-primitive body properties being sent as a single JSON-encoded field instead of repeated form fields. A property such as Optional[List[str]] was serialized as json.dumps(jsonable_encoder(value)), producing one field whose value was the whole JSON array (e.g. keyterms=["a","b"]); servers that validate each item then rejected it. Such properties are now passed through jsonable_encoder and handed directly to httpx’s data=, emitting repeated fields (keyterms=a, keyterms=b). Lists of objects, maps, and other complex types remain JSON-encoded as before.