Skip to navigation

1.30.1

(fix): The additional_body_parameters request option is now applied to request bodies. Previously it was documented on every endpoint method but silently ignored. Extra properties are merged into the serialized JSON (or form-urlencoded) body using their API wire-format names, override SDK-set fields with the same name, and create a body when the endpoint has none (except GET and HEAD requests, which are still sent without a body). Multipart (file upload) requests are not affected.

1.30.0

(fix): Fix pagination for endpoints whose cursor or offset lives in the request body (e.g. $request.cursor or $request.options.offset). The generated iterators previously referenced an undeclared query_params and raised NameError on first use; they now read and advance the body property, creating omitted parent objects.

(fix): Nil values are no longer serialized as {} (nil.to_h), and optional<nullable<T>> fields keep their nullable metadata so explicit nil values are preserved, while omitted optional fields are still left out of the request.

(fix): Add a timeout: option to the root client and honor request_options[:timeout_in_seconds] per request (an explicit 0 is respected). The timeout also applies to OAuth and inferred-auth token requests. Net::HTTP open/read/write timeouts are raised as the SDK’s TimeoutError. README timeout snippets now show the real API.

(fix): Endpoints returning text, bytes, or a file download now return the raw response body instead of nil.

(fix): Generated .rubocop.yml disables Style/CommentAnnotation (API docstrings such as “Note:” tripped it), and the generated retry tests follow the retryStatusCodes setting.

(feat): Error responses now expose the body parsed into the endpoint’s declared error type as error.body (exact status codes take precedence over 4XX/5XX wildcards). error.message and error.code are unchanged; body is nil when no error type matches or the body is not valid JSON.

(feat): Add the opt-in wrapInvalidJsonResponses config. When enabled, a 2xx response whose body is not valid JSON raises Errors::ResponseError (with the raw body and status code) instead of leaking JSON::ParserError.

(feat): Add the opt-in requireAuthCredentials config. When enabled, the client constructor raises ArgumentError if a bearer or header credential is neither passed nor set in its environment variable, instead of sending an empty auth header.

1.29.0

(feat): Add the opt-in allowCustomHttpClient config. When enabled, the generated client accepts an http_client: keyword — any object responding to request(url, http_request) and returning a Net::HTTPResponse — that replaces the SDK’s built-in Net::HTTP transport. This lets callers configure proxies, custom TLS, connection reuse, or request/response interceptors (logging, signing, header injection). Retries still wrap the custom client, and it is also used for OAuth / inferred-auth token requests. The custom client owns its own connection settings, including timeouts.