@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 @@
1
+ export * from "./lib";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUtcG9saWN5ZGVmaW5pdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbGliXCI7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./policy-definition-schemas";
2
+ export * from "./policy-definition";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./policy-definition-schemas"), exports);
18
+ __exportStar(require("./policy-definition"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcG9saWN5ZGVmaW5pdGlvbi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhEQUE0QztBQUM1QyxzREFBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wb2xpY3ktZGVmaW5pdGlvbi1zY2hlbWFzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wb2xpY3ktZGVmaW5pdGlvblwiO1xuIl19
@@ -0,0 +1,25 @@
1
+ /**
2
+ * API schemas for Azure Policy Definition across all supported versions
3
+ *
4
+ * This file defines the complete API schemas for Microsoft.Authorization/policyDefinitions
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 Policy Definition version 2021-06-01
11
+ * This is the latest stable API version for policy definitions
12
+ */
13
+ export declare const POLICY_DEFINITION_SCHEMA_2021_06_01: ApiSchema;
14
+ /**
15
+ * Version configuration for Policy Definition 2021-06-01
16
+ */
17
+ export declare const POLICY_DEFINITION_VERSION_2021_06_01: VersionConfig;
18
+ /**
19
+ * All supported Policy Definition versions for registration
20
+ */
21
+ export declare const ALL_POLICY_DEFINITION_VERSIONS: VersionConfig[];
22
+ /**
23
+ * Resource type constant
24
+ */
25
+ export declare const POLICY_DEFINITION_TYPE = "Microsoft.Authorization/policyDefinitions";
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * API schemas for Azure Policy Definition across all supported versions
4
+ *
5
+ * This file defines the complete API schemas for Microsoft.Authorization/policyDefinitions
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.POLICY_DEFINITION_TYPE = exports.ALL_POLICY_DEFINITION_VERSIONS = exports.POLICY_DEFINITION_VERSION_2021_06_01 = exports.POLICY_DEFINITION_SCHEMA_2021_06_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 Policy Definition versions
17
+ */
18
+ const COMMON_PROPERTIES = {
19
+ name: {
20
+ dataType: version_interfaces_1.PropertyType.STRING,
21
+ required: false,
22
+ description: "The name of the policy definition. Must be unique within the scope (subscription or management group)",
23
+ validation: [
24
+ {
25
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
26
+ value: "^[a-zA-Z0-9_-]+$",
27
+ message: "Policy definition name can only contain alphanumeric characters, underscores, and hyphens",
28
+ },
29
+ {
30
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
31
+ value: { minLength: 1, maxLength: 64 },
32
+ message: "Policy definition name must be between 1 and 64 characters",
33
+ },
34
+ ],
35
+ },
36
+ displayName: {
37
+ dataType: version_interfaces_1.PropertyType.STRING,
38
+ required: false,
39
+ description: "The display name of the policy definition",
40
+ validation: [
41
+ {
42
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
43
+ value: { minLength: 1, maxLength: 128 },
44
+ message: "Display name must be between 1 and 128 characters",
45
+ },
46
+ ],
47
+ },
48
+ description: {
49
+ dataType: version_interfaces_1.PropertyType.STRING,
50
+ required: false,
51
+ description: "The policy definition description. Provides detailed information about what the policy enforces",
52
+ validation: [
53
+ {
54
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
55
+ value: { minLength: 0, maxLength: 512 },
56
+ message: "Description must not exceed 512 characters",
57
+ },
58
+ ],
59
+ },
60
+ policyType: {
61
+ dataType: version_interfaces_1.PropertyType.STRING,
62
+ required: false,
63
+ defaultValue: "Custom",
64
+ description: "The type of policy definition. Valid values: NotSpecified, BuiltIn, Static, Custom",
65
+ validation: [
66
+ {
67
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
68
+ value: "^(NotSpecified|BuiltIn|Static|Custom)$",
69
+ message: "Policy type must be one of: NotSpecified, BuiltIn, Static, Custom",
70
+ },
71
+ ],
72
+ },
73
+ mode: {
74
+ dataType: version_interfaces_1.PropertyType.STRING,
75
+ required: false,
76
+ defaultValue: "All",
77
+ description: "The policy mode. Determines which resource types will be evaluated. Valid values: All, Indexed, or resource provider modes",
78
+ validation: [
79
+ {
80
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
81
+ value: version_interfaces_1.PropertyType.STRING,
82
+ message: "Mode must be a string value",
83
+ },
84
+ ],
85
+ },
86
+ policyRule: {
87
+ dataType: version_interfaces_1.PropertyType.OBJECT,
88
+ required: true,
89
+ description: "The policy rule as a JSON object containing if/then logic that defines the policy enforcement",
90
+ validation: [
91
+ {
92
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
93
+ message: "Policy rule is required for policy definitions",
94
+ },
95
+ {
96
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
97
+ value: version_interfaces_1.PropertyType.OBJECT,
98
+ message: "Policy rule must be a valid JSON object",
99
+ },
100
+ ],
101
+ },
102
+ parameters: {
103
+ dataType: version_interfaces_1.PropertyType.OBJECT,
104
+ required: false,
105
+ description: "Parameters for the policy definition. Allows policy assignments to provide values that are used in the policy rule",
106
+ validation: [
107
+ {
108
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
109
+ value: version_interfaces_1.PropertyType.OBJECT,
110
+ message: "Parameters must be a valid JSON object",
111
+ },
112
+ ],
113
+ },
114
+ metadata: {
115
+ dataType: version_interfaces_1.PropertyType.OBJECT,
116
+ required: false,
117
+ description: "Metadata for the policy definition. Used to store additional information like category, version, etc.",
118
+ validation: [
119
+ {
120
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
121
+ value: version_interfaces_1.PropertyType.OBJECT,
122
+ message: "Metadata must be a valid JSON object",
123
+ },
124
+ ],
125
+ },
126
+ ignoreChanges: {
127
+ dataType: version_interfaces_1.PropertyType.ARRAY,
128
+ required: false,
129
+ description: "Array of property names to ignore during updates",
130
+ validation: [
131
+ {
132
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
133
+ value: version_interfaces_1.PropertyType.ARRAY,
134
+ message: "IgnoreChanges must be an array of strings",
135
+ },
136
+ ],
137
+ },
138
+ };
139
+ // =============================================================================
140
+ // VERSION-SPECIFIC SCHEMAS
141
+ // =============================================================================
142
+ /**
143
+ * API Schema for Policy Definition version 2021-06-01
144
+ * This is the latest stable API version for policy definitions
145
+ */
146
+ exports.POLICY_DEFINITION_SCHEMA_2021_06_01 = {
147
+ resourceType: "Microsoft.Authorization/policyDefinitions",
148
+ version: "2021-06-01",
149
+ properties: {
150
+ ...COMMON_PROPERTIES,
151
+ },
152
+ required: ["policyRule"],
153
+ optional: [
154
+ "name",
155
+ "displayName",
156
+ "description",
157
+ "policyType",
158
+ "mode",
159
+ "parameters",
160
+ "metadata",
161
+ "ignoreChanges",
162
+ ],
163
+ deprecated: [],
164
+ transformationRules: {},
165
+ validationRules: [
166
+ {
167
+ property: "policyRule",
168
+ rules: [
169
+ {
170
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
171
+ message: "Policy rule is required for policy definitions",
172
+ },
173
+ ],
174
+ },
175
+ ],
176
+ };
177
+ // =============================================================================
178
+ // VERSION CONFIGURATIONS
179
+ // =============================================================================
180
+ /**
181
+ * Version configuration for Policy Definition 2021-06-01
182
+ */
183
+ exports.POLICY_DEFINITION_VERSION_2021_06_01 = {
184
+ version: "2021-06-01",
185
+ schema: exports.POLICY_DEFINITION_SCHEMA_2021_06_01,
186
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
187
+ releaseDate: "2021-06-01",
188
+ deprecationDate: undefined,
189
+ sunsetDate: undefined,
190
+ breakingChanges: [],
191
+ migrationGuide: "/docs/policy-definition/migration-2021-06-01",
192
+ changeLog: [
193
+ {
194
+ changeType: "added",
195
+ description: "Stable release of Policy Definition API with full support for custom policies",
196
+ breaking: false,
197
+ },
198
+ ],
199
+ };
200
+ /**
201
+ * All supported Policy Definition versions for registration
202
+ */
203
+ exports.ALL_POLICY_DEFINITION_VERSIONS = [
204
+ exports.POLICY_DEFINITION_VERSION_2021_06_01,
205
+ ];
206
+ /**
207
+ * Resource type constant
208
+ */
209
+ exports.POLICY_DEFINITION_TYPE = "Microsoft.Authorization/policyDefinitions";
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWRlZmluaXRpb24tc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1wb2xpY3lkZWZpbml0aW9uL2xpYi9wb2xpY3ktZGVmaW5pdGlvbi1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1QsdUdBQXVHO1FBQ3pHLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxhQUFhO2dCQUMxQyxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixPQUFPLEVBQ0wsMkZBQTJGO2FBQzlGO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFdBQVc7Z0JBQ3hDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtnQkFDdEMsT0FBTyxFQUFFLDREQUE0RDthQUN0RTtTQUNGO0tBQ0Y7SUFDRCxXQUFXLEVBQUU7UUFDWCxRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsV0FBVztnQkFDeEMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUN2QyxPQUFPLEVBQUUsbURBQW1EO2FBQzdEO1NBQ0Y7S0FDRjtJQUNELFdBQVcsRUFBRTtRQUNYLFFBQVEsRUFBRSxpQ0FBWSxDQUFD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Q3hCLFFBQVEsRUFBRTtRQUNSLE1BQU07UUFDTixhQUFhO1FBQ2IsYUFBYTtRQUNiLFlBQVk7UUFDWixNQUFNO1FBQ04sWUFBWTtRQUNaLFVBQVU7UUFDVixlQUFlO0tBQ2hCO0lBQ0QsVUFBVSxFQUFFLEVBQUU7SUFDZCxtQkFBbUIsRUFBRSxFQUFFO0lBQ3ZCLGVBQWUsRUFBRTtRQUNmO1lBQ0UsUUFBUSxFQUFFLFlBQVk7WUFDdEIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO29CQUNyQyxPQUFPLEVBQUUsZ0RBQWdEO2lCQUMxRDthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixnRkFBZ0Y7QUFDaEYseUJBQXlCO0FBQ3pCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNVLFFBQUEsb0NBQW9DLEdBQWtCO0lBQ2pFLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE1BQU0sRUFBRSwyQ0FBbUM7SUFDM0MsWUFBWSxFQUFFLHdDQUFtQixDQUFDLE1BQU07SUFDeEMsV0FBVyxFQUFFLFlBQVk7SUFDekIsZUFBZSxFQUFFLFNBQVM7SUFDMUIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsY0FBYyxFQUFFLDhDQUE4QztJQUM5RCxTQUFTLEVBQUU7UUFDVDtZQUNFLFVBQVUsRUFBRSxPQUFPO1lBQ25CLFdBQVcsRUFDVCwrRUFBK0U7WUFDakYsUUFBUSxFQUFFLEtBQUs7U0FDaEI7S0FDRjtDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsOEJBQThCLEdBQW9CO0lBQzdELDRDQUFvQztDQUNyQyxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLHNCQUFzQixHQUNqQywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQVBJIHNjaGVtYXMgZm9yIEF6dXJlIFBvbGljeSBEZWZpbml0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIHZlcnNpb25zXG4gKlxuICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvbXBsZXRlIEFQSSBzY2hlbWFzIGZvciBNaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9uc1xuICogYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLiBUaGUgc2NoZW1hcyBhcmUgdXNlZCBieSB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICogZnJhbWV3b3JrIGZvciB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgYW5kIHZlcnNpb24gbWFuYWdlbWVudC5cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgUHJvcGVydHlUeXBlLFxuICBWYWxpZGF0aW9uUnVsZVR5cGUsXG4gIFZlcnNpb25Db25maWcsXG4gIFZlcnNpb25TdXBwb3J0TGV2ZWwsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTU1PTiBQUk9QRVJUWSBERUZJTklUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydHkgZGVmaW5pdGlvbnMgc2hhcmVkIGFjcm9zcyBhbGwgUG9saWN5IERlZmluaXRpb24gdmVyc2lvbnNcbiAqL1xuY29uc3QgQ09NTU9OX1BST1BFUlRJRVM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEZWZpbml0aW9uIH0gPSB7XG4gIG5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBuYW1lIG9mIHRoZSBwb2xpY3kgZGVmaW5pdGlvbi4gTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZSAoc3Vic2NyaXB0aW9uIG9yIG1hbmFnZW1lbnQgZ3JvdXApXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlBBVFRFUk5fTUFUQ0gsXG4gICAgICAgIHZhbHVlOiBcIl5bYS16QS1aMC05Xy1dKyRcIixcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIlBvbGljeSBkZWZpbml0aW9uIG5hbWUgY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgdW5kZXJzY29yZXMsIGFuZCBoeXBoZW5zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDEsIG1heExlbmd0aDogNjQgfSxcbiAgICAgICAgbWVzc2FnZTogXCJQb2xpY3kgZGVmaW5pdGlvbiBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA2NCBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGRpc3BsYXlOYW1lOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBvbGljeSBkZWZpbml0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDEsIG1heExlbmd0aDogMTI4IH0sXG4gICAgICAgIG1lc3NhZ2U6IFwiRGlzcGxheSBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMjggY2hhcmFjdGVyc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBkZXNjcmlwdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHBvbGljeSBkZWZpbml0aW9uIGRlc2NyaXB0aW9uLiBQcm92aWRlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHRoZSBwb2xpY3kgZW5mb3JjZXNcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0UsXG4gICAgICAgIHZhbHVlOiB7IG1pbkxlbmd0aDogMCwgbWF4TGVuZ3RoOiA1MTIgfSxcbiAgICAgICAgbWVzc2FnZTogXCJEZXNjcmlwdGlvbiBtdXN0IG5vdCBleGNlZWQgNTEyIGNoYXJhY3RlcnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcG9saWN5VHlwZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IFwiQ3VzdG9tXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSB0eXBlIG9mIHBvbGljeSBkZWZpbml0aW9uLiBWYWxpZCB2YWx1ZXM6IE5vdFNwZWNpZmllZCwgQnVpbHRJbiwgU3RhdGljLCBDdXN0b21cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXihOb3RTcGVjaWZpZWR8QnVpbHRJbnxTdGF0aWN8Q3VzdG9tKSRcIixcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIlBvbGljeSB0eXBlIG11c3QgYmUgb25lIG9mOiBOb3RTcGVjaWZpZWQsIEJ1aWx0SW4sIFN0YXRpYywgQ3VzdG9tXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIG1vZGU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlOiBcIkFsbFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcG9saWN5IG1vZGUuIERldGVybWluZXMgd2hpY2ggcmVzb3VyY2UgdHlwZXMgd2lsbCBiZSBldmFsdWF0ZWQuIFZhbGlkIHZhbHVlczogQWxsLCBJbmRleGVkLCBvciByZXNvdXJjZSBwcm92aWRlciBtb2Rlc1wiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICAgICAgbWVzc2FnZTogXCJNb2RlIG11c3QgYmUgYSBzdHJpbmcgdmFsdWVcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcG9saWN5UnVsZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcG9saWN5IHJ1bGUgYXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIGlmL3RoZW4gbG9naWMgdGhhdCBkZWZpbmVzIHRoZSBwb2xpY3kgZW5mb3JjZW1lbnRcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiUG9saWN5IHJ1bGUgaXMgcmVxdWlyZWQgZm9yIHBvbGljeSBkZWZpbml0aW9uc1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICAgICAgbWVzc2FnZTogXCJQb2xpY3kgcnVsZSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiUGFyYW1ldGVycyBmb3IgdGhlIHBvbGljeSBkZWZpbml0aW9uLiBBbGxvd3MgcG9saWN5IGFzc2lnbm1lbnRzIHRvIHByb3ZpZGUgdmFsdWVzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHBvbGljeSBydWxlXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcIlBhcmFtZXRlcnMgbXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIG1ldGFkYXRhOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJNZXRhZGF0YSBmb3IgdGhlIHBvbGljeSBkZWZpbml0aW9uLiBVc2VkIHRvIHN0b3JlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gbGlrZSBjYXRlZ29yeSwgdmVyc2lvbiwgZXRjLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICAgICAgbWVzc2FnZTogXCJNZXRhZGF0YSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaWdub3JlQ2hhbmdlczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHRvIGlnbm9yZSBkdXJpbmcgdXBkYXRlc1wiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgICAgICBtZXNzYWdlOiBcIklnbm9yZUNoYW5nZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTi1TUEVDSUZJQyBTQ0hFTUFTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFQSSBTY2hlbWEgZm9yIFBvbGljeSBEZWZpbml0aW9uIHZlcnNpb24gMjAyMS0wNi0wMVxuICogVGhpcyBpcyB0aGUgbGF0ZXN0IHN0YWJsZSBBUEkgdmVyc2lvbiBmb3IgcG9saWN5IGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBQT0xJQ1lfREVGSU5JVElPTl9TQ0hFTUFfMjAyMV8wNl8wMTogQXBpU2NoZW1hID0ge1xuICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnNcIixcbiAgdmVyc2lvbjogXCIyMDIxLTA2LTAxXCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5DT01NT05fUFJPUEVSVElFUyxcbiAgfSxcbiAgcmVxdWlyZWQ6IFtcInBvbGljeVJ1bGVcIl0sXG4gIG9wdGlvbmFsOiBbXG4gICAgXCJuYW1lXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiLFxuICAgIFwiZGVzY3JpcHRpb25cIixcbiAgICBcInBvbGljeVR5cGVcIixcbiAgICBcIm1vZGVcIixcbiAgICBcInBhcmFtZXRlcnNcIixcbiAgICBcIm1ldGFkYXRhXCIsXG4gICAgXCJpZ25vcmVDaGFuZ2VzXCIsXG4gIF0sXG4gIGRlcHJlY2F0ZWQ6IFtdLFxuICB0cmFuc2Zvcm1hdGlvblJ1bGVzOiB7fSxcbiAgdmFsaWRhdGlvblJ1bGVzOiBbXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwicG9saWN5UnVsZVwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJQb2xpY3kgcnVsZSBpcyByZXF1aXJlZCBmb3IgcG9saWN5IGRlZmluaXRpb25zXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTiBDT05GSUdVUkFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBWZXJzaW9uIGNvbmZpZ3VyYXRpb24gZm9yIFBvbGljeSBEZWZpbml0aW9uIDIwMjEtMDYtMDFcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9ERUZJTklUSU9OX1ZFUlNJT05fMjAyMV8wNl8wMTogVmVyc2lvbkNvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCIyMDIxLTA2LTAxXCIsXG4gIHNjaGVtYTogUE9MSUNZX0RFRklOSVRJT05fU0NIRU1BXzIwMjFfMDZfMDEsXG4gIHN1cHBvcnRMZXZlbDogVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gIHJlbGVhc2VEYXRlOiBcIjIwMjEtMDYtMDFcIixcbiAgZGVwcmVjYXRpb25EYXRlOiB1bmRlZmluZWQsXG4gIHN1bnNldERhdGU6IHVuZGVmaW5lZCxcbiAgYnJlYWtpbmdDaGFuZ2VzOiBbXSxcbiAgbWlncmF0aW9uR3VpZGU6IFwiL2RvY3MvcG9saWN5LWRlZmluaXRpb24vbWlncmF0aW9uLTIwMjEtMDYtMDFcIixcbiAgY2hhbmdlTG9nOiBbXG4gICAge1xuICAgICAgY2hhbmdlVHlwZTogXCJhZGRlZFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3RhYmxlIHJlbGVhc2Ugb2YgUG9saWN5IERlZmluaXRpb24gQVBJIHdpdGggZnVsbCBzdXBwb3J0IGZvciBjdXN0b20gcG9saWNpZXNcIixcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBBbGwgc3VwcG9ydGVkIFBvbGljeSBEZWZpbml0aW9uIHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9QT0xJQ1lfREVGSU5JVElPTl9WRVJTSU9OUzogVmVyc2lvbkNvbmZpZ1tdID0gW1xuICBQT0xJQ1lfREVGSU5JVElPTl9WRVJTSU9OXzIwMjFfMDZfMDEsXG5dO1xuXG4vKipcbiAqIFJlc291cmNlIHR5cGUgY29uc3RhbnRcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9ERUZJTklUSU9OX1RZUEUgPVxuICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zXCI7XG4iXX0=
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Unified Azure Policy Definition implementation using VersionedAzapiResource framework
3
+ *
4
+ * This class provides a version-aware implementation for managing Azure Policy Definitions
5
+ * using the AZAPI provider. Policy definitions are deployed at subscription or management
6
+ * group scope and define the rules and parameters for policy enforcement.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2021-06-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 custom policy rules and parameters
16
+ * - JSII compliance for multi-language support
17
+ */
18
+ import * as cdktf from "cdktf";
19
+ import { Construct } from "constructs";
20
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
21
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
22
+ /**
23
+ * Properties for the unified Azure Policy Definition
24
+ *
25
+ * Extends AzapiResourceProps with Policy Definition specific properties
26
+ */
27
+ export interface PolicyDefinitionProps extends AzapiResourceProps {
28
+ /**
29
+ * The display name of the policy definition
30
+ * Provides a human-readable name for the policy
31
+ *
32
+ * @example "Require tag and its value on resources"
33
+ */
34
+ readonly displayName?: string;
35
+ /**
36
+ * The policy definition description
37
+ * Provides detailed information about what the policy enforces
38
+ *
39
+ * @example "Enforces a required tag and its value on resources"
40
+ */
41
+ readonly description?: string;
42
+ /**
43
+ * The type of policy definition
44
+ * @default "Custom"
45
+ * @example "Custom", "BuiltIn", "Static", "NotSpecified"
46
+ */
47
+ readonly policyType?: string;
48
+ /**
49
+ * The policy mode
50
+ * Determines which resource types will be evaluated
51
+ * @default "All"
52
+ * @example "All", "Indexed", "Microsoft.KeyVault.Data"
53
+ */
54
+ readonly mode?: string;
55
+ /**
56
+ * The policy rule as a JSON object
57
+ * Defines the if/then logic that determines policy enforcement
58
+ * This is required for all policy definitions
59
+ *
60
+ * @example
61
+ * {
62
+ * if: {
63
+ * field: "tags['Environment']",
64
+ * exists: "false"
65
+ * },
66
+ * then: {
67
+ * effect: "deny"
68
+ * }
69
+ * }
70
+ */
71
+ readonly policyRule: any;
72
+ /**
73
+ * Parameters for the policy definition
74
+ * Allows policy assignments to provide values that are used in the policy rule
75
+ *
76
+ * @example
77
+ * {
78
+ * tagName: {
79
+ * type: "String",
80
+ * metadata: {
81
+ * displayName: "Tag Name",
82
+ * description: "Name of the tag to enforce"
83
+ * }
84
+ * }
85
+ * }
86
+ */
87
+ readonly parameters?: any;
88
+ /**
89
+ * Metadata for the policy definition
90
+ * Used to store additional information like category, version, etc.
91
+ *
92
+ * @example
93
+ * {
94
+ * category: "Tags",
95
+ * version: "1.0.0"
96
+ * }
97
+ */
98
+ readonly metadata?: any;
99
+ /**
100
+ * The lifecycle rules to ignore changes
101
+ * @example ["metadata"]
102
+ */
103
+ readonly ignoreChanges?: string[];
104
+ }
105
+ /**
106
+ * Properties interface for Azure Policy Definition
107
+ * This is required for JSII compliance to support multi-language code generation
108
+ */
109
+ export interface PolicyDefinitionProperties {
110
+ /**
111
+ * The display name of the policy definition
112
+ */
113
+ readonly displayName?: string;
114
+ /**
115
+ * The policy definition description
116
+ */
117
+ readonly description?: string;
118
+ /**
119
+ * The type of policy definition
120
+ */
121
+ readonly policyType?: string;
122
+ /**
123
+ * The policy mode
124
+ */
125
+ readonly mode?: string;
126
+ /**
127
+ * The policy rule object
128
+ */
129
+ readonly policyRule: any;
130
+ /**
131
+ * Parameters for the policy definition
132
+ */
133
+ readonly parameters?: any;
134
+ /**
135
+ * Metadata for the policy definition
136
+ */
137
+ readonly metadata?: any;
138
+ }
139
+ /**
140
+ * The resource body interface for Azure Policy Definition API calls
141
+ * This matches the Azure REST API schema for policy definitions
142
+ */
143
+ export interface PolicyDefinitionBody {
144
+ /**
145
+ * The properties of the policy definition
146
+ */
147
+ readonly properties: PolicyDefinitionProperties;
148
+ }
149
+ /**
150
+ * Unified Azure Policy Definition implementation
151
+ *
152
+ * This class provides a single, version-aware implementation for managing Azure
153
+ * Policy Definitions. It automatically handles version resolution, schema validation,
154
+ * and property transformation.
155
+ *
156
+ * Note: Policy definitions are deployed at subscription or management group scope.
157
+ * Unlike most Azure resources, they do not have a location property as they are
158
+ * not region-specific.
159
+ *
160
+ * @example
161
+ * // Basic custom policy definition:
162
+ * const policyDefinition = new PolicyDefinition(this, "policy", {
163
+ * name: "require-tag-policy",
164
+ * displayName: "Require tag on resources",
165
+ * description: "Enforces a required tag on resources",
166
+ * policyRule: {
167
+ * if: {
168
+ * field: "tags['Environment']",
169
+ * exists: "false"
170
+ * },
171
+ * then: {
172
+ * effect: "deny"
173
+ * }
174
+ * }
175
+ * });
176
+ *
177
+ * @example
178
+ * // Policy definition with parameters:
179
+ * const policyDefinition = new PolicyDefinition(this, "policy", {
180
+ * name: "require-tag-policy",
181
+ * displayName: "Require tag on resources",
182
+ * policyRule: {
183
+ * if: {
184
+ * field: "[concat('tags[', parameters('tagName'), ']')]",
185
+ * exists: "false"
186
+ * },
187
+ * then: {
188
+ * effect: "deny"
189
+ * }
190
+ * },
191
+ * parameters: {
192
+ * tagName: {
193
+ * type: "String",
194
+ * metadata: {
195
+ * displayName: "Tag Name"
196
+ * }
197
+ * }
198
+ * }
199
+ * });
200
+ *
201
+ * @stability stable
202
+ */
203
+ export declare class PolicyDefinition extends AzapiResource {
204
+ /**
205
+ * The input properties for this Policy Definition instance
206
+ */
207
+ readonly props: PolicyDefinitionProps;
208
+ readonly idOutput: cdktf.TerraformOutput;
209
+ readonly nameOutput: cdktf.TerraformOutput;
210
+ /**
211
+ * Creates a new Azure Policy Definition using the VersionedAzapiResource framework
212
+ *
213
+ * The constructor automatically handles version resolution, schema registration,
214
+ * validation, and resource creation.
215
+ *
216
+ * @param scope - The scope in which to define this construct
217
+ * @param id - The unique identifier for this instance
218
+ * @param props - Configuration properties for the Policy Definition
219
+ */
220
+ constructor(scope: Construct, id: string, props: PolicyDefinitionProps);
221
+ /**
222
+ * Gets the default API version to use when no explicit version is specified
223
+ * Returns the most recent stable version as the default
224
+ */
225
+ protected defaultVersion(): string;
226
+ /**
227
+ * Gets the Azure resource type for Policy Definitions
228
+ */
229
+ protected resourceType(): string;
230
+ /**
231
+ * Gets the API schema for the resolved version
232
+ * Uses the framework's schema resolution to get the appropriate schema
233
+ */
234
+ protected apiSchema(): ApiSchema;
235
+ /**
236
+ * Creates the resource body for the Azure API call
237
+ * Transforms the input properties into the JSON format expected by Azure REST API
238
+ *
239
+ * Note: Policy definitions do not have a location property as they are
240
+ * subscription or management group scoped resources.
241
+ */
242
+ protected createResourceBody(props: any): any;
243
+ /**
244
+ * Get the full resource identifier for use in other Azure resources
245
+ * Alias for the id property
246
+ */
247
+ get resourceId(): string;
248
+ /**
249
+ * Get the policy type
250
+ */
251
+ get policyType(): string;
252
+ /**
253
+ * Get the policy mode
254
+ */
255
+ get policyMode(): string;
256
+ /**
257
+ * Applies ignore changes lifecycle rules if specified in props
258
+ */
259
+ private _applyIgnoreChanges;
260
+ }