1.2.0

(feat): Add maxRetries custom config option to override the default maximum number of retries for failed requests. The default remains 2 when not specified.

1.1.13

(chore): Remove legacy dollar-sign workaround in generated CI workflow now that Eta template engine does not interpret ${} syntax.

1.1.12

(chore): Migrate template engine from lodash to Eta for consistency with other generators.


1.3.0-rc.0

(feat): Upgrade to IR v66 which compresses the IR Name type, reducing IR size and increasing performance.


1.1.11

(chore): Change default rubocopVariableNumberStyle from snake_case to normalcase, so field names with embedded digits (e.g., recaptcha_v2, office365) no longer trigger RuboCop warnings by default.

1.1.10

(fix): Add explicit return in Boolean.coerce for TrueClass/FalseClass branch and suppress RuboCop Lint/Void warnings on bare value expressions in the utils coerce fallback paths.

1.1.9

(chore): Add rubocopVariableNumberStyle config option to control RuboCop Naming/VariableNumber style. Supported values: snake_case (default, requires underscores before numbers like recaptcha_v_2), normalcase (allows numbers without underscores like recaptcha_v2, office365), or disabled. This allows APIs with field names containing embedded digits to configure the appropriate style.


1.1.8

(fix): Support multiple Basic Auth schemes with AuthSchemesRequirement.Any. When an API defines more than one basic auth scheme (e.g., accountId/authToken and apiKey/apiKeySecret), the generated client now produces conditional if/elsif blocks that check which credential pair was provided and sets the Authorization header accordingly. Previously, only the first basic auth scheme was used.

1.1.7

(fix): Add explicit base64 gem dependency for APIs using Basic Auth. The gemspec now conditionally includes spec.add_dependency "base64" when the API definition contains a basic auth scheme, ensuring the Base64.strict_encode64 call in the generated client works on all Ruby versions where base64 is a bundled gem.


1.1.6

(chore): Pretty-print generated wiremock-mappings.json with 2-space indentation to reduce diff sizes on subsequent SDK generations.

1.1.5

(fix): Prevent additional_headers in request options from overriding SDK-set headers such as Authorization, Content-Type, and SDK metadata. Headers set by the SDK or the API definition are now protected (case-insensitively) and silently filtered from additional_headers.

(fix): Reject HTTP URLs for non-localhost hosts. Requests to http:// URLs now raise ArgumentError unless the host is localhost, 127.0.0.1, or [::1], preventing accidental transmission of authentication credentials in plaintext.

(fix): Explicitly set verify_mode = OpenSSL::SSL::VERIFY_PEER on HTTPS connections. This was already the Ruby default but is now stated in code to satisfy security audits.


1.1.4

(fix): Add Basic Auth support. Previously, the generated client did not accept username/password constructor parameters and did not set the Authorization: Basic <base64> header on outgoing requests. The client now accepts username/password keyword arguments and wires them into the Authorization header automatically.


1.1.3

(fix): Thread endpoint ID through dynamic snippet generator to differentiate generated snippets by endpoint.


1.1.2

(fix): Fix pagination query parameter key mismatch. Query parameters were initialized with string keys but pagination iterator blocks used symbol keys, causing duplicate parameters to be sent (e.g., page=0&page=0) which resulted in 400 errors.

(fix): URI-encode path parameters before interpolation into URL paths. Resource IDs containing reserved URI characters (e.g., pipes, spaces) now work correctly instead of raising URI::InvalidURIError.


1.1.1

(fix): Strip zero-millisecond datetime values from WireMock stub query parameters. Ruby’s DateTime/Time ISO 8601 serialization omits zero fractional seconds (e.g., 2024-09-08T12:00:00Z), but mock-utils generates values with .000Z (e.g., 2024-09-08T12:00:00.000Z). WireMock’s equalTo matcher is exact-match, so the stubs never fired for datetime query parameters. This follows the same pattern used by the Python and PHP generators.


1.1.0

(feat): Add omitFernHeaders configuration option. When enabled, Fern platform headers (X-Fern-Language, X-Fern-SDK-Name, X-Fern-SDK-Version, User-Agent) are omitted from generated SDK requests.