> 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.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).