Skip to content

Default page_size for GET /admin/clients reduced to 100 — undocumented breaking change #4092

@nellynp

Description

@nellynp

Preflight checklist

Ory Network Project

No response

Describe the bug

In v2.3.0, GET /admin/clients returned all clients in a single page (the default page_size was large enough to cover all clients). After upgrading to v26.2.0, the default page_size is 100, silently truncating results for anyone with more than 100 registered clients.

v2.3.0 behavior:

Link: </admin/clients?page_size=160&page_token=...>; rel="first"
X-Total-Count: 160
→ All 160 clients returned in one response

v26.2.0 behavior:

Link: </admin/clients?page_size=100>; rel="first", </admin/clients?page_size=100&page_token=...>; rel="next"
→ Only first 100 clients returned, no error raised

This is a breaking change for any consumer with more than 100 clients that does not explicitly set page_size or handle page_token iteration. It is not mentioned in the upgrade notes for v25.4.0 or v26.2.0.

Additionally, the OpenAPI spec declares default: 250 for page_size while the actual runtime behavior is 100, which is an additional inconsistency.

Reproducing the bug

  1. Have more than 100 OAuth2 clients registered in Hydra
  2. Upgrade from v2.3.0 to v26.2.0
  3. Call GET /admin/clients without any query parameters
  4. Observe that only 100 clients are returned instead of all clients
  5. Check the Link response header:
    Link: </admin/clients?page_size=100>; rel="first", </admin/clients?page_size=100&page_token=...>; rel="next"
  6. Check X-Total-Count header — it reflects the real total, confirming results are truncated

For comparison, the same call on v2.3.0 returns all clients in a single response:
Link: </admin/clients?page_size=160&page_token=...>; rel="first"
X-Total-Count: 160

Relevant log output

Relevant configuration

Version

v26.2.0

On which operating system are you observing this issue?

None

In which environment are you deploying?

None

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is not working.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions