> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 5.14.8

**`(fix):`** Fix `construct_type` crash on bare unparameterized `dict`, `list`, and `set` types.
Previously, `get_args()` on a bare container returned an empty tuple, causing
`ValueError` (dict) or `IndexError` (list/set). Now falls back to returning
the object unchanged, matching `Dict[Any, Any]` / `List[Any]` / `Set[Any]` semantics.

## 5.14.7

**`(fix):`** Fix offset pagination so generated `list` endpoints emit a real `_has_next` instead of the
literal `True`. When the API declares `has-next-page` on the pagination config, the
generator now reads that response field (`bool(_parsed_response.<path>)`); otherwise it
falls back to `len(_items or []) > 0`, matching the TypeScript generator's
`(r?.data ?? []).length > 0` semantics.

Previously every offset-paginated method hardcoded `_has_next = True`, so
`while pager.has_next: pager = pager.next_page()` loops never terminated. `for x in pager`
worked only because the core paginator stops iteration when `get_next()` returns an empty
page.

Also harden the offset paginator against two latent crashes: nested `has-next-page` paths
(e.g. `$response.metadata.hasNext`) are now wrapped in a `_parsed_response.metadata is
not None` guard mirroring the cursor paginator, and `_has_next`/`_get_next` are
pre-initialized so endpoints with an optional response type no longer raise `NameError`
when the server returns a null body.