diff --git a/src/app/zap-templates/zcl/data-model/chip/time-synchronization-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/time-synchronization-cluster.xml
index 5f997a98f68002..3ee77549dae7dd 100644
--- a/src/app/zap-templates/zcl/data-model/chip/time-synchronization-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/time-synchronization-cluster.xml
@@ -47,14 +47,14 @@ limitations under the License.
-
+
-
+
@@ -84,13 +84,13 @@ security materials.
-
+
TimeZone
-
- DstOffset
+
+ DSTOffset
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt b/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
index dc1a5aa40ba4e7..ca8faae2b0fd82 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
@@ -94,6 +94,14 @@ MTRAttributeIDTypeCluster{{>cluster}}Attribute{{>attribute}}ID {{availability (a
MTRAttributeIDTypeGlobalAttribute{{asUpperCamelCase label}}ID,
{{/if}}
{{/unless}}
+{{! Anything which has an old name, and the new name was introduced in the "First after major API revamp" release or later
+ (or just after the "First major API revamp" release, but we don't have a good way to test for that),
+ we need to generate the new-form id for the old name too, as long as it was not removed. }}
+{{#if (and (hasOldName (asUpperCamelCase ../clusterName preserveAcronyms=true) attribute=(asUpperCamelCase label preserveAcronyms=true) isForIds=true)
+ (not (wasIntroducedBeforeRelease "First after major API revamp" (asUpperCamelCase ../clusterName preserveAcronyms=true) attribute=(asUpperCamelCase label preserveAcronyms=true) isForIds=true))
+ (not (wasRemoved (compatClusterNameRemapping ../clusterName) attribute=(compatAttributeNameRemapping ../clusterName label) isForIds=true)))}}
+MTRAttributeIDTypeCluster{{compatClusterNameRemapping ../clusterName}}Attribute{{compatAttributeNameRemapping ../clusterName label}}ID {{availability (compatClusterNameRemapping ../clusterName) attribute=(compatAttributeNameRemapping ../clusterName label) isForIds=true minimalRelease="First major API revamp" deprecationMessage=(concat "Please use MTRAttributeIDType" (asUpperCamelCase ../clusterName preserveAcronyms=true) "Attribute" (asUpperCamelCase label preserveAcronyms=true) "ID")}} = MTRAttributeIDTypeCluster{{>cluster}}Attribute{{>attribute}}ID,
+{{/if}}
{{#last}}
{{/last}}
diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml
index 9c858aa64f8d74..d197da56df6a20 100644
--- a/src/darwin/Framework/CHIP/templates/availability.yaml
+++ b/src/darwin/Framework/CHIP/templates/availability.yaml
@@ -6503,7 +6503,7 @@
HeatSetpointPresent: HeatSetpointFieldPresent
CoolSetpointPresent: CoolSetpointFieldPresent
-- release: "Future"
+- release: "First after major API revamp"
versions: "future"
introduced:
global attributes:
@@ -6565,6 +6565,7 @@
- EventList
TimeSynchronization:
- EventList
+ - DSTOffset
BridgedDeviceBasicInformation:
- EventList
Switch:
@@ -6651,10 +6652,32 @@
- EventList
FaultInjection:
- EventList
+ structs:
+ TimeSynchronization:
+ - DSTOffsetStruct
+ - TimeZoneStruct
+ struct fields:
+ TimeSynchronization:
+ DSTOffsetStruct:
+ - offset
+ - validStarting
+ - validUntil
+ TimeZoneStruct:
+ - offset
+ - validAt
+ - name
enum values:
DoorLock:
LockDataTypeEnum:
- FingerVein
+ deprecated:
+ attributes:
+ TimeSynchronization:
+ - DstOffset
+ structs:
+ TimeSynchronization:
+ - DstOffsetType
+ - TimeZoneType
removed:
enum values:
DoorLock:
@@ -6662,3 +6685,11 @@
# This value never existed for this enum name so, don't start
# exposing it. It's exposed for LockDataTypeEnum
- FingerVein
+ renames:
+ structs:
+ TimeSynchronization:
+ DSTOffsetStruct: DstOffsetType
+ TimeZoneStruct: TimeZoneType
+ attributes:
+ TimeSynchronization:
+ DSTOffset: DstOffset