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.