1.24.1
(fix): Fix file upload endpoints crashing with NoMethodError. Generated multipart code now
calls FormData#add_file instead of the non-existent to_form_data_part, file arrays
add one part per file, and declared MIME types are forwarded as content_type:.
FormData#add_file also accepts a file path String (matching the generated method
signatures), reading the file contents and deriving the filename from the path.
Non-file multipart properties are now added unless the value is nil, so false and
0 are no longer silently dropped while an explicitly-passed nil is still omitted
rather than sent as an empty part.
(fix): Deserialize non-object JSON response bodies. Endpoints whose response is a top-level
list, map, set, primitive, or unknown JSON value previously returned nil; they now
parse the body and coerce it to the declared type. Bodies are parsed with
symbolize_names: true to match Model.load, so an unknown value is symbol-keyed
wherever it appears; maps whose keys coerce to Integer keep string keys, since JSON
object keys are always strings and a Symbol cannot coerce to Integer. A named type
behind an optional/nullable wrapper now deserializes through .load like a bare
named type, so a union member is resolved instead of the body reaching the caller as
raw parsed JSON. Every successful response with an empty body (including named types)
returns nil instead of raising JSON::ParserError.
(fix): Preserve false values in model fields. Previously Model#initialize used || to
coalesce values, so any boolean field set to false was dropped and never serialized
(e.g. users.update(blocked: false) sent an empty body).