> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 1.17.7

**`(fix):`** Revert the smart-casing digit/word boundary behavior introduced in 1.15.5. snake\_case
names keep a digit run fused to the following word (`conversations_v2configuration`),
restoring pre-1.15.5 output. The behavior will become opt-in via the new
`smart-casing-digit-word-boundary` option in `generators.yml` once the generator
consumes the IR version that carries the setting.

## 1.17.6

**`(fix):`** Endpoints now send service- and endpoint-level headers whose types are literals
(e.g. `Accept-Encoding: literal<"gzip">`). Previously these headers were silently
dropped for endpoints without a request wrapper, and service-level literal headers
were never sent at all. Caller-supplied values via the request params still take
precedence over the literal defaults.

## 1.17.5

**`(fix):`** Cap generated type filenames at 100 characters so `gem build` no longer fails
with `Gem::Package::TooLongFileName` (RubyGems packages into a tar format whose
header caps filenames at 100 chars). Deeply nested inline types — such as
anonymous `oneOf` variants — could previously overflow this limit. When a name
is too long it is truncated and a short deterministic hash is appended to keep
it unique. This changes only the filename and its `require_relative`; the
module/class name is unchanged, so it is non-breaking for consumers, who
reference the constant rather than the file.

## 1.17.4

**`(fix):`** Send request bodies declared with the `application/x-www-form-urlencoded` content type
(e.g. OAuth token endpoints) as form-urlencoded instead of JSON. A new
`Internal::UrlEncoded::Request` encodes the body with `URI.encode_www_form` and sets the
`Content-Type: application/x-www-form-urlencoded` header.

## 1.17.3

**`(fix):`** Expose non-literal global headers without a client default as root client
constructor parameters. Headers with a declared `env` default to that
environment variable (e.g. `version: ENV.fetch("MY_API_VERSION", nil)`), and
the header is only sent when the value is non-nil. Previously such headers
were omitted entirely and could only be sent via per-request
`additional_headers`.

## 1.17.2

**`(fix):`** Serialize request bodies declared as aliases of objects through the aliased
class so wire names are applied. Previously the raw params hash was sent,
so properties whose Ruby name differs from the API wire name (e.g.
`display_name` vs. `displayName`) were sent with the wrong key.

## 1.17.1

**`(fix):`** Send `grant_type: "client_credentials"` in the OAuth token request when the
token endpoint's `grant_type` property is a non-literal string. Previously the
property was omitted (when optional) or surfaced as a required constructor
parameter (when required), so token endpoints that require `grant_type`
rejected the request.