nav: title: Minimal Valid Filter order: 1
Minimal valid filters — selecting the right data
A filter defines which objects a DAQS rule applies to and- what data is passed to the validation step. This page explains the minimal valid filter - and the mandatory fields every filter must return. It builds directly on the filter concepts introduced in the core concepts section.
Why this matters
DAQS validations operate only on the data returned by the filter.
If required fields are missing from the filter output:
- results cannot be linked back to Revit elements
- errors may not appear in DAQS Assist
- users cannot understand or resolve issues
A filter that does not return the required fields produces an unusable rule, regardless of how correct the validation logic is.
Minimal working example
The smallest valid DAQS filter looks like this:
(
$[type = "FamilyInstance"].{
"id": id,
"type": type,
"name": name
}
)
This filter:
- selects objects by
type - returns the required fields
- produces output DAQS Assist can process and display
Every valid DAQS rule starts from this pattern.
Required fields
Every filter *must- return the following fields:
idtypename
These fields form the minimum data contract between the filter, DAQS Assist, and the end user.
Why these fields are mandatory
id — object identity
The id field uniquely identifies a Revit element.
It is used to:
- link validation results to the correct element
- avoid duplicate or ambiguous results
Without id, DAQS cannot indicate *which element- is incorrect.
type — object classification
The type field identifies what kind of object is being validated
(for example: FamilyInstance, Room, or Level).
It is used to:
- apply the correct handling logic in DAQS Assist
- display results consistently
Without type, DAQS cannot determine *what kind of object- it is dealing with.
name — human-readable identification
The name field provides a readable identifier for users.
It is used to:
- make validation results understandable
- avoid anonymous or ID-only error messages
Without name, users see technical identifiers only, which is not usable in practice.
The filter as a data contract
A filter defines a *data contract- between:
- the DAQS rule engine
- DAQS Assist
- the end user
At minimum, that contract must allow DAQS Assist to answer:
- Which element is this?
- What kind of object is it?
- What is it called?
That contract requires the following structure:
{
"id": "...",
"type": "...",
"name": "..."
}
All additional fields are optional and rule-specific.
Expanding the filter safely
Once the required fields are present, additional data may be added only if needed for validation.
Example:
(
$[type = "FamilyInstance"].{
"id": id,
"type": type,
"name": name,
"brandwerendEis": values."p_36ddc047-2c5f-4365-9bda-14ccea06b50f"
}
)
Rules:
- Never remove
id,type, orname - Only include fields required for validation
- Keep filter output as small as possible
Common beginner mistake
This filter looks correct, but is invalid:
$[type = "FamilyInstance"].values
Reason:
idis missingtypeis missingnameis missing
The filter output can no longer be traced back to Revit elements, making the rule unusable.
Rule of thumb
If a validation fails, DAQS Assist must be able to answer: Which element? What is it? What is it called?
That information must come from the filter output.
Always include:
idtypename