@matter/model 0.17.4 → 0.17.5-alpha.0-20260702-a2cd6f764

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/dist/cjs/aspects/Quality.d.ts +1 -1
  2. package/dist/cjs/common/DeviceClassification.d.ts +6 -6
  3. package/dist/cjs/common/Specification.d.ts +2 -2
  4. package/dist/cjs/common/Specification.js +2 -2
  5. package/dist/cjs/dts/Specifications.d.ts +17 -0
  6. package/dist/cjs/logic/cluster-variance/InferredComponents.js +32 -2
  7. package/dist/cjs/logic/cluster-variance/InferredComponents.js.map +1 -1
  8. package/dist/cjs/models/Globals.d.ts +7 -0
  9. package/dist/cjs/models/Globals.d.ts.map +1 -1
  10. package/dist/cjs/standard/elements/access-control.element.d.ts.map +1 -1
  11. package/dist/cjs/standard/elements/access-control.element.js +26 -2
  12. package/dist/cjs/standard/elements/access-control.element.js.map +1 -1
  13. package/dist/cjs/standard/elements/ambient-context-sensing.element.d.ts +8 -0
  14. package/dist/cjs/standard/elements/ambient-context-sensing.element.d.ts.map +1 -0
  15. package/dist/cjs/standard/elements/ambient-context-sensing.element.js +186 -0
  16. package/dist/cjs/standard/elements/ambient-context-sensing.element.js.map +6 -0
  17. package/dist/cjs/standard/elements/base.element.js +1 -1
  18. package/dist/cjs/standard/elements/base.element.js.map +1 -1
  19. package/dist/cjs/standard/elements/basic-information.element.d.ts.map +1 -1
  20. package/dist/cjs/standard/elements/basic-information.element.js +24 -2
  21. package/dist/cjs/standard/elements/basic-information.element.js.map +1 -1
  22. package/dist/cjs/standard/elements/boolean-state-configuration.element.d.ts.map +1 -1
  23. package/dist/cjs/standard/elements/boolean-state-configuration.element.js +4 -3
  24. package/dist/cjs/standard/elements/boolean-state-configuration.element.js.map +1 -1
  25. package/dist/cjs/standard/elements/boolean-state.element.d.ts.map +1 -1
  26. package/dist/cjs/standard/elements/boolean-state.element.js +6 -2
  27. package/dist/cjs/standard/elements/boolean-state.element.js.map +2 -2
  28. package/dist/cjs/standard/elements/bridged-device-basic-information.element.js +2 -2
  29. package/dist/cjs/standard/elements/bridged-device-basic-information.element.js.map +1 -1
  30. package/dist/cjs/standard/elements/camera-av-stream-management.element.d.ts.map +1 -1
  31. package/dist/cjs/standard/elements/camera-av-stream-management.element.js +13 -3
  32. package/dist/cjs/standard/elements/camera-av-stream-management.element.js.map +1 -1
  33. package/dist/cjs/standard/elements/certification-type-enum.element.d.ts +8 -0
  34. package/dist/cjs/standard/elements/certification-type-enum.element.d.ts.map +1 -0
  35. package/dist/cjs/standard/elements/certification-type-enum.element.js +38 -0
  36. package/dist/cjs/standard/elements/certification-type-enum.element.js.map +6 -0
  37. package/dist/cjs/standard/elements/chime-cluster.element.js +2 -2
  38. package/dist/cjs/standard/elements/chime-cluster.element.js.map +1 -1
  39. package/dist/cjs/standard/elements/closure-controller.element.d.ts.map +1 -1
  40. package/dist/cjs/standard/elements/closure-controller.element.js +0 -1
  41. package/dist/cjs/standard/elements/closure-controller.element.js.map +1 -1
  42. package/dist/cjs/standard/elements/concentration-measurement.element.d.ts.map +1 -1
  43. package/dist/cjs/standard/elements/concentration-measurement.element.js +12 -4
  44. package/dist/cjs/standard/elements/concentration-measurement.element.js.map +1 -1
  45. package/dist/cjs/standard/elements/content-launcher.element.js +7 -7
  46. package/dist/cjs/standard/elements/content-launcher.element.js.map +1 -1
  47. package/dist/cjs/standard/elements/definitions.d.ts +7 -0
  48. package/dist/cjs/standard/elements/definitions.d.ts.map +1 -1
  49. package/dist/cjs/standard/elements/definitions.js +7 -0
  50. package/dist/cjs/standard/elements/definitions.js.map +1 -1
  51. package/dist/cjs/standard/elements/flow-measurement.element.d.ts.map +1 -1
  52. package/dist/cjs/standard/elements/flow-measurement.element.js +13 -4
  53. package/dist/cjs/standard/elements/flow-measurement.element.js.map +1 -1
  54. package/dist/cjs/standard/elements/general-commissioning.element.d.ts.map +1 -1
  55. package/dist/cjs/standard/elements/general-commissioning.element.js +6 -4
  56. package/dist/cjs/standard/elements/general-commissioning.element.js.map +1 -1
  57. package/dist/cjs/standard/elements/general-diagnostics.element.d.ts.map +1 -1
  58. package/dist/cjs/standard/elements/general-diagnostics.element.js +17 -1
  59. package/dist/cjs/standard/elements/general-diagnostics.element.js.map +1 -1
  60. package/dist/cjs/standard/elements/group-key-management.element.d.ts.map +1 -1
  61. package/dist/cjs/standard/elements/group-key-management.element.js +21 -3
  62. package/dist/cjs/standard/elements/group-key-management.element.js.map +1 -1
  63. package/dist/cjs/standard/elements/groupcast.element.d.ts +8 -0
  64. package/dist/cjs/standard/elements/groupcast.element.d.ts.map +1 -0
  65. package/dist/cjs/standard/elements/groupcast.element.js +198 -0
  66. package/dist/cjs/standard/elements/groupcast.element.js.map +6 -0
  67. package/dist/cjs/standard/elements/identified-human-activity.element.d.ts +8 -0
  68. package/dist/cjs/standard/elements/identified-human-activity.element.d.ts.map +1 -0
  69. package/dist/cjs/standard/elements/identified-human-activity.element.js +45 -0
  70. package/dist/cjs/standard/elements/identified-human-activity.element.js.map +6 -0
  71. package/dist/cjs/standard/elements/identified-object.element.d.ts +8 -0
  72. package/dist/cjs/standard/elements/identified-object.element.d.ts.map +1 -0
  73. package/dist/cjs/standard/elements/identified-object.element.js +48 -0
  74. package/dist/cjs/standard/elements/identified-object.element.js.map +6 -0
  75. package/dist/cjs/standard/elements/identified-sound.element.d.ts +8 -0
  76. package/dist/cjs/standard/elements/identified-sound.element.d.ts.map +1 -0
  77. package/dist/cjs/standard/elements/identified-sound.element.js +57 -0
  78. package/dist/cjs/standard/elements/identified-sound.element.js.map +6 -0
  79. package/dist/cjs/standard/elements/illuminance-measurement.element.d.ts.map +1 -1
  80. package/dist/cjs/standard/elements/illuminance-measurement.element.js +13 -5
  81. package/dist/cjs/standard/elements/illuminance-measurement.element.js.map +1 -1
  82. package/dist/cjs/standard/elements/joint-fabric-administrator-cluster.element.d.ts.map +1 -1
  83. package/dist/cjs/standard/elements/joint-fabric-administrator-cluster.element.js +20 -18
  84. package/dist/cjs/standard/elements/joint-fabric-administrator-cluster.element.js.map +1 -1
  85. package/dist/cjs/standard/elements/joint-fabric-datastore.element.d.ts.map +1 -1
  86. package/dist/cjs/standard/elements/joint-fabric-datastore.element.js +143 -62
  87. package/dist/cjs/standard/elements/joint-fabric-datastore.element.js.map +1 -1
  88. package/dist/cjs/standard/elements/mode-base.element.js +1 -1
  89. package/dist/cjs/standard/elements/mode-base.element.js.map +1 -1
  90. package/dist/cjs/standard/elements/models.d.ts +7 -0
  91. package/dist/cjs/standard/elements/models.d.ts.map +1 -1
  92. package/dist/cjs/standard/elements/models.js +14 -0
  93. package/dist/cjs/standard/elements/models.js.map +1 -1
  94. package/dist/cjs/standard/elements/namespace.element.d.ts.map +1 -1
  95. package/dist/cjs/standard/elements/namespace.element.js +4 -1
  96. package/dist/cjs/standard/elements/namespace.element.js.map +1 -1
  97. package/dist/cjs/standard/elements/network-commissioning.element.js +14 -14
  98. package/dist/cjs/standard/elements/network-commissioning.element.js.map +1 -1
  99. package/dist/cjs/standard/elements/network-infrastructure-manager.element.d.ts.map +1 -1
  100. package/dist/cjs/standard/elements/network-infrastructure-manager.element.js +6 -0
  101. package/dist/cjs/standard/elements/network-infrastructure-manager.element.js.map +1 -1
  102. package/dist/cjs/standard/elements/occupancy-sensing.element.d.ts.map +1 -1
  103. package/dist/cjs/standard/elements/occupancy-sensing.element.js +4 -3
  104. package/dist/cjs/standard/elements/occupancy-sensing.element.js.map +1 -1
  105. package/dist/cjs/standard/elements/power-topology.element.d.ts.map +1 -1
  106. package/dist/cjs/standard/elements/power-topology.element.js +0 -7
  107. package/dist/cjs/standard/elements/power-topology.element.js.map +2 -2
  108. package/dist/cjs/standard/elements/pressure-measurement.element.d.ts.map +1 -1
  109. package/dist/cjs/standard/elements/pressure-measurement.element.js +18 -8
  110. package/dist/cjs/standard/elements/pressure-measurement.element.js.map +1 -1
  111. package/dist/cjs/standard/elements/push-av-stream-transport.element.d.ts.map +1 -1
  112. package/dist/cjs/standard/elements/push-av-stream-transport.element.js +1 -3
  113. package/dist/cjs/standard/elements/push-av-stream-transport.element.js.map +1 -1
  114. package/dist/cjs/standard/elements/rain-sensor.element.d.ts.map +1 -1
  115. package/dist/cjs/standard/elements/rain-sensor.element.js +3 -2
  116. package/dist/cjs/standard/elements/rain-sensor.element.js.map +1 -1
  117. package/dist/cjs/standard/elements/refrigerator-device.element.d.ts.map +1 -1
  118. package/dist/cjs/standard/elements/refrigerator-device.element.js +4 -1
  119. package/dist/cjs/standard/elements/refrigerator-device.element.js.map +1 -1
  120. package/dist/cjs/standard/elements/relative-humidity-measurement.element.d.ts.map +1 -1
  121. package/dist/cjs/standard/elements/relative-humidity-measurement.element.js +12 -4
  122. package/dist/cjs/standard/elements/relative-humidity-measurement.element.js.map +1 -1
  123. package/dist/cjs/standard/elements/root-node.element.js +1 -1
  124. package/dist/cjs/standard/elements/root-node.element.js.map +1 -1
  125. package/dist/cjs/standard/elements/smoke-co-alarm-cluster.element.d.ts.map +1 -1
  126. package/dist/cjs/standard/elements/smoke-co-alarm-cluster.element.js +4 -2
  127. package/dist/cjs/standard/elements/smoke-co-alarm-cluster.element.js.map +1 -1
  128. package/dist/cjs/standard/elements/software-diagnostics.element.d.ts.map +1 -1
  129. package/dist/cjs/standard/elements/software-diagnostics.element.js +12 -4
  130. package/dist/cjs/standard/elements/software-diagnostics.element.js.map +1 -1
  131. package/dist/cjs/standard/elements/temperature-alarm.element.d.ts +8 -0
  132. package/dist/cjs/standard/elements/temperature-alarm.element.d.ts.map +1 -0
  133. package/dist/cjs/standard/elements/temperature-alarm.element.js +160 -0
  134. package/dist/cjs/standard/elements/temperature-alarm.element.js.map +6 -0
  135. package/dist/cjs/standard/elements/temperature-controlled-cabinet.element.d.ts.map +1 -1
  136. package/dist/cjs/standard/elements/temperature-controlled-cabinet.element.js +2 -1
  137. package/dist/cjs/standard/elements/temperature-controlled-cabinet.element.js.map +1 -1
  138. package/dist/cjs/standard/elements/temperature-measurement.element.d.ts.map +1 -1
  139. package/dist/cjs/standard/elements/temperature-measurement.element.js +13 -4
  140. package/dist/cjs/standard/elements/temperature-measurement.element.js.map +1 -1
  141. package/dist/cjs/standard/elements/thermostat-cluster.element.d.ts.map +1 -1
  142. package/dist/cjs/standard/elements/thermostat-cluster.element.js +143 -3
  143. package/dist/cjs/standard/elements/thermostat-cluster.element.js.map +2 -2
  144. package/dist/cjs/standard/elements/thermostat-device.element.d.ts.map +1 -1
  145. package/dist/cjs/standard/elements/thermostat-device.element.js +3 -2
  146. package/dist/cjs/standard/elements/thermostat-device.element.js.map +1 -1
  147. package/dist/cjs/standard/elements/water-freeze-detector.element.d.ts.map +1 -1
  148. package/dist/cjs/standard/elements/water-freeze-detector.element.js +3 -2
  149. package/dist/cjs/standard/elements/water-freeze-detector.element.js.map +1 -1
  150. package/dist/cjs/standard/elements/water-leak-detector.element.d.ts.map +1 -1
  151. package/dist/cjs/standard/elements/water-leak-detector.element.js +3 -2
  152. package/dist/cjs/standard/elements/water-leak-detector.element.js.map +1 -1
  153. package/dist/cjs/standard/elements/web-rtc-transport-provider.element.d.ts.map +1 -1
  154. package/dist/cjs/standard/elements/web-rtc-transport-provider.element.js +0 -8
  155. package/dist/cjs/standard/elements/web-rtc-transport-provider.element.js.map +2 -2
  156. package/dist/cjs/standard/resources/access-control.resource.js +68 -21
  157. package/dist/cjs/standard/resources/access-control.resource.js.map +1 -1
  158. package/dist/cjs/standard/resources/account-login.resource.js +3 -3
  159. package/dist/cjs/standard/resources/ambient-context-sensing.resource.d.ts +7 -0
  160. package/dist/cjs/standard/resources/ambient-context-sensing.resource.d.ts.map +1 -0
  161. package/dist/cjs/standard/resources/ambient-context-sensing.resource.js +241 -0
  162. package/dist/cjs/standard/resources/ambient-context-sensing.resource.js.map +6 -0
  163. package/dist/cjs/standard/resources/base.resource.js +38 -8
  164. package/dist/cjs/standard/resources/base.resource.js.map +1 -1
  165. package/dist/cjs/standard/resources/basic-information.resource.js +24 -0
  166. package/dist/cjs/standard/resources/basic-information.resource.js.map +1 -1
  167. package/dist/cjs/standard/resources/boolean-state-configuration.resource.js +7 -1
  168. package/dist/cjs/standard/resources/boolean-state-configuration.resource.js.map +1 -1
  169. package/dist/cjs/standard/resources/boolean-state.resource.js +14 -3
  170. package/dist/cjs/standard/resources/boolean-state.resource.js.map +1 -1
  171. package/dist/cjs/standard/resources/camera-av-stream-management.resource.js +7 -1
  172. package/dist/cjs/standard/resources/camera-av-stream-management.resource.js.map +1 -1
  173. package/dist/cjs/standard/resources/certification-type-enum.resource.d.ts +7 -0
  174. package/dist/cjs/standard/resources/certification-type-enum.resource.d.ts.map +1 -0
  175. package/dist/cjs/standard/resources/certification-type-enum.resource.js +22 -0
  176. package/dist/cjs/standard/resources/certification-type-enum.resource.js.map +6 -0
  177. package/dist/cjs/standard/resources/closure-controller.resource.js +0 -1
  178. package/dist/cjs/standard/resources/closure-controller.resource.js.map +1 -1
  179. package/dist/cjs/standard/resources/color-control.resource.js +12 -12
  180. package/dist/cjs/standard/resources/color-control.resource.js.map +1 -1
  181. package/dist/cjs/standard/resources/energy-preference.resource.js +1 -1
  182. package/dist/cjs/standard/resources/energy-preference.resource.js.map +1 -1
  183. package/dist/cjs/standard/resources/general-commissioning.resource.js +2 -2
  184. package/dist/cjs/standard/resources/general-diagnostics.resource.js +44 -0
  185. package/dist/cjs/standard/resources/general-diagnostics.resource.js.map +1 -1
  186. package/dist/cjs/standard/resources/group-key-management.resource.js +37 -15
  187. package/dist/cjs/standard/resources/group-key-management.resource.js.map +1 -1
  188. package/dist/cjs/standard/resources/groupcast.resource.d.ts +7 -0
  189. package/dist/cjs/standard/resources/groupcast.resource.d.ts.map +1 -0
  190. package/dist/cjs/standard/resources/groupcast.resource.js +375 -0
  191. package/dist/cjs/standard/resources/groupcast.resource.js.map +6 -0
  192. package/dist/cjs/standard/resources/groups.resource.js +1 -1
  193. package/dist/cjs/standard/resources/groups.resource.js.map +1 -1
  194. package/dist/cjs/standard/resources/icd-management.resource.js +1 -1
  195. package/dist/cjs/standard/resources/icd-management.resource.js.map +1 -1
  196. package/dist/cjs/standard/resources/identified-human-activity.resource.d.ts +7 -0
  197. package/dist/cjs/standard/resources/identified-human-activity.resource.d.ts.map +1 -0
  198. package/dist/cjs/standard/resources/identified-human-activity.resource.js +26 -0
  199. package/dist/cjs/standard/resources/identified-human-activity.resource.js.map +6 -0
  200. package/dist/cjs/standard/resources/identified-object.resource.d.ts +7 -0
  201. package/dist/cjs/standard/resources/identified-object.resource.d.ts.map +1 -0
  202. package/dist/cjs/standard/resources/identified-object.resource.js +29 -0
  203. package/dist/cjs/standard/resources/identified-object.resource.js.map +6 -0
  204. package/dist/cjs/standard/resources/identified-sound.resource.d.ts +7 -0
  205. package/dist/cjs/standard/resources/identified-sound.resource.d.ts.map +1 -0
  206. package/dist/cjs/standard/resources/identified-sound.resource.js +42 -0
  207. package/dist/cjs/standard/resources/identified-sound.resource.js.map +6 -0
  208. package/dist/cjs/standard/resources/index.d.ts +7 -0
  209. package/dist/cjs/standard/resources/index.d.ts.map +1 -1
  210. package/dist/cjs/standard/resources/index.js +7 -0
  211. package/dist/cjs/standard/resources/index.js.map +1 -1
  212. package/dist/cjs/standard/resources/joint-fabric-administrator-cluster.resource.js +23 -18
  213. package/dist/cjs/standard/resources/joint-fabric-administrator-cluster.resource.js.map +1 -1
  214. package/dist/cjs/standard/resources/joint-fabric-datastore.resource.js +353 -39
  215. package/dist/cjs/standard/resources/joint-fabric-datastore.resource.js.map +1 -1
  216. package/dist/cjs/standard/resources/mode-base.resource.js +1 -1
  217. package/dist/cjs/standard/resources/namespace.resource.js +15 -0
  218. package/dist/cjs/standard/resources/namespace.resource.js.map +1 -1
  219. package/dist/cjs/standard/resources/network-commissioning.resource.js +13 -13
  220. package/dist/cjs/standard/resources/network-commissioning.resource.js.map +1 -1
  221. package/dist/cjs/standard/resources/network-infrastructure-manager.resource.js +12 -6
  222. package/dist/cjs/standard/resources/network-infrastructure-manager.resource.js.map +1 -1
  223. package/dist/cjs/standard/resources/occupancy-sensing.resource.js +2 -1
  224. package/dist/cjs/standard/resources/occupancy-sensing.resource.js.map +1 -1
  225. package/dist/cjs/standard/resources/on-off.resource.js +2 -2
  226. package/dist/cjs/standard/resources/on-off.resource.js.map +1 -1
  227. package/dist/cjs/standard/resources/oven-mode.resource.js +1 -1
  228. package/dist/cjs/standard/resources/oven-mode.resource.js.map +1 -1
  229. package/dist/cjs/standard/resources/power-topology.resource.js +2 -28
  230. package/dist/cjs/standard/resources/power-topology.resource.js.map +1 -1
  231. package/dist/cjs/standard/resources/push-av-stream-transport.resource.js +3 -15
  232. package/dist/cjs/standard/resources/push-av-stream-transport.resource.js.map +1 -1
  233. package/dist/cjs/standard/resources/refrigerator-device.resource.js +1 -0
  234. package/dist/cjs/standard/resources/refrigerator-device.resource.js.map +1 -1
  235. package/dist/cjs/standard/resources/smoke-co-alarm-cluster.resource.js +10 -2
  236. package/dist/cjs/standard/resources/smoke-co-alarm-cluster.resource.js.map +1 -1
  237. package/dist/cjs/standard/resources/temperature-alarm.resource.d.ts +7 -0
  238. package/dist/cjs/standard/resources/temperature-alarm.resource.d.ts.map +1 -0
  239. package/dist/cjs/standard/resources/temperature-alarm.resource.js +183 -0
  240. package/dist/cjs/standard/resources/temperature-alarm.resource.js.map +6 -0
  241. package/dist/cjs/standard/resources/temperature-controlled-cabinet.resource.js +1 -0
  242. package/dist/cjs/standard/resources/temperature-controlled-cabinet.resource.js.map +1 -1
  243. package/dist/cjs/standard/resources/thermostat-cluster.resource.js +459 -135
  244. package/dist/cjs/standard/resources/thermostat-cluster.resource.js.map +1 -1
  245. package/dist/cjs/standard/resources/thermostat-device.resource.js +2 -1
  246. package/dist/cjs/standard/resources/thermostat-device.resource.js.map +1 -1
  247. package/dist/cjs/standard/resources/web-rtc-transport-definitions.resource.js +21 -21
  248. package/dist/cjs/standard/resources/web-rtc-transport-provider.resource.js +42 -80
  249. package/dist/cjs/standard/resources/web-rtc-transport-provider.resource.js.map +1 -1
  250. package/dist/cjs/standard/resources/window-covering-cluster.resource.js +14 -14
  251. package/dist/esm/aspects/Quality.d.ts +1 -1
  252. package/dist/esm/common/DeviceClassification.d.ts +6 -6
  253. package/dist/esm/common/Specification.d.ts +2 -2
  254. package/dist/esm/common/Specification.js +2 -2
  255. package/dist/esm/dts/Specifications.d.ts +17 -0
  256. package/dist/esm/logic/cluster-variance/InferredComponents.js +32 -2
  257. package/dist/esm/logic/cluster-variance/InferredComponents.js.map +1 -1
  258. package/dist/esm/models/Globals.d.ts +7 -0
  259. package/dist/esm/models/Globals.d.ts.map +1 -1
  260. package/dist/esm/standard/elements/access-control.element.d.ts.map +1 -1
  261. package/dist/esm/standard/elements/access-control.element.js +26 -2
  262. package/dist/esm/standard/elements/access-control.element.js.map +1 -1
  263. package/dist/esm/standard/elements/ambient-context-sensing.element.d.ts +8 -0
  264. package/dist/esm/standard/elements/ambient-context-sensing.element.d.ts.map +1 -0
  265. package/dist/esm/standard/elements/ambient-context-sensing.element.js +172 -0
  266. package/dist/esm/standard/elements/ambient-context-sensing.element.js.map +6 -0
  267. package/dist/esm/standard/elements/base.element.js +1 -1
  268. package/dist/esm/standard/elements/base.element.js.map +1 -1
  269. package/dist/esm/standard/elements/basic-information.element.d.ts.map +1 -1
  270. package/dist/esm/standard/elements/basic-information.element.js +24 -2
  271. package/dist/esm/standard/elements/basic-information.element.js.map +1 -1
  272. package/dist/esm/standard/elements/boolean-state-configuration.element.d.ts.map +1 -1
  273. package/dist/esm/standard/elements/boolean-state-configuration.element.js +4 -3
  274. package/dist/esm/standard/elements/boolean-state-configuration.element.js.map +1 -1
  275. package/dist/esm/standard/elements/boolean-state.element.d.ts.map +1 -1
  276. package/dist/esm/standard/elements/boolean-state.element.js +8 -4
  277. package/dist/esm/standard/elements/boolean-state.element.js.map +1 -1
  278. package/dist/esm/standard/elements/bridged-device-basic-information.element.js +2 -2
  279. package/dist/esm/standard/elements/bridged-device-basic-information.element.js.map +1 -1
  280. package/dist/esm/standard/elements/camera-av-stream-management.element.d.ts.map +1 -1
  281. package/dist/esm/standard/elements/camera-av-stream-management.element.js +13 -3
  282. package/dist/esm/standard/elements/camera-av-stream-management.element.js.map +1 -1
  283. package/dist/esm/standard/elements/certification-type-enum.element.d.ts +8 -0
  284. package/dist/esm/standard/elements/certification-type-enum.element.d.ts.map +1 -0
  285. package/dist/esm/standard/elements/certification-type-enum.element.js +18 -0
  286. package/dist/esm/standard/elements/certification-type-enum.element.js.map +6 -0
  287. package/dist/esm/standard/elements/chime-cluster.element.js +2 -2
  288. package/dist/esm/standard/elements/chime-cluster.element.js.map +1 -1
  289. package/dist/esm/standard/elements/closure-controller.element.d.ts.map +1 -1
  290. package/dist/esm/standard/elements/closure-controller.element.js +0 -1
  291. package/dist/esm/standard/elements/closure-controller.element.js.map +1 -1
  292. package/dist/esm/standard/elements/concentration-measurement.element.d.ts.map +1 -1
  293. package/dist/esm/standard/elements/concentration-measurement.element.js +12 -4
  294. package/dist/esm/standard/elements/concentration-measurement.element.js.map +1 -1
  295. package/dist/esm/standard/elements/content-launcher.element.js +7 -7
  296. package/dist/esm/standard/elements/content-launcher.element.js.map +1 -1
  297. package/dist/esm/standard/elements/definitions.d.ts +7 -0
  298. package/dist/esm/standard/elements/definitions.d.ts.map +1 -1
  299. package/dist/esm/standard/elements/definitions.js +7 -0
  300. package/dist/esm/standard/elements/definitions.js.map +1 -1
  301. package/dist/esm/standard/elements/flow-measurement.element.d.ts.map +1 -1
  302. package/dist/esm/standard/elements/flow-measurement.element.js +13 -4
  303. package/dist/esm/standard/elements/flow-measurement.element.js.map +1 -1
  304. package/dist/esm/standard/elements/general-commissioning.element.d.ts.map +1 -1
  305. package/dist/esm/standard/elements/general-commissioning.element.js +6 -4
  306. package/dist/esm/standard/elements/general-commissioning.element.js.map +1 -1
  307. package/dist/esm/standard/elements/general-diagnostics.element.d.ts.map +1 -1
  308. package/dist/esm/standard/elements/general-diagnostics.element.js +17 -1
  309. package/dist/esm/standard/elements/general-diagnostics.element.js.map +1 -1
  310. package/dist/esm/standard/elements/group-key-management.element.d.ts.map +1 -1
  311. package/dist/esm/standard/elements/group-key-management.element.js +21 -3
  312. package/dist/esm/standard/elements/group-key-management.element.js.map +1 -1
  313. package/dist/esm/standard/elements/groupcast.element.d.ts +8 -0
  314. package/dist/esm/standard/elements/groupcast.element.d.ts.map +1 -0
  315. package/dist/esm/standard/elements/groupcast.element.js +185 -0
  316. package/dist/esm/standard/elements/groupcast.element.js.map +6 -0
  317. package/dist/esm/standard/elements/identified-human-activity.element.d.ts +8 -0
  318. package/dist/esm/standard/elements/identified-human-activity.element.d.ts.map +1 -0
  319. package/dist/esm/standard/elements/identified-human-activity.element.js +28 -0
  320. package/dist/esm/standard/elements/identified-human-activity.element.js.map +6 -0
  321. package/dist/esm/standard/elements/identified-object.element.d.ts +8 -0
  322. package/dist/esm/standard/elements/identified-object.element.d.ts.map +1 -0
  323. package/dist/esm/standard/elements/identified-object.element.js +31 -0
  324. package/dist/esm/standard/elements/identified-object.element.js.map +6 -0
  325. package/dist/esm/standard/elements/identified-sound.element.d.ts +8 -0
  326. package/dist/esm/standard/elements/identified-sound.element.d.ts.map +1 -0
  327. package/dist/esm/standard/elements/identified-sound.element.js +40 -0
  328. package/dist/esm/standard/elements/identified-sound.element.js.map +6 -0
  329. package/dist/esm/standard/elements/illuminance-measurement.element.d.ts.map +1 -1
  330. package/dist/esm/standard/elements/illuminance-measurement.element.js +13 -5
  331. package/dist/esm/standard/elements/illuminance-measurement.element.js.map +1 -1
  332. package/dist/esm/standard/elements/joint-fabric-administrator-cluster.element.d.ts.map +1 -1
  333. package/dist/esm/standard/elements/joint-fabric-administrator-cluster.element.js +20 -18
  334. package/dist/esm/standard/elements/joint-fabric-administrator-cluster.element.js.map +1 -1
  335. package/dist/esm/standard/elements/joint-fabric-datastore.element.d.ts.map +1 -1
  336. package/dist/esm/standard/elements/joint-fabric-datastore.element.js +143 -62
  337. package/dist/esm/standard/elements/joint-fabric-datastore.element.js.map +1 -1
  338. package/dist/esm/standard/elements/mode-base.element.js +1 -1
  339. package/dist/esm/standard/elements/mode-base.element.js.map +1 -1
  340. package/dist/esm/standard/elements/models.d.ts +7 -0
  341. package/dist/esm/standard/elements/models.d.ts.map +1 -1
  342. package/dist/esm/standard/elements/models.js +14 -0
  343. package/dist/esm/standard/elements/models.js.map +1 -1
  344. package/dist/esm/standard/elements/namespace.element.d.ts.map +1 -1
  345. package/dist/esm/standard/elements/namespace.element.js +4 -1
  346. package/dist/esm/standard/elements/namespace.element.js.map +1 -1
  347. package/dist/esm/standard/elements/network-commissioning.element.js +14 -14
  348. package/dist/esm/standard/elements/network-commissioning.element.js.map +1 -1
  349. package/dist/esm/standard/elements/network-infrastructure-manager.element.d.ts.map +1 -1
  350. package/dist/esm/standard/elements/network-infrastructure-manager.element.js +6 -0
  351. package/dist/esm/standard/elements/network-infrastructure-manager.element.js.map +1 -1
  352. package/dist/esm/standard/elements/occupancy-sensing.element.d.ts.map +1 -1
  353. package/dist/esm/standard/elements/occupancy-sensing.element.js +4 -3
  354. package/dist/esm/standard/elements/occupancy-sensing.element.js.map +1 -1
  355. package/dist/esm/standard/elements/power-topology.element.d.ts.map +1 -1
  356. package/dist/esm/standard/elements/power-topology.element.js +1 -9
  357. package/dist/esm/standard/elements/power-topology.element.js.map +1 -1
  358. package/dist/esm/standard/elements/pressure-measurement.element.d.ts.map +1 -1
  359. package/dist/esm/standard/elements/pressure-measurement.element.js +18 -8
  360. package/dist/esm/standard/elements/pressure-measurement.element.js.map +1 -1
  361. package/dist/esm/standard/elements/push-av-stream-transport.element.d.ts.map +1 -1
  362. package/dist/esm/standard/elements/push-av-stream-transport.element.js +1 -3
  363. package/dist/esm/standard/elements/push-av-stream-transport.element.js.map +1 -1
  364. package/dist/esm/standard/elements/rain-sensor.element.d.ts.map +1 -1
  365. package/dist/esm/standard/elements/rain-sensor.element.js +3 -2
  366. package/dist/esm/standard/elements/rain-sensor.element.js.map +1 -1
  367. package/dist/esm/standard/elements/refrigerator-device.element.d.ts.map +1 -1
  368. package/dist/esm/standard/elements/refrigerator-device.element.js +4 -1
  369. package/dist/esm/standard/elements/refrigerator-device.element.js.map +1 -1
  370. package/dist/esm/standard/elements/relative-humidity-measurement.element.d.ts.map +1 -1
  371. package/dist/esm/standard/elements/relative-humidity-measurement.element.js +12 -4
  372. package/dist/esm/standard/elements/relative-humidity-measurement.element.js.map +1 -1
  373. package/dist/esm/standard/elements/root-node.element.js +1 -1
  374. package/dist/esm/standard/elements/root-node.element.js.map +1 -1
  375. package/dist/esm/standard/elements/smoke-co-alarm-cluster.element.d.ts.map +1 -1
  376. package/dist/esm/standard/elements/smoke-co-alarm-cluster.element.js +4 -2
  377. package/dist/esm/standard/elements/smoke-co-alarm-cluster.element.js.map +1 -1
  378. package/dist/esm/standard/elements/software-diagnostics.element.d.ts.map +1 -1
  379. package/dist/esm/standard/elements/software-diagnostics.element.js +12 -4
  380. package/dist/esm/standard/elements/software-diagnostics.element.js.map +1 -1
  381. package/dist/esm/standard/elements/temperature-alarm.element.d.ts +8 -0
  382. package/dist/esm/standard/elements/temperature-alarm.element.d.ts.map +1 -0
  383. package/dist/esm/standard/elements/temperature-alarm.element.js +146 -0
  384. package/dist/esm/standard/elements/temperature-alarm.element.js.map +6 -0
  385. package/dist/esm/standard/elements/temperature-controlled-cabinet.element.d.ts.map +1 -1
  386. package/dist/esm/standard/elements/temperature-controlled-cabinet.element.js +2 -1
  387. package/dist/esm/standard/elements/temperature-controlled-cabinet.element.js.map +1 -1
  388. package/dist/esm/standard/elements/temperature-measurement.element.d.ts.map +1 -1
  389. package/dist/esm/standard/elements/temperature-measurement.element.js +13 -4
  390. package/dist/esm/standard/elements/temperature-measurement.element.js.map +1 -1
  391. package/dist/esm/standard/elements/thermostat-cluster.element.d.ts.map +1 -1
  392. package/dist/esm/standard/elements/thermostat-cluster.element.js +144 -3
  393. package/dist/esm/standard/elements/thermostat-cluster.element.js.map +1 -1
  394. package/dist/esm/standard/elements/thermostat-device.element.d.ts.map +1 -1
  395. package/dist/esm/standard/elements/thermostat-device.element.js +3 -2
  396. package/dist/esm/standard/elements/thermostat-device.element.js.map +1 -1
  397. package/dist/esm/standard/elements/water-freeze-detector.element.d.ts.map +1 -1
  398. package/dist/esm/standard/elements/water-freeze-detector.element.js +3 -2
  399. package/dist/esm/standard/elements/water-freeze-detector.element.js.map +1 -1
  400. package/dist/esm/standard/elements/water-leak-detector.element.d.ts.map +1 -1
  401. package/dist/esm/standard/elements/water-leak-detector.element.js +3 -2
  402. package/dist/esm/standard/elements/water-leak-detector.element.js.map +1 -1
  403. package/dist/esm/standard/elements/web-rtc-transport-provider.element.d.ts.map +1 -1
  404. package/dist/esm/standard/elements/web-rtc-transport-provider.element.js +1 -10
  405. package/dist/esm/standard/elements/web-rtc-transport-provider.element.js.map +1 -1
  406. package/dist/esm/standard/resources/access-control.resource.js +68 -21
  407. package/dist/esm/standard/resources/access-control.resource.js.map +1 -1
  408. package/dist/esm/standard/resources/account-login.resource.js +3 -3
  409. package/dist/esm/standard/resources/ambient-context-sensing.resource.d.ts +7 -0
  410. package/dist/esm/standard/resources/ambient-context-sensing.resource.d.ts.map +1 -0
  411. package/dist/esm/standard/resources/ambient-context-sensing.resource.js +240 -0
  412. package/dist/esm/standard/resources/ambient-context-sensing.resource.js.map +6 -0
  413. package/dist/esm/standard/resources/base.resource.js +38 -8
  414. package/dist/esm/standard/resources/base.resource.js.map +1 -1
  415. package/dist/esm/standard/resources/basic-information.resource.js +24 -0
  416. package/dist/esm/standard/resources/basic-information.resource.js.map +1 -1
  417. package/dist/esm/standard/resources/boolean-state-configuration.resource.js +7 -1
  418. package/dist/esm/standard/resources/boolean-state-configuration.resource.js.map +1 -1
  419. package/dist/esm/standard/resources/boolean-state.resource.js +14 -3
  420. package/dist/esm/standard/resources/boolean-state.resource.js.map +1 -1
  421. package/dist/esm/standard/resources/camera-av-stream-management.resource.js +7 -1
  422. package/dist/esm/standard/resources/camera-av-stream-management.resource.js.map +1 -1
  423. package/dist/esm/standard/resources/certification-type-enum.resource.d.ts +7 -0
  424. package/dist/esm/standard/resources/certification-type-enum.resource.d.ts.map +1 -0
  425. package/dist/esm/standard/resources/certification-type-enum.resource.js +21 -0
  426. package/dist/esm/standard/resources/certification-type-enum.resource.js.map +6 -0
  427. package/dist/esm/standard/resources/closure-controller.resource.js +0 -1
  428. package/dist/esm/standard/resources/closure-controller.resource.js.map +1 -1
  429. package/dist/esm/standard/resources/color-control.resource.js +12 -12
  430. package/dist/esm/standard/resources/color-control.resource.js.map +1 -1
  431. package/dist/esm/standard/resources/energy-preference.resource.js +1 -1
  432. package/dist/esm/standard/resources/energy-preference.resource.js.map +1 -1
  433. package/dist/esm/standard/resources/general-commissioning.resource.js +2 -2
  434. package/dist/esm/standard/resources/general-diagnostics.resource.js +44 -0
  435. package/dist/esm/standard/resources/general-diagnostics.resource.js.map +1 -1
  436. package/dist/esm/standard/resources/group-key-management.resource.js +37 -15
  437. package/dist/esm/standard/resources/group-key-management.resource.js.map +1 -1
  438. package/dist/esm/standard/resources/groupcast.resource.d.ts +7 -0
  439. package/dist/esm/standard/resources/groupcast.resource.d.ts.map +1 -0
  440. package/dist/esm/standard/resources/groupcast.resource.js +374 -0
  441. package/dist/esm/standard/resources/groupcast.resource.js.map +6 -0
  442. package/dist/esm/standard/resources/groups.resource.js +1 -1
  443. package/dist/esm/standard/resources/groups.resource.js.map +1 -1
  444. package/dist/esm/standard/resources/icd-management.resource.js +1 -1
  445. package/dist/esm/standard/resources/icd-management.resource.js.map +1 -1
  446. package/dist/esm/standard/resources/identified-human-activity.resource.d.ts +7 -0
  447. package/dist/esm/standard/resources/identified-human-activity.resource.d.ts.map +1 -0
  448. package/dist/esm/standard/resources/identified-human-activity.resource.js +25 -0
  449. package/dist/esm/standard/resources/identified-human-activity.resource.js.map +6 -0
  450. package/dist/esm/standard/resources/identified-object.resource.d.ts +7 -0
  451. package/dist/esm/standard/resources/identified-object.resource.d.ts.map +1 -0
  452. package/dist/esm/standard/resources/identified-object.resource.js +28 -0
  453. package/dist/esm/standard/resources/identified-object.resource.js.map +6 -0
  454. package/dist/esm/standard/resources/identified-sound.resource.d.ts +7 -0
  455. package/dist/esm/standard/resources/identified-sound.resource.d.ts.map +1 -0
  456. package/dist/esm/standard/resources/identified-sound.resource.js +41 -0
  457. package/dist/esm/standard/resources/identified-sound.resource.js.map +6 -0
  458. package/dist/esm/standard/resources/index.d.ts +7 -0
  459. package/dist/esm/standard/resources/index.d.ts.map +1 -1
  460. package/dist/esm/standard/resources/index.js +7 -0
  461. package/dist/esm/standard/resources/index.js.map +1 -1
  462. package/dist/esm/standard/resources/joint-fabric-administrator-cluster.resource.js +23 -18
  463. package/dist/esm/standard/resources/joint-fabric-administrator-cluster.resource.js.map +1 -1
  464. package/dist/esm/standard/resources/joint-fabric-datastore.resource.js +353 -39
  465. package/dist/esm/standard/resources/joint-fabric-datastore.resource.js.map +1 -1
  466. package/dist/esm/standard/resources/mode-base.resource.js +1 -1
  467. package/dist/esm/standard/resources/namespace.resource.js +15 -0
  468. package/dist/esm/standard/resources/namespace.resource.js.map +1 -1
  469. package/dist/esm/standard/resources/network-commissioning.resource.js +13 -13
  470. package/dist/esm/standard/resources/network-commissioning.resource.js.map +1 -1
  471. package/dist/esm/standard/resources/network-infrastructure-manager.resource.js +12 -6
  472. package/dist/esm/standard/resources/network-infrastructure-manager.resource.js.map +1 -1
  473. package/dist/esm/standard/resources/occupancy-sensing.resource.js +2 -1
  474. package/dist/esm/standard/resources/occupancy-sensing.resource.js.map +1 -1
  475. package/dist/esm/standard/resources/on-off.resource.js +2 -2
  476. package/dist/esm/standard/resources/on-off.resource.js.map +1 -1
  477. package/dist/esm/standard/resources/oven-mode.resource.js +1 -1
  478. package/dist/esm/standard/resources/oven-mode.resource.js.map +1 -1
  479. package/dist/esm/standard/resources/power-topology.resource.js +2 -28
  480. package/dist/esm/standard/resources/power-topology.resource.js.map +1 -1
  481. package/dist/esm/standard/resources/push-av-stream-transport.resource.js +3 -15
  482. package/dist/esm/standard/resources/push-av-stream-transport.resource.js.map +1 -1
  483. package/dist/esm/standard/resources/refrigerator-device.resource.js +1 -0
  484. package/dist/esm/standard/resources/refrigerator-device.resource.js.map +1 -1
  485. package/dist/esm/standard/resources/smoke-co-alarm-cluster.resource.js +10 -2
  486. package/dist/esm/standard/resources/smoke-co-alarm-cluster.resource.js.map +1 -1
  487. package/dist/esm/standard/resources/temperature-alarm.resource.d.ts +7 -0
  488. package/dist/esm/standard/resources/temperature-alarm.resource.d.ts.map +1 -0
  489. package/dist/esm/standard/resources/temperature-alarm.resource.js +182 -0
  490. package/dist/esm/standard/resources/temperature-alarm.resource.js.map +6 -0
  491. package/dist/esm/standard/resources/temperature-controlled-cabinet.resource.js +1 -0
  492. package/dist/esm/standard/resources/temperature-controlled-cabinet.resource.js.map +1 -1
  493. package/dist/esm/standard/resources/thermostat-cluster.resource.js +459 -135
  494. package/dist/esm/standard/resources/thermostat-cluster.resource.js.map +1 -1
  495. package/dist/esm/standard/resources/thermostat-device.resource.js +2 -1
  496. package/dist/esm/standard/resources/thermostat-device.resource.js.map +1 -1
  497. package/dist/esm/standard/resources/web-rtc-transport-definitions.resource.js +21 -21
  498. package/dist/esm/standard/resources/web-rtc-transport-provider.resource.js +42 -80
  499. package/dist/esm/standard/resources/web-rtc-transport-provider.resource.js.map +1 -1
  500. package/dist/esm/standard/resources/window-covering-cluster.resource.js +14 -14
  501. package/package.json +3 -3
  502. package/src/aspects/Quality.ts +1 -1
  503. package/src/common/DeviceClassification.ts +6 -6
  504. package/src/common/Specification.ts +2 -2
  505. package/src/dts/Specifications.d.ts +17 -0
  506. package/src/logic/cluster-variance/InferredComponents.ts +43 -3
  507. package/src/standard/elements/access-control.element.ts +26 -2
  508. package/src/standard/elements/ambient-context-sensing.element.ts +140 -0
  509. package/src/standard/elements/base.element.ts +1 -1
  510. package/src/standard/elements/basic-information.element.ts +15 -2
  511. package/src/standard/elements/boolean-state-configuration.element.ts +4 -3
  512. package/src/standard/elements/boolean-state.element.ts +8 -4
  513. package/src/standard/elements/bridged-device-basic-information.element.ts +2 -2
  514. package/src/standard/elements/camera-av-stream-management.element.ts +8 -3
  515. package/src/standard/elements/certification-type-enum.element.ts +19 -0
  516. package/src/standard/elements/chime-cluster.element.ts +2 -2
  517. package/src/standard/elements/closure-controller.element.ts +0 -1
  518. package/src/standard/elements/concentration-measurement.element.ts +7 -4
  519. package/src/standard/elements/content-launcher.element.ts +7 -7
  520. package/src/standard/elements/definitions.ts +7 -0
  521. package/src/standard/elements/flow-measurement.element.ts +7 -4
  522. package/src/standard/elements/general-commissioning.element.ts +6 -4
  523. package/src/standard/elements/general-diagnostics.element.ts +14 -1
  524. package/src/standard/elements/group-key-management.element.ts +19 -3
  525. package/src/standard/elements/groupcast.element.ts +165 -0
  526. package/src/standard/elements/identified-human-activity.element.ts +29 -0
  527. package/src/standard/elements/identified-object.element.ts +32 -0
  528. package/src/standard/elements/identified-sound.element.ts +41 -0
  529. package/src/standard/elements/illuminance-measurement.element.ts +8 -5
  530. package/src/standard/elements/joint-fabric-administrator-cluster.element.ts +21 -19
  531. package/src/standard/elements/joint-fabric-datastore.element.ts +101 -60
  532. package/src/standard/elements/mode-base.element.ts +1 -1
  533. package/src/standard/elements/models.ts +7 -0
  534. package/src/standard/elements/namespace.element.ts +4 -1
  535. package/src/standard/elements/network-commissioning.element.ts +14 -14
  536. package/src/standard/elements/network-infrastructure-manager.element.ts +6 -0
  537. package/src/standard/elements/occupancy-sensing.element.ts +4 -3
  538. package/src/standard/elements/power-topology.element.ts +1 -10
  539. package/src/standard/elements/pressure-measurement.element.ts +11 -8
  540. package/src/standard/elements/push-av-stream-transport.element.ts +1 -3
  541. package/src/standard/elements/rain-sensor.element.ts +3 -2
  542. package/src/standard/elements/refrigerator-device.element.ts +4 -1
  543. package/src/standard/elements/relative-humidity-measurement.element.ts +7 -4
  544. package/src/standard/elements/root-node.element.ts +1 -1
  545. package/src/standard/elements/smoke-co-alarm-cluster.element.ts +4 -2
  546. package/src/standard/elements/software-diagnostics.element.ts +9 -4
  547. package/src/standard/elements/temperature-alarm.element.ts +109 -0
  548. package/src/standard/elements/temperature-controlled-cabinet.element.ts +2 -1
  549. package/src/standard/elements/temperature-measurement.element.ts +7 -4
  550. package/src/standard/elements/thermostat-cluster.element.ts +123 -3
  551. package/src/standard/elements/thermostat-device.element.ts +3 -2
  552. package/src/standard/elements/water-freeze-detector.element.ts +3 -2
  553. package/src/standard/elements/water-leak-detector.element.ts +3 -2
  554. package/src/standard/elements/web-rtc-transport-provider.element.ts +1 -11
  555. package/src/standard/resources/access-control.resource.ts +111 -21
  556. package/src/standard/resources/account-login.resource.ts +3 -3
  557. package/src/standard/resources/ambient-context-sensing.resource.ts +288 -0
  558. package/src/standard/resources/base.resource.ts +26 -8
  559. package/src/standard/resources/basic-information.resource.ts +29 -0
  560. package/src/standard/resources/boolean-state-configuration.resource.ts +6 -1
  561. package/src/standard/resources/boolean-state.resource.ts +12 -3
  562. package/src/standard/resources/camera-av-stream-management.resource.ts +17 -1
  563. package/src/standard/resources/certification-type-enum.resource.ts +22 -0
  564. package/src/standard/resources/closure-controller.resource.ts +0 -2
  565. package/src/standard/resources/color-control.resource.ts +12 -13
  566. package/src/standard/resources/energy-preference.resource.ts +1 -5
  567. package/src/standard/resources/general-commissioning.resource.ts +4 -4
  568. package/src/standard/resources/general-diagnostics.resource.ts +48 -0
  569. package/src/standard/resources/group-key-management.resource.ts +106 -41
  570. package/src/standard/resources/groupcast.resource.ts +568 -0
  571. package/src/standard/resources/groups.resource.ts +10 -1
  572. package/src/standard/resources/icd-management.resource.ts +2 -1
  573. package/src/standard/resources/identified-human-activity.resource.ts +28 -0
  574. package/src/standard/resources/identified-object.resource.ts +47 -0
  575. package/src/standard/resources/identified-sound.resource.ts +46 -0
  576. package/src/standard/resources/index.ts +7 -0
  577. package/src/standard/resources/joint-fabric-administrator-cluster.resource.ts +21 -22
  578. package/src/standard/resources/joint-fabric-datastore.resource.ts +814 -581
  579. package/src/standard/resources/mode-base.resource.ts +1 -1
  580. package/src/standard/resources/namespace.resource.ts +37 -0
  581. package/src/standard/resources/network-commissioning.resource.ts +28 -22
  582. package/src/standard/resources/network-infrastructure-manager.resource.ts +12 -6
  583. package/src/standard/resources/occupancy-sensing.resource.ts +2 -1
  584. package/src/standard/resources/on-off.resource.ts +15 -5
  585. package/src/standard/resources/oven-mode.resource.ts +6 -4
  586. package/src/standard/resources/power-topology.resource.ts +2 -25
  587. package/src/standard/resources/push-av-stream-transport.resource.ts +4 -18
  588. package/src/standard/resources/refrigerator-device.resource.ts +1 -0
  589. package/src/standard/resources/smoke-co-alarm-cluster.resource.ts +27 -2
  590. package/src/standard/resources/temperature-alarm.resource.ts +165 -0
  591. package/src/standard/resources/temperature-controlled-cabinet.resource.ts +1 -0
  592. package/src/standard/resources/thermostat-cluster.resource.ts +492 -135
  593. package/src/standard/resources/thermostat-device.resource.ts +2 -1
  594. package/src/standard/resources/web-rtc-transport-definitions.resource.ts +21 -21
  595. package/src/standard/resources/web-rtc-transport-provider.resource.ts +42 -80
  596. package/src/standard/resources/window-covering-cluster.resource.ts +14 -14
@@ -34,11 +34,7 @@ Resource.add({
34
34
  "Joint Fabric Datastore cluster shall NOT be accessible." +
35
35
  "\n" +
36
36
  "The Admin level of access to the Joint Fabric Datastore cluster server shall be limited to JF " +
37
- "Administrator Nodes identified using the Administrator CAT." +
38
- "\n" +
39
- "> [!NOTE]" +
40
- "\n" +
41
- "> NOTE: Support for Joint Fabric Datastore cluster is provisional.",
37
+ "Administrator Nodes identified using the Administrator CAT.",
42
38
 
43
39
  children: [
44
40
  {
@@ -57,7 +53,7 @@ Resource.add({
57
53
  },
58
54
  {
59
55
  tag: "attribute", name: "FriendlyName", xref: "core§11.24.6.4",
60
- details: "Friendly name for the accessing fabric which can be propagated to nodes."
56
+ details: "Friendly name for the accessing fabric."
61
57
  },
62
58
 
63
59
  {
@@ -72,8 +68,8 @@ Resource.add({
72
68
  tag: "attribute", name: "GroupList", xref: "core§11.24.6.6",
73
69
  details: "This shall indicate the list of groups in the Joint Fabric for the accessing fabric." +
74
70
  "\n" +
75
- "This list must include, at a minimum, one group with GroupCAT value set to Administrator CAT and one " +
76
- "group with GroupCAT value set to Anchor CAT."
71
+ "This list shall include, at a minimum, one group with GroupCAT value set to Administrator CAT and " +
72
+ "one group with GroupCAT value set to Anchor CAT."
77
73
  },
78
74
 
79
75
  {
@@ -89,7 +85,7 @@ Resource.add({
89
85
  "Only one Administrator may serve as the Anchor Root CA and Anchor Fabric Administrator and shall " +
90
86
  "have index value 0. All other Joint Fabric Administrators shall be referenced at index 1 or greater." +
91
87
  "\n" +
92
- "A null value or empty list indicates that the Joint Fabric is not yet formed."
88
+ "An empty list indicates that the Joint Fabric is not yet formed."
93
89
  },
94
90
 
95
91
  {
@@ -98,676 +94,903 @@ Resource.add({
98
94
  details: "This shall indicate the current state of the Joint Fabric Datastore Cluster for the accessing " +
99
95
  "fabric." +
100
96
  "\n" +
101
- "The Committed status indicates the DataStore is ready for use. The Pending status indicates that the " +
102
- "DataStore is not yet ready for use. The DeletePending status indicates that the DataStore is in the " +
103
- "process of being transferred to another Joint Fabric Anchor Administrator."
97
+ "The value shall be one of the following states:" +
98
+ "\n" +
99
+ " - Committed - indicates the DataStore is ready for use." +
100
+ "\n" +
101
+ " - Pending - indicates that the DataStore is not yet ready for use." +
102
+ "\n" +
103
+ " - DeletePending - indicates that the DataStore is in the process of being transferred to another " +
104
+ "Joint Fabric Anchor Administrator."
104
105
  },
105
106
 
106
107
  {
107
108
  tag: "attribute", name: "EndpointGroupIdList", xref: "core§11.24.6.10",
108
- details: "This shall indicate the group membership of endpoints in the accessing fabric." +
109
- "\n" +
110
- "Any changes to this List (add/remove entry) must follow the pending->committed workflow with current " +
111
- "state reflected in the Status Entry."
109
+ details: "This shall indicate the group membership of endpoints in the accessing fabric."
112
110
  },
113
-
114
111
  {
115
112
  tag: "attribute", name: "EndpointBindingList", xref: "core§11.24.6.11",
116
- details: "This shall indicate the binding list for endpoints in the accessing fabric." +
117
- "\n" +
118
- "Any changes to this List (add/remove entry) must follow the pending->committed workflow with current " +
119
- "state reflected in the Status Entry."
113
+ details: "This shall indicate the binding list for endpoints in the accessing fabric."
120
114
  },
121
-
122
115
  {
123
116
  tag: "attribute", name: "NodeKeySetList", xref: "core§11.24.6.12",
124
- details: "This shall indicate the KeySet entries for nodes in the accessing fabric." +
125
- "\n" +
126
- "Any changes to this List (add/remove entry) must follow the pending->committed workflow with current " +
127
- "state reflected in the Status Entry."
117
+ details: "This shall indicate the KeySet entries for nodes in the accessing fabric."
128
118
  },
129
-
130
119
  {
131
120
  tag: "attribute", name: "NodeAclList", xref: "core§11.24.6.13",
132
- details: "This shall indicate the ACL entries for nodes in the accessing fabric." +
133
- "\n" +
134
- "Any changes to this List (add/remove entry) must follow the pending->committed workflow with current " +
135
- "state reflected in the Status Entry."
121
+ details: "This shall indicate the ACL entries for nodes in the accessing fabric."
136
122
  },
137
-
138
123
  {
139
124
  tag: "attribute", name: "NodeEndpointList", xref: "core§11.24.6.14",
140
- details: "This shall indicate the Endpoint entries for nodes in the accessing fabric." +
141
- "\n" +
142
- "Any changes to this List (add/remove entry) must follow the pending->committed workflow with current " +
143
- "state reflected in the Status Entry."
125
+ details: "This shall indicate the Endpoint entries for nodes in the accessing fabric."
144
126
  },
145
127
 
146
128
  {
147
129
  tag: "command", name: "AddKeySet", xref: "core§11.24.7.1",
148
-
149
- details: "This command shall be used to add a KeySet to the Joint Fabric Datastore Cluster of the accessing " +
150
- "fabric." +
151
- "\n" +
152
- "GroupKeySet represents the KeySet to be added to the Joint Fabric Datastore Cluster." +
153
- "\n" +
154
- "Upon receipt of this command, the Datastore shall:" +
155
- "\n" +
156
- " 1. Ensure there are no KeySets in the KeySetList attribute with the given GroupKeySetID." +
157
- "\n" +
158
- " 2. If a match is found, then this command shall fail with a CONSTRAINT_ERROR status code." +
159
- "\n" +
160
- " 3. Add the Epoch Key Entry for the KeySet to the KeySetList attribute."
130
+ details: "Upon receipt, this shall add a KeySet to the Joint Fabric Datastore Cluster of the accessing fabric.",
131
+
132
+ children: [{
133
+ tag: "field", name: "GroupKeySet", xref: "core§11.24.7.1.1",
134
+
135
+ details: "This field shall indicate the KeySet to be added to the Joint Fabric Datastore Cluster." +
136
+ "\n" +
137
+ "The Datastore shall:" +
138
+ "\n" +
139
+ " 1. Ensure there are no KeySets in the KeySetList attribute with the given GroupKeySetID." +
140
+ "\n" +
141
+ " 2. If a match is found, then this command shall fail with a CONSTRAINT_ERROR status code." +
142
+ "\n" +
143
+ " 3. Add the Epoch Key Entry for the KeySet to the KeySetList attribute."
144
+ }]
161
145
  },
162
146
 
163
147
  {
164
148
  tag: "command", name: "UpdateKeySet", xref: "core§11.24.7.2",
165
-
166
- details: "This command shall be used to update a KeySet in the Joint Fabric Datastore Cluster of the accessing " +
167
- "fabric." +
168
- "\n" +
169
- "GroupKeySet represents the KeySet to be updated in the Joint Fabric Datastore Cluster." +
170
- "\n" +
171
- "Upon receipt of this command, the Datastore shall:" +
172
- "\n" +
173
- " 1. Find the Epoch Key Entry for the KeySet in the KeySetList attribute with the given " +
174
- "GroupKeySetID, and update any changed fields." +
175
- "\n" +
176
- " 2. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
177
- "\n" +
178
- " 3. If any fields are changed as a result of this command:" +
179
- "\n" +
180
- " 1. Iterate through each Node Information Entry:" +
181
- "\n" +
182
- " 1. If the NodeKeySetList contains an entry with the given GroupKeySetID:" +
183
- "\n" +
184
- " 1. Update the Status on the given DatastoreNodeKeySetEntryStruct tp Pending." +
185
- "\n" +
186
- " 2. Update the GroupKeySet on the given Node with the new values." +
187
- "\n" +
188
- " 1. If successful, update the Status on this DatastoreNodeKeySetEntryStruct to Committed." +
189
- "\n" +
190
- " 2. If not successful, update the State field of the StatusEntry on this " +
191
- "DatastoreNodeKeySetEntryStruct to CommitFailed and FailureCode code to the returned error. The " +
192
- "pending change shall be applied in a subsequent Node Refresh."
149
+ details: "Upon receipt, this shall update a KeySet in the Joint Fabric Datastore Cluster of the accessing " +
150
+ "fabric.",
151
+
152
+ children: [{
153
+ tag: "field", name: "GroupKeySet", xref: "core§11.24.7.2.1",
154
+
155
+ details: "This field shall indicate the KeySet to be updated in the Joint Fabric Datastore Cluster." +
156
+ "\n" +
157
+ "The Datastore shall:" +
158
+ "\n" +
159
+ " 1. Find the Epoch Key Entry for the KeySet in the KeySetList attribute with the given " +
160
+ "GroupKeySetID, and update any changed fields." +
161
+ "\n" +
162
+ " 2. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
163
+ "\n" +
164
+ " 3. If any fields are changed as a result of this command:" +
165
+ "\n" +
166
+ " 1. Iterate through each DatastoreNodeInformationEntryStruct:" +
167
+ "\n" +
168
+ " 1. If the NodeKeySetList contains an entry with the given GroupKeySetID:" +
169
+ "\n" +
170
+ " 1. Update the Status on the given DatastoreNodeKeySetEntryStruct tp Pending." +
171
+ "\n" +
172
+ " 2. Update the GroupKeySet on the given Node with the new values." +
173
+ "\n" +
174
+ " 1. If successful, update the Status on this DatastoreNodeKeySetEntryStruct to Committed." +
175
+ "\n" +
176
+ " 2. If not successful, update the State field of the StatusEntry on this " +
177
+ "DatastoreNodeKeySetEntryStruct to CommitFailed and FailureCode code to the returned error. The " +
178
+ "pending change shall be applied in a subsequent Node Refresh."
179
+ }]
193
180
  },
194
181
 
195
182
  {
196
183
  tag: "command", name: "RemoveKeySet", xref: "core§11.24.7.3",
197
-
198
- details: "This command shall be used to remove a KeySet from the Joint Fabric Datastore Cluster of the " +
199
- "accessing fabric." +
200
- "\n" +
201
- "GroupKeySetID represents the unique identifier for the KeySet to be removed from the Joint Fabric " +
202
- "Datastore Cluster." +
203
- "\n" +
204
- "Attempt to remove the IPK, which has GroupKeySetID of 0, shall fail with response CONSTRAINT_ERROR." +
205
- "\n" +
206
- "Upon receipt of this command, the Datastore shall:" +
207
- "\n" +
208
- " 1. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
209
- "\n" +
210
- " 2. Ensure there are no Nodes using this KeySet. To do this:" +
211
- "\n" +
212
- " 1. Iterate through each Node Information Entry:" +
213
- "\n" +
214
- " 1. If the NodeKeySetList list contains an entry with the given GroupKeySetID, and the entry does " +
215
- "NOT have Status DeletePending, then this command shall fail with a CONSTRAINT_ERROR status " +
216
- "code." +
217
- "\n" +
218
- " 3. Remove the DatastoreGroupKeySetStruct for the given GroupKeySetID from the GroupKeySetList " +
219
- "attribute."
184
+ details: "Upon receipt, this shall remove a KeySet from the Joint Fabric Datastore Cluster of the accessing " +
185
+ "fabric.",
186
+
187
+ children: [{
188
+ tag: "field", name: "GroupKeySetId", xref: "core§11.24.7.3.1",
189
+
190
+ details: "This field shall indicate the unique identifier for the KeySet to be removed from the Joint Fabric " +
191
+ "Datastore Cluster." +
192
+ "\n" +
193
+ "Attempt to remove the IPK, which has GroupKeySetID of 0, shall fail with response CONSTRAINT_ERROR." +
194
+ "\n" +
195
+ "The Datastore shall:" +
196
+ "\n" +
197
+ " 1. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
198
+ "\n" +
199
+ " 2. Ensure there are no Nodes using this KeySet. To do this:" +
200
+ "\n" +
201
+ " 1. Iterate through each DatastoreNodeInformationEntryStruct:" +
202
+ "\n" +
203
+ " 1. If the NodeKeySetList list contains an entry with the given GroupKeySetID, and the entry does " +
204
+ "NOT have Status DeletePending, then this command shall fail with a CONSTRAINT_ERROR status " +
205
+ "code." +
206
+ "\n" +
207
+ " 3. Remove the DatastoreGroupKeySetStruct for the given GroupKeySetID from the GroupKeySetList " +
208
+ "attribute."
209
+ }]
220
210
  },
221
211
 
222
212
  {
223
213
  tag: "command", name: "AddGroup", xref: "core§11.24.7.4",
214
+ details: "Upon receipt, this shall add a group to the Joint Fabric Datastore Cluster of the accessing fabric.",
224
215
 
225
- details: "This command shall be used to add a group to the Joint Fabric Datastore Cluster of the accessing " +
226
- "fabric." +
227
- "\n" +
228
- "GroupInformationEntry represents the group to be added to the Joint Fabric Datastore Cluster." +
229
- "\n" +
230
- "GroupCAT values shall fall within the range 1 to 65534. Attempts to add a group with a GroupCAT " +
231
- "value of Administrator CAT or Anchor CAT shall fail with CONSTRAINT_ERROR." +
232
- "\n" +
233
- "Upon receipt of this command, the Datastore shall:" +
234
- "\n" +
235
- " 1. Ensure there are no Groups in the GroupList attribute with the given GroupID. If a match is " +
236
- "found, then this command shall fail with a CONSTRAINT_ERROR status code." +
237
- "\n" +
238
- " 2. Add the DatastoreGroupInformationEntryStruct for the Group with the given GroupID to the " +
239
- "GroupList attribute."
216
+ children: [
217
+ {
218
+ tag: "field", name: "GroupId", xref: "core§11.24.7.4.1",
219
+ details: "This field shall indicate the unique identifier for the group to be added to the Joint Fabric " +
220
+ "Datastore Cluster."
221
+ },
222
+ {
223
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.4.2",
224
+ details: "This field shall indicate the friendly name for the group."
225
+ },
226
+ {
227
+ tag: "field", name: "GroupKeySetId", xref: "core§11.24.7.4.3",
228
+ details: "This field shall indicate the unique identifier for the group key set."
229
+ },
230
+
231
+ {
232
+ tag: "field", name: "GroupCat", xref: "core§11.24.7.4.4",
233
+ details: "This field shall indicate the CAT value for this group." +
234
+ "\n" +
235
+ "GroupCAT values shall fall within the range 1 to 65534. Attempts to add a group with a GroupCAT " +
236
+ "value of Administrator CAT or Anchor CAT shall fail with CONSTRAINT_ERROR."
237
+ },
238
+
239
+ {
240
+ tag: "field", name: "GroupCatVersion", xref: "core§11.24.7.4.5",
241
+ details: "This field shall indicate the current version number for this CAT."
242
+ },
243
+
244
+ {
245
+ tag: "field", name: "GroupPermission", xref: "core§11.24.7.4.6",
246
+
247
+ details: "This field shall indicate the permission level associated with ACL entries for this group." +
248
+ "\n" +
249
+ "The Datastore shall:" +
250
+ "\n" +
251
+ " 1. Ensure there are no Groups in the GroupList attribute with the given GroupID. If a match is " +
252
+ "found, then this command shall fail with a CONSTRAINT_ERROR status code." +
253
+ "\n" +
254
+ " 2. Add the DatastoreGroupInformationEntryStruct for the Group with the given GroupID to the " +
255
+ "GroupList attribute."
256
+ }
257
+ ]
240
258
  },
241
259
 
242
260
  {
243
261
  tag: "command", name: "UpdateGroup", xref: "core§11.24.7.5",
262
+ details: "Upon receipt, this shall update a group in the Joint Fabric Datastore Cluster of the accessing " +
263
+ "fabric.",
244
264
 
245
- details: "This command shall be used to update a group in the Joint Fabric Datastore Cluster of the accessing " +
246
- "fabric." +
247
- "\n" +
248
- "GroupID represents the group to be updated in the Joint Fabric Datastore Cluster. NULL values for " +
249
- "the additional parameters will be ignored (not updated)." +
250
- "\n" +
251
- "GroupCAT values shall fall within the range 1 to 65534. Attempts to update the GroupCAT on an " +
252
- "existing group which has a GroupCAT value of Administrator CAT or Anchor CAT shall fail with " +
253
- "CONSTRAINT_ERROR." +
254
- "\n" +
255
- "Attempts to set the GroupCAT to Administrator CAT or Anchor CAT shall fail with CONSTRAINT_ERROR." +
256
- "\n" +
257
- "Upon receipt of this command, the Datastore shall:" +
258
- "\n" +
259
- " 1. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
260
- "\n" +
261
- " 2. Update the DatastoreGroupInformationEntryStruct for the Group with the given GroupID to match " +
262
- "the non-NULL fields passed in." +
263
- "\n" +
264
- " 3. If any fields are changed as a result of this command:" +
265
- "\n" +
266
- " 1. Iterate through each Node Information Entry:" +
267
- "\n" +
268
- " 1. If the GroupKeySetID changed:" +
269
- "\n" +
270
- " 1. Add a DatastoreNodeKeySetEntryStruct with the new GroupKeySetID, and Status set to Pending." +
271
- "\n" +
272
- " 2. Add this KeySet to the Node." +
273
- "\n" +
274
- " 1. If successful, Set the Status to Committed for this entry in the NodeKeySetList." +
275
- "\n" +
276
- " 2. If not successful, Set the Status to CommitFailed and the FailureCode to the returned error. " +
277
- "The pending change shall be applied in a subsequent Node Refresh." +
278
- "\n" +
279
- " 1. If the NodeKeySetList list contains an entry with the previous GroupKeySetID:" +
280
- "\n" +
281
- " 3. Set the Status set to DeletePending." +
282
- "\n" +
283
- " 4. Remove this KeySet from the Node." +
284
- "\n" +
285
- " 1. If successful, Remove this entry from the NodeKeySetList." +
286
- "\n" +
287
- " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh." +
288
- "\n" +
289
- " 2. If the GroupCAT, GroupCATVersion or GroupPermission changed:" +
290
- "\n" +
291
- " 1. If the ACLList contains an entry for this Group, update the ACL List Entry in the Datastore " +
292
- "with the new values and Status Pending, update the ACL attribute on the given Node with the new " +
293
- " values. If the update succeeds, set the Status to Committed on the ACLList Entry in the " +
294
- "Datastore." +
295
- "\n" +
296
- " 3. If the FriendlyName changed:" +
297
- "\n" +
298
- " 1. Iterate through each Endpoint Information Entry:" +
299
- "\n" +
300
- " 1. If the GroupIDList contains an entry with the given GroupID:" +
301
- "\n" +
302
- " 1. Update the GroupIDList Entry in the Datastore with the new values and Status Pending" +
303
- "\n" +
304
- " 2. Update the Groups on the given Node with the new values." +
305
- "\n" +
306
- " 1. If the update succeeds, set the Status to Committed on the GroupIDList Entry in the Datastore." +
307
- "\n" +
308
- " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh."
265
+ children: [
266
+ {
267
+ tag: "field", name: "GroupId", xref: "core§11.24.7.5.1",
268
+ details: "This field shall indicate the group to be updated in the Joint Fabric Datastore Cluster."
269
+ },
270
+ {
271
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.5.2",
272
+ details: "This field shall indicate the friendly name for the group. NULL values will be ignored (not " +
273
+ "updated)."
274
+ },
275
+ {
276
+ tag: "field", name: "GroupKeySetId", xref: "core§11.24.7.5.3",
277
+ details: "This field shall indicate the unique identifier for the group key set. NULL values will be ignored " +
278
+ "(not updated)."
279
+ },
280
+
281
+ {
282
+ tag: "field", name: "GroupCat", xref: "core§11.24.7.5.4",
283
+
284
+ details: "This field shall indicate the CAT value for this group. NULL values will be ignored (not updated)." +
285
+ "\n" +
286
+ "GroupCAT values shall fall within the range 1 to 65534. Attempts to update the GroupCAT on an " +
287
+ "existing group which has a GroupCAT value of Administrator CAT or Anchor CAT shall fail with " +
288
+ "CONSTRAINT_ERROR." +
289
+ "\n" +
290
+ "Attempts to set the GroupCAT to Administrator CAT or Anchor CAT shall fail with CONSTRAINT_ERROR."
291
+ },
292
+
293
+ {
294
+ tag: "field", name: "GroupCatVersion", xref: "core§11.24.7.5.5",
295
+ details: "This field shall indicate the current version number for this CAT. NULL values will be ignored (not " +
296
+ "updated)."
297
+ },
298
+
299
+ {
300
+ tag: "field", name: "GroupPermission", xref: "core§11.24.7.5.6",
301
+
302
+ details: "This field shall indicate the permission level associated with ACL entries for this group. NULL " +
303
+ "values will be ignored (not updated)." +
304
+ "\n" +
305
+ "The Datastore shall:" +
306
+ "\n" +
307
+ " 1. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
308
+ "\n" +
309
+ " 2. Update the DatastoreGroupInformationEntryStruct for the Group with the given GroupID to match " +
310
+ "the non-NULL fields passed in." +
311
+ "\n" +
312
+ " 3. If any fields are changed as a result of this command:" +
313
+ "\n" +
314
+ " 1. Iterate through each DatastoreNodeInformationEntryStruct:" +
315
+ "\n" +
316
+ " 1. If the GroupKeySetID changed:" +
317
+ "\n" +
318
+ " 1. Add a DatastoreNodeKeySetEntryStruct with the new GroupKeySetID, and Status set to Pending." +
319
+ "\n" +
320
+ " 2. Add this KeySet to the Node." +
321
+ "\n" +
322
+ " 1. If successful, Set the Status to Committed for this entry in the NodeKeySetList." +
323
+ "\n" +
324
+ " 2. If not successful, Set the Status to CommitFailed and the FailureCode to the returned error. " +
325
+ "The pending change shall be applied in a subsequent Node Refresh." +
326
+ "\n" +
327
+ " 1. If the NodeKeySetList list contains an entry with the previous GroupKeySetID:" +
328
+ "\n" +
329
+ " 3. Set the Status set to DeletePending." +
330
+ "\n" +
331
+ " 4. Remove this KeySet from the Node." +
332
+ "\n" +
333
+ " 1. If successful, Remove this entry from the NodeKeySetList." +
334
+ "\n" +
335
+ " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh." +
336
+ "\n" +
337
+ " 2. If the GroupCAT, GroupCATVersion or GroupPermission changed:" +
338
+ "\n" +
339
+ " 1. If the ACLList contains an entry for this Group, update the ACL List Entry in the Datastore " +
340
+ "with the new values and Status Pending, update the ACL attribute on the given Node with the new " +
341
+ " values. If the update succeeds, set the Status to Committed on the ACLList Entry in the " +
342
+ "Datastore." +
343
+ "\n" +
344
+ " 3. If the FriendlyName changed:" +
345
+ "\n" +
346
+ " 1. Iterate through each DatastoreEndpointGroupIDEntryStruct in the EndpointGroupIDList attribute:" +
347
+ "\n" +
348
+ " 1. If the DatastoreEndpointGroupIDEntryStruct contains an entry with the given GroupID:" +
349
+ "\n" +
350
+ " 1. Update the DatastoreEndpointGroupIDEntryStruct Entry in the Datastore with the new values and " +
351
+ "Status Pending" +
352
+ "\n" +
353
+ " 2. Update the Groups on the given Node with the new values." +
354
+ "\n" +
355
+ " 1. If the update succeeds, set the Status to Committed on the GroupIDList Entry in the Datastore." +
356
+ "\n" +
357
+ " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh."
358
+ }
359
+ ]
309
360
  },
310
361
 
311
362
  {
312
363
  tag: "command", name: "RemoveGroup", xref: "core§11.24.7.6",
313
-
314
- details: "This command shall be used to remove a group from the Joint Fabric Datastore Cluster of the " +
315
- "accessing fabric." +
316
- "\n" +
317
- "GroupID represents the unique identifier for the group to be removed from the Joint Fabric Datastore " +
318
- "Cluster." +
319
- "\n" +
320
- "Attempts to remove a group with GroupCAT value set to Administrator CAT or Anchor CAT shall fail " +
321
- "with CONSTRAINT_ERROR." +
322
- "\n" +
323
- "Upon receipt of this command, the Datastore shall:" +
324
- "\n" +
325
- " 1. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
326
- "\n" +
327
- " 2. Ensure there are no Nodes in this group. To do this:" +
328
- "\n" +
329
- " 1. Iterate through each Node Information Entry:" +
330
- "\n" +
331
- " 1. If the GroupIDList contains an entry with the given GroupID, and the entry does NOT have Status " +
332
- "DeletePending, then this command shall fail with a CONSTRAINT_ERROR status code." +
333
- "\n" +
334
- " 3. Remove the DatastoreGroupInformationEntryStruct for the Group with the given GroupID from the " +
335
- "GroupList attribute."
364
+ details: "Upon receipt, this shall remove a group from the Joint Fabric Datastore Cluster of the accessing " +
365
+ "fabric.",
366
+
367
+ children: [{
368
+ tag: "field", name: "GroupId", xref: "core§11.24.7.6.1",
369
+
370
+ details: "This field shall indicate the unique identifier for the group to be removed from the Joint Fabric " +
371
+ "Datastore Cluster." +
372
+ "\n" +
373
+ "Attempts to remove a group with GroupCAT value set to Administrator CAT or Anchor CAT shall fail " +
374
+ "with CONSTRAINT_ERROR." +
375
+ "\n" +
376
+ "The Datastore shall:" +
377
+ "\n" +
378
+ " 1. If entry is not found, then this command shall fail with a NOT_FOUND status code." +
379
+ "\n" +
380
+ " 2. Ensure there are no Nodes in this group. To do this:" +
381
+ "\n" +
382
+ " 1. Iterate through each DatastoreNodeInformationEntryStruct:" +
383
+ "\n" +
384
+ " 1. If the GroupIDList contains an entry with the given GroupID, and the entry does NOT have Status " +
385
+ "DeletePending, then this command shall fail with a CONSTRAINT_ERROR status code." +
386
+ "\n" +
387
+ " 3. Remove the DatastoreGroupInformationEntryStruct for the Group with the given GroupID from the " +
388
+ "GroupList attribute."
389
+ }]
336
390
  },
337
391
 
338
392
  {
339
393
  tag: "command", name: "AddAdmin", xref: "core§11.24.7.7",
340
- details: "This command shall be used to add an admin to the Joint Fabric Datastore Cluster of the accessing " +
341
- "fabric." +
342
- "\n" +
343
- "NodeID, FriendlyName, VendorID and ICAC represent the admin to be added to the Joint Fabric " +
344
- "Datastore Cluster."
394
+ details: "Upon receipt, this shall add an admin to the Joint Fabric Datastore Cluster of the accessing fabric.",
395
+
396
+ children: [
397
+ {
398
+ tag: "field", name: "NodeId", xref: "core§11.24.7.7.1",
399
+ details: "This field shall indicate the unique identifier for the admin node."
400
+ },
401
+ {
402
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.7.2",
403
+ details: "This field shall indicate the friendly name for the admin node."
404
+ },
405
+ {
406
+ tag: "field", name: "VendorId", xref: "core§11.24.7.7.3",
407
+ details: "This field shall indicate the Vendor ID for the admin node."
408
+ },
409
+
410
+ {
411
+ tag: "field", name: "Icac", xref: "core§11.24.7.7.4",
412
+
413
+ details: "This field shall indicate the ICAC used to issue the NOC." +
414
+ "\n" +
415
+ "The Datastore shall:" +
416
+ "\n" +
417
+ " 1. Ensure there are no Admins in the AdminList attribute with the given NodeID. If a match is " +
418
+ "found, then this command shall fail with a CONSTRAINT_ERROR status code." +
419
+ "\n" +
420
+ " 2. Add the DatastoreAdministratorInformationEntryStruct for the Admin with the given NodeID to the " +
421
+ "AdminList attribute."
422
+ }
423
+ ]
345
424
  },
346
425
 
347
426
  {
348
427
  tag: "command", name: "UpdateAdmin", xref: "core§11.24.7.8",
428
+ details: "Upon receipt, this shall update an admin entry in the AdminList attribute.",
349
429
 
350
- details: "This command shall be used to update an admin in the Joint Fabric Datastore Cluster of the accessing " +
351
- "fabric." +
352
- "\n" +
353
- "NodeID represents the admin to be updated in the Joint Fabric Datastore Cluster. NULL values for the " +
354
- "additional parameters will be ignored (not updated)." +
355
- "\n" +
356
- "If entry is not found, then this command shall fail with a NOT_FOUND status code."
430
+ children: [
431
+ {
432
+ tag: "field", name: "NodeId", xref: "core§11.24.7.8.1",
433
+ details: "This field shall indicate the admin to be updated in the Joint Fabric Datastore Cluster."
434
+ },
435
+ {
436
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.8.2",
437
+ details: "This field shall indicate the friendly name for the admin node."
438
+ },
439
+
440
+ {
441
+ tag: "field", name: "Icac", xref: "core§11.24.7.8.3",
442
+
443
+ details: "This field shall indicate the ICAC used to issue the NOC." +
444
+ "\n" +
445
+ "The Datastore shall:" +
446
+ "\n" +
447
+ " 1. Find the entry in the AdminList attribute with the given NodeID, and update any changed fields." +
448
+ "\n" +
449
+ " 2. If entry is not found, then this command shall fail with a NOT_FOUND status code."
450
+ }
451
+ ]
357
452
  },
358
453
 
359
454
  {
360
455
  tag: "command", name: "RemoveAdmin", xref: "core§11.24.7.9",
361
-
362
- details: "This command shall be used to remove an admin from the Joint Fabric Datastore Cluster of the " +
363
- "accessing fabric." +
364
- "\n" +
365
- "NodeID represents the unique identifier for the admin to be removed from the Joint Fabric Datastore " +
366
- "Cluster." +
367
- "\n" +
368
- "If entry is not found, then this command shall fail with a NOT_FOUND status code."
456
+ details: "Upon receipt, this shall remove an admin from the Joint Fabric Datastore Cluster of the accessing " +
457
+ "fabric.",
458
+
459
+ children: [{
460
+ tag: "field", name: "NodeId", xref: "core§11.24.7.9.1",
461
+
462
+ details: "This field shall indicate the unique identifier for the admin to be removed from the Joint Fabric " +
463
+ "Datastore Cluster." +
464
+ "\n" +
465
+ "The Datastore shall:" +
466
+ "\n" +
467
+ " 1. If an entry in the AdminList attribute with the given NodeID is not found, then this command " +
468
+ "shall fail with a NOT_FOUND status code." +
469
+ "\n" +
470
+ " 2. Remove the DatastoreAdministratorInformationEntryStruct for the Admin with the given NodeID " +
471
+ "from the AdminList attribute."
472
+ }]
369
473
  },
370
474
 
371
475
  {
372
476
  tag: "command", name: "AddPendingNode", xref: "core§11.24.7.10",
477
+ details: "Upon receipt, this shall add a node to the Joint Fabric Datastore Cluster of the accessing fabric.",
373
478
 
374
- details: "The command shall be used to add a node to the Joint Fabric Datastore Cluster of the accessing " +
375
- "fabric." +
376
- "\n" +
377
- "NodeID represents the node to be added to the Joint Fabric Datastore Cluster." +
378
- "\n" +
379
- "Upon receipt of this command, the Datastore shall:" +
380
- "\n" +
381
- " 1. Update CommissioningStatusEntry of the Node Information Entry with the given NodeID to Pending." +
382
- "\n" +
383
- "If a Node Information Entry exists for the given NodeID, then this command shall fail with a " +
384
- "INVALID_CONSTRAINT status code."
479
+ children: [
480
+ {
481
+ tag: "field", name: "NodeId", xref: "core§11.24.7.10.1",
482
+ details: "This field shall indicate the node to be added to the Joint Fabric Datastore Cluster."
483
+ },
484
+
485
+ {
486
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.10.2",
487
+
488
+ details: "This field shall indicate the friendly name for the node." +
489
+ "\n" +
490
+ "If a DatastoreNodeInformationEntryStruct exists for the given NodeID, then this command shall fail " +
491
+ "with a INVALID_CONSTRAINT status code." +
492
+ "\n" +
493
+ "The Datastore shall:" +
494
+ "\n" +
495
+ " 1. Add an entry for the given NodeID to the NodeList attribute and set the status for the " +
496
+ "DatastoreNodeInformationEntryStruct to Pending."
497
+ }
498
+ ]
385
499
  },
386
500
 
387
501
  {
388
502
  tag: "command", name: "RefreshNode", xref: "core§11.24.7.11",
389
-
390
- details: "The command shall be used to request that Datastore information relating to a Node of the accessing " +
391
- "fabric is refreshed." +
392
- "\n" +
393
- "Upon receipt of this command, the Datastore shall:" +
394
- "\n" +
395
- " 1. Confirm that a Node Information Entry exists for the given NodeID, and if not, then this " +
396
- "command shall fail with a NOT_FOUND status code." +
397
- "\n" +
398
- " 2. Update the CommissioningStatusEntry for the Node Information Entry to Pending." +
399
- "\n" +
400
- " 3. Ensure the Endpoint List for the Node Information Entry with the given NodeID matches Endpoint " +
401
- "list on the given Node. This involves the following steps:" +
402
- "\n" +
403
- " 1. Read the PartsList of the Descriptor cluster from the Node." +
404
- "\n" +
405
- " 2. For each Endpoint Information Entry in the Endpoint List of the Node Information Entry that " +
406
- "does not match an Endpoint ID in the PartsList, remove the Endpoint Information Entry." +
407
- "\n" +
408
- " 3. For each Endpoint Information Entry in the Endpoint List of the Node Information Entry that " +
409
- "matches an Endpoint ID in the PartsList:" +
410
- "\n" +
411
- " 1. Check that each entry in Node's Group List occurs in the GroupIDList of the Endpoint " +
412
- "Information Entry." +
413
- "\n" +
414
- " 1. Add any missing entries to the GroupIDList of the Endpoint Information Entry." +
415
- "\n" +
416
- " 2. For any entries in the GroupIDList with Status of Pending:" +
417
- "\n" +
418
- " 1. Add the corresponding change to the Node's Group List." +
419
- "\n" +
420
- " 1. If successful, mark the Status to Committed." +
421
- "\n" +
422
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
423
- "The error shall be handled in a subsequent Node Refresh." +
424
- "\n" +
425
- " 3. For any entries in the GroupIDList with Status of DeletePending:" +
426
- "\n" +
427
- " 1. If successful, remove the corresponding entry from the Node's Group List." +
428
- "\n" +
429
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
430
- "The error shall be handled in a subsequent Node Refresh." +
431
- "\n" +
432
- " 4. For any entries in the GroupIDList with Status of CommitFailure:" +
433
- "\n" +
434
- " 1. A CommitFailure with an unrecoverable FailureCode shall be handled by removing the entry from " +
435
- "the GroupIDList." +
436
- "\n" +
437
- " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
438
- "subsequent Node Refresh." +
439
- "\n" +
440
- " 2. Check that each entry in Node's Binding List occurs in the BindingList of the Endpoint " +
441
- "Information Entry." +
442
- "\n" +
443
- " 1. Add any missing entries to the BindingList of the Endpoint Information Entry." +
444
- "\n" +
445
- " 2. For any entries in the BindingList with Status of Pending:" +
446
- "\n" +
447
- " 1. Add the corresponding change to the Node's Binding List." +
448
- "\n" +
449
- " 1. If successful, mark the Status to Committed." +
450
- "\n" +
451
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
452
- "The error shall be handled in a subsequent Node Refresh." +
453
- "\n" +
454
- " 3. For any entries in the BindingList with Status of DeletePending:" +
455
- "\n" +
456
- " 1. If successful, remove the corresponding entry from the Node's BindingList." +
457
- "\n" +
458
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
459
- "The error shall be handled in a subsequent Node Refresh." +
460
- "\n" +
461
- " 4. For any entries in the BindingList with Status of CommitFailure:" +
462
- "\n" +
463
- " 1. A CommitFailure with an unrecoverable FailureCode shall be handled by removing the entry from " +
464
- "the BindingList." +
465
- "\n" +
466
- " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
467
- "subsequent Node Refresh." +
468
- "\n" +
469
- " 4. Ensure the GroupKeySetList for the Node Information Entry with the given NodeID matches the " +
470
- "Group Keys on the given Node. This involves the following steps:" +
471
- "\n" +
472
- " 1. Read the Group Keys from the Node." +
473
- "\n" +
474
- " 2. For each GroupKeySetEntry in the GroupKeySetList of the Node Information Entry with a Pending " +
475
- "Status:" +
476
- "\n" +
477
- " 1. Add the corresponding DatastoreGroupKeySetStruct to the Node's Group Key list." +
478
- "\n" +
479
- " 1. If successful, mark the Status to Committed." +
480
- "\n" +
481
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
482
- "The error shall be handled in a subsequent Node Refresh." +
483
- "\n" +
484
- " 3. For each GroupKeySetEntry in the GroupKeySetList of the Node Information Entry with a " +
485
- "CommitFailure Status:" +
486
- "\n" +
487
- " 1. A CommitFailure with an unrecoverable FailureCode shall be handled by removing the entry from " +
488
- "the GroupKeySetList." +
489
- "\n" +
490
- " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
491
- "subsequent Node Refresh." +
492
- "\n" +
493
- " 4. All remaining entries in the GroupKeySetList should be replaced by the remaining entries on the " +
494
- "Node." +
495
- "\n" +
496
- " 5. Ensure the ACLList for the Node Information Entry with the given NodeID matches the ACL " +
497
- "attribute on the given Node. This involves the following steps:" +
498
- "\n" +
499
- " 1. Read the ACL attribute on the Node." +
500
- "\n" +
501
- " 2. For each DatastoreACLEntryStruct in the ACLList of the Node Information Entry with a Pending " +
502
- "Status:" +
503
- "\n" +
504
- " 1. Add the corresponding DatastoreACLEntryStruct to the Node's ACL attribute." +
505
- "\n" +
506
- " 1. If successful, mark the Status to Committed." +
507
- "\n" +
508
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
509
- "The error shall be handled in a subsequent Node Refresh." +
510
- "\n" +
511
- " 3. For each DatastoreACLEntryStruct in the ACLList of the Node Information Entry with a " +
512
- "CommitFailure Status:" +
513
- "\n" +
514
- " 1. A CommitFailure with an unrecoverable FailureCode (i.e. RESOURCE_EXHAUSTED, CONSTRAINT_ERROR) " +
515
- "shall be handled by removing the entry from the ACLList." +
516
- "\n" +
517
- " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
518
- "subsequent Node Refresh." +
519
- "\n" +
520
- " 4. All remaining entries in the ACLList should be replaced by the remaining entries on the Node." +
521
- "\n" +
522
- " 6. Update the CommissioningStatusEntry for the Node Information Entry to Committed."
503
+ details: "Upon receipt, this shall request that Datastore information relating to a Node of the accessing " +
504
+ "fabric is refreshed.",
505
+
506
+ children: [{
507
+ tag: "field", name: "NodeId", xref: "core§11.24.7.11.1",
508
+
509
+ details: "This field shall indicate the node for which Datastore information should be refreshed." +
510
+ "\n" +
511
+ "The Datastore shall:" +
512
+ "\n" +
513
+ " 1. Confirm that a DatastoreNodeInformationEntryStruct exists in the NodeList attribute for the " +
514
+ "given NodeID, and if not, then this command shall fail with a NOT_FOUND status code." +
515
+ "\n" +
516
+ " 2. Update the CommissioningStatusEntry for the DatastoreNodeInformationEntryStruct to Pending." +
517
+ "\n" +
518
+ " 3. Ensure the Endpoint List for the DatastoreNodeInformationEntryStruct with the given NodeID " +
519
+ "matches Endpoint list on the given Node. This involves the following steps:" +
520
+ "\n" +
521
+ " 1. Read the PartsList of the Descriptor cluster from the Node." +
522
+ "\n" +
523
+ " 2. For each DatastoreEndpointEntryStruct in the NodeEndpointList attribute with the given NodeID " +
524
+ "that does not match an Endpoint ID in the PartsList, remove the DatastoreEndpointEntryStruct." +
525
+ "\n" +
526
+ " 3. For each DatastoreEndpointEntryStruct in the NodeEndpointList attribute with the given NodeID " +
527
+ "that matches an Endpoint ID in the PartsList:" +
528
+ "\n" +
529
+ " 1. Check that each entry in Node's Group List occurs in the EndpointGroupIDList attribute." +
530
+ "\n" +
531
+ " 1. Add any missing entries to the EndpointGroupIDList." +
532
+ "\n" +
533
+ " 2. For any entries in the EndpointGroupIDList attribute with the given NodeId and EndpointId with " +
534
+ "Status of Pending:" +
535
+ "\n" +
536
+ " 1. Add the corresponding change to the Node's Group List." +
537
+ "\n" +
538
+ " 1. If successful, mark the Status to Committed." +
539
+ "\n" +
540
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
541
+ "The error shall be handled in a subsequent Node Refresh." +
542
+ "\n" +
543
+ " 3. For any entries in the EndpointGroupIDList attribute with the given NodeID and EndpointID with " +
544
+ "Status of DeletePending:" +
545
+ "\n" +
546
+ " 1. If successful, remove the corresponding entry from the Node's Group List." +
547
+ "\n" +
548
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
549
+ "The error shall be handled in a subsequent Node Refresh." +
550
+ "\n" +
551
+ " 4. For any entries in the EndpointGroupIDList attribute with the given NodeID and EndpointID with " +
552
+ "Status of CommitFailure:" +
553
+ "\n" +
554
+ " 1. A CommitFailure with an unrecoverable FailureCode shall be handled by removing the entry from " +
555
+ "the GroupIDList." +
556
+ "\n" +
557
+ " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
558
+ "subsequent Node Refresh." +
559
+ "\n" +
560
+ " 2. Check that each entry in Node's Binding List occurs in the EndpointBindingList attribute with " +
561
+ "the given NodeId and EndpointId." +
562
+ "\n" +
563
+ " 1. Add any missing entries to the EndpointBindingList attribute." +
564
+ "\n" +
565
+ " 2. For any entries in the EndpointBindingList attribute with the given NodeID and EndpointID with " +
566
+ "Status of Pending:" +
567
+ "\n" +
568
+ " 1. Add the corresponding change to the Node's Binding List." +
569
+ "\n" +
570
+ " 1. If successful, mark the Status to Committed." +
571
+ "\n" +
572
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
573
+ "The error shall be handled in a subsequent Node Refresh." +
574
+ "\n" +
575
+ " 3. For any entries in the EndpointBindingList attribute with the given NodeID and EndpointID with " +
576
+ "Status of DeletePending:" +
577
+ "\n" +
578
+ " 1. If successful, remove the corresponding entry from the Node's BindingList." +
579
+ "\n" +
580
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
581
+ "The error shall be handled in a subsequent Node Refresh." +
582
+ "\n" +
583
+ " 4. For any entries in the EndpointBindingList attribute with the given NodeID and EndpointID with " +
584
+ "Status of CommitFailure:" +
585
+ "\n" +
586
+ " 1. A CommitFailure with an unrecoverable FailureCode shall be handled by removing the entry from " +
587
+ "the BindingList." +
588
+ "\n" +
589
+ " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
590
+ "subsequent Node Refresh." +
591
+ "\n" +
592
+ " 4. Ensure the GroupKeySetList entries with the given NodeID match the Group Keys on the given " +
593
+ " Node. This involves the following steps:" +
594
+ "\n" +
595
+ " 1. Read the Group Keys from the Node." +
596
+ "\n" +
597
+ " 2. For each DatastoreGroupKeySetStruct in the GroupKeySetList attribute for the given NodeID with " +
598
+ "a Pending Status:" +
599
+ "\n" +
600
+ " 1. Add the corresponding DatastoreGroupKeySetStruct to the Node's Group Key list." +
601
+ "\n" +
602
+ " 1. If successful, mark the Status to Committed." +
603
+ "\n" +
604
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
605
+ "The error shall be handled in a subsequent Node Refresh." +
606
+ "\n" +
607
+ " 3. For each DatastoreGroupKeySetStruct in the GroupKeySetList attribute for the given NodeID with " +
608
+ "a CommitFailure Status:" +
609
+ "\n" +
610
+ " 1. A CommitFailure with an unrecoverable FailureCode shall be handled by removing the entry from " +
611
+ "the GroupKeySetList." +
612
+ "\n" +
613
+ " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
614
+ "subsequent Node Refresh." +
615
+ "\n" +
616
+ " 4. All remaining entries in the GroupKeySetList attribute for the given NodeId should be replaced " +
617
+ "by the remaining entries on the Node." +
618
+ "\n" +
619
+ " 5. Ensure the NodeACLList attribute for the given NodeID matches the ACL attribute on the given " +
620
+ " Node. This involves the following steps:" +
621
+ "\n" +
622
+ " 1. Read the ACL attribute on the Node." +
623
+ "\n" +
624
+ " 2. For each DatastoreACLEntryStruct in the ACLList attribute with the given NodeID with a Pending " +
625
+ "Status:" +
626
+ "\n" +
627
+ " 1. Add the corresponding DatastoreACLEntryStruct to the Node's ACL attribute." +
628
+ "\n" +
629
+ " 1. If successful, mark the Status to Committed." +
630
+ "\n" +
631
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
632
+ "The error shall be handled in a subsequent Node Refresh." +
633
+ "\n" +
634
+ " 3. For each DatastoreACLEntryStruct in the ACLList attribute with the given NodeID with a " +
635
+ "CommitFailure Status:" +
636
+ "\n" +
637
+ " 1. A CommitFailure with an unrecoverable FailureCode (i.e. RESOURCE_EXHAUSTED, CONSTRAINT_ERROR) " +
638
+ "shall be handled by removing the entry from the ACLList." +
639
+ "\n" +
640
+ " 2. A CommitFailure with a recoverable FailureCode (i.e. TIMEOUT, BUSY) shall be handle in a " +
641
+ "subsequent Node Refresh." +
642
+ "\n" +
643
+ " 4. All remaining entries in the ACLList should be replaced by the remaining entries on the Node." +
644
+ "\n" +
645
+ " 6. Update the CommissioningStatusEntry for the DatastoreNodeInformationEntryStruct to Committed."
646
+ }]
523
647
  },
524
648
 
525
649
  {
526
650
  tag: "command", name: "UpdateNode", xref: "core§11.24.7.12",
651
+ details: "Upon receipt, this shall update the friendly name for a node in the Joint Fabric Datastore Cluster " +
652
+ "of the accessing fabric.",
527
653
 
528
- details: "The command shall be used to update the friendly name for a node in the Joint Fabric Datastore " +
529
- "Cluster of the accessing fabric." +
530
- "\n" +
531
- "NodeID represents the node to be updated in the Joint Fabric Datastore Cluster." +
532
- "\n" +
533
- "If a Node Information Entry does not exist for the given NodeID, then this command shall fail with a " +
534
- "NOT_FOUND status code."
654
+ children: [
655
+ {
656
+ tag: "field", name: "NodeId", xref: "core§11.24.7.12.1",
657
+ details: "This field shall indicate the node to be updated in the Joint Fabric Datastore Cluster."
658
+ },
659
+
660
+ {
661
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.12.2",
662
+
663
+ details: "This field shall indicate the friendly name for the node." +
664
+ "\n" +
665
+ "The Datastore shall:" +
666
+ "\n" +
667
+ " 1. If a DatastoreNodeInformationEntryStruct does not exist for the given NodeID in the NodeList " +
668
+ "attribute, then this command shall fail with a NOT_FOUND status code." +
669
+ "\n" +
670
+ " 2. Update the FriendlyName field of the DatastoreNodeInformationEntryStruct with the given NodeID."
671
+ }
672
+ ]
535
673
  },
536
674
 
537
675
  {
538
676
  tag: "command", name: "RemoveNode", xref: "core§11.24.7.13",
539
-
540
- details: "This command shall be used to remove a node from the Joint Fabric Datastore Cluster of the accessing " +
541
- "fabric." +
542
- "\n" +
543
- "NodeID represents the unique identifier for the node to be removed from the Joint Fabric Datastore " +
544
- "Cluster." +
545
- "\n" +
546
- "If a Node Information Entry does not exist for the given NodeID, then this command shall fail with a " +
547
- "NOT_FOUND status code."
677
+ details: "Upon receipt, this shall remove a node from the Joint Fabric Datastore Cluster of the accessing " +
678
+ "fabric.",
679
+
680
+ children: [{
681
+ tag: "field", name: "NodeId", xref: "core§11.24.7.13.1",
682
+
683
+ details: "This field shall indicate the unique identifier for the node to be removed from the Joint Fabric " +
684
+ "Datastore Cluster." +
685
+ "\n" +
686
+ "The Datastore shall:" +
687
+ "\n" +
688
+ " 1. If a DatastoreNodeInformationEntryStruct does not exist for the given NodeID in the NodeList " +
689
+ "attribute, then this command shall fail with a NOT_FOUND status code." +
690
+ "\n" +
691
+ " 2. Remove the DatastoreNodeInformationEntryStruct with the given NodeID from the NodeList " +
692
+ "attribute."
693
+ }]
548
694
  },
549
695
 
550
696
  {
551
697
  tag: "command", name: "UpdateEndpointForNode", xref: "core§11.24.7.14",
698
+ details: "Upon receipt, this shall update the state of an endpoint for a node in the Joint Fabric Datastore " +
699
+ "Cluster of the accessing fabric.",
552
700
 
553
- details: "This command shall be used to update the state of an endpoint for a node in the Joint Fabric " +
554
- "Datastore Cluster of the accessing fabric." +
555
- "\n" +
556
- "EndpointID represents the unique identifier for the endpoint to be updated in the Joint Fabric " +
557
- "Datastore Cluster." +
558
- "\n" +
559
- "NodeID represents the unique identifier for the node to which the endpoint belongs." +
560
- "\n" +
561
- "If an Endpoint Information Entry does not exist for the given NodeID and EndpointID, then this " +
562
- "command shall fail with a NOT_FOUND status code."
701
+ children: [
702
+ {
703
+ tag: "field", name: "EndpointId", xref: "core§11.24.7.14.1",
704
+ details: "This field shall indicate the unique identifier for the endpoint to be updated in the Joint Fabric " +
705
+ "Datastore Cluster."
706
+ },
707
+ {
708
+ tag: "field", name: "NodeId", xref: "core§11.24.7.14.2",
709
+ details: "This field shall indicate the unique identifier for the node to which the endpoint belongs."
710
+ },
711
+
712
+ {
713
+ tag: "field", name: "FriendlyName", xref: "core§11.24.7.14.3",
714
+
715
+ details: "This field shall indicate the friendly name for the endpoint." +
716
+ "\n" +
717
+ "The Datastore shall:" +
718
+ "\n" +
719
+ " 1. If an DatastoreNodeInformationEntryStruct does not exist for the given NodeID and EndpointID in " +
720
+ "the NodeEndpointList attribute, then this command shall fail with a NOT_FOUND status code." +
721
+ "\n" +
722
+ " 2. Update the FriendlyName field of the DatastoreNodeInformationEntryStruct with the given NodeID " +
723
+ "and EndpointID."
724
+ }
725
+ ]
563
726
  },
564
727
 
565
728
  {
566
729
  tag: "command", name: "AddGroupIdToEndpointForNode", xref: "core§11.24.7.15",
730
+ details: "Upon receipt, this shall add a Group ID to an endpoint for a node in the Joint Fabric Datastore " +
731
+ "Cluster of the accessing fabric.",
567
732
 
568
- details: "This command shall be used to add a Group ID to an endpoint for a node in the Joint Fabric Datastore " +
569
- "Cluster of the accessing fabric." +
570
- "\n" +
571
- "GroupID represents the unique identifier for the group to be added to the endpoint." +
572
- "\n" +
573
- "EndpointID represents the unique identifier for the endpoint to be updated in the Joint Fabric " +
574
- "Datastore Cluster." +
575
- "\n" +
576
- "NodeID represents the unique identifier for the node to which the endpoint belongs." +
577
- "\n" +
578
- "Upon receipt of this command, the Datastore shall:" +
579
- "\n" +
580
- " 1. Confirm that an Endpoint Information Entry exists for the given NodeID and EndpointID, and if " +
581
- "not, then this command shall fail with a NOT_FOUND status code." +
582
- "\n" +
583
- " 2. Ensure the Group Key List for the Node Information Entry with the given NodeID includes the " +
584
- "KeySet for the given Group ID. If it does not:" +
585
- "\n" +
586
- " 1. Add an entry for the KeySet of the given Group ID to the Group Key List for the Node. The new " +
587
- "entry's status shall be set to Pending." +
588
- "\n" +
589
- " 2. Add a Group Key Entry for this KeySet to the given Node ID." +
590
- "\n" +
591
- " 1. If this succeeds, update the new KeySet entry in the Datastore to Committed." +
592
- "\n" +
593
- " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh." +
594
- "\n" +
595
- " 3. Ensure the Group List for the Endpoint Information Entry with the given NodeID and EndpointID " +
596
- "includes an entry for the given Group. If it does not:" +
597
- "\n" +
598
- " 1. Add a Group entry for the given Group ID to the Group List for the Endpoint and Node. The new " +
599
- "entry's status shall be set to Pending." +
600
- "\n" +
601
- " 2. Add this Group entry to the given Endpoint ID on the given Node ID." +
602
- "\n" +
603
- " 1. If this succeeds, update the new Group entry in the Datastore to Committed." +
604
- "\n" +
605
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
606
- "The error shall be handled in a subsequent Node Refresh."
733
+ children: [
734
+ {
735
+ tag: "field", name: "NodeId", xref: "core§11.24.7.15.1",
736
+ details: "This field shall indicate the unique identifier for the node to which the endpoint belongs."
737
+ },
738
+ {
739
+ tag: "field", name: "EndpointId", xref: "core§11.24.7.15.2",
740
+ details: "This field shall indicate the unique identifier for the endpoint to be updated in the Joint Fabric " +
741
+ "Datastore Cluster."
742
+ },
743
+
744
+ {
745
+ tag: "field", name: "GroupId", xref: "core§11.24.7.15.3",
746
+
747
+ details: "This field shall indicate the unique identifier for the group to be added to the endpoint." +
748
+ "\n" +
749
+ "The Datastore shall:" +
750
+ "\n" +
751
+ " 1. Confirm that an DatastoreNodeInformationEntryStruct exists for the given NodeID and EndpointID " +
752
+ "in the NodeEndpointList attribute, and if not, then this command shall fail with a NOT_FOUND " +
753
+ "status code." +
754
+ "\n" +
755
+ " 2. Ensure the Group Key List for the DatastoreNodeInformationEntryStruct with the given NodeID " +
756
+ "includes the KeySet for the given Group ID. If it does not:" +
757
+ "\n" +
758
+ " 1. Add an entry for the KeySet of the given Group ID to the Group Key List for the Node. The new " +
759
+ "entry's status shall be set to Pending." +
760
+ "\n" +
761
+ " 2. Add a Group Key Entry for this KeySet to the given Node ID." +
762
+ "\n" +
763
+ " 1. If this succeeds, update the new KeySet entry in the Datastore to Committed." +
764
+ "\n" +
765
+ " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh." +
766
+ "\n" +
767
+ " 3. Ensure the Group List for the DatastoreNodeInformationEntryStruct with the given NodeID and " +
768
+ "EndpointID includes an entry for the given Group. If it does not:" +
769
+ "\n" +
770
+ " 1. Add a Group entry for the given Group ID to the Group List for the Endpoint and Node. The new " +
771
+ "entry's status shall be set to Pending." +
772
+ "\n" +
773
+ " 2. Add this Group entry to the given Endpoint ID on the given Node ID." +
774
+ "\n" +
775
+ " 1. If this succeeds, update the new Group entry in the Datastore to Committed." +
776
+ "\n" +
777
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
778
+ "The error shall be handled in a subsequent Node Refresh."
779
+ }
780
+ ]
607
781
  },
608
782
 
609
783
  {
610
784
  tag: "command", name: "RemoveGroupIdFromEndpointForNode", xref: "core§11.24.7.16",
785
+ details: "Upon receipt, this shall remove a Group ID from an endpoint for a node in the Joint Fabric Datastore " +
786
+ "Cluster of the accessing fabric.",
611
787
 
612
- details: "This command shall be used to remove a Group ID from an endpoint for a node in the Joint Fabric " +
613
- "Datastore Cluster of the accessing fabric." +
614
- "\n" +
615
- "GroupID represents the unique identifier for the group to be removed from the endpoint." +
616
- "\n" +
617
- "EndpointID represents the unique identifier for the endpoint to be updated in the Joint Fabric " +
618
- "Datastore Cluster." +
619
- "\n" +
620
- "NodeID represents the unique identifier for the node to which the endpoint belongs." +
621
- "\n" +
622
- "Upon receipt of this command, the Datastore shall:" +
623
- "\n" +
624
- " 1. Confirm that an Endpoint Information Entry exists for the given NodeID and EndpointID, and if " +
625
- "not, then this command shall fail with a NOT_FOUND status code." +
626
- "\n" +
627
- " 2. Ensure the Group List for the Endpoint Information Entry with the given NodeID and EndpointID " +
628
- "does not include an entry for the given Group. If it does:" +
629
- "\n" +
630
- " 1. Update the status to DeletePending of the Group entry for the given Group ID in the Group List." +
631
- "\n" +
632
- " 2. Remove this Group entry for the given Endpoint ID on the given Node ID." +
633
- "\n" +
634
- " 1. If this succeeds, remove the Group entry for the given Group ID in the Group List for this " +
635
- "NodeID and EndpointID in the Datastore." +
636
- "\n" +
637
- " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh." +
638
- "\n" +
639
- " 3. Ensure the Group Key List for the Node Information Entry with the given NodeID does not include " +
640
- "the KeySet for the given Group ID. If it does:" +
641
- "\n" +
642
- " 1. Update the status to DeletePending for the entry for the KeySet of the given Group ID in the " +
643
- "Node Group Key List." +
644
- "\n" +
645
- " 2. Remove the Group Key Entry for this KeySet from the given Node ID." +
646
- "\n" +
647
- " 1. If this succeeds, remove the KeySet entry for the given Node ID." +
648
- "\n" +
649
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
650
- "The error shall be handled in a subsequent Node Refresh."
788
+ children: [
789
+ {
790
+ tag: "field", name: "NodeId", xref: "core§11.24.7.16.1",
791
+ details: "This field shall indicate the unique identifier for the node to which the endpoint belongs."
792
+ },
793
+ {
794
+ tag: "field", name: "EndpointId", xref: "core§11.24.7.16.2",
795
+ details: "This field shall indicate the unique identifier for the endpoint to be updated in the Joint Fabric " +
796
+ "Datastore Cluster."
797
+ },
798
+
799
+ {
800
+ tag: "field", name: "GroupId", xref: "core§11.24.7.16.3",
801
+
802
+ details: "This field shall indicate the unique identifier for the group to be removed from the endpoint." +
803
+ "\n" +
804
+ "The Datastore shall:" +
805
+ "\n" +
806
+ " 1. Confirm that an DatastoreNodeInformationEntryStruct exists for the given NodeID and EndpointID " +
807
+ "in the NodeEndpointList attribute, and if not, then this command shall fail with a NOT_FOUND " +
808
+ "status code." +
809
+ "\n" +
810
+ " 2. Ensure the EndpointGroupIDList entries with the given NodeID and EndpointID does not include an " +
811
+ "entry for the given Group. If it does:" +
812
+ "\n" +
813
+ " 1. Update the status to DeletePending of the Group entry for the given Group ID in the Group List." +
814
+ "\n" +
815
+ " 2. Remove this Group entry for the given Endpoint ID on the given Node ID." +
816
+ "\n" +
817
+ " 1. If this succeeds, remove the Group entry for the given Group ID in the Group List for this " +
818
+ "NodeID and EndpointID in the Datastore." +
819
+ "\n" +
820
+ " 2. If not successful, the pending change shall be applied in a subsequent Node Refresh." +
821
+ "\n" +
822
+ " 3. Ensure the Group Key List for the DatastoreNodeInformationEntryStruct with the given NodeID " +
823
+ "does not include the KeySet for the given Group ID. If it does:" +
824
+ "\n" +
825
+ " 1. Update the status to DeletePending for the entry for the KeySet of the given Group ID in the " +
826
+ "Node Group Key List." +
827
+ "\n" +
828
+ " 2. Remove the Group Key Entry for this KeySet from the given Node ID." +
829
+ "\n" +
830
+ " 1. If this succeeds, remove the KeySet entry for the given Node ID." +
831
+ "\n" +
832
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
833
+ "The error shall be handled in a subsequent Node Refresh."
834
+ }
835
+ ]
651
836
  },
652
837
 
653
838
  {
654
839
  tag: "command", name: "AddBindingToEndpointForNode", xref: "core§11.24.7.17",
840
+ details: "Upon receipt, this shall add a binding to an endpoint for a node in the Joint Fabric Datastore " +
841
+ "Cluster of the accessing fabric.",
655
842
 
656
- details: "This command shall be used to add a binding to an endpoint for a node in the Joint Fabric Datastore " +
657
- "Cluster of the accessing fabric." +
658
- "\n" +
659
- "Binding represents the binding to be added to the endpoint." +
660
- "\n" +
661
- "EndpointID represents the unique identifier for the endpoint to be updated in the Joint Fabric " +
662
- "Datastore Cluster." +
663
- "\n" +
664
- "NodeID represents the unique identifier for the node to which the endpoint belongs." +
665
- "\n" +
666
- "Upon receipt of this command, the Datastore shall:" +
667
- "\n" +
668
- " 1. Confirm that an Endpoint Information Entry exists for the given NodeID and EndpointID, and if " +
669
- "not, then this command shall fail with a NOT_FOUND status code." +
670
- "\n" +
671
- " 2. Ensure the Binding List for the Node Information Entry with the given NodeID includes the given " +
672
- " Binding. If it does not:" +
673
- "\n" +
674
- " 1. Add the Binding to the Binding List for the Node Information Entry for the given NodeID. The " +
675
- "new entry's status shall be set to Pending." +
676
- "\n" +
677
- " 2. Add this Binding to the given Node ID." +
678
- "\n" +
679
- " 1. If this succeeds, update the new Binding in the Datastore to Committed." +
680
- "\n" +
681
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
682
- "The error shall be handled in a subsequent Node Refresh."
843
+ children: [
844
+ {
845
+ tag: "field", name: "NodeId", xref: "core§11.24.7.17.1",
846
+ details: "This field shall indicate the unique identifier for the node to which the endpoint belongs."
847
+ },
848
+ {
849
+ tag: "field", name: "EndpointId", xref: "core§11.24.7.17.2",
850
+ details: "This field shall indicate the unique identifier for the endpoint to be updated in the Joint Fabric " +
851
+ "Datastore Cluster."
852
+ },
853
+
854
+ {
855
+ tag: "field", name: "Binding", xref: "core§11.24.7.17.3",
856
+
857
+ details: "This field shall indicate the binding to be added to the endpoint." +
858
+ "\n" +
859
+ "The Datastore shall:" +
860
+ "\n" +
861
+ " 1. Confirm that an DatastoreNodeInformationEntryStruct exists for the given NodeID and EndpointID " +
862
+ "in the NodeEndpointList attribute, and if not, then this command shall fail with a NOT_FOUND " +
863
+ "status code." +
864
+ "\n" +
865
+ " 2. Ensure the Binding List for the DatastoreNodeInformationEntryStruct with the given NodeID " +
866
+ "includes the given Binding. If it does not:" +
867
+ "\n" +
868
+ " 1. Add the DatastoreEndpointBindingEntryStruct entry to the EndpointBindingList attribute for the " +
869
+ "given NodeID and EndpointID. The new entry's status shall be set to Pending." +
870
+ "\n" +
871
+ " 2. Add this Binding to the given Node ID." +
872
+ "\n" +
873
+ " 1. If this succeeds, update the new Binding in the Datastore to Committed." +
874
+ "\n" +
875
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
876
+ "The error shall be handled in a subsequent Node Refresh."
877
+ }
878
+ ]
683
879
  },
684
880
 
685
881
  {
686
882
  tag: "command", name: "RemoveBindingFromEndpointForNode", xref: "core§11.24.7.18",
883
+ details: "Upon receipt, this shall remove a binding from an endpoint for a node in the Joint Fabric Datastore " +
884
+ "Cluster of the accessing fabric.",
687
885
 
688
- details: "This command shall be used to remove a binding from an endpoint for a node in the Joint Fabric " +
689
- "Datastore Cluster of the accessing fabric." +
690
- "\n" +
691
- "ListID represents the unique identifier for the binding entry in the Datastore's EndpointBindingList " +
692
- "attribute to be removed from the endpoint." +
693
- "\n" +
694
- "EndpointID represents the unique identifier for the endpoint to be updated in the Joint Fabric " +
695
- "Datastore Cluster." +
696
- "\n" +
697
- "NodeID represents the unique identifier for the node to which the endpoint belongs." +
698
- "\n" +
699
- "Upon receipt of this command, the Datastore shall:" +
700
- "\n" +
701
- " 1. Confirm that an Endpoint Information Entry exists for the given NodeID and EndpointID, and if " +
702
- "not, then this command shall fail with a NOT_FOUND status code." +
703
- "\n" +
704
- " 2. Ensure the Binding List for the Node Information Entry with the given NodeID does not include " +
705
- "an entry with the given ListID. If it does:" +
706
- "\n" +
707
- " 1. Update the status to DeletePending for the given Binding in the Binding List." +
708
- "\n" +
709
- " 2. Remove this Binding from the given Node ID." +
710
- "\n" +
711
- " 1. If this succeeds, remove the given Binding from the Binding List." +
712
- "\n" +
713
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
714
- "The error shall be handled in a subsequent Node Refresh."
886
+ children: [
887
+ {
888
+ tag: "field", name: "ListId", xref: "core§11.24.7.18.1",
889
+ details: "This field shall indicate the unique identifier for the binding entry in the Datastore's " +
890
+ "EndpointBindingList attribute to be removed from the endpoint."
891
+ },
892
+ {
893
+ tag: "field", name: "EndpointId", xref: "core§11.24.7.18.2",
894
+ details: "This field shall indicate the unique identifier for the endpoint to be updated in the Joint Fabric " +
895
+ "Datastore Cluster."
896
+ },
897
+
898
+ {
899
+ tag: "field", name: "NodeId", xref: "core§11.24.7.18.3",
900
+
901
+ details: "This field shall indicate the unique identifier for the node to which the endpoint belongs." +
902
+ "\n" +
903
+ "The Datastore shall:" +
904
+ "\n" +
905
+ " 1. Confirm that an DatastoreNodeInformationEntryStruct exists for the given NodeID and EndpointID " +
906
+ "in the EndpointBindingList attribute, and if not, then this command shall fail with a NOT_FOUND " +
907
+ "status code." +
908
+ "\n" +
909
+ " 2. Ensure the EndpointBindingList entries with the given NodeID does not include an entry with the " +
910
+ "given ListID. If it does:" +
911
+ "\n" +
912
+ " 1. Update the status to DeletePending for the given Binding in the Binding List." +
913
+ "\n" +
914
+ " 2. Remove this Binding from the given Node ID." +
915
+ "\n" +
916
+ " 1. If this succeeds, remove the given Binding from the Binding List." +
917
+ "\n" +
918
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
919
+ "The error shall be handled in a subsequent Node Refresh."
920
+ }
921
+ ]
715
922
  },
716
923
 
717
924
  {
718
925
  tag: "command", name: "AddAclToNode", xref: "core§11.24.7.19",
926
+ details: "Upon receipt, this shall add an ACL to a node in the Joint Fabric Datastore Cluster of the accessing " +
927
+ "fabric.",
719
928
 
720
- details: "This command shall be used to add an ACL to a node in the Joint Fabric Datastore Cluster of the " +
721
- "accessing fabric." +
722
- "\n" +
723
- "NodeID represents the unique identifier for the node to which the ACL is to be added." +
724
- "\n" +
725
- "ACLEntry represents the ACL to be added to the Joint Fabric Datastore Cluster." +
726
- "\n" +
727
- "Upon receipt of this command, the Datastore shall:" +
728
- "\n" +
729
- " 1. Confirm that a Node Information Entry exists for the given NodeID, and if not, then this " +
730
- "command shall fail with a NOT_FOUND status code." +
731
- "\n" +
732
- " 2. Ensure the ACL List for the given NodeID includes the given ACLEntry. If it does not:" +
733
- "\n" +
734
- " 1. Add the ACLEntry to the ACL List for the given NodeID. The new entry's status shall be set to " +
735
- "Pending." +
736
- "\n" +
737
- " 2. Add this ACLEntry to the given Node ID." +
738
- "\n" +
739
- " 1. If this succeeds, update the new ACLEntry in the Datastore to Committed." +
740
- "\n" +
741
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
742
- "The error shall be handled in a subsequent Node Refresh."
929
+ children: [
930
+ {
931
+ tag: "field", name: "NodeId", xref: "core§11.24.7.19.1",
932
+ details: "This field shall indicate the unique identifier for the node to which the ACL is to be added."
933
+ },
934
+
935
+ {
936
+ tag: "field", name: "AclEntry", xref: "core§11.24.7.19.2",
937
+
938
+ details: "This field shall indicate the ACL to be added to the Joint Fabric Datastore Cluster." +
939
+ "\n" +
940
+ "The Datastore shall:" +
941
+ "\n" +
942
+ " 1. Confirm that a DatastoreNodeInformationEntryStruct exists for the given NodeID in the NodeList " +
943
+ "attribute, and if not, then this command shall fail with a NOT_FOUND status code." +
944
+ "\n" +
945
+ " 2. Ensure the ACL List for the given NodeID includes the given ACLEntry. If it does not:" +
946
+ "\n" +
947
+ " 1. Add the ACLEntry to the ACL List for the given NodeID. The new entry's status shall be set to " +
948
+ "Pending." +
949
+ "\n" +
950
+ " 2. Add this ACLEntry to the given Node ID." +
951
+ "\n" +
952
+ " 1. If this succeeds, update the new ACLEntry in the Datastore to Committed." +
953
+ "\n" +
954
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
955
+ "The error shall be handled in a subsequent Node Refresh."
956
+ }
957
+ ]
743
958
  },
744
959
 
745
960
  {
746
961
  tag: "command", name: "RemoveAclFromNode", xref: "core§11.24.7.20",
962
+ details: "Upon receipt, this shall remove an ACL from a node in the Joint Fabric Datastore Cluster of the " +
963
+ "accessing fabric.",
747
964
 
748
- details: "This command shall be used to remove an ACL from a node in the Joint Fabric Datastore Cluster of the " +
749
- "accessing fabric." +
750
- "\n" +
751
- "ListID represents the unique identifier for the DatastoreACLEntryStruct to be removed from the " +
752
- "Datastore's list of DatastoreACLEntry." +
753
- "\n" +
754
- "NodeID represents the unique identifier for the node from which the ACL is to be removed." +
755
- "\n" +
756
- "Upon receipt of this command, the Datastore shall:" +
757
- "\n" +
758
- " 1. Confirm that a Node Information Entry exists for the given NodeID, and if not, then this " +
759
- "command shall fail with a NOT_FOUND status code." +
760
- "\n" +
761
- " 2. Ensure the ACL List for the given NodeID does not include the given ACLEntry. If it does:" +
762
- "\n" +
763
- " 1. Update the status to DeletePending for the given ACLEntry in the ACL List." +
764
- "\n" +
765
- " 2. Remove this ACLEntry from the given Node ID." +
766
- "\n" +
767
- " 1. If this succeeds, remove the given ACLEntry from the Node ACL List." +
768
- "\n" +
769
- " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
770
- "The error shall be handled in a subsequent Node Refresh."
965
+ children: [
966
+ {
967
+ tag: "field", name: "ListId", xref: "core§11.24.7.20.1",
968
+ details: "This field shall indicate the unique identifier for the DatastoreACLEntryStruct to be removed from " +
969
+ "the Datastore's list of DatastoreACLEntry."
970
+ },
971
+
972
+ {
973
+ tag: "field", name: "NodeId", xref: "core§11.24.7.20.2",
974
+
975
+ details: "This field shall indicate the unique identifier for the node from which the ACL is to be removed." +
976
+ "\n" +
977
+ "The Datastore shall:" +
978
+ "\n" +
979
+ " 1. Confirm that a DatastoreNodeInformationEntryStruct exists for the given NodeID in the NodeList " +
980
+ "attribute, and if not, then this command shall fail with a NOT_FOUND status code." +
981
+ "\n" +
982
+ " 2. Ensure the ACL List for the given NodeID does not include the given ACLEntry. If it does:" +
983
+ "\n" +
984
+ " 1. Update the status to DeletePending for the given ACLEntry in the ACL List." +
985
+ "\n" +
986
+ " 2. Remove this ACLEntry from the given Node ID." +
987
+ "\n" +
988
+ " 1. If this succeeds, remove the given ACLEntry from the Node ACL List." +
989
+ "\n" +
990
+ " 2. If not successful, update the Status to CommitFailed and the FailureCode to the returned error. " +
991
+ "The error shall be handled in a subsequent Node Refresh."
992
+ }
993
+ ]
771
994
  },
772
995
 
773
996
  {
@@ -795,8 +1018,8 @@ Resource.add({
795
1018
  },
796
1019
  {
797
1020
  tag: "field", name: "FailureCode", xref: "core§11.24.5.2.3",
798
- details: "This field shall contain the StatusCode of the last failed operation where the State field is set to " +
799
- "CommitFailure."
1021
+ details: "This field shall contain the Status Code of the last failed operation where the State field is set " +
1022
+ "to CommitFailure."
800
1023
  }
801
1024
  ]
802
1025
  },
@@ -992,14 +1215,16 @@ Resource.add({
992
1215
 
993
1216
  {
994
1217
  tag: "field", name: "FriendlyName", xref: "core§11.24.5.9.3",
995
- details: "Friendly name for this endpoint which is propagated to nodes. Any changes to Friendly Name or Group " +
996
- "Id List (add/remove entry) must follow the pending->committed workflow with current state reflected " +
997
- "in the Status Entry."
998
- },
999
1218
 
1000
- {
1001
- tag: "field", name: "StatusEntry", xref: "core§11.24.5.9.4",
1002
- details: "Indicates whether changes to Friendly Name are pending, committed, or commit-failed."
1219
+ details: "This field shall indicate a user-assigned label for this endpoint, as captured by a Joint Fabric " +
1220
+ "Administrator's user interface. By maintaining this value in the Joint Fabric Datastore, all Joint " +
1221
+ "Fabric Administrators can keep these values synchronized. This is particularly useful for complex " +
1222
+ "multi-application endpoint devices (such as appliances) and for endpoints exposed via a Bridge, " +
1223
+ "where individual endpoints might have custom names assigned by the user. For basic devices, only the " +
1224
+ "node-level FriendlyName might be used." +
1225
+ "\n" +
1226
+ "Administrators may keep this field in sync with the NodeLabel field from the Basic Information or " +
1227
+ "Bridged Basic Information clusters."
1003
1228
  }
1004
1229
  ]
1005
1230
  },
@@ -1058,9 +1283,17 @@ Resource.add({
1058
1283
  tag: "field", name: "NodeId", xref: "core§11.24.5.14.1",
1059
1284
  details: "The unique identifier for the node."
1060
1285
  },
1286
+
1061
1287
  {
1062
1288
  tag: "field", name: "FriendlyName", xref: "core§11.24.5.14.2",
1063
- details: "Friendly name for this node which is not propagated to nodes."
1289
+
1290
+ details: "This field shall contain a user-assigned label for this node, as captured by a Joint Fabric " +
1291
+ "Administrator's user interface. By maintaining this value in the Joint Fabric Datastore, all Joint " +
1292
+ "Fabric Administrators can keep these values synchronized. This value is not propagated to the node " +
1293
+ "itself." +
1294
+ "\n" +
1295
+ "Administrators may keep this field in sync with the NodeLabel field from the Basic Information or " +
1296
+ "Bridged Basic Information clusters."
1064
1297
  },
1065
1298
 
1066
1299
  {