Skip to content

docs: data-api.mdx documents filter's rejection behaviour but not the repetition refusal PR #8004 adds #8005

Description

@hotlong

Filed unassigned and without a domain:* label — routing and grading are the triage seat's. Small, docs-only.

What is incomplete

content/docs/api/data-api.mdx is the page that documents the filter query parameter and its rejection behaviour specifically:

  • :22"filter | query | Filter expression (JSON). filters also accepted for backward compatibility. Malformed JSON is rejected with 400 INVALID_FILTER — never ignored."
  • :68"400 INVALID_FILTER rather than dropped, because a dropped filter would …"

PR #8004 (#7390) adds a second condition that answers 400 INVALID_FILTER on the same parameter: sending it more than once. Per the maintainer's 2026-08-11 ruling, a repeated ?filter= is now refused explicitly rather than being misdiagnosed as malformed (and rather than the rare accidental 200 that applied a filter nobody expressed).

⚠️The page is not wrong — nothing there claims malformedness is the only cause, and the malformed-JSON sentence stays true. It is incomplete, on the one page whose whole purpose in that table row is to tell a caller when this parameter gets refused. Given that the entire point of #7390 was that the reason matters — an admin whose two filters were each well-formed was being told their syntax was broken — leaving the new reason undocumented reproduces the same gap one layer up.

Suggested shape: one clause on :22 naming repetition alongside malformed JSON, matching the shipped message (Repeated "filter" query parameter — send exactly one).

Why it is filed rather than ridden along

PR #8004 was already reviewed, enqueued and awaiting checks when this was found. Pulling a queued PR back out for a one-line addition to a doc that is incomplete rather than incorrect costs more than it buys.

Note the PR did check docs before writing — content/docs/protocol/kernel/http-protocol.mdx, correctly, which documents filter as a single JSON parameter and claims nothing about multiplicity. data-api.mdx is the page that turned out to matter.

Related: the drift checker did not flag it

data-api.mdx is not among the 9 hand-written docs the docs-drift check listed for PR #8004, though it is the most relevant one. Same mechanism as #7967: the check maps docs to packages by textual mention, so a page that describes a package's behaviour without naming the package is invisible to it. Recorded here as a second instance rather than re-filed.

Found with a control (VALIDATION_ERROR → 4 files under content/docs/api/), so the enumeration above is a real absence-and-presence measurement, not a broken query.

Source

PM review of PR #8004 (#7390) by the domain:cli seat (#6024), against origin/main.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions