What systems are
In Brick, a System groups equipment that works together for a common purpose. A chilled water system includes the chiller, chilled water pumps, and the cooling coils they serve. A hot water system includes the boiler, hot water pumps, and heating coils.
Systems answer questions that feeds chains can’t easily express: “show me everything in the chilled water loop,” including pumps that don’t directly feed the chiller but are part of the same distribution system.
Query signature
system(
siteId: String!,
name: String,
nameMatch: NameMatch,
is: String,
hasProperty: String,
propertyValue: String
): [System!]!
Also available as a nested field on Building and Equipment (without siteId, since those are already scoped).
Arguments
| Argument | Type | Description |
|---|
siteId | String! | Required. Scopes the query to a specific site |
name | String | Filter by system name. Case-insensitive substring by default |
nameMatch | NameMatch | CONTAINS (default) or EXACT |
is | String | Brick class (e.g., Chilled_Water_System) |
hasProperty | String | Only systems with this property defined |
propertyValue | String | Exact match on property value (requires hasProperty) |
Return fields
| Field | Type | Description |
|---|
uri | String! | Full entity URI |
id | ID! | System identifier |
name | String! | System name |
type | String! | Brick class (e.g., Chilled_Water_System) |
ifcId | String | IFC model element ID. Links to the BIM model |
equipment | [Equipment!]! | Equipment in this system. Accepts name, nameMatch, is, recursive filters |
points | [Point!]! | Points associated with the system. Accepts name, nameMatch, is, recursive filters |
properties | [EntityProperty!]! | Static metadata as structured objects (name, value, unit) |
Common system types
| Brick class | What it groups |
|---|
HVAC_System | All HVAC equipment in a building |
Chilled_Water_System | Chillers, CHW pumps, cooling coils, cooling towers |
Hot_Water_System | Boilers, HW pumps, heating coils |
Condenser_Water_System | Cooling towers, CW pumps, chiller condensers |
Air_System | AHUs, VAVs, and the ductwork connecting them |
Lighting_System | Luminaires, lighting controllers, occupancy sensors |
Electrical_System | Meters, switchgear, transformers, UPS |
Examples
Find systems by name
{
system(name: "Hot Water") {
name
type
equipment { name type }
}
}
{
"data": {
"system": [
{
"name": "Hot Water System",
"type": "Hot_Water_System",
"equipment": [
{ "name": "TE01-XX-HIU-001", "type": "Heat_Exchanger" },
{ "name": "TE01-XX-HWP-001", "type": "Hot_Water_Pump" },
{ "name": "TE01-XX-HWP-002", "type": "Hot_Water_Pump" }
]
}
]
}
}
List all systems in a building
{
building(id: "B001") {
systems {
name
type
}
}
}
System with its supply temperature sensors
{
system(name: "Hot Water") {
name
type
points(is: "Supply_Air_Temperature_Sensor") {
name
type
unit
}
}
}
Query a specific system type
{
system(is: "Chilled_Water_System") {
name
equipment {
name
type
points(is: "Temperature_Sensor") {
name
type
unit
}
}
}
}
This returns every piece of equipment in the chilled water loop with its temperature sensors: chillers, pumps, cooling towers, all in one query.
Filter equipment within a system
Use name, nameMatch, and is on the nested equipment field:
{
system(name: "Hot Water") {
name
equipment(is: "Pump") {
name
type
}
}
}
Returns only pumps within the hot water system.
Recursive: all points across system equipment
{
system(name: "Hot Water") {
name
points(recursive: true, is: "Temperature_Sensor") {
name
type
unit
}
}
}
recursive: true on system points collects points from all equipment in the system, not just points directly on the system entity.
Filter systems by property
{
system(hasProperty: "designCapacity") {
name
type
properties { name value unit }
}
}
Which systems does this equipment belong to?
{
equipment(id: "TE01-XX-AHU-001") {
name
systems {
name
type
}
}
}
Equipment.systems returns all systems the equipment belongs to without filter arguments. It does not support name, nameMatch, or is parameters.
Systems vs feeds chains
| Use case | Use systems | Use feeds/traversal |
|---|
| ”Everything in the chilled water loop” | system(is: "Chilled_Water_System") | Harder, since pumps may not be in the feeds chain |
| ”What feeds this zone?” | Use upstream | More precise. Follows the specific path |
| ”All equipment in the HVAC plant” | system(is: "HVAC_System") | Would need multiple traversals from different roots |
| ”Impact of chiller failure” | Use downstream | Better. Shows the specific propagation path |
Systems group by purpose. Feeds chains follow medium flow. Use both.