> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/dsx-exchange/llms.txt.
> For full documentation content, see https://docs.nvidia.com/dsx-exchange/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/dsx-exchange/_mcp/server.

# Schemas

## MetadataBase

Minimum fields present on every metadata message.

| Name         | Type   | Required | Description                                                       |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `objectType` | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment. |
| `pointType`  | string | Yes      | Canonical point type. Matches the pointType MQTT topic segment.   |

***

## IntegrationPublisherFields

Fields added to metadata for integration-published points. Integrations MUST publish values to the exact topic corresponding to `integration` — do not construct it independently.

| Name          | Type   | Required | Description                                                   |
| ------------- | ------ | -------- | ------------------------------------------------------------- |
| `integration` | string | Yes      | Integration identifier responsible for publishing this value. |

***

## StateTextField

Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## EquipmentPointEngUnit

Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

***

## EquipmentMeasurementModeBase

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## rackLocationIdentifiers

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |

***

## PowerMeterIdentifiers

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |

***

## EquipmentCommonFields

Optional fields common to all generic equipment metadata, regardless of identifier mode.

| Name          | Type              | Required | Description                                                        |
| ------------- | ----------------- | -------- | ------------------------------------------------------------------ |
| `processArea` | array\&lt;string> | No       | List of process areas or sub-system locations within the equipment |

***

## EquipmentNamedObjectMode

**Object Mode**: use when the object is identified directly
by name and ID.

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

***

## EquipmentAssociateMode

*Associate Mode*: use when the object is referenced via an
association identifier.

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## EquipmentIntegrationIdentifierFields

Extends EquipmentIntegrationMetadataBase: adds `integration` for integration-published equipment points.

| Name          | Type   | Required | Description                                        |
| ------------- | ------ | -------- | -------------------------------------------------- |
| `integration` | string | Yes      | Integration responsible for publishing this value. |

***

## SystemIntegrationIdentifiers

Required `integration` field for integration-published System metadata messages.

| Name          | Type   | Required | Description             |
| ------------- | ------ | -------- | ----------------------- |
| `integration` | string | Yes      | Integration identifier. |

***

## RackMetadataBase

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                                       |
| ------------------ | ------ | -------- | ----------------------------------------------------------------- |
| `objectType`       | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment. |
| `pointType`        | string | Yes      | Canonical point type. Matches the pointType MQTT topic segment.   |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS.                   |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.                            |

***

## RackIntegrationMetadataBase

Fields added to metadata for integration-published points. Integrations MUST publish values to the exact topic corresponding to `integration` — do not construct it independently.

| Name               | Type   | Required | Description                                                       |
| ------------------ | ------ | -------- | ----------------------------------------------------------------- |
| `objectType`       | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment. |
| `pointType`        | string | Yes      | Canonical point type. Matches the pointType MQTT topic segment.   |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS.                   |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.                            |
| `integration`      | string | Yes      | Integration identifier responsible for publishing this value.     |

***

## PowerMeterMetadataBase

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                                       |
| ------------ | ----------------- | -------- | ----------------------------------------------------------------- |
| `objectType` | string            | Yes      | Canonical object type. Matches the objectType MQTT topic segment. |
| `pointType`  | string            | Yes      | Canonical point type. Matches the pointType MQTT topic segment.   |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.                     |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.               |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter.         |

***

## EquipmentMetadataBase

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## EquipmentIntegrationMetadataBase

Extends EquipmentIntegrationMetadataBase: adds `integration` for integration-published equipment points.

Extends EquipmentIntegrationMetadataBase: adds `integration` for integration-published equipment points.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SystemIntegrationMetadataBase

Required `integration` field for integration-published System metadata messages.

| Name          | Type   | Required | Description                                                       |
| ------------- | ------ | -------- | ----------------------------------------------------------------- |
| `objectType`  | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment. |
| `pointType`   | string | Yes      | Canonical point type. Matches the pointType MQTT topic segment.   |
| `integration` | string | Yes      | Integration identifier.                                           |

***

## RackBmsPointType

Valid pointType values for BMS-published Rack points.

**Allowed values:** `RackLiquidSupplyTemperature`, `RackLiquidReturnTemperature`, `RackLiquidFlow`, `RackLiquidDifferentialPressure`, `RackLiquidDifferentialPressureSp`, `RackControlValvePosition`, `RackPower`, `RackLeakDetect`, `RackLeakSensorFault`, `RackLiquidIsolationStatus`, `RackElectricalIsolationStatus`

***

## RackIntegrationPointType

Valid pointType values for Integration-published Rack points.

**Allowed values:** `RackLeakDetectTray`, `RackLiquidIsolationRequest`, `RackElectricalIsolationRequest`

***

## PowerMeterPointType

Valid pointType values for PowerMeter points (all BMS-published).

**Allowed values:** `Voltage`, `PowerFactor`, `Frequency`, `ApparentPower`, `ActivePower`, `Current`, `CurrentLimit`, `PhaseCurrent`

***

## EquipmentBmsPointType

Valid pointType values for BMS-published generic equipment points.

**Allowed values:** `LiquidTemperature`, `LiquidDifferentialPressure`, `LiquidFlow`, `LiquidPressure`, `Status`, `Available`, `ValvePosition`, `PumpSpeed`, `FanSpeed`, `DamperPosition`, `AirTemperature`, `AirDifferentialPressure`, `AirFlow`, `AirPressure`, `Sound`, `GenericPoint`

***

## EquipmentIntegrationPointType

Valid pointType values for Integration-published generic equipment points.

**Allowed values:** `LiquidTemperatureSpRequest`

***

## EquipmentObjectType

Valid objectType values for generic equipment channels.

**Allowed values:** `CDU`, `CoolingTower`, `HX`, `CRAH`, `CRAC`, `AHU`, `Chiller`, `BESS`, `UPS`, `ATS`, `Generator`, `Shunt`, `Breaker`, `Valve`, `Pump`, `Fan`, `Damper`, `Sensor`, `Tank`, `GenericObject`

***

## SystemBmsPointType

Valid pointType values for BMS-published System points.

**Allowed values:** `HeartbeatTimestampBms`, `HeartbeatEchoBms`, `Status`, `Available`, `GenericPoint`

***

## SystemIntegrationPointType

Valid pointType values for Integration-published System points.

**Allowed values:** `HeartbeatTimestampIntegration`, `HeartbeatEchoIntegration`

***

## RackLiquidSupplyTemperatureFields

| Name         | Type   | Required | Description                           |
| ------------ | ------ | -------- | ------------------------------------- |
| `pointType`  | string | No       | Values: `RackLiquidSupplyTemperature` |
| `objectType` | string | No       | Values: `Rack`                        |
| `engUnit`    | string | Yes      | Values: `C`                           |

***

## RackLiquidReturnTemperatureFields

| Name         | Type   | Required | Description                           |
| ------------ | ------ | -------- | ------------------------------------- |
| `pointType`  | string | No       | Values: `RackLiquidReturnTemperature` |
| `objectType` | string | No       | Values: `Rack`                        |
| `engUnit`    | string | Yes      | Values: `C`                           |

***

## RackLiquidFlowFields

| Name         | Type   | Required | Description              |
| ------------ | ------ | -------- | ------------------------ |
| `pointType`  | string | No       | Values: `RackLiquidFlow` |
| `objectType` | string | No       | Values: `Rack`           |
| `engUnit`    | string | Yes      | Values: `LPM`            |

***

## RackLiquidDifferentialPressureFields

| Name         | Type   | Required | Description                              |
| ------------ | ------ | -------- | ---------------------------------------- |
| `pointType`  | string | No       | Values: `RackLiquidDifferentialPressure` |
| `objectType` | string | No       | Values: `Rack`                           |
| `engUnit`    | string | Yes      | Values: `kPa`                            |

***

## RackControlValvePositionFields

| Name         | Type   | Required | Description                        |
| ------------ | ------ | -------- | ---------------------------------- |
| `pointType`  | string | No       | Values: `RackControlValvePosition` |
| `objectType` | string | No       | Values: `Rack`                     |
| `engUnit`    | string | Yes      | Values: `%`                        |

***

## RackPowerFields

| Name         | Type   | Required | Description         |
| ------------ | ------ | -------- | ------------------- |
| `pointType`  | string | No       | Values: `RackPower` |
| `objectType` | string | No       | Values: `Rack`      |
| `engUnit`    | string | Yes      | Values: `kW`        |

***

## RackLeakDetectFields

0 = No Leak, 1 = Leak. No engUnit.

| Name         | Type                            | Required | Description                             |
| ------------ | ------------------------------- | -------- | --------------------------------------- |
| `pointType`  | string                          | No       | Values: `RackLeakDetect`                |
| `objectType` | string                          | No       | Values: `Rack`                          |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for leak detection. |

***

## RackLeakSensorFaultFields

0 = No Fault, 1 = Fault. No engUnit.

| Name         | Type                            | Required | Description                                       |
| ------------ | ------------------------------- | -------- | ------------------------------------------------- |
| `pointType`  | string                          | No       | Values: `RackLeakSensorFault`                     |
| `objectType` | string                          | No       | Values: `Rack`                                    |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for leak sensor fault status. |

***

## RackLiquidIsolationStatusFields

0=NotIsolated, 1=Isolated. No engUnit.

| Name         | Type                            | Required | Description                                      |
| ------------ | ------------------------------- | -------- | ------------------------------------------------ |
| `pointType`  | string                          | No       | Values: `RackLiquidIsolationStatus`              |
| `objectType` | string                          | No       | Values: `Rack`                                   |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for liquid isolation status. |

***

## RackElectricalIsolationStatusFields

0 = NotIsolated, 1 = Isolated. No engUnit.

| Name         | Type                            | Required | Description                                          |
| ------------ | ------------------------------- | -------- | ---------------------------------------------------- |
| `pointType`  | string                          | No       | Values: `RackElectricalIsolationStatus`              |
| `objectType` | string                          | No       | Values: `Rack`                                       |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for electrical isolation status. |

***

## RackLeakDetectTrayFields

0 = No Leak, 1 = Leak (tray sensor). No engUnit. Integration-published value.

| Name         | Type                            | Required | Description                                  |
| ------------ | ------------------------------- | -------- | -------------------------------------------- |
| `pointType`  | string                          | No       | Values: `RackLeakDetectTray`                 |
| `objectType` | string                          | No       | Values: `Rack`                               |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for tray leak detection. |

***

## RackLiquidIsolationRequestFields

0 = Not Requested, 1 = Requested, -1 = Unknown. Integration-published value.

| Name         | Type                            | Required | Description                                       |
| ------------ | ------------------------------- | -------- | ------------------------------------------------- |
| `pointType`  | string                          | No       | Values: `RackLiquidIsolationRequest`              |
| `objectType` | string                          | No       | Values: `Rack`                                    |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for liquid isolation request. |

***

## RackElectricalIsolationRequestFields

0 = Not Requested, 1 = Requested. Integration-published value.

| Name         | Type                            | Required | Description                                           |
| ------------ | ------------------------------- | -------- | ----------------------------------------------------- |
| `pointType`  | string                          | No       | Values: `RackElectricalIsolationRequest`              |
| `objectType` | string                          | No       | Values: `Rack`                                        |
| `stateText`  | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for electrical isolation request. |

***

## VoltageFields

| Name         | Type   | Required | Description          |
| ------------ | ------ | -------- | -------------------- |
| `pointType`  | string | No       | Values: `Voltage`    |
| `objectType` | string | No       | Values: `PowerMeter` |
| `engUnit`    | string | Yes      |                      |

***

## PowerFactorFields

Dimensionless 0–1. engUnit not required.

| Name         | Type   | Required | Description           |
| ------------ | ------ | -------- | --------------------- |
| `pointType`  | string | No       | Values: `PowerFactor` |
| `objectType` | string | No       | Values: `PowerMeter`  |

***

## FrequencyFields

| Name         | Type   | Required | Description          |
| ------------ | ------ | -------- | -------------------- |
| `pointType`  | string | No       | Values: `Frequency`  |
| `objectType` | string | No       | Values: `PowerMeter` |
| `engUnit`    | string | Yes      |                      |

***

## ApparentPowerFields

| Name         | Type   | Required | Description             |
| ------------ | ------ | -------- | ----------------------- |
| `pointType`  | string | No       | Values: `ApparentPower` |
| `objectType` | string | No       | Values: `PowerMeter`    |
| `engUnit`    | string | Yes      |                         |

***

## ActivePowerFields

| Name         | Type   | Required | Description           |
| ------------ | ------ | -------- | --------------------- |
| `pointType`  | string | No       | Values: `ActivePower` |
| `objectType` | string | No       | Values: `PowerMeter`  |
| `engUnit`    | string | Yes      |                       |

***

## CurrentFields

| Name         | Type   | Required | Description          |
| ------------ | ------ | -------- | -------------------- |
| `pointType`  | string | No       | Values: `Current`    |
| `objectType` | string | No       | Values: `PowerMeter` |
| `engUnit`    | string | Yes      |                      |

***

## CurrentLimitFields

| Name         | Type   | Required | Description            |
| ------------ | ------ | -------- | ---------------------- |
| `pointType`  | string | No       | Values: `CurrentLimit` |
| `objectType` | string | No       | Values: `PowerMeter`   |
| `engUnit`    | string | Yes      |                        |

***

## PhaseCurrentFields

PhaseCurrent additionally requires `phase` to identify which electrical phase. Accepts letter form (A, B, C) or numeric form (1, 2, 3); both are valid representations of the same three-phase system. 3 metadata messages per meter, one per phase.

| Name         | Type   | Required | Description                                                                                                                                                           |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string | No       | Values: `PhaseCurrent`                                                                                                                                                |
| `objectType` | string | No       | Values: `PowerMeter`                                                                                                                                                  |
| `engUnit`    | string | Yes      |                                                                                                                                                                       |
| `phase`      | string | Yes      | Electrical phase identifier. Letter form (A/B/C) and numeric form (1/2/3) are both accepted to align with publisher conventions. Values: `A`, `B`, `C`, `1`, `2`, `3` |

***

## LiquidTemperatureFields

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `LiquidTemperature`                                                                                     |
| `engUnit`    | string  | Yes      | Values: `C`                                                                                                     |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## LiquidDifferentialPressureFields

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `LiquidDifferentialPressure`                                                                            |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## LiquidFlowFields

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `LiquidFlow`                                                                                            |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## LiquidPressureFields

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `LiquidPressure`                                                                                        |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## StatusFields

| Name          | Type                            | Required | Description                                                                                                             |
| ------------- | ------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `pointType`   | string                          | No       | Values: `Status`                                                                                                        |
| `integration` | string                          | No       | Optional integration identifier. When present, this integration is responsible for publishing the value for this point. |
| `stateText`   | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for operating status (values vary by equipment vendor).                                             |

***

## AvailableFields

| Name          | Type                            | Required | Description                                                                                                             |
| ------------- | ------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `pointType`   | string                          | No       | Values: `Available`                                                                                                     |
| `integration` | string                          | No       | Optional integration identifier. When present, this integration is responsible for publishing the value for this point. |
| `stateText`   | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for availability status (values vary by equipment vendor).                                          |

***

## ValvePositionFields

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name        | Type   | Required | Description             |
| ----------- | ------ | -------- | ----------------------- |
| `pointType` | string | No       | Values: `ValvePosition` |

***

## PumpSpeedFields

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name        | Type   | Required | Description         |
| ----------- | ------ | -------- | ------------------- |
| `pointType` | string | No       | Values: `PumpSpeed` |

***

## FanSpeedFields

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name        | Type   | Required | Description        |
| ----------- | ------ | -------- | ------------------ |
| `pointType` | string | No       | Values: `FanSpeed` |

***

## DamperPositionFields

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name        | Type   | Required | Description              |
| ----------- | ------ | -------- | ------------------------ |
| `pointType` | string | No       | Values: `DamperPosition` |

***

## AirTemperatureFields

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `AirTemperature`                                                                                        |
| `engUnit`    | string  | Yes      | Values: `C`                                                                                                     |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## AirDifferentialPressureFields

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `AirDifferentialPressure`                                                                               |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## AirFlowFields

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `AirFlow`                                                                                               |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## AirPressureFields

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `AirPressure`                                                                                           |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## LeakDetectFields

0 = No Leak, 1 = Leak. No engUnit.

| Name        | Type                            | Required | Description                             |
| ----------- | ------------------------------- | -------- | --------------------------------------- |
| `pointType` | string                          | No       | Values: `LeakDetect`                    |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for leak detection. |

***

## AirRelativeHumidityFields

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

| Name         | Type    | Required | Description                                                                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `AirRelativeHumidity`                                                                                   |
| `isSetpoint` | boolean | No       | Optional. When true, indicates this point is a setpoint (a target value written to control equipment behavior). |

***

## LiquidTemperatureSpRequestFields

Setpoint request written by an integration (e.g., MEPAI) to a CDU. BMS publishes metadata; the integration publishes the value to respective value topic namespace identified by `integration`

| Name         | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `pointType`  | string | No       | Values: `LiquidTemperatureSpRequest` |
| `objectType` | string | No       | Values: `CDU`                        |
| `engUnit`    | string | Yes      | Values: `C`                          |

***

## GenericObjectLiquidTemperatureSpRequestFields

Setpoint request for a GenericObject. BMS publishes metadata; the integration publishes the value to the derived topic.

| Name         | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `pointType`  | string | No       | Values: `LiquidTemperatureSpRequest` |
| `objectType` | string | No       | Values: `GenericObject`              |
| `engUnit`    | string | Yes      | Values: `C`                          |

***

## SoundFields

| Name        | Type   | Required | Description     |
| ----------- | ------ | -------- | --------------- |
| `pointType` | string | No       | Values: `Sound` |
| `engUnit`   | string | Yes      |                 |

***

## HeartbeatTimestampBmsFields

BMS-published heartbeat timestamp. The BMS publishes its own timestamp every 10 s; one instance globally, consumed by all connected integrations. `objectName` and `objectId` identify the BMS itself (the publisher). The `integration` field is NOT used on this point — `integration` is reserved for value-publisher identity, and the BMS is the publisher here. `scope` optionally identifies which MQTT topics this heartbeat covers.

| Name         | Type   | Required | Description                                                                                    |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `pointType`  | string | No       | Values: `HeartbeatTimestampBms`                                                                |
| `objectName` | string | Yes      | Human-readable name of the BMS publishing this heartbeat.                                      |
| `objectId`   | string | Yes      | Stable identifier for the BMS publishing this heartbeat (e.g., `"BMS"`). One instance per BMS. |
| `scope`      | string | No       | Identifies which MQTT topics this heartbeat covers.                                            |

***

## HeartbeatEchoBmsFields

BMS echoes back the timestamp received from a specific integration. Published by the BMS (one instance per connected integration). The integration whose timestamp is being echoed is identified by `objectName` and `objectId` — by convention, `objectId` matches the same string used as that integration's `integration` metadata value on its other points (e.g., `objectId: "MEPAI1"`). The `integration` field is intentionally NOT present on this point: `integration` denotes the value-publisher elsewhere in the spec, and the BMS is the publisher here. The integration being echoed is encoded in `objectId`, not in `integration`. `scope` optionally identifies which BMS MQTT-client/topic namespace this echo is associated with — used when the BMS runs multiple MQTT clients connected to DSX Exchange.

| Name         | Type   | Required | Description                                                                                                                                                           |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string | No       | Values: `HeartbeatEchoBms`                                                                                                                                            |
| `objectName` | string | Yes      | Human-readable name of the integration whose timestamp is being echoed.                                                                                               |
| `objectId`   | string | Yes      | Stable identifier of the integration whose timestamp is being echoed (e.g., `"MEPAI1"`). Matches that integration's `integration` metadata value on its other points. |
| `scope`      | string | No       | Optional. Identifies which BMS MQTT-client/topic namespace this echo is associated with.                                                                              |

***

## HeartbeatTimestampIntegrationFields

Integration-published heartbeat timestamp. Each connected integration publishes its own timestamp every 10 s; one instance per integration. `objectName` and `objectId` identify the integration publishing this heartbeat. By convention, `objectId` matches the same string used as this integration's `integration` metadata value on its other points (e.g., `objectId: "MEPAI1"` with `integration: "MEPAI1"`). The `integration` field is required via the integration metadata base and drives the value topic.

| Name         | Type   | Required | Description                                                                                                                                                                              |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pointType`  | string | No       | Values: `HeartbeatTimestampIntegration`                                                                                                                                                  |
| `objectName` | string | Yes      | Human-readable name of the integration publishing this heartbeat.                                                                                                                        |
| `objectId`   | string | Yes      | Stable identifier of the integration publishing this heartbeat (e.g., `"MEPAI1"`). By convention, matches the `integration` metadata value used by this integration on its other points. |

***

## HeartbeatEchoIntegrationFields

Integration echoes the BMS timestamp. Each integration publishes its own echo of the BMS timestamp, allowing the BMS to confirm round-trip with that specific integration (one instance per connected integration). The BMS whose timestamp is being echoed is identified by `objectName` and `objectId` (e.g., `objectId: "BMS"`). The `integration` field is required via the integration metadata base and drives the value topic.

| Name         | Type   | Required | Description                                                                   |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------- |
| `pointType`  | string | No       | Values: `HeartbeatEchoIntegration`                                            |
| `objectName` | string | Yes      | Human-readable name of the BMS whose timestamp is being echoed.               |
| `objectId`   | string | Yes      | Stable identifier of the BMS whose timestamp is being echoed (e.g., `"BMS"`). |

***

## RackLiquidSupplyTemperatureMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `objectType`       | string | Yes      | Values: `Rack`                                  |
| `pointType`        | string | Yes      | Values: `RackLiquidSupplyTemperature`           |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |
| `engUnit`          | string | Yes      | Values: `C`                                     |

***

## RackLiquidReturnTemperatureMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `objectType`       | string | Yes      | Values: `Rack`                                  |
| `pointType`        | string | Yes      | Values: `RackLiquidReturnTemperature`           |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |
| `engUnit`          | string | Yes      | Values: `C`                                     |

***

## RackLiquidFlowMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `objectType`       | string | Yes      | Values: `Rack`                                  |
| `pointType`        | string | Yes      | Values: `RackLiquidFlow`                        |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |
| `engUnit`          | string | Yes      | Values: `LPM`                                   |

***

## RackLiquidDifferentialPressureMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `objectType`       | string | Yes      | Values: `Rack`                                  |
| `pointType`        | string | Yes      | Values: `RackLiquidDifferentialPressure`        |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |
| `engUnit`          | string | Yes      | Values: `kPa`                                   |

***

## RackLiquidDifferentialPressureSpFields

| Name         | Type    | Required | Description                                                                                       |
| ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------- |
| `pointType`  | string  | No       | Values: `RackLiquidDifferentialPressureSp`                                                        |
| `objectType` | string  | No       | Values: `Rack`                                                                                    |
| `engUnit`    | string  | Yes      | Values: `kPa`                                                                                     |
| `isSetpoint` | boolean | No       | Optional inclusion. Indicates this point is a target value written to control equipment behavior. |

***

## RackLiquidDifferentialPressureSpMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type    | Required | Description                                                                                       |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------- |
| `objectType`       | string  | Yes      | Values: `Rack`                                                                                    |
| `pointType`        | string  | Yes      | Values: `RackLiquidDifferentialPressureSp`                                                        |
| `rackLocationName` | string  | Yes      | Human-readable rack name as defined by the BMS.                                                   |
| `rackLocationId`   | string  | Yes      | Stable unique identifier for the rack.                                                            |
| `engUnit`          | string  | Yes      | Values: `kPa`                                                                                     |
| `isSetpoint`       | boolean | No       | Optional inclusion. Indicates this point is a target value written to control equipment behavior. |

***

## RackControlValvePositionMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `objectType`       | string | Yes      | Values: `Rack`                                  |
| `pointType`        | string | Yes      | Values: `RackControlValvePosition`              |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |
| `engUnit`          | string | Yes      | Values: `%`                                     |

***

## RackPowerMetadata

Rack-specific identifier fields added to all Rack metadata messages.

| Name               | Type   | Required | Description                                     |
| ------------------ | ------ | -------- | ----------------------------------------------- |
| `objectType`       | string | Yes      | Values: `Rack`                                  |
| `pointType`        | string | Yes      | Values: `RackPower`                             |
| `rackLocationName` | string | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string | Yes      | Stable unique identifier for the rack.          |
| `engUnit`          | string | Yes      | Values: `kW`                                    |

***

## RackLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

| Name               | Type                            | Required | Description                                     |
| ------------------ | ------------------------------- | -------- | ----------------------------------------------- |
| `objectType`       | string                          | Yes      | Values: `Rack`                                  |
| `pointType`        | string                          | Yes      | Values: `RackLeakDetect`                        |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS. |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.          |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for leak detection.         |

***

## RackLeakSensorFaultMetadata

0 = No Fault, 1 = Fault. No engUnit.

| Name               | Type                            | Required | Description                                       |
| ------------------ | ------------------------------- | -------- | ------------------------------------------------- |
| `objectType`       | string                          | Yes      | Values: `Rack`                                    |
| `pointType`        | string                          | Yes      | Values: `RackLeakSensorFault`                     |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS.   |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.            |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for leak sensor fault status. |

***

## RackLiquidIsolationStatusMetadata

0=NotIsolated, 1=Isolated. No engUnit.

| Name               | Type                            | Required | Description                                      |
| ------------------ | ------------------------------- | -------- | ------------------------------------------------ |
| `objectType`       | string                          | Yes      | Values: `Rack`                                   |
| `pointType`        | string                          | Yes      | Values: `RackLiquidIsolationStatus`              |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS.  |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.           |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for liquid isolation status. |

***

## RackElectricalIsolationStatusMetadata

0 = NotIsolated, 1 = Isolated. No engUnit.

| Name               | Type                            | Required | Description                                          |
| ------------------ | ------------------------------- | -------- | ---------------------------------------------------- |
| `objectType`       | string                          | Yes      | Values: `Rack`                                       |
| `pointType`        | string                          | Yes      | Values: `RackElectricalIsolationStatus`              |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS.      |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.               |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for electrical isolation status. |

***

## RackLeakDetectTrayMetadata

0 = No Leak, 1 = Leak (tray sensor). No engUnit. Integration-published value.

| Name               | Type                            | Required | Description                                                   |
| ------------------ | ------------------------------- | -------- | ------------------------------------------------------------- |
| `objectType`       | string                          | Yes      | Values: `Rack`                                                |
| `pointType`        | string                          | Yes      | Values: `RackLeakDetectTray`                                  |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS.               |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.                        |
| `integration`      | string                          | Yes      | Integration identifier responsible for publishing this value. |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for tray leak detection.                  |

***

## RackLiquidIsolationRequestMetadata

0 = Not Requested, 1 = Requested, -1 = Unknown. Integration-published value.

| Name               | Type                            | Required | Description                                                   |
| ------------------ | ------------------------------- | -------- | ------------------------------------------------------------- |
| `objectType`       | string                          | Yes      | Values: `Rack`                                                |
| `pointType`        | string                          | Yes      | Values: `RackLiquidIsolationRequest`                          |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS.               |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.                        |
| `integration`      | string                          | Yes      | Integration identifier responsible for publishing this value. |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for liquid isolation request.             |

***

## RackElectricalIsolationRequestMetadata

0 = Not Requested, 1 = Requested. Integration-published value.

| Name               | Type                            | Required | Description                                                   |
| ------------------ | ------------------------------- | -------- | ------------------------------------------------------------- |
| `objectType`       | string                          | Yes      | Values: `Rack`                                                |
| `pointType`        | string                          | Yes      | Values: `RackElectricalIsolationRequest`                      |
| `rackLocationName` | string                          | Yes      | Human-readable rack name as defined by the BMS.               |
| `rackLocationId`   | string                          | Yes      | Stable unique identifier for the rack.                        |
| `integration`      | string                          | Yes      | Integration identifier responsible for publishing this value. |
| `stateText`        | array\&lt;map\&lt;string, any>> | Yes      | State label mapping for electrical isolation request.         |

***

## PowerMeterVoltageMetadata

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `Voltage`                                         |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |
| `engUnit`    | string            | Yes      |                                                           |

***

## PowerMeterPowerFactorMetadata

Dimensionless 0–1. engUnit not required.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `PowerFactor`                                     |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |

***

## PowerMeterFrequencyMetadata

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `Frequency`                                       |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |
| `engUnit`    | string            | Yes      |                                                           |

***

## PowerMeterApparentPowerMetadata

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `ApparentPower`                                   |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |
| `engUnit`    | string            | Yes      |                                                           |

***

## PowerMeterActivePowerMetadata

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `ActivePower`                                     |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |
| `engUnit`    | string            | Yes      |                                                           |

***

## PowerMeterCurrentMetadata

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `Current`                                         |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |
| `engUnit`    | string            | Yes      |                                                           |

***

## PowerMeterCurrentLimitMetadata

PowerMeter-specific identifier fields added to all PowerMeter metadata messages.

| Name         | Type              | Required | Description                                               |
| ------------ | ----------------- | -------- | --------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                      |
| `pointType`  | string            | Yes      | Values: `CurrentLimit`                                    |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.             |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.       |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter. |
| `engUnit`    | string            | Yes      |                                                           |

***

## PowerMeterPhaseCurrentMetadata

PhaseCurrent additionally requires `phase` to identify which electrical phase. Accepts letter form (A, B, C) or numeric form (1, 2, 3); both are valid representations of the same three-phase system. 3 metadata messages per meter, one per phase.

| Name         | Type              | Required | Description                                                                                                                                                           |
| ------------ | ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectType` | string            | Yes      | Values: `PowerMeter`                                                                                                                                                  |
| `pointType`  | string            | Yes      | Values: `PhaseCurrent`                                                                                                                                                |
| `objectName` | string            | Yes      | Human-readable name of the electrical device.                                                                                                                         |
| `objectId`   | string            | Yes      | Stable unique identifier for the electrical device.                                                                                                                   |
| `servesId`   | array\&lt;string> | Yes      | List of objectIds of entities served by this power meter.                                                                                                             |
| `engUnit`    | string            | Yes      |                                                                                                                                                                       |
| `phase`      | string            | Yes      | Electrical phase identifier. Letter form (A/B/C) and numeric form (1/2/3) are both accepted to align with publisher conventions. Values: `A`, `B`, `C`, `1`, `2`, `3` |

***

## LiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## LiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## LiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## LiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## StatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## PumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## FanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## DamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SoundMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## LiquidTemperatureSpRequestMetadata

Setpoint request written by an integration (e.g., MEPAI) to a CDU. BMS publishes metadata; the integration publishes the value to respective value topic namespace identified by `integration`

Setpoint request written by an integration (e.g., MEPAI) to a CDU. BMS publishes metadata; the integration publishes the value to respective value topic namespace identified by `integration`

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SystemHeartbeatTimestampBmsMetadata

BMS-published heartbeat timestamp. The BMS publishes its own timestamp every 10 s; one instance globally, consumed by all connected integrations. `objectName` and `objectId` identify the BMS itself (the publisher). The `integration` field is NOT used on this point — `integration` is reserved for value-publisher identity, and the BMS is the publisher here. `scope` optionally identifies which MQTT topics this heartbeat covers.

| Name         | Type   | Required | Description                                                                                    |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `objectType` | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment.                              |
| `pointType`  | string | Yes      | Values: `HeartbeatTimestampBms`                                                                |
| `objectName` | string | Yes      | Human-readable name of the BMS publishing this heartbeat.                                      |
| `objectId`   | string | Yes      | Stable identifier for the BMS publishing this heartbeat (e.g., `"BMS"`). One instance per BMS. |
| `scope`      | string | No       | Identifies which MQTT topics this heartbeat covers.                                            |

***

## SystemHeartbeatEchoBmsMetadata

BMS echoes back the timestamp received from a specific integration. Published by the BMS (one instance per connected integration). The integration whose timestamp is being echoed is identified by `objectName` and `objectId` — by convention, `objectId` matches the same string used as that integration's `integration` metadata value on its other points (e.g., `objectId: "MEPAI1"`). The `integration` field is intentionally NOT present on this point: `integration` denotes the value-publisher elsewhere in the spec, and the BMS is the publisher here. The integration being echoed is encoded in `objectId`, not in `integration`. `scope` optionally identifies which BMS MQTT-client/topic namespace this echo is associated with — used when the BMS runs multiple MQTT clients connected to DSX Exchange.

| Name         | Type   | Required | Description                                                                                                                                                           |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectType` | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment.                                                                                                     |
| `pointType`  | string | Yes      | Values: `HeartbeatEchoBms`                                                                                                                                            |
| `objectName` | string | Yes      | Human-readable name of the integration whose timestamp is being echoed.                                                                                               |
| `objectId`   | string | Yes      | Stable identifier of the integration whose timestamp is being echoed (e.g., `"MEPAI1"`). Matches that integration's `integration` metadata value on its other points. |
| `scope`      | string | No       | Optional. Identifies which BMS MQTT-client/topic namespace this echo is associated with.                                                                              |

***

## SystemHeartbeatTimestampIntegrationMetadata

Integration-published heartbeat timestamp. Each connected integration publishes its own timestamp every 10 s; one instance per integration. `objectName` and `objectId` identify the integration publishing this heartbeat. By convention, `objectId` matches the same string used as this integration's `integration` metadata value on its other points (e.g., `objectId: "MEPAI1"` with `integration: "MEPAI1"`). The `integration` field is required via the integration metadata base and drives the value topic.

| Name          | Type   | Required | Description                                                                                                                                                                              |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectType`  | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment.                                                                                                                        |
| `pointType`   | string | Yes      | Values: `HeartbeatTimestampIntegration`                                                                                                                                                  |
| `integration` | string | Yes      | Integration identifier.                                                                                                                                                                  |
| `objectName`  | string | Yes      | Human-readable name of the integration publishing this heartbeat.                                                                                                                        |
| `objectId`    | string | Yes      | Stable identifier of the integration publishing this heartbeat (e.g., `"MEPAI1"`). By convention, matches the `integration` metadata value used by this integration on its other points. |

***

## SystemHeartbeatEchoIntegrationMetadata

Integration echoes the BMS timestamp. Each integration publishes its own echo of the BMS timestamp, allowing the BMS to confirm round-trip with that specific integration (one instance per connected integration). The BMS whose timestamp is being echoed is identified by `objectName` and `objectId` (e.g., `objectId: "BMS"`). The `integration` field is required via the integration metadata base and drives the value topic.

| Name          | Type   | Required | Description                                                                   |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `objectType`  | string | Yes      | Canonical object type. Matches the objectType MQTT topic segment.             |
| `pointType`   | string | Yes      | Values: `HeartbeatEchoIntegration`                                            |
| `integration` | string | Yes      | Integration identifier.                                                       |
| `objectName`  | string | Yes      | Human-readable name of the BMS whose timestamp is being echoed.               |
| `objectId`    | string | Yes      | Stable identifier of the BMS whose timestamp is being echoed (e.g., `"BMS"`). |

***

## SystemObjectTypeFields

| Name         | Type   | Required | Description      |
| ------------ | ------ | -------- | ---------------- |
| `objectType` | string | No       | Values: `System` |

***

## SystemStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SystemAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## BESSObjectTypeFields

| Name         | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| `objectType` | string | No       | Values: `BESS` |

***

## UPSObjectTypeFields

| Name         | Type   | Required | Description   |
| ------------ | ------ | -------- | ------------- |
| `objectType` | string | No       | Values: `UPS` |

***

## ATSObjectTypeFields

| Name         | Type   | Required | Description   |
| ------------ | ------ | -------- | ------------- |
| `objectType` | string | No       | Values: `ATS` |

***

## GeneratorObjectTypeFields

| Name         | Type   | Required | Description         |
| ------------ | ------ | -------- | ------------------- |
| `objectType` | string | No       | Values: `Generator` |

***

## ShuntObjectTypeFields

| Name         | Type   | Required | Description     |
| ------------ | ------ | -------- | --------------- |
| `objectType` | string | No       | Values: `Shunt` |

***

## BreakerObjectTypeFields

| Name         | Type   | Required | Description       |
| ------------ | ------ | -------- | ----------------- |
| `objectType` | string | No       | Values: `Breaker` |

***

## CDUObjectTypeFields

| Name         | Type   | Required | Description   |
| ------------ | ------ | -------- | ------------- |
| `objectType` | string | No       | Values: `CDU` |

***

## CoolingTowerObjectTypeFields

| Name         | Type   | Required | Description            |
| ------------ | ------ | -------- | ---------------------- |
| `objectType` | string | No       | Values: `CoolingTower` |

***

## HXObjectTypeFields

| Name         | Type   | Required | Description  |
| ------------ | ------ | -------- | ------------ |
| `objectType` | string | No       | Values: `HX` |

***

## CRAHObjectTypeFields

| Name         | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| `objectType` | string | No       | Values: `CRAH` |

***

## CRACObjectTypeFields

| Name         | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| `objectType` | string | No       | Values: `CRAC` |

***

## AHUObjectTypeFields

| Name         | Type   | Required | Description   |
| ------------ | ------ | -------- | ------------- |
| `objectType` | string | No       | Values: `AHU` |

***

## ChillerObjectTypeFields

| Name         | Type   | Required | Description       |
| ------------ | ------ | -------- | ----------------- |
| `objectType` | string | No       | Values: `Chiller` |

***

## ValveObjectTypeFields

| Name         | Type   | Required | Description     |
| ------------ | ------ | -------- | --------------- |
| `objectType` | string | No       | Values: `Valve` |

***

## PumpObjectTypeFields

| Name         | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| `objectType` | string | No       | Values: `Pump` |

***

## FanObjectTypeFields

| Name         | Type   | Required | Description   |
| ------------ | ------ | -------- | ------------- |
| `objectType` | string | No       | Values: `Fan` |

***

## DamperObjectTypeFields

| Name         | Type   | Required | Description      |
| ------------ | ------ | -------- | ---------------- |
| `objectType` | string | No       | Values: `Damper` |

***

## SensorObjectTypeFields

| Name         | Type   | Required | Description      |
| ------------ | ------ | -------- | ---------------- |
| `objectType` | string | No       | Values: `Sensor` |

***

## TankObjectTypeFields

| Name         | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| `objectType` | string | No       | Values: `Tank` |

***

## GenericObjectObjectTypeFields

| Name         | Type   | Required | Description             |
| ------------ | ------ | -------- | ----------------------- |
| `objectType` | string | No       | Values: `GenericObject` |

***

## BESSStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## BESSAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## UPSStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## UPSAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ATSStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ATSAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GeneratorStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GeneratorAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ShuntStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ShuntAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## BreakerStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## BreakerAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ValveValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## PumpPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## FanFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## DamperDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ValveAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## PumpAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## FanAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## DamperAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SensorAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SensorLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SensorLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SensorLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SensorLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SensorAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SensorAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SensorAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SensorAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## SensorSoundMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SensorLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## SensorAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDULiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CDULiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDULiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDULiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CDUAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CDUValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CDUAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDUAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CDULeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CDUAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CoolingTowerLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CoolingTowerAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CoolingTowerValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CoolingTowerAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CoolingTowerLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CoolingTowerAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## HXLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## HXAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## HXValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## HXAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## HXLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## HXAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRAHLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRAHAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRAHValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRAHAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRAHLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRAHAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRACLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRACAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRACValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRACAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## CRACLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## CRACAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHULiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AHULiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHULiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHULiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AHUAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AHUValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AHUAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHUAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## AHULeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## AHUAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ChillerLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ChillerAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ChillerValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ChillerAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## ChillerLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## ChillerAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## TankLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## TankAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## TankValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## TankAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## TankLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## TankAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectLiquidTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericObjectLiquidDifferentialPressureMetadata

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidDifferentialPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectLiquidFlowMetadata

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidFlow. Typical engUnit: LPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectLiquidPressureMetadata

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for LiquidPressure. Typical engUnit: kPa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectStatusMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericObjectAvailableMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericObjectValvePositionMetadata

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for ValvePosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectPumpSpeedMetadata

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for PumpSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectFanSpeedMetadata

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for FanSpeed. Typical engUnit: RPM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectDamperPositionMetadata

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for DamperPosition. Typical engUnit: %. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectAirTemperatureMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericObjectAirDifferentialPressureMetadata

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirDifferentialPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectAirFlowMetadata

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirFlow. Typical engUnit: CFM. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectAirPressureMetadata

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirPressure. Typical engUnit: Pa. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectSoundMetadata

Optional fields common to all generic equipment metadata, regardless of identifier mode.

Optional fields common to all generic equipment metadata, regardless of identifier mode.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericObjectLeakDetectMetadata

0 = No Leak, 1 = Leak. No engUnit.

0 = No Leak, 1 = Leak. No engUnit.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericObjectAirRelativeHumidityMetadata

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

Measurement fields for AirRelativeHumidity. Typical engUnit: %RH. The identifier (named-object XOR associate) and measurement (engUnit XOR stateText) constraints are independent and enforced by EquipmentMeasurementModeBase.

### Requires a non-empty engUnit string (mutually exclusive with stateText).

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | Yes      | Engineering unit for the measurement. |

### Required for state/status/alarm points that carry no engineering unit.

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | Yes      | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericObjectLiquidTemperatureSpRequestMetadata

Setpoint request for a GenericObject. BMS publishes metadata; the integration publishes the value to the derived topic.

Setpoint request for a GenericObject. BMS publishes metadata; the integration publishes the value to the derived topic.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericPointFields

Field fragment for a vendor-specific or unmapped GenericPoint. `processArea` is required.

`engUnit` and `stateText` are both optional but **mutually exclusive** — include at most one. See the two variants below.

Field fragment for a vendor-specific or unmapped GenericPoint. `processArea` is required.

`engUnit` and `stateText` are both optional but **mutually exclusive** — include at most one. See the two variants below.

### Continuous measurement with a known engineering unit. When `engUnit` is prese...

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | No       | Engineering unit for the measurement. |

### Binary or enumerated state point. When `stateText` is present, `engUnit` must...

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | No       | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***

## GenericEquipmentPointMetadata

Field fragment for a vendor-specific or unmapped GenericPoint. `processArea` is required.

`engUnit` and `stateText` are both optional but **mutually exclusive** — include at most one. See the two variants below.

Field fragment for a vendor-specific or unmapped GenericPoint. `processArea` is required.

`engUnit` and `stateText` are both optional but **mutually exclusive** — include at most one. See the two variants below.

### Object Mode

* `objectName` and `objectId` are **required**.
* `servesId` is **optional** in Named-object mode.
* `associateId` must **not** be present.

Incompatible with `EquipmentAssociateMode` — validators enforce this via
the parent `oneOf`.

| Name         | Type              | Required | Description                                                                                                                                                         |
| ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectName` | string            | Yes      | Human-readable equipment name.                                                                                                                                      |
| `objectId`   | string            | Yes      | Stable unique identifier for the equipment.                                                                                                                         |
| `servesId`   | array\&lt;string> | No       | Optional list of objectIds of entities this equipment serves. Only valid in Named-object mode. Only valid in Named-object mode — must not appear in Associate mode. |

### Associate Mode

* `associateId` is **required**.
* `objectName`, `objectId`, and `servesId` must **not** be present.

Incompatible with `EquipmentNamedObjectMode` — validators enforce this
via the parent `oneOf`.

| Name          | Type   | Required | Description                          |
| ------------- | ------ | -------- | ------------------------------------ |
| `associateId` | string | Yes      | Identifier of the associated entity. |

***

## GenericPowerMeterPointMetadata

Field fragment for a vendor-specific or unmapped GenericPoint. `processArea` is required.

`engUnit` and `stateText` are both optional but **mutually exclusive** — include at most one. See the two variants below.

Field fragment for a vendor-specific or unmapped GenericPoint. `processArea` is required.

`engUnit` and `stateText` are both optional but **mutually exclusive** — include at most one. See the two variants below.

### Continuous measurement with a known engineering unit. When `engUnit` is prese...

| Name      | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `engUnit` | string | No       | Engineering unit for the measurement. |

### Binary or enumerated state point. When `stateText` is present, `engUnit` must...

| Name        | Type                            | Required | Description                                                                                                                                         |
| ----------- | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stateText` | array\&lt;map\&lt;string, any>> | No       | State label mapping. Each entry maps a numeric state value to its human-readable label (e.g., `[{value: 0, text: "Off"}, {value: 1, text: "On"}]`). |

***