Update thermostat cluster xml with Alchemy generated xml from spec (#39777)
Add zap generated files for the updates
diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
index f530bc5..4176d9b 100644
--- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
+++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
@@ -1854,6 +1854,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1925,6 +1926,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 3c5a6e7..2c79153 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -4739,6 +4739,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -4810,6 +4811,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/all-clusters-app/realtek/data_model/all-clusters-app.matter b/examples/all-clusters-app/realtek/data_model/all-clusters-app.matter
index d709378..8f69448 100644
--- a/examples/all-clusters-app/realtek/data_model/all-clusters-app.matter
+++ b/examples/all-clusters-app/realtek/data_model/all-clusters-app.matter
@@ -5684,6 +5684,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5755,6 +5756,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index 5e844c8..479273d 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -4040,6 +4040,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -4111,6 +4112,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
index ed07ccf..8c11926 100644
--- a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
+++ b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
@@ -1707,6 +1707,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1778,6 +1779,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
index 2c9b80f..1e71858 100644
--- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
+++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
@@ -1981,6 +1981,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2052,6 +2053,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter b/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter
index c141050..5cc617b 100644
--- a/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter
+++ b/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter
@@ -2255,6 +2255,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2326,6 +2327,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
index 139fdb5..3deb300 100644
--- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
+++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
@@ -1649,6 +1649,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1720,6 +1721,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
index 712f7a1..912d13a 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
@@ -1802,6 +1802,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1873,6 +1874,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index 64ec0aa..9cb1d5b 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -5193,6 +5193,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5264,6 +5265,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
@@ -5626,6 +5628,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5697,6 +5700,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index bdb55ea..70228de 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -5193,6 +5193,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5264,6 +5265,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
@@ -5626,6 +5628,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5697,6 +5700,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_br.matter b/examples/thermostat/nxp/zap/thermostat_matter_br.matter
index ea32a1e..08bda37 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_br.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_br.matter
@@ -2026,6 +2026,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2097,6 +2098,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_eth.matter b/examples/thermostat/nxp/zap/thermostat_matter_eth.matter
index 313c9d1..733f379 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_eth.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_eth.matter
@@ -1801,6 +1801,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1872,6 +1873,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
index 04889cf..e8a1c47 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
@@ -1950,6 +1950,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2021,6 +2022,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
index 5c66047..a2eb5d4 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
@@ -1859,6 +1859,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1930,6 +1931,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
index 9c2b40e..8c1d924 100644
--- a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
+++ b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
@@ -2305,6 +2305,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2376,6 +2377,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter
index e6bc670..72029b9 100644
--- a/examples/thermostat/thermostat-common/thermostat.matter
+++ b/examples/thermostat/thermostat-common/thermostat.matter
@@ -2178,6 +2178,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2249,6 +2250,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml
index 68efa0d..ef405f9 100644
--- a/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml
@@ -17,8 +17,9 @@
 <!--
 XML generated by Alchemy; DO NOT EDIT.
 Source: src/app_clusters/Thermostat.adoc
-Parameters: 
-Git: 1.4.2-37-g9da9b504fc
+Parameters: zap attribute=hvac-thermostat-events, hvac-thermostat-suggestions provisional-policy=loose force sdk-root=. spec-root=../ssh/connectedhomeip-spec/ ../ssh/connectedhomeip-spec/src/app_clusters/Thermostat.adoc 
+Git: 0.9-fall2025-926-geaf0d9d98
+Alchemy: v1.5.47
 -->
 <configurator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../zcl.xsd">
   <domain name="HVAC"/>
@@ -101,7 +102,7 @@
     <field name="SupportsNames" mask="0x02"/>
   </bitmap>
 
-  <bitmap name="ThermostatSuggestionNotFollowingReasonBitmap" type="bitmap16" apiMaturity="provisional">
+  <bitmap name="ThermostatSuggestionNotFollowingReasonBitmap" type="bitmap16">
     <cluster code="0x0201"/>
     <field name="DemandResponseEvent" mask="0x0001"/>
     <field name="OngoingHold" mask="0x0002"/>
@@ -110,6 +111,7 @@
     <field name="VacationMode" mask="0x0010"/>
     <field name="TimeOfUseCostSavings" mask="0x0020"/>
     <field name="PreCoolingOrPreHeating" mask="0x0040"/>
+    <field name="ConflictingSuggestions" mask="0x0080"/>
   </bitmap>
 
   <enum name="SystemModeEnum" type="enum8">
@@ -223,65 +225,65 @@
     <item name="UserDefined" value="0xFE"/>
   </enum>
 
+  <struct name="ThermostatSuggestionStruct">
+    <cluster code="0x0201"/>
+    <item fieldId="0" name="UniqueID" type="int8u" apiMaturity="provisional"/>
+    <item fieldId="1" name="PresetHandle" type="octet_string" length="16" apiMaturity="provisional"/>
+    <item fieldId="2" name="EffectiveTime" type="epoch_s" apiMaturity="provisional"/>
+    <item fieldId="3" name="ExpirationTime" type="epoch_s" apiMaturity="provisional"/>
+  </struct>
+
   <struct name="WeeklyScheduleTransitionStruct">
     <cluster code="0x0201"/>
     <item fieldId="0" name="TransitionTime" type="int16u" max="1439"/>
-    <item fieldId="1" name="HeatSetpoint" type="temperature" isNullable="true"/>
-    <item fieldId="2" name="CoolSetpoint" type="temperature" isNullable="true"/>
+    <item fieldId="1" name="HeatSetpoint" type="temperature" isNullable="true" min="-27315"/>
+    <item fieldId="2" name="CoolSetpoint" type="temperature" isNullable="true" min="-27315"/>
   </struct>
 
-  <struct name="ScheduleTypeStruct" apiMaturity="provisional">
+  <struct name="ScheduleTypeStruct">
     <cluster code="0x0201"/>
-    <item fieldId="0" name="SystemMode" type="SystemModeEnum" min="0x0" max="0x9"/>
+    <item fieldId="0" name="SystemMode" type="SystemModeEnum" max="0x9"/>
     <item fieldId="1" name="NumberOfSchedules" type="int8u" default="0"/>
-    <item fieldId="2" name="ScheduleTypeFeatures" type="ScheduleTypeFeaturesBitmap" min="0x0" max="0xF" default="0"/>
+    <item fieldId="2" name="ScheduleTypeFeatures" type="ScheduleTypeFeaturesBitmap" max="0xF" default="0"/>
   </struct>
 
-  <struct name="PresetStruct" apiMaturity="provisional">
+  <struct name="PresetStruct">
     <cluster code="0x0201"/>
     <item fieldId="0" name="PresetHandle" type="octet_string" length="16" isNullable="true"/>
-    <item fieldId="1" name="PresetScenario" type="PresetScenarioEnum" min="0x0" max="0xFE"/>
+    <item fieldId="1" name="PresetScenario" type="PresetScenarioEnum" max="0xFE"/>
     <item fieldId="2" name="Name" type="char_string" length="64" isNullable="true" optional="true"/>
     <item fieldId="3" name="CoolingSetpoint" type="temperature" optional="true" default="0x0A28"/>
     <item fieldId="4" name="HeatingSetpoint" type="temperature" optional="true" default="0x07D0"/>
     <item fieldId="5" name="BuiltIn" type="boolean" isNullable="true" default="0"/>
   </struct>
 
-  <struct name="PresetTypeStruct" apiMaturity="provisional">
+  <struct name="PresetTypeStruct">
     <cluster code="0x0201"/>
-    <item fieldId="0" name="PresetScenario" type="PresetScenarioEnum" min="0x0" max="0xFE"/>
+    <item fieldId="0" name="PresetScenario" type="PresetScenarioEnum" max="0xFE"/>
     <item fieldId="1" name="NumberOfPresets" type="int8u" default="0"/>
-    <item fieldId="2" name="PresetTypeFeatures" type="PresetTypeFeaturesBitmap" min="0x0" max="0x3" default="0"/>
+    <item fieldId="2" name="PresetTypeFeatures" type="PresetTypeFeaturesBitmap" max="0x3" default="0"/>
   </struct>
 
-  <struct name="ScheduleStruct" apiMaturity="provisional">
+  <struct name="ScheduleStruct">
     <cluster code="0x0201"/>
     <item fieldId="0" name="ScheduleHandle" type="octet_string" length="16" isNullable="true"/>
-    <item fieldId="1" name="SystemMode" type="SystemModeEnum" min="0x0" max="0x9"/>
+    <item fieldId="1" name="SystemMode" type="SystemModeEnum" max="0x9"/>
     <item fieldId="2" name="Name" type="char_string" length="64" optional="true"/>
     <item fieldId="3" name="PresetHandle" type="octet_string" length="16" optional="true"/>
-    <item fieldId="4" name="Transitions" array="true" type="ScheduleTransitionStruct" minLength="1"/>
+    <item fieldId="4" name="Transitions" array="true" type="ScheduleTransitionStruct" minLength="1" length="255"/>
     <item fieldId="5" name="BuiltIn" type="boolean" isNullable="true" default="0"/>
   </struct>
 
-  <struct name="ScheduleTransitionStruct" apiMaturity="provisional">
+  <struct name="ScheduleTransitionStruct">
     <cluster code="0x0201"/>
-    <item fieldId="0" name="DayOfWeek" type="ScheduleDayOfWeekBitmap" min="0x0" max="0xFF"/>
+    <item fieldId="0" name="DayOfWeek" type="ScheduleDayOfWeekBitmap"/>
     <item fieldId="1" name="TransitionTime" type="int16u" max="1439"/>
     <item fieldId="2" name="PresetHandle" type="octet_string" length="16" optional="true"/>
-    <item fieldId="3" name="SystemMode" type="SystemModeEnum" optional="true" min="0x0" max="0x9"/>
+    <item fieldId="3" name="SystemMode" type="SystemModeEnum" optional="true" max="0x9"/>
     <item fieldId="4" name="CoolingSetpoint" type="temperature" optional="true"/>
     <item fieldId="5" name="HeatingSetpoint" type="temperature" optional="true"/>
   </struct>
 
-  <struct name="ThermostatSuggestionStruct" apiMaturity="provisional">
-    <cluster code="0x0201"/>
-    <item fieldId="0" name="UniqueID" type="int8u"/>
-    <item fieldId="1" name="PresetHandle" type="octet_string" length="16"/>
-    <item fieldId="2" name="EffectiveTime" type="epoch_s"/>
-    <item fieldId="3" name="ExpirationTime" type="epoch_s"/>
-  </struct>
-
   <cluster>
     <name>Thermostat</name>
     <domain>HVAC</domain>
@@ -312,12 +314,7 @@
         <optionalConform/>
       </feature>
       <feature bit="3" code="SCH" name="ScheduleConfiguration" summary="Supports remote configuration of a weekly schedule of setpoint transitions">
-        <otherwiseConform>
-          <optionalConform>
-            <condition name="Zigbee"/>
-          </optionalConform>
-          <deprecateConform/>
-        </otherwiseConform>
+        <deprecateConform/>
       </feature>
       <feature bit="4" code="SB" name="Setback" summary="Supports configurable setback (or span)">
         <optionalConform/>
@@ -340,15 +337,21 @@
           <optionalConform/>
         </otherwiseConform>
       </feature>
+      <feature bit="10" code="TSUGGEST" name="Thermostat Suggestions" summary="Thermostat supports suggestions" apiMaturity="provisional">
+        <otherwiseConform>
+          <provisionalConform/>
+          <optionalConform>
+            <feature name="PRES"/>
+          </optionalConform>
+        </otherwiseConform>
+      </feature>
     </features>
     <!-- Attributes -->
-    <attribute side="server" code="0x0000" name="LocalTemperature" define="LOCAL_TEMPERATURE" type="temperature" reportable="true" isNullable="true">
-      <mandatoryConform/>
-    </attribute>
-    <attribute side="server" code="0x0001" name="OutdoorTemperature" define="OUTDOOR_TEMPERATURE" type="temperature" optional="true" isNullable="true">
+    <attribute side="server" code="0x0000" name="LocalTemperature" define="LOCAL_TEMPERATURE" type="temperature" isNullable="true" min="-27315"/>
+    <attribute side="server" code="0x0001" name="OutdoorTemperature" define="OUTDOOR_TEMPERATURE" type="temperature" optional="true" isNullable="true" min="-27315">
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0002" name="Occupancy" define="THERMOSTAT_OCCUPANCY" type="OccupancyBitmap" default="1" optional="true" min="0x00" max="0x01">
+    <attribute side="server" code="0x0002" name="Occupancy" define="THERMOSTAT_OCCUPANCY" type="OccupancyBitmap" default="1" optional="true" max="0x01">
       <mandatoryConform>
         <feature name="OCC"/>
       </mandatoryConform>
@@ -373,21 +376,21 @@
         <feature name="COOL"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0007" name="PICoolingDemand" define="PI_COOLING_DEMAND" type="int8u" min="0" max="100" reportable="true" optional="true">
+    <attribute side="server" code="0x0007" name="PICoolingDemand" define="PI_COOLING_DEMAND" type="int8u" max="100" optional="true">
       <optionalConform>
         <feature name="COOL"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0008" name="PIHeatingDemand" define="PI_HEATING_DEMAND" type="int8u" min="0" max="100" reportable="true" optional="true">
+    <attribute side="server" code="0x0008" name="PIHeatingDemand" define="PI_HEATING_DEMAND" type="int8u" max="100" optional="true">
       <optionalConform>
         <feature name="HEAT"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0009" name="HVACSystemTypeConfiguration" define="HVAC_SYSTEM_TYPE_CONFIGURATION" type="HVACSystemTypeBitmap" min="0x00" max="0x3F" writable="true" optional="true" default="0x00">
+    <attribute side="server" code="0x0009" name="HVACSystemTypeConfiguration" define="HVAC_SYSTEM_TYPE_CONFIGURATION" type="HVACSystemTypeBitmap" max="0x3F" writable="true" optional="true" default="0x00">
       <access op="write" privilege="manage"/>
       <deprecateConform/>
     </attribute>
-    <attribute side="server" code="0x0010" name="LocalTemperatureCalibration" define="LOCAL_TEMPERATURE_CALIBRATION" type="int8s" min="-127" max="127" writable="true" default="0x00" optional="true">
+    <attribute side="server" code="0x0010" name="LocalTemperatureCalibration" define="LOCAL_TEMPERATURE_CALIBRATION" type="int8s" min="-127" writable="true" default="0x00" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform>
         <notTerm>
@@ -395,17 +398,17 @@
         </notTerm>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0011" name="OccupiedCoolingSetpoint" define="OCCUPIED_COOLING_SETPOINT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="2600" optional="true">
+    <attribute side="server" code="0x0011" name="OccupiedCoolingSetpoint" define="OCCUPIED_COOLING_SETPOINT" type="temperature" min="-27315" writable="true" default="2600" optional="true">
       <mandatoryConform>
         <feature name="COOL"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0012" name="OccupiedHeatingSetpoint" define="OCCUPIED_HEATING_SETPOINT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="2000" optional="true">
+    <attribute side="server" code="0x0012" name="OccupiedHeatingSetpoint" define="OCCUPIED_HEATING_SETPOINT" type="temperature" min="-27315" writable="true" default="2000" optional="true">
       <mandatoryConform>
         <feature name="HEAT"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0013" name="UnoccupiedCoolingSetpoint" define="UNOCCUPIED_COOLING_SETPOINT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="2600" optional="true">
+    <attribute side="server" code="0x0013" name="UnoccupiedCoolingSetpoint" define="UNOCCUPIED_COOLING_SETPOINT" type="temperature" min="-27315" writable="true" default="2600" optional="true">
       <mandatoryConform>
         <andTerm>
           <feature name="COOL"/>
@@ -413,7 +416,7 @@
         </andTerm>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0014" name="UnoccupiedHeatingSetpoint" define="UNOCCUPIED_HEATING_SETPOINT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="2000" optional="true">
+    <attribute side="server" code="0x0014" name="UnoccupiedHeatingSetpoint" define="UNOCCUPIED_HEATING_SETPOINT" type="temperature" min="-27315" writable="true" default="2000" optional="true">
       <mandatoryConform>
         <andTerm>
           <feature name="HEAT"/>
@@ -421,47 +424,45 @@
         </andTerm>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0015" name="MinHeatSetpointLimit" define="MIN_HEAT_SETPOINT_LIMIT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="700" optional="true">
+    <attribute side="server" code="0x0015" name="MinHeatSetpointLimit" define="MIN_HEAT_SETPOINT_LIMIT" type="temperature" min="-27315" writable="true" default="700" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform>
         <feature name="HEAT"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0016" name="MaxHeatSetpointLimit" define="MAX_HEAT_SETPOINT_LIMIT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="3000" optional="true">
+    <attribute side="server" code="0x0016" name="MaxHeatSetpointLimit" define="MAX_HEAT_SETPOINT_LIMIT" type="temperature" min="-27315" writable="true" default="3000" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform>
         <feature name="HEAT"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0017" name="MinCoolSetpointLimit" define="MIN_COOL_SETPOINT_LIMIT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="1600" optional="true">
+    <attribute side="server" code="0x0017" name="MinCoolSetpointLimit" define="MIN_COOL_SETPOINT_LIMIT" type="temperature" min="-27315" writable="true" default="1600" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform>
         <feature name="COOL"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0018" name="MaxCoolSetpointLimit" define="MAX_COOL_SETPOINT_LIMIT" type="temperature" min="-27315" max="0x7FFF" writable="true" default="3200" optional="true">
+    <attribute side="server" code="0x0018" name="MaxCoolSetpointLimit" define="MAX_COOL_SETPOINT_LIMIT" type="temperature" min="-27315" writable="true" default="3200" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform>
         <feature name="COOL"/>
       </optionalConform>
     </attribute>
-    <attribute side="server" code="0x0019" name="MinSetpointDeadBand" define="MIN_SETPOINT_DEAD_BAND" type="int8s" min="0" max="127" writable="true" default="25" optional="true">
+    <attribute side="server" code="0x0019" name="MinSetpointDeadBand" define="MIN_SETPOINT_DEAD_BAND" type="int8s" min="0" writable="true" default="20" optional="true">
       <access op="write" privilege="manage"/>
       <mandatoryConform>
         <feature name="AUTO"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x001A" name="RemoteSensing" define="REMOTE_SENSING" type="RemoteSensingBitmap" min="0x0" max="0x7" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x001A" name="RemoteSensing" define="REMOTE_SENSING" type="RemoteSensingBitmap" max="0x7" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x001B" name="ControlSequenceOfOperation" define="CONTROL_SEQUENCE_OF_OPERATION" type="ControlSequenceOfOperationEnum" min="0x0" max="0x5" writable="true" default="4">
+    <attribute side="server" code="0x001B" name="ControlSequenceOfOperation" define="CONTROL_SEQUENCE_OF_OPERATION" type="ControlSequenceOfOperationEnum" max="0x5" writable="true">
       <access op="write" privilege="manage"/>
-      <mandatoryConform/>
     </attribute>
-    <attribute side="server" code="0x001C" name="SystemMode" define="SYSTEM_MODE" type="SystemModeEnum" min="0x0" max="0x9" writable="true" default="1">
+    <attribute side="server" code="0x001C" name="SystemMode" define="SYSTEM_MODE" type="SystemModeEnum" max="0x9" writable="true">
       <access op="write" privilege="manage"/>
-      <mandatoryConform/>
     </attribute>
     <attribute side="server" code="0x001E" name="ThermostatRunningMode" define="THERMOSTAT_RUNNING_MODE" type="ThermostatRunningModeEnum" max="0x4" default="0" optional="true">
       <otherwiseConform>
@@ -476,7 +477,7 @@
         </optionalConform>
       </otherwiseConform>
     </attribute>
-    <attribute side="server" code="0x0020" name="StartOfWeek" define="START_OF_WEEK" type="StartOfWeekEnum" min="0x0" max="0x6" optional="true">
+    <attribute side="server" code="0x0020" name="StartOfWeek" define="START_OF_WEEK" type="StartOfWeekEnum" max="0x6" optional="true">
       <mandatoryConform>
         <feature name="SCH"/>
       </mandatoryConform>
@@ -491,7 +492,7 @@
         <feature name="SCH"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0023" name="TemperatureSetpointHold" define="TEMPERATURE_SETPOINT_HOLD" type="TemperatureSetpointHoldEnum" min="0x0" max="0x1" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x0023" name="TemperatureSetpointHold" define="TEMPERATURE_SETPOINT_HOLD" type="TemperatureSetpointHoldEnum" max="0x1" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
@@ -499,14 +500,14 @@
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0025" name="ThermostatProgrammingOperationMode" define="THERMOSTAT_PROGRAMMING_OPERATION_MODE" type="ProgrammingOperationModeBitmap" writable="true" default="0" optional="true" reportable="true" min="0x0" max="0x7">
+    <attribute side="server" code="0x0025" name="ThermostatProgrammingOperationMode" define="THERMOSTAT_PROGRAMMING_OPERATION_MODE" type="ProgrammingOperationModeBitmap" writable="true" default="0" optional="true" max="0x7">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0029" name="ThermostatRunningState" define="THERMOSTAT_RUNNING_STATE" type="RelayStateBitmap" optional="true" min="0x0" max="0x7F">
+    <attribute side="server" code="0x0029" name="ThermostatRunningState" define="THERMOSTAT_RUNNING_STATE" type="RelayStateBitmap" optional="true" max="0x7F">
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0030" name="SetpointChangeSource" define="SETPOINT_CHANGE_SOURCE" type="SetpointChangeSourceEnum" optional="true" default="0" min="0x0" max="0x2">
+    <attribute side="server" code="0x0030" name="SetpointChangeSource" define="SETPOINT_CHANGE_SOURCE" type="SetpointChangeSourceEnum" optional="true" default="0" max="0x2">
       <optionalConform/>
     </attribute>
     <attribute side="server" code="0x0031" name="SetpointChangeAmount" define="SETPOINT_CHANGE_AMOUNT" type="int16s" optional="true" isNullable="true">
@@ -515,23 +516,23 @@
     <attribute side="server" code="0x0032" name="SetpointChangeSourceTimestamp" define="SETPOINT_CHANGE_SOURCE_TIMESTAMP" type="epoch_s" optional="true" default="0">
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0034" name="OccupiedSetback" define="OCCUPIED_SETBACK" type="int8u" writable="true" optional="true" isNullable="true" max="254">
+    <attribute side="server" code="0x0034" name="OccupiedSetback" define="OCCUPIED_SETBACK" type="int8u" writable="true" optional="true" isNullable="true">
       <access op="write" privilege="manage"/>
       <mandatoryConform>
         <feature name="SB"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0035" name="OccupiedSetbackMin" define="OCCUPIED_SETBACK_MIN" type="int8u" optional="true" isNullable="true" max="254">
+    <attribute side="server" code="0x0035" name="OccupiedSetbackMin" define="OCCUPIED_SETBACK_MIN" type="int8u" optional="true" isNullable="true">
       <mandatoryConform>
         <feature name="SB"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0036" name="OccupiedSetbackMax" define="OCCUPIED_SETBACK_MAX" type="int8u" optional="true" isNullable="true" max="254">
+    <attribute side="server" code="0x0036" name="OccupiedSetbackMax" define="OCCUPIED_SETBACK_MAX" type="int8u" optional="true" isNullable="true">
       <mandatoryConform>
         <feature name="SB"/>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0037" name="UnoccupiedSetback" define="UNOCCUPIED_SETBACK" type="int8u" writable="true" optional="true" isNullable="true" max="254">
+    <attribute side="server" code="0x0037" name="UnoccupiedSetback" define="UNOCCUPIED_SETBACK" type="int8u" writable="true" optional="true" isNullable="true">
       <access op="write" privilege="manage"/>
       <mandatoryConform>
         <andTerm>
@@ -540,7 +541,7 @@
         </andTerm>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0038" name="UnoccupiedSetbackMin" define="UNOCCUPIED_SETBACK_MIN" type="int8u" optional="true" isNullable="true" max="254">
+    <attribute side="server" code="0x0038" name="UnoccupiedSetbackMin" define="UNOCCUPIED_SETBACK_MIN" type="int8u" optional="true" isNullable="true">
       <mandatoryConform>
         <andTerm>
           <feature name="SB"/>
@@ -548,7 +549,7 @@
         </andTerm>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x0039" name="UnoccupiedSetbackMax" define="UNOCCUPIED_SETBACK_MAX" type="int8u" optional="true" isNullable="true" max="254">
+    <attribute side="server" code="0x0039" name="UnoccupiedSetbackMax" define="UNOCCUPIED_SETBACK_MAX" type="int8u" optional="true" isNullable="true">
       <mandatoryConform>
         <andTerm>
           <feature name="SB"/>
@@ -556,23 +557,23 @@
         </andTerm>
       </mandatoryConform>
     </attribute>
-    <attribute side="server" code="0x003A" name="EmergencyHeatDelta" define="EMERGENCY_HEAT_DELTA" type="int8u" writable="true" optional="true" default="0xFF" min="0" max="255">
+    <attribute side="server" code="0x003A" name="EmergencyHeatDelta" define="EMERGENCY_HEAT_DELTA" type="int8u" writable="true" optional="true" default="0xFF">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0040" name="ACType" define="AC_TYPE" type="ACTypeEnum" min="0x0" max="0x4" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x0040" name="ACType" define="AC_TYPE" type="ACTypeEnum" max="0x4" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0041" name="ACCapacity" define="AC_CAPACITY" type="int16u" writable="true" default="0" optional="true" max="65535">
+    <attribute side="server" code="0x0041" name="ACCapacity" define="AC_CAPACITY" type="int16u" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0042" name="ACRefrigerantType" define="AC_REFRIGERANT_TYPE" type="ACRefrigerantTypeEnum" min="0x0" max="0x3" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x0042" name="ACRefrigerantType" define="AC_REFRIGERANT_TYPE" type="ACRefrigerantTypeEnum" max="0x3" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0043" name="ACCompressorType" define="AC_COMPRESSOR_TYPE" type="ACCompressorTypeEnum" min="0x0" max="0x3" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x0043" name="ACCompressorType" define="AC_COMPRESSOR_TYPE" type="ACCompressorTypeEnum" max="0x3" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
@@ -580,14 +581,14 @@
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0045" name="ACLouverPosition" define="AC_LOUVER_POSITION" type="ACLouverPositionEnum" min="0x0" max="0x5" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x0045" name="ACLouverPosition" define="AC_LOUVER_POSITION" type="ACLouverPositionEnum" max="0x5" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0046" name="ACCoilTemperature" define="AC_COIL_TEMPERATURE" type="temperature" optional="true" isNullable="true">
+    <attribute side="server" code="0x0046" name="ACCoilTemperature" define="AC_COIL_TEMPERATURE" type="temperature" optional="true" isNullable="true" min="-27315">
       <optionalConform/>
     </attribute>
-    <attribute side="server" code="0x0047" name="ACCapacityformat" define="AC_CAPACITY_FORMAT" type="ACCapacityFormatEnum" min="0x00" max="0x00" writable="true" default="0" optional="true">
+    <attribute side="server" code="0x0047" name="ACCapacityformat" define="AC_CAPACITY_FORMAT" type="ACCapacityFormatEnum" max="0x00" writable="true" default="0" optional="true">
       <access op="write" privilege="manage"/>
       <optionalConform/>
     </attribute>
@@ -631,7 +632,7 @@
         <feature name="MSCH"/>
       </mandatoryConform>
     </attribute>
-    <attribute code="0x0050" side="server" name="Presets" type="array" entryType="PresetStruct" define="PRESETS" writable="true" optional="true" mustUseAtomicWrite="true">
+    <attribute code="0x0050" side="server" name="Presets" type="array" entryType="PresetStruct" define="PRESETS" writable="true" optional="true" mustUseAtomicWrite="true" length="255">
       <access op="write" privilege="manage"/>
       <mandatoryConform>
         <feature name="PRES"/>
@@ -646,7 +647,7 @@
     <attribute code="0x0052" side="server" name="SetpointHoldExpiryTimestamp" type="epoch_s" define="SETPOINT_HOLD_EXPIRY_TIMESTAMP" optional="true" isNullable="true">
       <optionalConform/>
     </attribute>
-    <attribute code="0x0053" side="server" name="MaxThermostatSuggestions" define="MAX_THERMOSTAT_SUGGESTIONS" optional="true" type="int8u" min="5" apiMaturity="provisional">
+    <attribute code="0x0053" side="server" name="MaxThermostatSuggestions" define="MAX_THERMOSTAT_SUGGESTIONS" type="int8u" min="5" optional="true" apiMaturity="provisional">
       <otherwiseConform>
         <provisionalConform/>
         <mandatoryConform>
@@ -654,7 +655,7 @@
         </mandatoryConform>
       </otherwiseConform>
     </attribute>
-    <attribute code="0x0054" side="server" name="ThermostatSuggestions" define="THERMOSTAT_SUGGESTIONS" optional="true" type="array" entryType="ThermostatSuggestionStruct" length="255" apiMaturity="provisional">
+    <attribute code="0x0054" side="server" name="ThermostatSuggestions" define="THERMOSTAT_SUGGESTIONS" type="array" entryType="ThermostatSuggestionStruct" length="255" optional="true" apiMaturity="provisional">
       <otherwiseConform>
         <provisionalConform/>
         <mandatoryConform>
@@ -662,7 +663,7 @@
         </mandatoryConform>
       </otherwiseConform>
     </attribute>
-    <attribute code="0x0055" side="server" name="CurrentThermostatSuggestion" define="CURRENT_THERMOSTAT_SUGGESTION" optional="true" type="ThermostatSuggestionStruct" isNullable="true" apiMaturity="provisional">
+    <attribute code="0x0055" side="server" name="CurrentThermostatSuggestion" define="CURRENT_THERMOSTAT_SUGGESTION" type="ThermostatSuggestionStruct" isNullable="true" optional="true" apiMaturity="provisional">
       <otherwiseConform>
         <provisionalConform/>
         <mandatoryConform>
@@ -670,7 +671,7 @@
         </mandatoryConform>
       </otherwiseConform>
     </attribute>
-    <attribute code="0x0056" side="server" name="ThermostatSuggestionNotFollowingReason" define="THERMOSTAT_SUGGESTION_NOT_FOLLOWING_REASON" optional="true" type="ThermostatSuggestionNotFollowingReasonBitmap" isNullable="true" max="0x007F" apiMaturity="provisional">
+    <attribute code="0x0056" side="server" name="ThermostatSuggestionNotFollowingReason" define="THERMOSTAT_SUGGESTION_NOT_FOLLOWING_REASON" type="ThermostatSuggestionNotFollowingReasonBitmap" isNullable="true" max="0x00FF" optional="true" apiMaturity="provisional">
       <otherwiseConform>
         <provisionalConform/>
         <mandatoryConform>
@@ -679,19 +680,18 @@
       </otherwiseConform>
     </attribute>
     <!-- Client Commands -->
-    <command source="client" code="0x00" name="SetpointRaiseLower" optional="false">
+    <command source="client" code="0x00" name="SetpointRaiseLower">
       <description>Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them.</description>
-      <arg id="0" name="Mode" type="SetpointRaiseLowerModeEnum" min="0x0" max="0x2"/>
+      <arg id="0" name="Mode" type="SetpointRaiseLowerModeEnum" max="0x2"/>
       <arg id="1" name="Amount" type="int8s"/>
-      <mandatoryConform/>
     </command>
 
     <command source="client" code="0x01" name="SetWeeklySchedule" optional="true">
       <description>This command is used to update the thermostat weekly setpoint schedule from a management system.</description>
       <access op="invoke" privilege="manage"/>
       <arg id="0" name="NumberOfTransitionsForSequence" type="int8u"/>
-      <arg id="1" name="DayOfWeekForSequence" type="ScheduleDayOfWeekBitmap" min="0x0" max="0xFF"/>
-      <arg id="2" name="ModeForSequence" type="ScheduleModeBitmap" min="0x0" max="0x3"/>
+      <arg id="1" name="DayOfWeekForSequence" type="ScheduleDayOfWeekBitmap"/>
+      <arg id="2" name="ModeForSequence" type="ScheduleModeBitmap" max="0x3"/>
       <arg id="3" name="Transitions" type="WeeklyScheduleTransitionStruct" array="true" length="10"/>
       <mandatoryConform>
         <feature name="SCH"/>
@@ -700,13 +700,24 @@
 
     <command source="client" code="0x02" name="GetWeeklySchedule" response="GetWeeklyScheduleResponse" optional="true">
       <description>The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command.</description>
-      <arg id="0" name="DaysToReturn" type="ScheduleDayOfWeekBitmap" min="0x0" max="0xFF"/>
-      <arg id="1" name="ModeToReturn" type="ScheduleModeBitmap" min="0x0" max="0x3"/>
+      <arg id="0" name="DaysToReturn" type="ScheduleDayOfWeekBitmap"/>
+      <arg id="1" name="ModeToReturn" type="ScheduleModeBitmap" max="0x3"/>
       <mandatoryConform>
         <feature name="SCH"/>
       </mandatoryConform>
     </command>
 
+    <command code="0x02" source="server" name="AddThermostatSuggestionResponse" optional="true" disableDefaultResponse="true" apiMaturity="provisional">
+      <description/>
+      <arg id="0" name="UniqueID" type="int8u" apiMaturity="provisional"/>
+      <otherwiseConform>
+        <provisionalConform/>
+        <mandatoryConform>
+          <feature name="TSUGGEST"/>
+        </mandatoryConform>
+      </otherwiseConform>
+    </command>
+
     <command source="client" code="0x03" name="ClearWeeklySchedule" optional="true">
       <description>This command is used to clear the weekly schedule.</description>
       <access op="invoke" privilege="manage"/>
@@ -731,47 +742,36 @@
       </mandatoryConform>
     </command>
 
-    <command code="0x07" source="client" name="AddThermostatSuggestion" response="AddThermostatSuggestionResponse" apiMaturity="provisional">
-      <description/>
-      <access op="invoke" privilege="manage"/>
-      <arg id="0" name="PresetHandle" type="octet_string" length="16"/>
-      <arg id="1" name="EffectiveTime" type="epoch_s" isNullable="true"/>
-      <arg id="2" name="ExpirationInMinutes" type="int16u" min="30" max="1440"/>
-      <otherwiseConform>
-        <provisionalConform/>
-        <mandatoryConform>
-          <feature name="TSUGGEST"/>
-        </mandatoryConform>
-      </otherwiseConform>
-    </command>
-
-    <command code="0x08" source="client" name="RemoveThermostatSuggestion" apiMaturity="provisional">
-      <description/>
-      <access op="invoke" privilege="manage"/>
-      <arg id="0" name="UniqueID" type="int8u"/>
-      <otherwiseConform>
-        <provisionalConform/>
-        <mandatoryConform>
-          <feature name="TSUGGEST"/>
-        </mandatoryConform>
-      </otherwiseConform>
-    </command>
-
     <!-- Server Commands/Responses -->
     <command source="server" code="0x00" name="GetWeeklyScheduleResponse" optional="true" disableDefaultResponse="true">
       <description>This command has the same payload format as the Set Weekly Schedule.</description>
       <arg id="0" name="NumberOfTransitionsForSequence" type="int8u"/>
-      <arg id="1" name="DayOfWeekForSequence" type="ScheduleDayOfWeekBitmap" min="0x0" max="0xFF"/>
-      <arg id="2" name="ModeForSequence" type="ScheduleModeBitmap" min="0x0" max="0x3"/>
+      <arg id="1" name="DayOfWeekForSequence" type="ScheduleDayOfWeekBitmap"/>
+      <arg id="2" name="ModeForSequence" type="ScheduleModeBitmap" max="0x3"/>
       <arg id="3" name="Transitions" type="WeeklyScheduleTransitionStruct" array="true" length="10"/>
       <mandatoryConform>
         <feature name="SCH"/>
       </mandatoryConform>
     </command>
 
-    <command code="0x02" source="server" name="AddThermostatSuggestionResponse" disableDefaultResponse="true" apiMaturity="provisional">
+    <command code="0x07" source="client" name="AddThermostatSuggestion" optional="true" response="AddThermostatSuggestionResponse" apiMaturity="provisional">
       <description/>
-      <arg id="0" name="UniqueID" type="int8u"/>
+      <access op="invoke" privilege="manage"/>
+      <arg id="0" name="PresetHandle" type="octet_string" length="16" apiMaturity="provisional"/>
+      <arg id="1" name="EffectiveTime" type="epoch_s" isNullable="true" apiMaturity="provisional"/>
+      <arg id="2" name="ExpirationInMinutes" type="int16u" min="30" max="1440" apiMaturity="provisional"/>
+      <otherwiseConform>
+        <provisionalConform/>
+        <mandatoryConform>
+          <feature name="TSUGGEST"/>
+        </mandatoryConform>
+      </otherwiseConform>
+    </command>
+
+    <command code="0x08" source="client" name="RemoveThermostatSuggestion" optional="true" apiMaturity="provisional">
+      <description/>
+      <access op="invoke" privilege="manage"/>
+      <arg id="0" name="UniqueID" type="int8u" apiMaturity="provisional"/>
       <otherwiseConform>
         <provisionalConform/>
         <mandatoryConform>
@@ -795,7 +795,7 @@
       <arg id="0" name="Timeout" type="int16u" optional="true"/>
     </command>
 
-    <event code="0x0000" name="SystemModeChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0000" name="SystemModeChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="PreviousSystemMode" type="SystemModeEnum" optional="true" max="0x09" apiMaturity="provisional"/>
       <field id="1" name="CurrentSystemMode" type="SystemModeEnum" max="0x09" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the SystemMode attribute changes.</description>
@@ -807,7 +807,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0001" name="LocalTemperatureChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0001" name="LocalTemperatureChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="CurrentLocalTemperature" type="temperature" isNullable="true" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the LocalTemperature attribute changes significantly.</description>
       <otherwiseConform>
@@ -823,7 +823,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0002" name="OccupancyChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0002" name="OccupancyChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="PreviousOccupancy" type="OccupancyBitmap" optional="true" max="0x01" apiMaturity="provisional"/>
       <field id="1" name="CurrentOccupancy" type="OccupancyBitmap" max="0x01" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the Occupancy attribute changes.</description>
@@ -838,7 +838,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0003" name="SetpointChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0003" name="SetpointChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="SystemMode" type="SystemModeEnum" min="0x03" max="0x04" apiMaturity="provisional"/>
       <field id="1" name="Occupancy" type="OccupancyBitmap" optional="true" default="0x01" max="0x01" apiMaturity="provisional"/>
       <field id="2" name="PreviousSetpoint" type="temperature" optional="true" apiMaturity="provisional"/>
@@ -852,7 +852,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0004" name="RunningStateChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0004" name="RunningStateChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="PreviousRunningState" type="RelayStateBitmap" optional="true" max="0x007F" apiMaturity="provisional"/>
       <field id="1" name="CurrentRunningState" type="RelayStateBitmap" max="0x007F" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the ThermostatRunningState attribute changes.</description>
@@ -864,7 +864,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0005" name="RunningModeChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0005" name="RunningModeChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="PreviousRunningMode" type="ThermostatRunningModeEnum" optional="true" max="0x04" apiMaturity="provisional"/>
       <field id="1" name="CurrentRunningMode" type="ThermostatRunningModeEnum" max="0x04" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the ThermostatRunningMode attribute changes.</description>
@@ -879,7 +879,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0006" name="ActiveScheduleChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0006" name="ActiveScheduleChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="PreviousScheduleHandle" type="octet_string" optional="true" isNullable="true" length="16" apiMaturity="provisional"/>
       <field id="1" name="CurrentScheduleHandle" type="octet_string" isNullable="true" length="16" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the ActiveScheduleHandle attribute changes.</description>
@@ -894,7 +894,7 @@
       </otherwiseConform>
     </event>
 
-    <event code="0x0007" name="ActivePresetChange" priority="info" side="server" apiMaturity="provisional">
+    <event code="0x0007" name="ActivePresetChange" priority="info" side="server" apiMaturity="provisional" optional="true">
       <field id="0" name="PreviousPresetHandle" type="octet_string" optional="true" isNullable="true" length="16" apiMaturity="provisional"/>
       <field id="1" name="CurrentPresetHandle" type="octet_string" isNullable="true" length="16" apiMaturity="provisional"/>
       <description>This event SHALL be generated when the ActivePresetHandle attribute changes.</description>
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 1afe116..0267a2c 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -7027,6 +7027,7 @@
     kMatterScheduleConfiguration = 0x80;
     kPresets = 0x100;
     kEvents = 0x200;
+    kThermostatSuggestions = 0x400;
   }
 
   bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -7098,6 +7099,7 @@
     kVacationMode = 0x10;
     kTimeOfUseCostSavings = 0x20;
     kPreCoolingOrPreHeating = 0x40;
+    kConflictingSuggestions = 0x80;
   }
 
   struct ScheduleTransitionStruct {
diff --git a/src/controller/python/matter/clusters/Objects.py b/src/controller/python/matter/clusters/Objects.py
index 1884095..422a85f 100644
--- a/src/controller/python/matter/clusters/Objects.py
+++ b/src/controller/python/matter/clusters/Objects.py
@@ -31877,6 +31877,7 @@
             kMatterScheduleConfiguration = 0x80
             kPresets = 0x100
             kEvents = 0x200
+            kThermostatSuggestions = 0x400
 
         class HVACSystemTypeBitmap(IntFlag):
             kCoolingStage = 0x3
@@ -31938,6 +31939,7 @@
             kVacationMode = 0x10
             kTimeOfUseCostSavings = 0x20
             kPreCoolingOrPreHeating = 0x40
+            kConflictingSuggestions = 0x80
 
     class Structs:
         @dataclass
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index c37fa36..fed9bb9 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -20625,6 +20625,7 @@
     MTRThermostatFeatureMatterScheduleConfiguration MTR_AVAILABLE(ios(18.4), macos(15.4), watchos(11.4), tvos(18.4)) = 0x80,
     MTRThermostatFeaturePresets MTR_AVAILABLE(ios(18.4), macos(15.4), watchos(11.4), tvos(18.4)) = 0x100,
     MTRThermostatFeatureEvents MTR_PROVISIONALLY_AVAILABLE = 0x200,
+    MTRThermostatFeatureThermostatSuggestions MTR_PROVISIONALLY_AVAILABLE = 0x400,
 } MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
 
 typedef NS_OPTIONS(uint8_t, MTRThermostatHVACSystemTypeBitmap) {
@@ -20715,6 +20716,7 @@
     MTRThermostatSuggestionNotFollowingReasonBitmapVacationMode MTR_PROVISIONALLY_AVAILABLE = 0x10,
     MTRThermostatSuggestionNotFollowingReasonBitmapTimeOfUseCostSavings MTR_PROVISIONALLY_AVAILABLE = 0x20,
     MTRThermostatSuggestionNotFollowingReasonBitmapPreCoolingOrPreHeating MTR_PROVISIONALLY_AVAILABLE = 0x40,
+    MTRThermostatSuggestionNotFollowingReasonBitmapConflictingSuggestions MTR_PROVISIONALLY_AVAILABLE = 0x80,
 } MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_ENUM(uint8_t, MTRFanControlAirflowDirection) {
diff --git a/zzz_generated/app-common/clusters/Thermostat/Enums.h b/zzz_generated/app-common/clusters/Thermostat/Enums.h
index dce4ea0..1562d5c 100644
--- a/zzz_generated/app-common/clusters/Thermostat/Enums.h
+++ b/zzz_generated/app-common/clusters/Thermostat/Enums.h
@@ -240,6 +240,7 @@
     kMatterScheduleConfiguration = 0x80,
     kPresets                     = 0x100,
     kEvents                      = 0x200,
+    kThermostatSuggestions       = 0x400,
 };
 
 // Bitmap for HVACSystemTypeBitmap
@@ -331,6 +332,7 @@
     kVacationMode           = 0x10,
     kTimeOfUseCostSavings   = 0x20,
     kPreCoolingOrPreHeating = 0x40,
+    kConflictingSuggestions = 0x80,
 };
 } // namespace Thermostat
 } // namespace Clusters