{"version":"2.1.113","anchor":"where-clause-predicate-language","canonical_anchor":"where-clause-predicate-language","heading":"Where Clause Predicate Language","tier":null,"area":null,"scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.113\/e\/where-clause-predicate-language","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.113","markdown":"### Where Clause Predicate Language\n\n**What**\n\nA new structured filtering syntax for specifying conditions on event triggers and data queries, supporting a rich set of comparison operators.\n\n**Details**\n\n- Operators: `is`, `is_not` (single values), `one_of`, `none_of` (list values), `starts_with`, `contains`, `matches`\n- Provides clear error messages for malformed predicates:\n- `where: empty list for \"field\"` \u2014 when a list operator receives an empty array\n- `where: unknown op \"op\"` \u2014 for unrecognized operators\n- `where: \"field\" takes a single value; use one_of\/none_of for a list` \u2014 for type mismatches\n- `where: must be a map of field\u2192predicate, or a list of single-field maps` \u2014 for structural errors\n- Scalars and objects cannot be mixed: `where: \"field\" mixes scalars and objects; use {one_of: [...]} or an op object`\n\n**Evidence**\n\nPredicate operator definitions (search for `\"one_of\"` and `\"none_of\"`)"}