FilterClauseInput
input type
One structured-filter clause: field must be on the family's DECLARED filterable roster (taught in the listing's own doc — an unknown field's refusal re-teaches it); op must fit the field's kind (text contains/begins_with · enum/ref any_of · date on/before/after/between · number/money eq/lt/gt/between · flag is); values carries 1..25 strings — exactly ONE for the single-value operators, exactly TWO ordered low,high for between, one-or-more for any_of. Value grammars: dates are calendar days YYYY-MM-DD (the executor owns the UTC day window); number/money are decimal strings (compared exactly, never floated); flags are true/false; refs are ids; enum tokens must be of the declared vocabulary. Every violation refuses VALIDATION/INVALID NAMING the problem — the op stays String (not an enum) precisely so the refusal can TEACH instead of a transport parse error.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
field | String String! | yes | No further notes. |
op | String String! | yes | No further notes. |
values | String [String!]! | yes | No further notes. |