Use ZAP to generate a more minimal code/reviewable IDL of what is enabled. (#13544)

* Start building a 'matter IDL' generator.

I would like to see what data is being generated WITHOUT trying
to parse code. This would make it easier on code reviews
and generally understanding what xml + zap actually mean.

* Some initial example: can generate clusters and attributes and a lot of  data types

* make fabric scoped by show up

* Add listing of commands

* make commands take arguments

* Only add cluster enums to the IDL

* Ran zap-all generate to get a lot of matter IDL files

* Support full command request/response and start describing endpoints

* Much better  display: only used structs and group by cluster and global as well

* regen all and this time the content seems smaller and focused

* Update FIXME to actual doc ... fixme was  done

* ZAP regen all again

* Restyle fixes

* Split longer line ifs onto separate lines

* Code review noticed readonly and readwrite were switched. Fix that

* Add support for flagging list attributes with []

* Add detection of array types, optionallity and nullability in struct items

* Optionality, nullability and list in request/response structs

* regen all

* Propper support for events, fix namings for structs

* Add indices to request and response parameters. Do not  include empty requests (they serve no purpose)

* re-ran zap, made some  things non-reportable
diff --git a/zzz_generated/lighting-app/zap-generated/Clusters.matter b/zzz_generated/lighting-app/zap-generated/Clusters.matter
new file mode 100644
index 0000000..2e8f084
--- /dev/null
+++ b/zzz_generated/lighting-app/zap-generated/Clusters.matter
@@ -0,0 +1,1390 @@
+// This IDL was generated automatically by ZAP.
+// It is for view/code review purposes only.
+
+struct LabelStruct {
+    CHAR_STRING label = 1;
+    CHAR_STRING value = 2;
+}
+
+server cluster AdministratorCommissioning = 60 {
+  enum CommissioningWindowStatus : ENUM8 {
+    kWindowNotOpen = 0;
+    kEnhancedWindowOpen = 1;
+    kBasicWindowOpen = 2;
+  }
+
+  enum StatusCode : ENUM8 {
+    kBusy = 1;
+    kPAKEParameterError = 2;
+    kWindowNotOpen = 3;
+  }
+
+  attribute(readonly) int8u windowStatus = 0;
+  attribute(readonly) fabric_idx adminFabricIndex = 1;
+  attribute(readonly) int16u adminVendorId = 2;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct OpenBasicCommissioningWindowRequest {
+    INT16U commissioningTimeout = 0;
+  }
+
+  request struct OpenCommissioningWindowRequest {
+    INT16U commissioningTimeout = 0;
+    OCTET_STRING PAKEVerifier = 1;
+    INT16U discriminator = 2;
+    INT32U iterations = 3;
+    OCTET_STRING salt = 4;
+    INT16U passcodeID = 5;
+  }
+
+  command OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1;
+  command OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0;
+  command RevokeCommissioning(): DefaultSuccess = 2;
+}
+
+server cluster Basic = 40 {
+  critical event StartUp = 0 {
+    INT32U softwareVersion = 0;
+  }
+
+  critical event ShutDown = 1 {
+  }
+
+  info event Leave = 2 {
+  }
+
+  info event ReachableChanged = 3 {
+    boolean reachableNewValue = 0;
+  }
+
+  attribute(readonly, reportable) int16u interactionModelVersion = 0;
+  attribute(readonly, reportable) char_string vendorName = 1;
+  attribute(readonly, reportable) vendor_id vendorID = 2;
+  attribute(readonly, reportable) char_string productName = 3;
+  attribute(readonly, reportable) int16u productID = 4;
+  attribute(writable, reportable) char_string nodeLabel = 5;
+  attribute(writable, reportable) char_string location = 6;
+  attribute(readonly, reportable) int16u hardwareVersion = 7;
+  attribute(readonly, reportable) char_string hardwareVersionString = 8;
+  attribute(readonly, reportable) int32u softwareVersion = 9;
+  attribute(readonly, reportable) char_string softwareVersionString = 10;
+  attribute(readonly, reportable) char_string manufacturingDate = 11;
+  attribute(readonly, reportable) char_string partNumber = 12;
+  attribute(readonly, reportable) long_char_string productURL = 13;
+  attribute(readonly, reportable) char_string productLabel = 14;
+  attribute(readonly, reportable) char_string serialNumber = 15;
+  attribute(writable, reportable) boolean localConfigDisabled = 16;
+  attribute(readonly, reportable) boolean reachable = 17;
+  attribute(readonly) char_string uniqueID = 18;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+}
+
+server cluster ColorControl = 768 {
+  enum ColorLoopAction : ENUM8 {
+    kDeactivate = 0;
+    kActivateFromColorLoopStartEnhancedHue = 1;
+    kActivateFromEnhancedCurrentHue = 2;
+  }
+
+  enum ColorLoopDirection : ENUM8 {
+    kDecrementHue = 0;
+    kIncrementHue = 1;
+  }
+
+  enum ColorMode : ENUM8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperature = 2;
+  }
+
+  enum HueDirection : ENUM8 {
+    kShortestDistance = 0;
+    kLongestDistance = 1;
+    kUp = 2;
+    kDown = 3;
+  }
+
+  enum HueMoveMode : ENUM8 {
+    kStop = 0;
+    kUp = 1;
+    kDown = 3;
+  }
+
+  enum HueStepMode : ENUM8 {
+    kUp = 1;
+    kDown = 3;
+  }
+
+  enum SaturationMoveMode : ENUM8 {
+    kStop = 0;
+    kUp = 1;
+    kDown = 3;
+  }
+
+  enum SaturationStepMode : ENUM8 {
+    kUp = 1;
+    kDown = 3;
+  }
+
+  attribute(readonly, reportable) int8u currentHue = 0;
+  attribute(readonly, reportable) int8u currentSaturation = 1;
+  attribute(readonly, reportable) int16u remainingTime = 2;
+  attribute(readonly, reportable) int16u currentX = 3;
+  attribute(readonly, reportable) int16u currentY = 4;
+  attribute(readonly, reportable) int16u colorTemperature = 7;
+  attribute(readonly, reportable) enum8 colorMode = 8;
+  attribute(writable, reportable) bitmap8 colorControlOptions = 15;
+  attribute(readonly, reportable) int8u numberOfPrimaries = 16;
+  attribute(readonly, reportable) int16u enhancedCurrentHue = 16384;
+  attribute(readonly, reportable) enum8 enhancedColorMode = 16385;
+  attribute(readonly, reportable) int8u colorLoopActive = 16386;
+  attribute(readonly, reportable) int8u colorLoopDirection = 16387;
+  attribute(readonly, reportable) int16u colorLoopTime = 16388;
+  attribute(readonly, reportable) int16u colorLoopStartEnhancedHue = 16389;
+  attribute(readonly, reportable) int16u colorLoopStoredEnhancedHue = 16390;
+  attribute(readonly, reportable) bitmap16 colorCapabilities = 16394;
+  attribute(readonly, reportable) int16u colorTempPhysicalMin = 16395;
+  attribute(readonly, reportable) int16u colorTempPhysicalMax = 16396;
+  attribute(readonly, reportable) int16u coupleColorTempToLevelMinMireds = 16397;
+  attribute(writable, reportable) int16u startUpColorTemperatureMireds = 16400;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct ColorLoopSetRequest {
+    ColorLoopUpdateFlags updateFlags = 0;
+    ColorLoopAction action = 1;
+    ColorLoopDirection direction = 2;
+    INT16U time = 3;
+    INT16U startHue = 4;
+    BITMAP8 optionsMask = 5;
+    BITMAP8 optionsOverride = 6;
+  }
+
+  request struct EnhancedMoveHueRequest {
+    HueMoveMode moveMode = 0;
+    INT16U rate = 1;
+    BITMAP8 optionsMask = 2;
+    BITMAP8 optionsOverride = 3;
+  }
+
+  request struct EnhancedMoveToHueRequest {
+    INT16U enhancedHue = 0;
+    HueDirection direction = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct EnhancedMoveToHueAndSaturationRequest {
+    INT16U enhancedHue = 0;
+    INT8U saturation = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct EnhancedStepHueRequest {
+    HueStepMode stepMode = 0;
+    INT16U stepSize = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct MoveColorRequest {
+    INT16S rateX = 0;
+    INT16S rateY = 1;
+    BITMAP8 optionsMask = 2;
+    BITMAP8 optionsOverride = 3;
+  }
+
+  request struct MoveColorTemperatureRequest {
+    HueMoveMode moveMode = 0;
+    INT16U rate = 1;
+    INT16U colorTemperatureMinimum = 2;
+    INT16U colorTemperatureMaximum = 3;
+    BITMAP8 optionsMask = 4;
+    BITMAP8 optionsOverride = 5;
+  }
+
+  request struct MoveHueRequest {
+    HueMoveMode moveMode = 0;
+    INT8U rate = 1;
+    BITMAP8 optionsMask = 2;
+    BITMAP8 optionsOverride = 3;
+  }
+
+  request struct MoveSaturationRequest {
+    SaturationMoveMode moveMode = 0;
+    INT8U rate = 1;
+    BITMAP8 optionsMask = 2;
+    BITMAP8 optionsOverride = 3;
+  }
+
+  request struct MoveToColorRequest {
+    INT16U colorX = 0;
+    INT16U colorY = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct MoveToColorTemperatureRequest {
+    INT16U colorTemperature = 0;
+    INT16U transitionTime = 1;
+    BITMAP8 optionsMask = 2;
+    BITMAP8 optionsOverride = 3;
+  }
+
+  request struct MoveToHueRequest {
+    INT8U hue = 0;
+    HueDirection direction = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct MoveToHueAndSaturationRequest {
+    INT8U hue = 0;
+    INT8U saturation = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct MoveToSaturationRequest {
+    INT8U saturation = 0;
+    INT16U transitionTime = 1;
+    BITMAP8 optionsMask = 2;
+    BITMAP8 optionsOverride = 3;
+  }
+
+  request struct StepColorRequest {
+    INT16S stepX = 0;
+    INT16S stepY = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct StepColorTemperatureRequest {
+    HueStepMode stepMode = 0;
+    INT16U stepSize = 1;
+    INT16U transitionTime = 2;
+    INT16U colorTemperatureMinimum = 3;
+    INT16U colorTemperatureMaximum = 4;
+    BITMAP8 optionsMask = 5;
+    BITMAP8 optionsOverride = 6;
+  }
+
+  request struct StepHueRequest {
+    HueStepMode stepMode = 0;
+    INT8U stepSize = 1;
+    INT8U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct StepSaturationRequest {
+    SaturationStepMode stepMode = 0;
+    INT8U stepSize = 1;
+    INT8U transitionTime = 2;
+    BITMAP8 optionsMask = 3;
+    BITMAP8 optionsOverride = 4;
+  }
+
+  request struct StopMoveStepRequest {
+    BITMAP8 optionsMask = 0;
+    BITMAP8 optionsOverride = 1;
+  }
+
+  command ColorLoopSet(ColorLoopSetRequest): DefaultSuccess = 68;
+  command EnhancedMoveHue(EnhancedMoveHueRequest): DefaultSuccess = 65;
+  command EnhancedMoveToHue(EnhancedMoveToHueRequest): DefaultSuccess = 64;
+  command EnhancedMoveToHueAndSaturation(EnhancedMoveToHueAndSaturationRequest): DefaultSuccess = 67;
+  command EnhancedStepHue(EnhancedStepHueRequest): DefaultSuccess = 66;
+  command MoveColor(MoveColorRequest): DefaultSuccess = 8;
+  command MoveColorTemperature(MoveColorTemperatureRequest): DefaultSuccess = 75;
+  command MoveHue(MoveHueRequest): DefaultSuccess = 1;
+  command MoveSaturation(MoveSaturationRequest): DefaultSuccess = 4;
+  command MoveToColor(MoveToColorRequest): DefaultSuccess = 7;
+  command MoveToColorTemperature(MoveToColorTemperatureRequest): DefaultSuccess = 10;
+  command MoveToHue(MoveToHueRequest): DefaultSuccess = 0;
+  command MoveToHueAndSaturation(MoveToHueAndSaturationRequest): DefaultSuccess = 6;
+  command MoveToSaturation(MoveToSaturationRequest): DefaultSuccess = 3;
+  command StepColor(StepColorRequest): DefaultSuccess = 9;
+  command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76;
+  command StepHue(StepHueRequest): DefaultSuccess = 2;
+  command StepSaturation(StepSaturationRequest): DefaultSuccess = 5;
+  command StopMoveStep(StopMoveStepRequest): DefaultSuccess = 71;
+}
+
+server cluster Descriptor = 29 {
+  struct DeviceType {
+    DEVTYPE_ID type = 1;
+    INT16U revision = 2;
+  }
+
+  attribute(readonly, reportable) DeviceType deviceList[] = 0;
+  attribute(readonly, reportable) CLUSTER_ID serverList[] = 1;
+  attribute(readonly, reportable) CLUSTER_ID clientList[] = 2;
+  attribute(readonly, reportable) ENDPOINT_NO partsList[] = 3;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+}
+
+server cluster DiagnosticLogs = 50 {
+  enum LogsIntent : ENUM8 {
+    kEndUserSupport = 0;
+    kNetworkDiag = 1;
+    kCrashLogs = 2;
+  }
+
+  enum LogsStatus : ENUM8 {
+    kSuccess = 0;
+    kExhausted = 1;
+    kNoLogs = 2;
+    kBusy = 3;
+    kDenied = 4;
+  }
+
+  enum LogsTransferProtocol : ENUM8 {
+    kResponsePayload = 0;
+    kBdx = 1;
+  }
+
+
+  request struct RetrieveLogsRequestRequest {
+    LogsIntent intent = 0;
+    LogsTransferProtocol requestedProtocol = 1;
+    OCTET_STRING transferFileDesignator = 2;
+  }
+
+  command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0;
+}
+
+server cluster EthernetNetworkDiagnostics = 55 {
+  enum PHYRateType : ENUM8 {
+    k10m = 0;
+    k100m = 1;
+    k1000m = 2;
+    k25g = 3;
+    k5g = 4;
+    k10g = 5;
+    k40g = 6;
+    k100g = 7;
+    k200g = 8;
+    k400g = 9;
+  }
+
+  attribute(readonly, reportable) enum8 PHYRate = 0;
+  attribute(readonly, reportable) boolean fullDuplex = 1;
+  attribute(readonly, reportable) int64u packetRxCount = 2;
+  attribute(readonly, reportable) int64u packetTxCount = 3;
+  attribute(readonly, reportable) int64u txErrCount = 4;
+  attribute(readonly, reportable) int64u collisionCount = 5;
+  attribute(readonly, reportable) int64u overrunCount = 6;
+  attribute(readonly, reportable) boolean carrierDetect = 7;
+  attribute(readonly, reportable) int64u timeSinceReset = 8;
+  attribute(readonly) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  command ResetCounts(): DefaultSuccess = 0;
+}
+
+server cluster FixedLabel = 64 {
+  attribute(readonly) LabelStruct labelList[] = 0;
+  attribute(readonly) int16u clusterRevision = 65533;
+}
+
+server cluster GeneralCommissioning = 48 {
+  enum GeneralCommissioningError : ENUM8 {
+    kOk = 0;
+    kValueOutsideRange = 1;
+    kInvalidAuthentication = 2;
+    kNotCommissioning = 3;
+  }
+
+  enum RegulatoryLocationType : ENUM8 {
+    kIndoor = 0;
+    kOutdoor = 1;
+    kIndoorOutdoor = 2;
+  }
+
+  struct BasicCommissioningInfoType {
+    INT32U failSafeExpiryLengthMs = 1;
+  }
+
+  attribute(writable, reportable) int64u breadcrumb = 0;
+  attribute(readonly, reportable) BasicCommissioningInfoType basicCommissioningInfoList[] = 1;
+  attribute(readonly) enum8 regulatoryConfig = 2;
+  attribute(readonly) enum8 locationCapability = 3;
+  attribute(readonly) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct ArmFailSafeRequest {
+    INT16U expiryLengthSeconds = 0;
+    INT64U breadcrumb = 1;
+    INT32U timeoutMs = 2;
+  }
+
+  request struct SetRegulatoryConfigRequest {
+    RegulatoryLocationType location = 0;
+    CHAR_STRING countryCode = 1;
+    INT64U breadcrumb = 2;
+    INT32U timeoutMs = 3;
+  }
+
+  response struct ArmFailSafeResponse {
+    GeneralCommissioningError errorCode = 0;
+    CHAR_STRING debugText = 1;
+  }
+
+  response struct CommissioningCompleteResponse {
+    GeneralCommissioningError errorCode = 0;
+    CHAR_STRING debugText = 1;
+  }
+
+  response struct SetRegulatoryConfigResponse {
+    GeneralCommissioningError errorCode = 0;
+    CHAR_STRING debugText = 1;
+  }
+
+  command ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0;
+  command CommissioningComplete(): CommissioningCompleteResponse = 4;
+  command SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2;
+}
+
+server cluster GeneralDiagnostics = 51 {
+  enum BootReasonType : ENUM8 {
+    kUnspecified = 0;
+    kPowerOnReboot = 1;
+    kBrownOutReset = 2;
+    kSoftwareWatchdogReset = 3;
+    kHardwareWatchdogReset = 4;
+    kSoftwareUpdateCompleted = 5;
+    kSoftwareReset = 6;
+  }
+
+  enum HardwareFaultType : ENUM8 {
+    kUnspecified = 0;
+    kRadio = 1;
+    kSensor = 2;
+    kResettableOverTemp = 3;
+    kNonResettableOverTemp = 4;
+    kPowerSource = 5;
+    kVisualDisplayFault = 6;
+    kAudioOutputFault = 7;
+    kUserInterfaceFault = 8;
+    kNonVolatileMemoryError = 9;
+    kTamperDetected = 10;
+  }
+
+  enum InterfaceType : ENUM8 {
+    kUnspecified = 0;
+    kWiFi = 1;
+    kEthernet = 2;
+    kCellular = 3;
+    kThread = 4;
+  }
+
+  enum NetworkFaultType : ENUM8 {
+    kUnspecified = 0;
+    kHardwareFailure = 1;
+    kNetworkJammed = 2;
+    kConnectionFailed = 3;
+  }
+
+  enum RadioFaultType : ENUM8 {
+    kUnspecified = 0;
+    kWiFiFault = 1;
+    kCellularFault = 2;
+    kThreadFault = 3;
+    kNFCFault = 4;
+    kBLEFault = 5;
+    kEthernetFault = 6;
+  }
+
+  struct NetworkInterfaceType {
+    CHAR_STRING name = 1;
+    BOOLEAN fabricConnected = 2;
+    BOOLEAN offPremiseServicesReachableIPv4 = 3;
+    BOOLEAN offPremiseServicesReachableIPv6 = 4;
+    OCTET_STRING hardwareAddress = 5;
+    InterfaceType type = 6;
+  }
+
+  critical event HardwareFaultChange = 0 {
+    HardwareFaultType current[] = 0;
+    HardwareFaultType previous[] = 1;
+  }
+
+  critical event RadioFaultChange = 1 {
+    RadioFaultType current[] = 0;
+    RadioFaultType previous[] = 1;
+  }
+
+  critical event NetworkFaultChange = 2 {
+    NetworkFaultType current[] = 0;
+    NetworkFaultType previous[] = 1;
+  }
+
+  critical event BootReason = 3 {
+    BootReasonType bootReason = 0;
+  }
+
+  attribute(readonly, reportable) NetworkInterfaceType networkInterfaces[] = 0;
+  attribute(readonly, reportable) int16u rebootCount = 1;
+  attribute(readonly, reportable) int64u upTime = 2;
+  attribute(readonly, reportable) int32u totalOperationalHours = 3;
+  attribute(readonly, reportable) enum8 bootReasons = 4;
+  attribute(readonly, reportable) ENUM8 activeHardwareFaults[] = 5;
+  attribute(readonly, reportable) ENUM8 activeRadioFaults[] = 6;
+  attribute(readonly, reportable) ENUM8 activeNetworkFaults[] = 7;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+}
+
+server cluster Identify = 3 {
+  enum IdentifyEffectIdentifier : ENUM8 {
+    kBlink = 0;
+    kBreathe = 1;
+    kOkay = 2;
+    kChannelChange = 11;
+    kFinishEffect = 254;
+    kStopEffect = 255;
+  }
+
+  enum IdentifyEffectVariant : ENUM8 {
+    kDefault = 0;
+  }
+
+  enum IdentifyIdentifyType : ENUM8 {
+    kNone = 0;
+    kVisibleLight = 1;
+    kVisibleLED = 2;
+    kAudibleBeep = 3;
+    kDisplay = 4;
+    kActuator = 5;
+  }
+
+  attribute(writable, reportable) int16u identifyTime = 0;
+  attribute(readonly, reportable) enum8 identifyType = 1;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct IdentifyRequest {
+    INT16U identifyTime = 0;
+  }
+
+  request struct TriggerEffectRequest {
+    IdentifyEffectIdentifier effectIdentifier = 0;
+    IdentifyEffectVariant effectVariant = 1;
+  }
+
+  response struct IdentifyQueryResponse {
+    INT16U timeout = 0;
+  }
+
+  command Identify(IdentifyRequest): DefaultSuccess = 0;
+  command IdentifyQuery(): IdentifyQueryResponse = 1;
+  command TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64;
+}
+
+server cluster LevelControl = 8 {
+  enum MoveMode : ENUM8 {
+    kUp = 0;
+    kDown = 1;
+  }
+
+  enum StepMode : ENUM8 {
+    kUp = 0;
+    kDown = 1;
+  }
+
+  attribute(readonly, reportable) int8u currentLevel = 0;
+  attribute(readonly, reportable) int16u remainingTime = 1;
+  attribute(readonly, reportable) int8u minLevel = 2;
+  attribute(readonly, reportable) int8u maxLevel = 3;
+  attribute(readonly, reportable) int16u currentFrequency = 4;
+  attribute(readonly, reportable) int16u minFrequency = 5;
+  attribute(readonly, reportable) int16u maxFrequency = 6;
+  attribute(writable, reportable) bitmap8 options = 15;
+  attribute(writable, reportable) int16u onOffTransitionTime = 16;
+  attribute(writable, reportable) int8u onLevel = 17;
+  attribute(writable, reportable) int16u onTransitionTime = 18;
+  attribute(writable, reportable) int16u offTransitionTime = 19;
+  attribute(writable, reportable) int8u defaultMoveRate = 20;
+  attribute(writable, reportable) int8u startUpCurrentLevel = 16384;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct MoveRequest {
+    MoveMode moveMode = 0;
+    INT8U rate = 1;
+    BITMAP8 optionMask = 2;
+    BITMAP8 optionOverride = 3;
+  }
+
+  request struct MoveToLevelRequest {
+    INT8U level = 0;
+    INT16U transitionTime = 1;
+    BITMAP8 optionMask = 2;
+    BITMAP8 optionOverride = 3;
+  }
+
+  request struct MoveToLevelWithOnOffRequest {
+    INT8U level = 0;
+    INT16U transitionTime = 1;
+  }
+
+  request struct MoveWithOnOffRequest {
+    MoveMode moveMode = 0;
+    INT8U rate = 1;
+  }
+
+  request struct StepRequest {
+    StepMode stepMode = 0;
+    INT8U stepSize = 1;
+    INT16U transitionTime = 2;
+    BITMAP8 optionMask = 3;
+    BITMAP8 optionOverride = 4;
+  }
+
+  request struct StepWithOnOffRequest {
+    StepMode stepMode = 0;
+    INT8U stepSize = 1;
+    INT16U transitionTime = 2;
+  }
+
+  request struct StopRequest {
+    BITMAP8 optionMask = 0;
+    BITMAP8 optionOverride = 1;
+  }
+
+  command Move(MoveRequest): DefaultSuccess = 1;
+  command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0;
+  command MoveToLevelWithOnOff(MoveToLevelWithOnOffRequest): DefaultSuccess = 4;
+  command MoveWithOnOff(MoveWithOnOffRequest): DefaultSuccess = 5;
+  command Step(StepRequest): DefaultSuccess = 2;
+  command StepWithOnOff(StepWithOnOffRequest): DefaultSuccess = 6;
+  command Stop(StopRequest): DefaultSuccess = 3;
+  command StopWithOnOff(): DefaultSuccess = 7;
+}
+
+server cluster LocalizationConfiguration = 43 {
+  attribute(writable) char_string activeLocale = 1;
+  attribute(readonly) CHAR_STRING supportedLocales[] = 2;
+}
+
+server cluster NetworkCommissioning = 49 {
+  enum NetworkCommissioningStatus : ENUM8 {
+    kSuccess = 0;
+    kOutOfRange = 1;
+    kBoundsExceeded = 2;
+    kNetworkIDNotFound = 3;
+    kDuplicateNetworkID = 4;
+    kNetworkNotFound = 5;
+    kRegulatoryError = 6;
+    kAuthFailure = 7;
+    kUnsupportedSecurity = 8;
+    kOtherConnectionFailure = 9;
+    kIPV6Failed = 10;
+    kIPBindFailed = 11;
+    kUnknownError = 12;
+  }
+
+  enum WiFiBand : ENUM8 {
+    k2g4 = 0;
+    k3g65 = 1;
+    k5g = 2;
+    k6g = 3;
+    k60g = 4;
+  }
+
+  struct NetworkInfo {
+    OCTET_STRING networkID = 1;
+    BOOLEAN connected = 2;
+  }
+
+  struct WiFiInterfaceScanResult {
+    BITMAP8 security = 1;
+    OCTET_STRING ssid = 2;
+    OCTET_STRING bssid = 3;
+    INT16U channel = 4;
+    WiFiBand wiFiBand = 5;
+    INT8S rssi = 6;
+  }
+
+  struct ThreadInterfaceScanResult {
+    INT64U panId = 1;
+    INT64U extendedPanId = 2;
+    CHAR_STRING networkName = 3;
+    INT16U channel = 4;
+    INT8U version = 5;
+    INT64U extendedAddress = 6;
+    INT8S rssi = 7;
+    INT8U lqi = 8;
+  }
+
+  attribute(readonly) int8u maxNetworks = 0;
+  attribute(readonly) NetworkInfo networks[] = 1;
+  attribute(readonly) int8u scanMaxTimeSeconds = 2;
+  attribute(readonly) int8u connectMaxTimeSeconds = 3;
+  attribute(writable) boolean interfaceEnabled = 4;
+  attribute(readonly) NetworkCommissioningStatus lastNetworkingStatus = 5;
+  attribute(readonly) octet_string lastNetworkID = 6;
+  attribute(readonly) int32u lastConnectErrorValue = 7;
+  attribute(readonly) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct AddOrUpdateThreadNetworkRequest {
+    OCTET_STRING operationalDataset = 0;
+    INT64U breadcrumb = 1;
+  }
+
+  request struct AddOrUpdateWiFiNetworkRequest {
+    OCTET_STRING ssid = 0;
+    OCTET_STRING credentials = 1;
+    INT64U breadcrumb = 2;
+  }
+
+  request struct ConnectNetworkRequest {
+    OCTET_STRING networkID = 0;
+    INT64U breadcrumb = 1;
+  }
+
+  request struct RemoveNetworkRequest {
+    OCTET_STRING networkID = 0;
+    INT64U breadcrumb = 1;
+  }
+
+  request struct ReorderNetworkRequest {
+    OCTET_STRING networkID = 0;
+    INT8U networkIndex = 1;
+    INT64U breadcrumb = 2;
+  }
+
+  request struct ScanNetworksRequest {
+    OCTET_STRING ssid = 0;
+    INT64U breadcrumb = 1;
+  }
+
+  response struct ConnectNetworkResponse {
+    NetworkCommissioningStatus networkingStatus = 0;
+    CHAR_STRING debugText = 1;
+    INT32S errorValue = 2;
+  }
+
+  response struct NetworkConfigResponse {
+    NetworkCommissioningStatus networkingStatus = 0;
+    CHAR_STRING debugText = 1;
+  }
+
+  response struct ScanNetworksResponse {
+    NetworkCommissioningStatus networkingStatus = 0;
+    CHAR_STRING debugText = 1;
+    optional WiFiInterfaceScanResult wiFiScanResults[] = 2;
+    optional ThreadInterfaceScanResult threadScanResults[] = 3;
+  }
+
+  command AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3;
+  command AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2;
+  command ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6;
+  command RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4;
+  command ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8;
+  command ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0;
+}
+
+client cluster OtaSoftwareUpdateProvider = 41 {
+  enum OTAApplyUpdateAction : ENUM8 {
+    kProceed = 0;
+    kAwaitNextAction = 1;
+    kDiscontinue = 2;
+  }
+
+  enum OTADownloadProtocol : ENUM8 {
+    kBDXSynchronous = 0;
+    kBDXAsynchronous = 1;
+    kHttps = 2;
+    kVendorSpecific = 3;
+  }
+
+  enum OTAQueryStatus : ENUM8 {
+    kUpdateAvailable = 0;
+    kBusy = 1;
+    kNotAvailable = 2;
+    kDownloadProtocolNotSupported = 3;
+  }
+
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct ApplyUpdateRequestRequest {
+    OCTET_STRING updateToken = 0;
+    INT32U newVersion = 1;
+  }
+
+  request struct NotifyUpdateAppliedRequest {
+    OCTET_STRING updateToken = 0;
+    INT32U softwareVersion = 1;
+  }
+
+  request struct QueryImageRequest {
+    vendor_id vendorId = 0;
+    INT16U productId = 1;
+    INT32U softwareVersion = 2;
+    OTADownloadProtocol protocolsSupported[] = 3;
+    optional INT16U hardwareVersion = 4;
+    optional CHAR_STRING location = 5;
+    optional BOOLEAN requestorCanConsent = 6;
+    optional OCTET_STRING metadataForProvider = 7;
+  }
+
+  response struct ApplyUpdateResponse {
+    OTAApplyUpdateAction action = 0;
+    INT32U delayedActionTime = 1;
+  }
+
+  response struct QueryImageResponse {
+    OTAQueryStatus status = 0;
+    optional INT32U delayedActionTime = 1;
+    optional CHAR_STRING imageURI = 2;
+    optional INT32U softwareVersion = 3;
+    optional CHAR_STRING softwareVersionString = 4;
+    optional OCTET_STRING updateToken = 5;
+    optional BOOLEAN userConsentNeeded = 6;
+    optional OCTET_STRING metadataForRequestor = 7;
+  }
+
+  command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2;
+  command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4;
+  command QueryImage(QueryImageRequest): QueryImageResponse = 0;
+}
+
+server cluster OtaSoftwareUpdateRequestor = 42 {
+  enum OTAAnnouncementReason : ENUM8 {
+    kSimpleAnnouncement = 0;
+    kUpdateAvailable = 1;
+    kUrgentUpdateAvailable = 2;
+  }
+
+  enum OTAChangeReasonEnum : ENUM8 {
+    kUnknown = 0;
+    kSuccess = 1;
+    kFailure = 2;
+    kTimeOut = 3;
+    kDelayByProvider = 4;
+  }
+
+  enum OTAUpdateStateEnum : ENUM8 {
+    kUnknown = 0;
+    kIdle = 1;
+    kQuerying = 2;
+    kDelayedOnQuery = 3;
+    kDownloading = 4;
+    kApplying = 5;
+    kDelayedOnApply = 6;
+    kRollingBack = 7;
+    kDelayedOnUserConsent = 8;
+  }
+
+  struct ProviderLocation {
+    fabric_idx fabricIndex = 0;
+    node_id providerNodeID = 1;
+    endpoint_no endpoint = 2;
+  }
+
+  info event StateTransition = 0 {
+    nullable OTAUpdateStateEnum previousState = 0;
+    OTAUpdateStateEnum newState = 1;
+    OTAChangeReasonEnum reason = 2;
+    nullable INT32U targetSoftwareVersion = 3;
+  }
+
+  critical event VersionApplied = 1 {
+    INT32U softwareVersion = 0;
+    INT16U productID = 1;
+  }
+
+  info event DownloadError = 2 {
+    INT32U softwareVersion = 0;
+    INT64U bytesDownloaded = 1;
+    INT8U progressPercent = 2;
+    nullable INT64S platformCode = 3;
+  }
+
+  attribute(writable, reportable) ProviderLocation defaultOtaProviders[] = 0;
+  attribute(readonly, reportable) boolean updatePossible = 1;
+  attribute(readonly, reportable) OTAUpdateStateEnum updateState = 2;
+  attribute(readonly, reportable) int8u updateStateProgress = 3;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct AnnounceOtaProviderRequest {
+    node_id providerNodeId = 0;
+    vendor_id vendorId = 1;
+    OTAAnnouncementReason announcementReason = 2;
+    optional OCTET_STRING metadataForNode = 3;
+    endpoint_no endpoint = 4;
+  }
+
+  command AnnounceOtaProvider(AnnounceOtaProviderRequest): DefaultSuccess = 0;
+}
+
+server cluster OccupancySensing = 1030 {
+  attribute(readonly, reportable) bitmap8 occupancy = 0;
+  attribute(readonly, reportable) enum8 occupancySensorType = 1;
+  attribute(readonly, reportable) bitmap8 occupancySensorTypeBitmap = 2;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+}
+
+client cluster OnOff = 6 {
+  enum OnOffDelayedAllOffEffectVariant : enum8 {
+    kFadeToOffIn0p8Seconds = 0;
+    kNoFade = 1;
+    k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds = 2;
+  }
+
+  enum OnOffDyingLightEffectVariant : enum8 {
+    k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second = 0;
+  }
+
+  enum OnOffEffectIdentifier : enum8 {
+    kDelayedAllOff = 0;
+    kDyingLight = 1;
+  }
+
+  attribute(readonly, reportable) boolean onOff = 0;
+  attribute(readonly, reportable) boolean globalSceneControl = 16384;
+  attribute(writable, reportable) int16u onTime = 16385;
+  attribute(writable, reportable) int16u offWaitTime = 16386;
+  attribute(writable, reportable) enum8 startUpOnOff = 16387;
+  attribute(readonly, reportable) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+}
+
+server cluster OnOff = 6 {
+  enum OnOffDelayedAllOffEffectVariant : enum8 {
+    kFadeToOffIn0p8Seconds = 0;
+    kNoFade = 1;
+    k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds = 2;
+  }
+
+  enum OnOffDyingLightEffectVariant : enum8 {
+    k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second = 0;
+  }
+
+  enum OnOffEffectIdentifier : enum8 {
+    kDelayedAllOff = 0;
+    kDyingLight = 1;
+  }
+
+  attribute(readonly, reportable) boolean onOff = 0;
+  attribute(readonly, reportable) boolean globalSceneControl = 16384;
+  attribute(writable, reportable) int16u onTime = 16385;
+  attribute(writable, reportable) int16u offWaitTime = 16386;
+  attribute(writable, reportable) enum8 startUpOnOff = 16387;
+  attribute(readonly, reportable) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct OffWithEffectRequest {
+    OnOffEffectIdentifier effectId = 0;
+    OnOffDelayedAllOffEffectVariant effectVariant = 1;
+  }
+
+  request struct OnWithTimedOffRequest {
+    OnOffControl onOffControl = 0;
+    int16u onTime = 1;
+    int16u offWaitTime = 2;
+  }
+
+  command Off(): DefaultSuccess = 0;
+  command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64;
+  command On(): DefaultSuccess = 1;
+  command OnWithRecallGlobalScene(): DefaultSuccess = 65;
+  command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66;
+  command Toggle(): DefaultSuccess = 2;
+}
+
+server cluster OnOffSwitchConfiguration = 7 {
+  attribute(readonly, reportable) enum8 switchType = 0;
+  attribute(writable, reportable) enum8 switchActions = 16;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+}
+
+server cluster OperationalCredentials = 62 {
+  enum NodeOperationalCertStatus : ENUM8 {
+    kSuccess = 0;
+    kInvalidPublicKey = 1;
+    kInvalidNodeOpId = 2;
+    kInvalidNOC = 3;
+    kMissingCsr = 4;
+    kTableFull = 5;
+    kInsufficientPrivilege = 8;
+    kFabricConflict = 9;
+    kLabelConflict = 10;
+    kInvalidFabricIndex = 11;
+  }
+
+  struct FabricDescriptor {
+    INT8U fabricIndex = 1;
+    OCTET_STRING rootPublicKey = 2;
+    INT16U vendorId = 3;
+    FABRIC_ID fabricId = 4;
+    NODE_ID nodeId = 5;
+    CHAR_STRING label = 6;
+  }
+
+  attribute(readonly, reportable) FabricDescriptor fabricsList[] = 1;
+  attribute(readonly, reportable) int8u supportedFabrics = 2;
+  attribute(readonly, reportable) int8u commissionedFabrics = 3;
+  attribute(readonly, reportable) OCTET_STRING trustedRootCertificates[] = 4;
+  attribute(readonly, reportable) fabric_idx currentFabricIndex = 5;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  request struct AddNOCRequest {
+    OCTET_STRING NOCValue = 0;
+    optional OCTET_STRING ICACValue = 1;
+    OCTET_STRING IPKValue = 2;
+    NODE_ID caseAdminNode = 3;
+    INT16U adminVendorId = 4;
+  }
+
+  request struct AddTrustedRootCertificateRequest {
+    OCTET_STRING rootCertificate = 0;
+  }
+
+  request struct AttestationRequestRequest {
+    OCTET_STRING attestationNonce = 0;
+  }
+
+  request struct CertificateChainRequestRequest {
+    INT8U certificateType = 0;
+  }
+
+  request struct OpCSRRequestRequest {
+    OCTET_STRING CSRNonce = 0;
+  }
+
+  request struct RemoveFabricRequest {
+    INT8U fabricIndex = 0;
+  }
+
+  request struct RemoveTrustedRootCertificateRequest {
+    OCTET_STRING trustedRootIdentifier = 0;
+  }
+
+  request struct UpdateFabricLabelRequest {
+    CHAR_STRING label = 0;
+  }
+
+  request struct UpdateNOCRequest {
+    OCTET_STRING NOCValue = 0;
+    optional OCTET_STRING ICACValue = 1;
+  }
+
+  response struct AttestationResponse {
+    OCTET_STRING attestationElements = 0;
+    OCTET_STRING signature = 1;
+  }
+
+  response struct CertificateChainResponse {
+    OCTET_STRING certificate = 0;
+  }
+
+  response struct NOCResponse {
+    INT8U statusCode = 0;
+    INT8U fabricIndex = 1;
+    CHAR_STRING debugText = 2;
+  }
+
+  response struct OpCSRResponse {
+    OCTET_STRING NOCSRElements = 0;
+    OCTET_STRING attestationSignature = 1;
+  }
+
+  command AddNOC(AddNOCRequest): NOCResponse = 6;
+  command AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+  command AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
+  command CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2;
+  command OpCSRRequest(OpCSRRequestRequest): OpCSRResponse = 4;
+  command RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
+  command RemoveTrustedRootCertificate(RemoveTrustedRootCertificateRequest): DefaultSuccess = 12;
+  command UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9;
+  command UpdateNOC(UpdateNOCRequest): NOCResponse = 7;
+}
+
+server cluster SoftwareDiagnostics = 52 {
+  struct ThreadMetrics {
+    INT64U id = 1;
+    CHAR_STRING name = 2;
+    INT32U stackFreeCurrent = 3;
+    INT32U stackFreeMinimum = 4;
+    INT32U stackSize = 5;
+  }
+
+  info event SoftwareFault = 0 {
+    SoftwareFault softwareFault = 0;
+  }
+
+  attribute(readonly, reportable) ThreadMetrics threadMetrics[] = 0;
+  attribute(readonly, reportable) int64u currentHeapFree = 1;
+  attribute(readonly, reportable) int64u currentHeapUsed = 2;
+  attribute(readonly, reportable) int64u currentHeapHighWatermark = 3;
+  attribute(readonly) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  command ResetWatermarks(): DefaultSuccess = 0;
+}
+
+server cluster Switch = 59 {
+  info event SwitchLatched = 0 {
+    INT8U newPosition = 0;
+  }
+
+  info event InitialPress = 1 {
+    INT8U newPosition = 0;
+  }
+
+  info event LongPress = 2 {
+    INT8U newPosition = 0;
+  }
+
+  info event ShortRelease = 3 {
+    INT8U previousPosition = 0;
+  }
+
+  info event LongRelease = 4 {
+    INT8U previousPosition = 0;
+  }
+
+  info event MultiPressOngoing = 5 {
+    INT8U newPosition = 0;
+    INT8U currentNumberOfPressesCounted = 1;
+  }
+
+  info event MultiPressComplete = 6 {
+    INT8U newPosition = 0;
+    INT8U totalNumberOfPressesCounted = 1;
+  }
+
+}
+
+server cluster ThreadNetworkDiagnostics = 53 {
+  enum NetworkFault : ENUM8 {
+    kUnspecified = 0;
+    kLinkDown = 1;
+    kHardwareFailure = 2;
+    kNetworkJammed = 3;
+  }
+
+  enum RoutingRole : ENUM8 {
+    kUnspecified = 0;
+    kUnassigned = 1;
+    kSleepyEndDevice = 2;
+    kEndDevice = 3;
+    kReed = 4;
+    kRouter = 5;
+    kLeader = 6;
+  }
+
+  enum ThreadConnectionStatus : ENUM8 {
+    kConnected = 0;
+    kNotConnected = 1;
+  }
+
+  struct NeighborTable {
+    INT64U extAddress = 1;
+    INT32U age = 2;
+    INT16U rloc16 = 3;
+    INT32U linkFrameCounter = 4;
+    INT32U mleFrameCounter = 5;
+    INT8U lqi = 6;
+    INT8S averageRssi = 7;
+    INT8S lastRssi = 8;
+    INT8U frameErrorRate = 9;
+    INT8U messageErrorRate = 10;
+    BOOLEAN rxOnWhenIdle = 11;
+    BOOLEAN fullThreadDevice = 12;
+    BOOLEAN fullNetworkData = 13;
+    BOOLEAN isChild = 14;
+  }
+
+  struct RouteTable {
+    INT64U extAddress = 1;
+    INT16U rloc16 = 2;
+    INT8U routerId = 3;
+    INT8U nextHop = 4;
+    INT8U pathCost = 5;
+    INT8U LQIIn = 6;
+    INT8U LQIOut = 7;
+    INT8U age = 8;
+    BOOLEAN allocated = 9;
+    BOOLEAN linkEstablished = 10;
+  }
+
+  struct SecurityPolicy {
+    INT16U rotationTime = 1;
+    BITMAP16 flags = 2;
+  }
+
+  struct OperationalDatasetComponents {
+    BOOLEAN activeTimestampPresent = 1;
+    BOOLEAN pendingTimestampPresent = 2;
+    BOOLEAN masterKeyPresent = 3;
+    BOOLEAN networkNamePresent = 4;
+    BOOLEAN extendedPanIdPresent = 5;
+    BOOLEAN meshLocalPrefixPresent = 6;
+    BOOLEAN delayPresent = 7;
+    BOOLEAN panIdPresent = 8;
+    BOOLEAN channelPresent = 9;
+    BOOLEAN pskcPresent = 10;
+    BOOLEAN securityPolicyPresent = 11;
+    BOOLEAN channelMaskPresent = 12;
+  }
+
+  info event ConnectionStatus = 0 {
+    ThreadConnectionStatus connectionStatus = 0;
+  }
+
+  attribute(readonly, reportable) int16u channel = 0;
+  attribute(readonly, reportable) enum8 routingRole = 1;
+  attribute(readonly, reportable) octet_string networkName = 2;
+  attribute(readonly, reportable) int16u panId = 3;
+  attribute(readonly, reportable) int64u extendedPanId = 4;
+  attribute(readonly, reportable) octet_string meshLocalPrefix = 5;
+  attribute(readonly, reportable) int64u overrunCount = 6;
+  attribute(readonly, reportable) NeighborTable neighborTableList[] = 7;
+  attribute(readonly, reportable) RouteTable routeTableList[] = 8;
+  attribute(readonly, reportable) int32u partitionId = 9;
+  attribute(readonly, reportable) int8u weighting = 10;
+  attribute(readonly, reportable) int8u dataVersion = 11;
+  attribute(readonly, reportable) int8u stableDataVersion = 12;
+  attribute(readonly, reportable) int8u leaderRouterId = 13;
+  attribute(readonly, reportable) int16u detachedRoleCount = 14;
+  attribute(readonly, reportable) int16u childRoleCount = 15;
+  attribute(readonly, reportable) int16u routerRoleCount = 16;
+  attribute(readonly, reportable) int16u leaderRoleCount = 17;
+  attribute(readonly, reportable) int16u attachAttemptCount = 18;
+  attribute(readonly, reportable) int16u partitionIdChangeCount = 19;
+  attribute(readonly, reportable) int16u betterPartitionAttachAttemptCount = 20;
+  attribute(readonly, reportable) int16u parentChangeCount = 21;
+  attribute(readonly, reportable) int32u txTotalCount = 22;
+  attribute(readonly, reportable) int32u txUnicastCount = 23;
+  attribute(readonly, reportable) int32u txBroadcastCount = 24;
+  attribute(readonly, reportable) int32u txAckRequestedCount = 25;
+  attribute(readonly, reportable) int32u txAckedCount = 26;
+  attribute(readonly, reportable) int32u txNoAckRequestedCount = 27;
+  attribute(readonly, reportable) int32u txDataCount = 28;
+  attribute(readonly, reportable) int32u txDataPollCount = 29;
+  attribute(readonly, reportable) int32u txBeaconCount = 30;
+  attribute(readonly, reportable) int32u txBeaconRequestCount = 31;
+  attribute(readonly, reportable) int32u txOtherCount = 32;
+  attribute(readonly, reportable) int32u txRetryCount = 33;
+  attribute(readonly, reportable) int32u txDirectMaxRetryExpiryCount = 34;
+  attribute(readonly, reportable) int32u txIndirectMaxRetryExpiryCount = 35;
+  attribute(readonly, reportable) int32u txErrCcaCount = 36;
+  attribute(readonly, reportable) int32u txErrAbortCount = 37;
+  attribute(readonly, reportable) int32u txErrBusyChannelCount = 38;
+  attribute(readonly, reportable) int32u rxTotalCount = 39;
+  attribute(readonly, reportable) int32u rxUnicastCount = 40;
+  attribute(readonly, reportable) int32u rxBroadcastCount = 41;
+  attribute(readonly, reportable) int32u rxDataCount = 42;
+  attribute(readonly, reportable) int32u rxDataPollCount = 43;
+  attribute(readonly, reportable) int32u rxBeaconCount = 44;
+  attribute(readonly, reportable) int32u rxBeaconRequestCount = 45;
+  attribute(readonly, reportable) int32u rxOtherCount = 46;
+  attribute(readonly, reportable) int32u rxAddressFilteredCount = 47;
+  attribute(readonly, reportable) int32u rxDestAddrFilteredCount = 48;
+  attribute(readonly, reportable) int32u rxDuplicatedCount = 49;
+  attribute(readonly, reportable) int32u rxErrNoFrameCount = 50;
+  attribute(readonly, reportable) int32u rxErrUnknownNeighborCount = 51;
+  attribute(readonly, reportable) int32u rxErrInvalidSrcAddrCount = 52;
+  attribute(readonly, reportable) int32u rxErrSecCount = 53;
+  attribute(readonly, reportable) int32u rxErrFcsCount = 54;
+  attribute(readonly, reportable) int32u rxErrOtherCount = 55;
+  attribute(readonly, reportable) int64u activeTimestamp = 56;
+  attribute(readonly, reportable) int64u pendingTimestamp = 57;
+  attribute(readonly, reportable) int32u delay = 58;
+  attribute(readonly, reportable) SecurityPolicy securityPolicy[] = 59;
+  attribute(readonly, reportable) octet_string channelMask = 60;
+  attribute(readonly, reportable) OperationalDatasetComponents operationalDatasetComponents[] = 61;
+  attribute(readonly, reportable) NetworkFault activeNetworkFaultsList[] = 62;
+  attribute(readonly) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  command ResetCounts(): DefaultSuccess = 0;
+}
+
+server cluster UserLabel = 65 {
+  attribute(writable) LabelStruct labelList[] = 0;
+  attribute(readonly) int16u clusterRevision = 65533;
+}
+
+server cluster WiFiNetworkDiagnostics = 54 {
+  enum AssociationFailureCause : ENUM8 {
+    kUnknown = 0;
+    kAssociationFailed = 1;
+    kAuthenticationFailed = 2;
+    kSsidNotFound = 3;
+  }
+
+  enum SecurityType : ENUM8 {
+    kUnspecified = 0;
+    kNone = 1;
+    kWep = 2;
+    kWpa = 3;
+    kWpa2 = 4;
+    kWpa3 = 5;
+  }
+
+  enum WiFiConnectionStatus : ENUM8 {
+    kConnected = 0;
+    kNotConnected = 1;
+  }
+
+  enum WiFiVersionType : ENUM8 {
+    k80211a = 0;
+    k80211b = 1;
+    k80211g = 2;
+    k80211n = 3;
+    k80211ac = 4;
+    k80211ax = 5;
+  }
+
+  info event Disconnection = 0 {
+    INT16U reasonCode = 0;
+  }
+
+  info event AssociationFailure = 1 {
+    AssociationFailureCause associationFailure = 0;
+    INT16U status = 1;
+  }
+
+  info event ConnectionStatus = 2 {
+    WiFiConnectionStatus connectionStatus = 0;
+  }
+
+  attribute(readonly, reportable) octet_string bssid = 0;
+  attribute(readonly, reportable) enum8 securityType = 1;
+  attribute(readonly, reportable) enum8 wiFiVersion = 2;
+  attribute(readonly, reportable) int16u channelNumber = 3;
+  attribute(readonly, reportable) int8s rssi = 4;
+  attribute(readonly, reportable) int32u beaconLostCount = 5;
+  attribute(readonly, reportable) int32u beaconRxCount = 6;
+  attribute(readonly, reportable) int32u packetMulticastRxCount = 7;
+  attribute(readonly, reportable) int32u packetMulticastTxCount = 8;
+  attribute(readonly, reportable) int32u packetUnicastRxCount = 9;
+  attribute(readonly, reportable) int32u packetUnicastTxCount = 10;
+  attribute(readonly, reportable) int64u currentMaxRate = 11;
+  attribute(readonly, reportable) int64u overrunCount = 12;
+  attribute(readonly) bitmap32 featureMap = 65532;
+  attribute(readonly, reportable) int16u clusterRevision = 65533;
+
+  command ResetCounts(): DefaultSuccess = 0;
+}
+
+
+endpoint 0 {
+}
+
+endpoint 1 {
+}
+
+endpoint 2 {
+}
+