@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.0

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 (291) hide show
  1. package/.jsii +54846 -26661
  2. package/API.md +72091 -23784
  3. package/lib/azure-actiongroup/index.d.ts +0 -10
  4. package/lib/azure-actiongroup/index.js +1 -11
  5. package/lib/azure-actiongroup/lib/action-group.d.ts +0 -10
  6. package/lib/azure-actiongroup/lib/action-group.js +6 -32
  7. package/lib/azure-actiongroup/lib/index.d.ts +1 -4
  8. package/lib/azure-actiongroup/lib/index.js +2 -5
  9. package/lib/azure-activitylogalert/index.d.ts +0 -10
  10. package/lib/azure-activitylogalert/index.js +1 -11
  11. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +0 -10
  12. package/lib/azure-activitylogalert/lib/activity-log-alert.js +6 -32
  13. package/lib/azure-activitylogalert/lib/index.d.ts +1 -4
  14. package/lib/azure-activitylogalert/lib/index.js +2 -5
  15. package/lib/azure-aks/index.d.ts +0 -8
  16. package/lib/azure-aks/index.js +1 -11
  17. package/lib/azure-aks/lib/aks-cluster.d.ts +4 -13
  18. package/lib/azure-aks/lib/aks-cluster.js +13 -36
  19. package/lib/azure-aks/lib/index.d.ts +1 -10
  20. package/lib/azure-aks/lib/index.js +2 -21
  21. package/lib/azure-diagnosticsettings/index.d.ts +0 -6
  22. package/lib/azure-diagnosticsettings/index.js +1 -7
  23. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +0 -10
  24. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +6 -32
  25. package/lib/azure-diagnosticsettings/lib/index.d.ts +1 -7
  26. package/lib/azure-diagnosticsettings/lib/index.js +2 -8
  27. package/lib/azure-dnsforwardingruleset/index.d.ts +1 -0
  28. package/lib/azure-dnsforwardingruleset/index.js +18 -0
  29. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.d.ts +24 -0
  30. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.js +206 -0
  31. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +174 -0
  32. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +214 -0
  33. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.d.ts +24 -0
  34. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.js +242 -0
  35. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +193 -0
  36. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +193 -0
  37. package/lib/azure-dnsforwardingruleset/lib/index.d.ts +6 -0
  38. package/lib/azure-dnsforwardingruleset/lib/index.js +23 -0
  39. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.d.ts +24 -0
  40. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.js +199 -0
  41. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +160 -0
  42. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +178 -0
  43. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +9 -0
  44. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +133 -0
  45. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.d.ts +9 -0
  46. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +350 -0
  47. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.d.ts +9 -0
  48. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +397 -0
  49. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.d.ts +9 -0
  50. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +285 -0
  51. package/lib/azure-dnsresolver/index.d.ts +1 -0
  52. package/lib/azure-dnsresolver/index.js +18 -0
  53. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.d.ts +24 -0
  54. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.js +218 -0
  55. package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +170 -0
  56. package/lib/azure-dnsresolver/lib/dns-resolver.js +236 -0
  57. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.d.ts +24 -0
  58. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.js +261 -0
  59. package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +189 -0
  60. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +243 -0
  61. package/lib/azure-dnsresolver/lib/index.d.ts +6 -0
  62. package/lib/azure-dnsresolver/lib/index.js +23 -0
  63. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.d.ts +24 -0
  64. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.js +231 -0
  65. package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +175 -0
  66. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +234 -0
  67. package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +14 -0
  68. package/lib/azure-dnsresolver/test/dns-resolver.integ.js +117 -0
  69. package/lib/azure-dnsresolver/test/dns-resolver.spec.d.ts +9 -0
  70. package/lib/azure-dnsresolver/test/dns-resolver.spec.js +353 -0
  71. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +9 -0
  72. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +151 -0
  73. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.d.ts +9 -0
  74. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +441 -0
  75. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +9 -0
  76. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +149 -0
  77. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.d.ts +9 -0
  78. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +301 -0
  79. package/lib/azure-dnszone/index.d.ts +1 -0
  80. package/lib/azure-dnszone/index.js +18 -0
  81. package/lib/azure-dnszone/lib/dns-zone-schemas.d.ts +24 -0
  82. package/lib/azure-dnszone/lib/dns-zone-schemas.js +191 -0
  83. package/lib/azure-dnszone/lib/dns-zone.d.ts +182 -0
  84. package/lib/azure-dnszone/lib/dns-zone.js +228 -0
  85. package/lib/azure-dnszone/lib/index.d.ts +2 -0
  86. package/lib/azure-dnszone/lib/index.js +19 -0
  87. package/lib/azure-dnszone/test/dns-zone.integ.d.ts +9 -0
  88. package/lib/azure-dnszone/test/dns-zone.integ.js +85 -0
  89. package/lib/azure-dnszone/test/dns-zone.spec.d.ts +9 -0
  90. package/lib/azure-dnszone/test/dns-zone.spec.js +285 -0
  91. package/lib/azure-metricalert/index.d.ts +0 -10
  92. package/lib/azure-metricalert/index.js +1 -11
  93. package/lib/azure-metricalert/lib/index.d.ts +1 -4
  94. package/lib/azure-metricalert/lib/index.js +2 -5
  95. package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -10
  96. package/lib/azure-metricalert/lib/metric-alert.js +6 -32
  97. package/lib/azure-networkinterface/index.d.ts +0 -3
  98. package/lib/azure-networkinterface/index.js +1 -4
  99. package/lib/azure-networkinterface/lib/index.d.ts +1 -5
  100. package/lib/azure-networkinterface/lib/index.js +2 -5
  101. package/lib/azure-networkinterface/lib/network-interface.d.ts +4 -9
  102. package/lib/azure-networkinterface/lib/network-interface.js +14 -29
  103. package/lib/azure-networkinterface/test/network-interface.integ.js +20 -6
  104. package/lib/azure-networksecuritygroup/index.d.ts +0 -5
  105. package/lib/azure-networksecuritygroup/index.js +1 -6
  106. package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -5
  107. package/lib/azure-networksecuritygroup/lib/index.js +17 -14
  108. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +4 -13
  109. package/lib/azure-networksecuritygroup/lib/network-security-group.js +14 -36
  110. package/lib/azure-policyassignment/index.d.ts +1 -0
  111. package/lib/azure-policyassignment/index.js +18 -0
  112. package/lib/azure-policyassignment/lib/index.d.ts +2 -0
  113. package/lib/azure-policyassignment/lib/index.js +19 -0
  114. package/lib/azure-policyassignment/lib/policy-assignment-schemas.d.ts +25 -0
  115. package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +260 -0
  116. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +342 -0
  117. package/lib/azure-policyassignment/lib/policy-assignment.js +228 -0
  118. package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +13 -0
  119. package/lib/azure-policyassignment/test/policy-assignment.integ.js +153 -0
  120. package/lib/azure-policyassignment/test/policy-assignment.spec.d.ts +9 -0
  121. package/lib/azure-policyassignment/test/policy-assignment.spec.js +651 -0
  122. package/lib/azure-policydefinition/index.d.ts +1 -0
  123. package/lib/azure-policydefinition/index.js +18 -0
  124. package/lib/azure-policydefinition/lib/index.d.ts +2 -0
  125. package/lib/azure-policydefinition/lib/index.js +19 -0
  126. package/lib/azure-policydefinition/lib/policy-definition-schemas.d.ts +25 -0
  127. package/lib/azure-policydefinition/lib/policy-definition-schemas.js +210 -0
  128. package/lib/azure-policydefinition/lib/policy-definition.d.ts +260 -0
  129. package/lib/azure-policydefinition/lib/policy-definition.js +199 -0
  130. package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +9 -0
  131. package/lib/azure-policydefinition/test/policy-definition.integ.js +137 -0
  132. package/lib/azure-policydefinition/test/policy-definition.spec.d.ts +9 -0
  133. package/lib/azure-policydefinition/test/policy-definition.spec.js +596 -0
  134. package/lib/azure-privatednszone/index.d.ts +1 -0
  135. package/lib/azure-privatednszone/index.js +18 -0
  136. package/lib/azure-privatednszone/lib/index.d.ts +2 -0
  137. package/lib/azure-privatednszone/lib/index.js +19 -0
  138. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.d.ts +24 -0
  139. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.js +254 -0
  140. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +178 -0
  141. package/lib/azure-privatednszone/lib/private-dns-zone.js +272 -0
  142. package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +9 -0
  143. package/lib/azure-privatednszone/test/private-dns-zone.integ.js +84 -0
  144. package/lib/azure-privatednszone/test/private-dns-zone.spec.d.ts +9 -0
  145. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +341 -0
  146. package/lib/azure-privatednszonelink/index.d.ts +1 -0
  147. package/lib/azure-privatednszonelink/index.js +18 -0
  148. package/lib/azure-privatednszonelink/lib/index.d.ts +2 -0
  149. package/lib/azure-privatednszonelink/lib/index.js +19 -0
  150. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.d.ts +24 -0
  151. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.js +262 -0
  152. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +202 -0
  153. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +250 -0
  154. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +9 -0
  155. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +110 -0
  156. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.d.ts +9 -0
  157. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +465 -0
  158. package/lib/azure-publicipaddress/index.d.ts +0 -5
  159. package/lib/azure-publicipaddress/index.js +1 -6
  160. package/lib/azure-publicipaddress/lib/index.d.ts +2 -9
  161. package/lib/azure-publicipaddress/lib/index.js +17 -17
  162. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +4 -13
  163. package/lib/azure-publicipaddress/lib/public-ip-address.js +14 -36
  164. package/lib/azure-resourcegroup/index.d.ts +0 -37
  165. package/lib/azure-resourcegroup/index.js +1 -39
  166. package/lib/azure-resourcegroup/lib/index.d.ts +1 -44
  167. package/lib/azure-resourcegroup/lib/index.js +2 -43
  168. package/lib/azure-resourcegroup/lib/resource-group.d.ts +9 -23
  169. package/lib/azure-resourcegroup/lib/resource-group.js +23 -56
  170. package/lib/azure-resourcegroup/test/resource-group.spec.js +13 -19
  171. package/lib/azure-roleassignment/index.d.ts +1 -0
  172. package/lib/azure-roleassignment/index.js +18 -0
  173. package/lib/azure-roleassignment/lib/index.d.ts +2 -0
  174. package/lib/azure-roleassignment/lib/index.js +19 -0
  175. package/lib/azure-roleassignment/lib/role-assignment-schemas.d.ts +25 -0
  176. package/lib/azure-roleassignment/lib/role-assignment-schemas.js +238 -0
  177. package/lib/azure-roleassignment/lib/role-assignment.d.ts +294 -0
  178. package/lib/azure-roleassignment/lib/role-assignment.js +257 -0
  179. package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +12 -0
  180. package/lib/azure-roleassignment/test/role-assignment.integ.js +101 -0
  181. package/lib/azure-roleassignment/test/role-assignment.spec.d.ts +9 -0
  182. package/lib/azure-roleassignment/test/role-assignment.spec.js +633 -0
  183. package/lib/azure-roledefinition/index.d.ts +1 -0
  184. package/lib/azure-roledefinition/index.js +18 -0
  185. package/lib/azure-roledefinition/lib/index.d.ts +2 -0
  186. package/lib/azure-roledefinition/lib/index.js +19 -0
  187. package/lib/azure-roledefinition/lib/role-definition-schemas.d.ts +25 -0
  188. package/lib/azure-roledefinition/lib/role-definition-schemas.js +195 -0
  189. package/lib/azure-roledefinition/lib/role-definition.d.ts +236 -0
  190. package/lib/azure-roledefinition/lib/role-definition.js +192 -0
  191. package/lib/azure-roledefinition/test/role-definition.integ.d.ts +12 -0
  192. package/lib/azure-roledefinition/test/role-definition.integ.js +142 -0
  193. package/lib/azure-roledefinition/test/role-definition.spec.d.ts +9 -0
  194. package/lib/azure-roledefinition/test/role-definition.spec.js +946 -0
  195. package/lib/azure-storageaccount/index.d.ts +0 -19
  196. package/lib/azure-storageaccount/index.js +1 -20
  197. package/lib/azure-storageaccount/lib/index.d.ts +1 -7
  198. package/lib/azure-storageaccount/lib/index.js +2 -8
  199. package/lib/azure-storageaccount/lib/storage-account.d.ts +4 -9
  200. package/lib/azure-storageaccount/lib/storage-account.js +15 -29
  201. package/lib/azure-subnet/index.d.ts +0 -3
  202. package/lib/azure-subnet/index.js +1 -4
  203. package/lib/azure-subnet/lib/index.d.ts +1 -4
  204. package/lib/azure-subnet/lib/index.js +2 -5
  205. package/lib/azure-subnet/lib/subnet.d.ts +3 -14
  206. package/lib/azure-subnet/lib/subnet.js +28 -47
  207. package/lib/azure-subnet/test/subnet.integ.js +19 -7
  208. package/lib/azure-subnet/test/subnet.spec.js +1 -2
  209. package/lib/azure-virtualmachine/index.d.ts +0 -6
  210. package/lib/azure-virtualmachine/index.js +1 -7
  211. package/lib/azure-virtualmachine/lib/index.d.ts +1 -10
  212. package/lib/azure-virtualmachine/lib/index.js +2 -21
  213. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +4 -13
  214. package/lib/azure-virtualmachine/lib/virtual-machine.js +15 -36
  215. package/lib/azure-virtualnetwork/index.d.ts +0 -9
  216. package/lib/azure-virtualnetwork/index.js +1 -11
  217. package/lib/azure-virtualnetwork/lib/index.d.ts +2 -9
  218. package/lib/azure-virtualnetwork/lib/index.js +17 -20
  219. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +4 -13
  220. package/lib/azure-virtualnetwork/lib/virtual-network.js +15 -36
  221. package/lib/azure-virtualnetworkmanager/index.d.ts +1 -0
  222. package/lib/azure-virtualnetworkmanager/index.js +18 -0
  223. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.d.ts +48 -0
  224. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.js +265 -0
  225. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +185 -0
  226. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +206 -0
  227. package/lib/azure-virtualnetworkmanager/lib/index.d.ts +14 -0
  228. package/lib/azure-virtualnetworkmanager/lib/index.js +31 -0
  229. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.d.ts +32 -0
  230. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.js +189 -0
  231. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.d.ts +32 -0
  232. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.js +201 -0
  233. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +135 -0
  234. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +163 -0
  235. package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +139 -0
  236. package/lib/azure-virtualnetworkmanager/lib/network-group.js +158 -0
  237. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.d.ts +32 -0
  238. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.js +182 -0
  239. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +144 -0
  240. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +164 -0
  241. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.d.ts +38 -0
  242. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.js +206 -0
  243. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +142 -0
  244. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +162 -0
  245. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.d.ts +39 -0
  246. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.js +359 -0
  247. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +221 -0
  248. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +204 -0
  249. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.d.ts +32 -0
  250. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.js +236 -0
  251. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +337 -0
  252. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +283 -0
  253. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +25 -0
  254. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +402 -0
  255. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.d.ts +9 -0
  256. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +1652 -0
  257. package/lib/azure-vmss/index.d.ts +0 -5
  258. package/lib/azure-vmss/index.js +1 -6
  259. package/lib/azure-vmss/lib/index.d.ts +0 -7
  260. package/lib/azure-vmss/lib/index.js +1 -21
  261. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +5 -13
  262. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +29 -53
  263. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.d.ts +10 -0
  264. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +218 -0
  265. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +178 -26
  266. package/lib/core-azure/lib/azapi/azapi-resource.js +328 -90
  267. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +2 -2
  268. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  269. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  270. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +5 -3
  271. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  272. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  273. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  274. package/lib/core-azure/lib/azapi/resource-schema-validator.d.ts +118 -0
  275. package/lib/core-azure/lib/azapi/resource-schema-validator.js +236 -0
  276. package/lib/core-azure/lib/azapi/resource-version-manager.d.ts +103 -0
  277. package/lib/core-azure/lib/azapi/resource-version-manager.js +168 -0
  278. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +11 -6
  279. package/lib/core-azure/lib/index.d.ts +2 -2
  280. package/lib/core-azure/lib/index.js +5 -5
  281. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  282. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  283. package/lib/index.d.ts +19 -0
  284. package/lib/index.js +21 -2
  285. package/lib/testing/index.js +2 -2
  286. package/lib/testing/lib/cleanup.d.ts +1 -0
  287. package/lib/testing/lib/cleanup.js +19 -12
  288. package/lib/testing/lib/metadata.js +19 -16
  289. package/package.json +1 -1
  290. package/scripts/cleanup-test-resources.ts +22 -4
  291. package/scripts/generate-index.js +25 -8
@@ -0,0 +1,25 @@
1
+ /**
2
+ * API schemas for Azure Role Assignment across all supported versions
3
+ *
4
+ * This file defines the complete API schemas for Microsoft.Authorization/roleAssignments
5
+ * across all supported API versions. The schemas are used by the VersionedAzapiResource
6
+ * framework for validation, transformation, and version management.
7
+ */
8
+ import { ApiSchema, VersionConfig } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
9
+ /**
10
+ * API Schema for Role Assignment version 2022-04-01
11
+ * This is the latest stable API version for role assignments
12
+ */
13
+ export declare const ROLE_ASSIGNMENT_SCHEMA_2022_04_01: ApiSchema;
14
+ /**
15
+ * Version configuration for Role Assignment 2022-04-01
16
+ */
17
+ export declare const ROLE_ASSIGNMENT_VERSION_2022_04_01: VersionConfig;
18
+ /**
19
+ * All supported Role Assignment versions for registration
20
+ */
21
+ export declare const ALL_ROLE_ASSIGNMENT_VERSIONS: VersionConfig[];
22
+ /**
23
+ * Resource type constant
24
+ */
25
+ export declare const ROLE_ASSIGNMENT_TYPE = "Microsoft.Authorization/roleAssignments";
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ /**
3
+ * API schemas for Azure Role Assignment across all supported versions
4
+ *
5
+ * This file defines the complete API schemas for Microsoft.Authorization/roleAssignments
6
+ * across all supported API versions. The schemas are used by the VersionedAzapiResource
7
+ * framework for validation, transformation, and version management.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ROLE_ASSIGNMENT_TYPE = exports.ALL_ROLE_ASSIGNMENT_VERSIONS = exports.ROLE_ASSIGNMENT_VERSION_2022_04_01 = exports.ROLE_ASSIGNMENT_SCHEMA_2022_04_01 = void 0;
11
+ const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
12
+ // =============================================================================
13
+ // COMMON PROPERTY DEFINITIONS
14
+ // =============================================================================
15
+ /**
16
+ * Common property definitions shared across all Role Assignment versions
17
+ */
18
+ const COMMON_PROPERTIES = {
19
+ name: {
20
+ dataType: version_interfaces_1.PropertyType.STRING,
21
+ required: false,
22
+ description: "The name of the role assignment resource. Automatically generated as a GUID by Terraform's guid() function",
23
+ validation: [
24
+ // Note: No pattern validation here because the name will be a Terraform function
25
+ // guid() that gets evaluated at apply time, not synthesis time.
26
+ // Azure will validate the final GUID format when the resource is created.
27
+ ],
28
+ },
29
+ roleDefinitionId: {
30
+ dataType: version_interfaces_1.PropertyType.STRING,
31
+ required: true,
32
+ description: "The role definition ID to assign. This can be a built-in or custom role definition",
33
+ validation: [
34
+ {
35
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
36
+ message: "Role definition ID is required for role assignments",
37
+ },
38
+ {
39
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
40
+ value: version_interfaces_1.PropertyType.STRING,
41
+ message: "Role definition ID must be a string",
42
+ },
43
+ ],
44
+ },
45
+ principalId: {
46
+ dataType: version_interfaces_1.PropertyType.STRING,
47
+ required: true,
48
+ description: "The principal ID (object ID) to which the role is assigned. This can be a user, group, service principal, or managed identity",
49
+ validation: [
50
+ {
51
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
52
+ message: "Principal ID is required for role assignments",
53
+ },
54
+ {
55
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
56
+ value: version_interfaces_1.PropertyType.STRING,
57
+ message: "Principal ID must be a string",
58
+ },
59
+ ],
60
+ },
61
+ scope: {
62
+ dataType: version_interfaces_1.PropertyType.STRING,
63
+ required: true,
64
+ description: "The scope at which the role assignment is applied (subscription, resource group, or resource)",
65
+ validation: [
66
+ {
67
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
68
+ message: "Scope is required for role assignments",
69
+ },
70
+ {
71
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
72
+ value: version_interfaces_1.PropertyType.STRING,
73
+ message: "Scope must be a string",
74
+ },
75
+ ],
76
+ },
77
+ principalType: {
78
+ dataType: version_interfaces_1.PropertyType.STRING,
79
+ required: false,
80
+ description: "The type of principal. Valid values: User, Group, ServicePrincipal, ForeignGroup, Device",
81
+ validation: [
82
+ {
83
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
84
+ value: "^(User|Group|ServicePrincipal|ForeignGroup|Device)$",
85
+ message: "Principal type must be one of: User, Group, ServicePrincipal, ForeignGroup, Device",
86
+ },
87
+ ],
88
+ },
89
+ description: {
90
+ dataType: version_interfaces_1.PropertyType.STRING,
91
+ required: false,
92
+ description: "The role assignment description. Provides detailed information about the assignment",
93
+ validation: [
94
+ {
95
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
96
+ value: { minLength: 0, maxLength: 512 },
97
+ message: "Description must not exceed 512 characters",
98
+ },
99
+ ],
100
+ },
101
+ condition: {
102
+ dataType: version_interfaces_1.PropertyType.STRING,
103
+ required: false,
104
+ description: "The conditions on the role assignment. This limits the resources it applies to using ABAC expressions",
105
+ validation: [
106
+ {
107
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
108
+ value: version_interfaces_1.PropertyType.STRING,
109
+ message: "Condition must be a string",
110
+ },
111
+ ],
112
+ },
113
+ conditionVersion: {
114
+ dataType: version_interfaces_1.PropertyType.STRING,
115
+ required: false,
116
+ description: "Version of the condition syntax. Current supported version is 2.0",
117
+ validation: [
118
+ {
119
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
120
+ value: "^2\\.0$",
121
+ message: "Condition version must be 2.0",
122
+ },
123
+ ],
124
+ },
125
+ delegatedManagedIdentityResourceId: {
126
+ dataType: version_interfaces_1.PropertyType.STRING,
127
+ required: false,
128
+ description: "The delegated Azure Resource Id which contains a Managed Identity. Applicable only when the principalType is Group",
129
+ validation: [
130
+ {
131
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
132
+ value: version_interfaces_1.PropertyType.STRING,
133
+ message: "Delegated managed identity resource ID must be a string",
134
+ },
135
+ ],
136
+ },
137
+ ignoreChanges: {
138
+ dataType: version_interfaces_1.PropertyType.ARRAY,
139
+ required: false,
140
+ description: "Array of property names to ignore during updates",
141
+ validation: [
142
+ {
143
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
144
+ value: version_interfaces_1.PropertyType.ARRAY,
145
+ message: "IgnoreChanges must be an array of strings",
146
+ },
147
+ ],
148
+ },
149
+ };
150
+ // =============================================================================
151
+ // VERSION-SPECIFIC SCHEMAS
152
+ // =============================================================================
153
+ /**
154
+ * API Schema for Role Assignment version 2022-04-01
155
+ * This is the latest stable API version for role assignments
156
+ */
157
+ exports.ROLE_ASSIGNMENT_SCHEMA_2022_04_01 = {
158
+ resourceType: "Microsoft.Authorization/roleAssignments",
159
+ version: "2022-04-01",
160
+ properties: {
161
+ ...COMMON_PROPERTIES,
162
+ },
163
+ required: ["roleDefinitionId", "principalId", "scope"],
164
+ optional: [
165
+ "name",
166
+ "principalType",
167
+ "description",
168
+ "condition",
169
+ "conditionVersion",
170
+ "delegatedManagedIdentityResourceId",
171
+ "ignoreChanges",
172
+ ],
173
+ deprecated: [],
174
+ transformationRules: {},
175
+ validationRules: [
176
+ {
177
+ property: "roleDefinitionId",
178
+ rules: [
179
+ {
180
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
181
+ message: "Role definition ID is required for role assignments",
182
+ },
183
+ ],
184
+ },
185
+ {
186
+ property: "principalId",
187
+ rules: [
188
+ {
189
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
190
+ message: "Principal ID is required for role assignments",
191
+ },
192
+ ],
193
+ },
194
+ {
195
+ property: "scope",
196
+ rules: [
197
+ {
198
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
199
+ message: "Scope is required for role assignments",
200
+ },
201
+ ],
202
+ },
203
+ ],
204
+ };
205
+ // =============================================================================
206
+ // VERSION CONFIGURATIONS
207
+ // =============================================================================
208
+ /**
209
+ * Version configuration for Role Assignment 2022-04-01
210
+ */
211
+ exports.ROLE_ASSIGNMENT_VERSION_2022_04_01 = {
212
+ version: "2022-04-01",
213
+ schema: exports.ROLE_ASSIGNMENT_SCHEMA_2022_04_01,
214
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
215
+ releaseDate: "2022-04-01",
216
+ deprecationDate: undefined,
217
+ sunsetDate: undefined,
218
+ breakingChanges: [],
219
+ migrationGuide: "/docs/role-assignment/migration-2022-04-01",
220
+ changeLog: [
221
+ {
222
+ changeType: "added",
223
+ description: "Stable release of Role Assignment API with full support for RBAC role assignments, conditional assignments (ABAC), and delegated managed identities",
224
+ breaking: false,
225
+ },
226
+ ],
227
+ };
228
+ /**
229
+ * All supported Role Assignment versions for registration
230
+ */
231
+ exports.ALL_ROLE_ASSIGNMENT_VERSIONS = [
232
+ exports.ROLE_ASSIGNMENT_VERSION_2022_04_01,
233
+ ];
234
+ /**
235
+ * Resource type constant
236
+ */
237
+ exports.ROLE_ASSIGNMENT_TYPE = "Microsoft.Authorization/roleAssignments";
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1hc3NpZ25tZW50LXNjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWFzc2lnbm1lbnQvbGliL3JvbGUtYXNzaWdubWVudC1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1QsNEdBQTRHO1FBQzlHLFVBQVUsRUFBRTtRQUNWLGlGQUFpRjtRQUNqRixnRUFBZ0U7UUFDaEUsMEVBQTBFO1NBQzNFO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUNULG9GQUFvRjtRQUN0RixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtnQkFDckMsT0FBTyxFQUFFLHFEQUFxRDthQUMvRDtZQUNEO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUscUNBQXFDO2FBQy9DO1NBQ0Y7S0FDRjtJQUNELFdBQVcsRUFBRTtRQUNYLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1QsK0hBQStIO1FBQ2pJLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsK0NBQStDO2FBQ3pEO1lBQ0Q7Z0JBQ0UsUUFB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NEM7SUFDNUQsU0FBUyxFQUFFO1FBQ1Q7WUFDRSxVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQ1QscUpBQXFKO1lBQ3ZKLFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDRCQUE0QixHQUFvQjtJQUMzRCwwQ0FBa0M7Q0FDbkMsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQVBJIHNjaGVtYXMgZm9yIEF6dXJlIFJvbGUgQXNzaWdubWVudCBhY3Jvc3MgYWxsIHN1cHBvcnRlZCB2ZXJzaW9uc1xuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBjb21wbGV0ZSBBUEkgc2NoZW1hcyBmb3IgTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcm9sZUFzc2lnbm1lbnRzXG4gKiBhY3Jvc3MgYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnMuIFRoZSBzY2hlbWFzIGFyZSB1c2VkIGJ5IHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlXG4gKiBmcmFtZXdvcmsgZm9yIHZhbGlkYXRpb24sIHRyYW5zZm9ybWF0aW9uLCBhbmQgdmVyc2lvbiBtYW5hZ2VtZW50LlxuICovXG5cbmltcG9ydCB7XG4gIEFwaVNjaGVtYSxcbiAgUHJvcGVydHlEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFZhbGlkYXRpb25SdWxlVHlwZSxcbiAgVmVyc2lvbkNvbmZpZyxcbiAgVmVyc2lvblN1cHBvcnRMZXZlbCxcbn0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NTU9OIFBST1BFUlRZIERFRklOSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0eSBkZWZpbml0aW9ucyBzaGFyZWQgYWNyb3NzIGFsbCBSb2xlIEFzc2lnbm1lbnQgdmVyc2lvbnNcbiAqL1xuY29uc3QgQ09NTU9OX1BST1BFUlRJRVM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEZWZpbml0aW9uIH0gPSB7XG4gIG5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBuYW1lIG9mIHRoZSByb2xlIGFzc2lnbm1lbnQgcmVzb3VyY2UuIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFzIGEgR1VJRCBieSBUZXJyYWZvcm0ncyBndWlkKCkgZnVuY3Rpb25cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICAvLyBOb3RlOiBObyBwYXR0ZXJuIHZhbGlkYXRpb24gaGVyZSBiZWNhdXNlIHRoZSBuYW1lIHdpbGwgYmUgYSBUZXJyYWZvcm0gZnVuY3Rpb25cbiAgICAgIC8vIGd1aWQoKSB0aGF0IGdldHMgZXZhbHVhdGVkIGF0IGFwcGx5IHRpbWUsIG5vdCBzeW50aGVzaXMgdGltZS5cbiAgICAgIC8vIEF6dXJlIHdpbGwgdmFsaWRhdGUgdGhlIGZpbmFsIEdVSUQgZm9ybWF0IHdoZW4gdGhlIHJlc291cmNlIGlzIGNyZWF0ZWQuXG4gICAgXSxcbiAgfSxcbiAgcm9sZURlZmluaXRpb25JZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcm9sZSBkZWZpbml0aW9uIElEIHRvIGFzc2lnbi4gVGhpcyBjYW4gYmUgYSBidWlsdC1pbiBvciBjdXN0b20gcm9sZSBkZWZpbml0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlJvbGUgZGVmaW5pdGlvbiBJRCBpcyByZXF1aXJlZCBmb3Igcm9sZSBhc3NpZ25tZW50c1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICAgICAgbWVzc2FnZTogXCJSb2xlIGRlZmluaXRpb24gSUQgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBwcmluY2lwYWxJZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcHJpbmNpcGFsIElEIChvYmplY3QgSUQpIHRvIHdoaWNoIHRoZSByb2xlIGlzIGFzc2lnbmVkLiBUaGlzIGNhbiBiZSBhIHVzZXIsIGdyb3VwLCBzZXJ2aWNlIHByaW5jaXBhbCwgb3IgbWFuYWdlZCBpZGVudGl0eVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgbWVzc2FnZTogXCJQcmluY2lwYWwgSUQgaXMgcmVxdWlyZWQgZm9yIHJvbGUgYXNzaWdubWVudHNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiUHJpbmNpcGFsIElEIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgc2NvcGU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHNjb3BlIGF0IHdoaWNoIHRoZSByb2xlIGFzc2lnbm1lbnQgaXMgYXBwbGllZCAoc3Vic2NyaXB0aW9uLCByZXNvdXJjZSBncm91cCwgb3IgcmVzb3VyY2UpXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIGlzIHJlcXVpcmVkIGZvciByb2xlIGFzc2lnbm1lbnRzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcHJpbmNpcGFsVHlwZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHR5cGUgb2YgcHJpbmNpcGFsLiBWYWxpZCB2YWx1ZXM6IFVzZXIsIEdyb3VwLCBTZXJ2aWNlUHJpbmNpcGFsLCBGb3JlaWduR3JvdXAsIERldmljZVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENILFxuICAgICAgICB2YWx1ZTogXCJeKFVzZXJ8R3JvdXB8U2VydmljZVByaW5jaXBhbHxGb3JlaWduR3JvdXB8RGV2aWNlKSRcIixcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIlByaW5jaXBhbCB0eXBlIG11c3QgYmUgb25lIG9mOiBVc2VyLCBHcm91cCwgU2VydmljZVByaW5jaXBhbCwgRm9yZWlnbkdyb3VwLCBEZXZpY2VcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGVzY3JpcHRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSByb2xlIGFzc2lnbm1lbnQgZGVzY3JpcHRpb24uIFByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhc3NpZ25tZW50XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDAsIG1heExlbmd0aDogNTEyIH0sXG4gICAgICAgIG1lc3NhZ2U6IFwiRGVzY3JpcHRpb24gbXVzdCBub3QgZXhjZWVkIDUxMiBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGNvbmRpdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIGNvbmRpdGlvbnMgb24gdGhlIHJvbGUgYXNzaWdubWVudC4gVGhpcyBsaW1pdHMgdGhlIHJlc291cmNlcyBpdCBhcHBsaWVzIHRvIHVzaW5nIEFCQUMgZXhwcmVzc2lvbnNcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiQ29uZGl0aW9uIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgY29uZGl0aW9uVmVyc2lvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVmVyc2lvbiBvZiB0aGUgY29uZGl0aW9uIHN5bnRheC4gQ3VycmVudCBzdXBwb3J0ZWQgdmVyc2lvbiBpcyAyLjBcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXjJcXFxcLjAkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiQ29uZGl0aW9uIHZlcnNpb24gbXVzdCBiZSAyLjBcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGVsZWdhdGVkTWFuYWdlZElkZW50aXR5UmVzb3VyY2VJZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIGRlbGVnYXRlZCBBenVyZSBSZXNvdXJjZSBJZCB3aGljaCBjb250YWlucyBhIE1hbmFnZWQgSWRlbnRpdHkuIEFwcGxpY2FibGUgb25seSB3aGVuIHRoZSBwcmluY2lwYWxUeXBlIGlzIEdyb3VwXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcIkRlbGVnYXRlZCBtYW5hZ2VkIGlkZW50aXR5IHJlc291cmNlIElEIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaWdub3JlQ2hhbmdlczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHRvIGlnbm9yZSBkdXJpbmcgdXBkYXRlc1wiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgICAgICBtZXNzYWdlOiBcIklnbm9yZUNoYW5nZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTi1TUEVDSUZJQyBTQ0hFTUFTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFQSSBTY2hlbWEgZm9yIFJvbGUgQXNzaWdubWVudCB2ZXJzaW9uIDIwMjItMDQtMDFcbiAqIFRoaXMgaXMgdGhlIGxhdGVzdCBzdGFibGUgQVBJIHZlcnNpb24gZm9yIHJvbGUgYXNzaWdubWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfQVNTSUdOTUVOVF9TQ0hFTUFfMjAyMl8wNF8wMTogQXBpU2NoZW1hID0ge1xuICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcm9sZUFzc2lnbm1lbnRzXCIsXG4gIHZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgLi4uQ09NTU9OX1BST1BFUlRJRVMsXG4gIH0sXG4gIHJlcXVpcmVkOiBbXCJyb2xlRGVmaW5pdGlvbklkXCIsIFwicHJpbmNpcGFsSWRcIiwgXCJzY29wZVwiXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcIm5hbWVcIixcbiAgICBcInByaW5jaXBhbFR5cGVcIixcbiAgICBcImRlc2NyaXB0aW9uXCIsXG4gICAgXCJjb25kaXRpb25cIixcbiAgICBcImNvbmRpdGlvblZlcnNpb25cIixcbiAgICBcImRlbGVnYXRlZE1hbmFnZWRJZGVudGl0eVJlc291cmNlSWRcIixcbiAgICBcImlnbm9yZUNoYW5nZXNcIixcbiAgXSxcbiAgZGVwcmVjYXRlZDogW10sXG4gIHRyYW5zZm9ybWF0aW9uUnVsZXM6IHt9LFxuICB2YWxpZGF0aW9uUnVsZXM6IFtcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJyb2xlRGVmaW5pdGlvbklkXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIlJvbGUgZGVmaW5pdGlvbiBJRCBpcyByZXF1aXJlZCBmb3Igcm9sZSBhc3NpZ25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcInByaW5jaXBhbElkXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIlByaW5jaXBhbCBJRCBpcyByZXF1aXJlZCBmb3Igcm9sZSBhc3NpZ25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcInNjb3BlXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIGlzIHJlcXVpcmVkIGZvciByb2xlIGFzc2lnbm1lbnRzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTiBDT05GSUdVUkFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBWZXJzaW9uIGNvbmZpZ3VyYXRpb24gZm9yIFJvbGUgQXNzaWdubWVudCAyMDIyLTA0LTAxXG4gKi9cbmV4cG9ydCBjb25zdCBST0xFX0FTU0lHTk1FTlRfVkVSU0lPTl8yMDIyXzA0XzAxOiBWZXJzaW9uQ29uZmlnID0ge1xuICB2ZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgc2NoZW1hOiBST0xFX0FTU0lHTk1FTlRfU0NIRU1BXzIwMjJfMDRfMDEsXG4gIHN1cHBvcnRMZXZlbDogVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gIHJlbGVhc2VEYXRlOiBcIjIwMjItMDQtMDFcIixcbiAgZGVwcmVjYXRpb25EYXRlOiB1bmRlZmluZWQsXG4gIHN1bnNldERhdGU6IHVuZGVmaW5lZCxcbiAgYnJlYWtpbmdDaGFuZ2VzOiBbXSxcbiAgbWlncmF0aW9uR3VpZGU6IFwiL2RvY3Mvcm9sZS1hc3NpZ25tZW50L21pZ3JhdGlvbi0yMDIyLTA0LTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0YWJsZSByZWxlYXNlIG9mIFJvbGUgQXNzaWdubWVudCBBUEkgd2l0aCBmdWxsIHN1cHBvcnQgZm9yIFJCQUMgcm9sZSBhc3NpZ25tZW50cywgY29uZGl0aW9uYWwgYXNzaWdubWVudHMgKEFCQUMpLCBhbmQgZGVsZWdhdGVkIG1hbmFnZWQgaWRlbnRpdGllc1wiLFxuICAgICAgYnJlYWtpbmc6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIEFsbCBzdXBwb3J0ZWQgUm9sZSBBc3NpZ25tZW50IHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9ST0xFX0FTU0lHTk1FTlRfVkVSU0lPTlM6IFZlcnNpb25Db25maWdbXSA9IFtcbiAgUk9MRV9BU1NJR05NRU5UX1ZFUlNJT05fMjAyMl8wNF8wMSxcbl07XG5cbi8qKlxuICogUmVzb3VyY2UgdHlwZSBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgUk9MRV9BU1NJR05NRU5UX1RZUEUgPSBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVBc3NpZ25tZW50c1wiO1xuIl19
@@ -0,0 +1,294 @@
1
+ /**
2
+ * Unified Azure Role Assignment implementation using VersionedAzapiResource framework
3
+ *
4
+ * This class provides a version-aware implementation for managing Azure Role Assignments
5
+ * using the AZAPI provider. Role assignments grant specific permissions (roles) to security
6
+ * principals (users, groups, service principals, managed identities) at a particular scope.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2022-04-01 (Active, Latest)
10
+ *
11
+ * Features:
12
+ * - Automatic latest version resolution when no version is specified
13
+ * - Explicit version pinning for stability requirements
14
+ * - Schema-driven validation and transformation
15
+ * - Support for all principal types (User, Group, ServicePrincipal, ForeignGroup, Device)
16
+ * - Conditional role assignments using ABAC (Attribute-Based Access Control)
17
+ * - Delegated managed identity support for group assignments
18
+ * - Assignment at subscription, resource group, or resource scope
19
+ * - JSII compliance for multi-language support
20
+ */
21
+ import * as cdktf from "cdktf";
22
+ import { Construct } from "constructs";
23
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
24
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
25
+ /**
26
+ * Properties for the unified Azure Role Assignment
27
+ *
28
+ * Extends AzapiResourceProps with Role Assignment specific properties.
29
+ *
30
+ * **Note on the `name` property:** While this interface inherits the `name` property
31
+ * from AzapiResourceProps, it is not used for role assignments. Azure role assignments
32
+ * require GUID format names, which are automatically generated by the construct.
33
+ * Any user-provided name value will be ignored in favor of Azure's deterministic
34
+ * GUID generation based on the deployment context.
35
+ */
36
+ export interface RoleAssignmentProps extends AzapiResourceProps {
37
+ /**
38
+ * The role definition ID to assign
39
+ * This can be a built-in or custom role definition
40
+ * Required property
41
+ *
42
+ * @example "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7" (Reader)
43
+ * @example "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c" (Contributor)
44
+ */
45
+ readonly roleDefinitionId: string;
46
+ /**
47
+ * The principal ID (object ID) to which the role is assigned
48
+ * This can be a user, group, service principal, or managed identity
49
+ * Required property
50
+ *
51
+ * @example "00000000-0000-0000-0000-000000000000"
52
+ */
53
+ readonly principalId: string;
54
+ /**
55
+ * The scope at which the role assignment is applied
56
+ * Can be a subscription, resource group, or resource
57
+ * Required property
58
+ *
59
+ * @example "/subscriptions/00000000-0000-0000-0000-000000000000"
60
+ * @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name"
61
+ * @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name/providers/Microsoft.Storage/storageAccounts/storage-name"
62
+ */
63
+ readonly scope: string;
64
+ /**
65
+ * The type of principal
66
+ * Specifies what kind of identity is being assigned the role
67
+ *
68
+ * @default undefined (Azure will auto-detect)
69
+ * @example "User" - An Azure AD user
70
+ * @example "Group" - An Azure AD group
71
+ * @example "ServicePrincipal" - A service principal (application)
72
+ * @example "ForeignGroup" - A group from external directory
73
+ * @example "Device" - A device identity
74
+ */
75
+ readonly principalType?: string;
76
+ /**
77
+ * The role assignment description
78
+ * Provides detailed information about why the assignment was made
79
+ *
80
+ * @example "Grants read access to monitoring team for resource diagnostics"
81
+ */
82
+ readonly description?: string;
83
+ /**
84
+ * The conditions on the role assignment
85
+ * Limits the resources it applies to using ABAC expressions
86
+ * Requires conditionVersion to be set when used
87
+ *
88
+ * @example "@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'logs'"
89
+ */
90
+ readonly condition?: string;
91
+ /**
92
+ * Version of the condition syntax
93
+ * Required when condition is specified
94
+ *
95
+ * @default undefined
96
+ * @example "2.0"
97
+ */
98
+ readonly conditionVersion?: string;
99
+ /**
100
+ * The delegated Azure Resource Id which contains a Managed Identity
101
+ * Applicable only when the principalType is Group
102
+ * Used for scenarios where a group assignment should use a specific managed identity
103
+ *
104
+ * @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity"
105
+ */
106
+ readonly delegatedManagedIdentityResourceId?: string;
107
+ /**
108
+ * The lifecycle rules to ignore changes
109
+ * @example ["description"]
110
+ */
111
+ readonly ignoreChanges?: string[];
112
+ }
113
+ /**
114
+ * Properties interface for Azure Role Assignment
115
+ * This is required for JSII compliance to support multi-language code generation
116
+ */
117
+ export interface RoleAssignmentProperties {
118
+ /**
119
+ * The role definition ID
120
+ */
121
+ readonly roleDefinitionId: string;
122
+ /**
123
+ * The principal ID
124
+ */
125
+ readonly principalId: string;
126
+ /**
127
+ * The scope of the role assignment
128
+ */
129
+ readonly scope: string;
130
+ /**
131
+ * The type of principal
132
+ */
133
+ readonly principalType?: string;
134
+ /**
135
+ * The role assignment description
136
+ */
137
+ readonly description?: string;
138
+ /**
139
+ * The conditions on the role assignment
140
+ */
141
+ readonly condition?: string;
142
+ /**
143
+ * Version of the condition syntax
144
+ */
145
+ readonly conditionVersion?: string;
146
+ /**
147
+ * The delegated managed identity resource ID
148
+ */
149
+ readonly delegatedManagedIdentityResourceId?: string;
150
+ }
151
+ /**
152
+ * The resource body interface for Azure Role Assignment API calls
153
+ * This matches the Azure REST API schema for role assignments
154
+ */
155
+ export interface RoleAssignmentBody {
156
+ /**
157
+ * The properties of the role assignment
158
+ */
159
+ readonly properties: RoleAssignmentProperties;
160
+ }
161
+ /**
162
+ * Unified Azure Role Assignment implementation
163
+ *
164
+ * This class provides a single, version-aware implementation for managing Azure
165
+ * Role Assignments. It automatically handles version resolution, schema validation,
166
+ * and property transformation.
167
+ *
168
+ * **Important Notes:**
169
+ * - Role assignments are scoped resources deployed at subscription, resource group,
170
+ * or resource level. They do not have a location property as they are not region-specific.
171
+ * - The `name` property (inherited from AzapiResourceProps) is not used. Azure automatically
172
+ * generates a deterministic GUID for role assignment names based on the deployment context.
173
+ * This ensures idempotent deployments without duplicate role assignments.
174
+ *
175
+ * @example
176
+ * Basic role assignment - Assign Reader role to a user at subscription scope
177
+ *
178
+ * const assignment = new RoleAssignment(this, "reader-assignment", {
179
+ * roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
180
+ * principalId: "00000000-0000-0000-0000-000000000000",
181
+ * scope: "/subscriptions/00000000-0000-0000-0000-000000000000",
182
+ * principalType: "User",
183
+ * });
184
+ *
185
+ * @example
186
+ * Resource group scoped assignment - Assign Contributor to a service principal
187
+ *
188
+ * const assignment = new RoleAssignment(this, "contributor-assignment", {
189
+ * roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
190
+ * principalId: servicePrincipal.objectId,
191
+ * scope: resourceGroup.id,
192
+ * principalType: "ServicePrincipal",
193
+ * description: "Grants contributor access to the deployment service principal",
194
+ * });
195
+ *
196
+ * @example
197
+ * Conditional assignment with ABAC - Limit access to specific storage containers
198
+ *
199
+ * const assignment = new RoleAssignment(this, "conditional-assignment", {
200
+ * roleDefinitionId: storageRole.id,
201
+ * principalId: user.objectId,
202
+ * scope: storageAccount.id,
203
+ * principalType: "User",
204
+ * condition: "@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'logs'",
205
+ * conditionVersion: "2.0",
206
+ * description: "Grants access only to the logs container",
207
+ * });
208
+ *
209
+ * @stability stable
210
+ */
211
+ export declare class RoleAssignment extends AzapiResource {
212
+ /**
213
+ * The input properties for this Role Assignment instance
214
+ */
215
+ readonly props: RoleAssignmentProps;
216
+ readonly idOutput: cdktf.TerraformOutput;
217
+ readonly nameOutput: cdktf.TerraformOutput;
218
+ /**
219
+ * Creates a new Azure Role Assignment using the VersionedAzapiResource framework
220
+ *
221
+ * The constructor automatically handles version resolution, schema registration,
222
+ * validation, and resource creation.
223
+ *
224
+ * @param scope - The scope in which to define this construct
225
+ * @param id - The unique identifier for this instance
226
+ * @param props - Configuration properties for the Role Assignment
227
+ */
228
+ constructor(scope: Construct, id: string, props: RoleAssignmentProps);
229
+ /**
230
+ * Gets the default API version to use when no explicit version is specified
231
+ * Returns the most recent stable version as the default
232
+ */
233
+ protected defaultVersion(): string;
234
+ /**
235
+ * Gets the Azure resource type for Role Assignments
236
+ */
237
+ protected resourceType(): string;
238
+ /**
239
+ * Gets the API schema for the resolved version
240
+ * Uses the framework's schema resolution to get the appropriate schema
241
+ */
242
+ protected apiSchema(): ApiSchema;
243
+ /**
244
+ * Creates the resource body for the Azure API call
245
+ * Transforms the input properties into the JSON format expected by Azure REST API
246
+ *
247
+ * Note: Role assignments do not have a location property as they are
248
+ * scoped resources (subscription, resource group, or resource level).
249
+ * The scope property is NOT included in the body as it's read-only and
250
+ * automatically derived from the parentId.
251
+ */
252
+ protected createResourceBody(props: any): any;
253
+ /**
254
+ * Overrides the name resolution to generate deterministic GUIDs for role assignments
255
+ *
256
+ * Role assignments require GUID format IDs. This implementation generates a deterministic
257
+ * UUID based on the role assignment's key properties to ensure:
258
+ * - Same GUID is generated on re-deployments with same parameters
259
+ * - Idempotent deployments (no duplicate role assignments)
260
+ * - Consistent behavior across deployment runs
261
+ */
262
+ protected resolveName(props: AzapiResourceProps): string;
263
+ /**
264
+ * Overrides parent ID resolution to use the scope from props
265
+ * Role assignments are scoped resources where the scope IS the parent
266
+ */
267
+ protected resolveParentId(props: any): string;
268
+ /**
269
+ * Get the full resource identifier for use in other Azure resources
270
+ * Alias for the id property
271
+ */
272
+ get resourceId(): string;
273
+ /**
274
+ * Get the role definition ID this assignment references
275
+ */
276
+ get roleDefinitionId(): string;
277
+ /**
278
+ * Get the principal ID that was granted this role
279
+ */
280
+ get principalId(): string;
281
+ /**
282
+ * Get the scope of this role assignment
283
+ */
284
+ get assignmentScope(): string;
285
+ /**
286
+ * Get the principal type
287
+ */
288
+ get principalType(): string | undefined;
289
+ /**
290
+ * Applies ignore changes lifecycle rules if specified in props
291
+ * Always includes body.properties.roleDefinitionId to handle Azure API format normalization
292
+ */
293
+ private _applyIgnoreChanges;
294
+ }