Skip to content

fix(api): expand deepObject query parameters into per-key pairs - #6596

Draft
SaxonF wants to merge 1 commit into
notebooks/01-api-notebook-endpointsfrom
notebooks/02-api-deepobject-query
Draft

SaxonF wants to merge 1 commit into
notebooks/01-api-notebook-endpointsfrom
notebooks/02-api-deepobject-query

Conversation

@SaxonF

@SaxonF SaxonF commented Sep 14, 2026

Copy link
Copy Markdown

Object-valued query parameters in the v2 spec all declare style: deepObject, which puts one param[key]=value pair on the wire per entry. The client serialized them as a JSON blob instead, so a caller passing page: { size: 100, after: cursor } reached the server with no page size and no cursor at all — a paginated walk silently returned the first default-sized page forever, with no error to notice.

What changed

buildRequest now expands every object-valued query parameter into its own param[key]=value pairs. Arrays are excluded: those are the repeated-key form normalizeUrlValue already handles. Entries whose value is undefined are dropped rather than sent empty.

Reviewer notes

The expansion is applied to all object-valued query parameters rather than driven by a per-parameter style recorded in the generated contract, because every object-valued query parameter in the spec is deepObject. If that ever stops being true, the contract needs to carry the style and this needs to read it.

This also un-blocks the page / filter parameters on v2-list-organization-members, v2-list-organization-projects, and v2-list-organization-github-connections, which the README previously documented as unusable. The README section is updated accordingly.

@SaxonF
SaxonF added this pull request to stack #6600 September 14, 2026 11:20
Object-valued query parameters in the v2 spec all declare
`style: deepObject`, which puts one `param[key]=value` pair per entry on
the wire. The client serialized them as a JSON blob instead, so a caller
passing `page: { size: 100 }` reached the server with no page size and no
cursor at all — a paginated walk silently returned the first
default-sized page forever.

Expand every object-valued query parameter into its own pairs. Arrays are
untouched: those are the repeated-key form `normalizeUrlValue` already
handles.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@SaxonF
SaxonF force-pushed the notebooks/02-api-deepobject-query branch from a1c9cf8 to 3ee8ed9 Compare September 14, 2026 23:50
@SaxonF
SaxonF removed this pull request from stack #6600 September 15, 2026 00:30
@SaxonF
SaxonF added this pull request to stack #6612 September 15, 2026 00:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant