> 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.0 **`(feat):`** Add support for auto-generating an idempotency-key request header. This is now driven entirely by the IR (`SdkConfig.idempotencyKeyGeneration`), resolved once by the CLI from the `auto-generate-idempotency-key` generator config key, so the header name and the set of eligible HTTP methods are read identically across every generator. When enabled, the generated SDK attaches the configured header (defaulting to `Idempotency-Key`) on the configured methods (defaulting to `POST` and `PUT`) with a freshly generated UUIDv4 (`SecureRandom.uuid`) at request time. For endpoints that declare a matching idempotency header the caller-supplied value wins and the generated UUID is only the fallback. When the IR does not enable the feature, generated output is unchanged. **`(chore):`** Upgrade the generator to consume IR v67. ## 1.16.0 **`(feat):`** Add support for server URL variables (e.g. region/edge routing). Server variables defined on the API's environments are now exposed as optional string keyword arguments on the client initializer and interpolated into the base URL(s) when provided, falling back to each variable's default. Reserved option names are de-collided by prefixing with `server_url_` (e.g. a variable named `environment` is exposed as `server_url_environment`). ## 1.15.5 **`(fix):`** Fix smart-casing snake\_case names dropping the word boundary after a number. Sub-client accessors and methods like `ConversationsV2Configuration` now generate `conversations_v2_configuration` instead of `conversations_v2configuration`. ## 1.15.4 **`(fix):`** Decompress gzip and deflate encoded response bodies when the `Accept-Encoding` header is set explicitly on the request. `Net::HTTP` disables its transparent response decoding as soon as the caller sets an `Accept-Encoding` header, so responses to requests with a spec-defined `Accept-Encoding: gzip` header were previously returned as raw gzip bytes. ## 1.15.3 **`(fix):`** Fix `reference.md` endpoint titles to show path parameters in keyword-argument form (e.g. `fetch_store(store_id:)` instead of `fetch_store(store_id)`). Generated Ruby methods only accept keyword arguments, so the previous positional-looking titles were misleading.