@microsoft/terraform-cdk-constructs 2.2.0 → 2.5.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 (250) hide show
  1. package/.jsii +64029 -35477
  2. package/API.md +89314 -49618
  3. package/README.md +15 -0
  4. package/docs/azure-api-version-update-pipeline.md +271 -0
  5. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  6. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  7. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  8. package/lib/azure-applicationinsights/index.d.ts +7 -0
  9. package/lib/azure-applicationinsights/index.js +24 -0
  10. package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
  11. package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
  12. package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
  13. package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
  14. package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
  15. package/lib/azure-applicationinsights/lib/index.js +22 -0
  16. package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
  17. package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
  18. package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
  19. package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
  20. package/lib/azure-containerapps/lib/container-app-environment.js +1 -1
  21. package/lib/azure-containerapps/lib/container-app.js +1 -1
  22. package/lib/azure-containerapps/lib/container-apps-job-schemas.d.ts +8 -0
  23. package/lib/azure-containerapps/lib/container-apps-job-schemas.js +179 -0
  24. package/lib/azure-containerapps/lib/container-apps-job.d.ts +128 -0
  25. package/lib/azure-containerapps/lib/container-apps-job.js +81 -0
  26. package/lib/azure-containerapps/lib/index.d.ts +2 -0
  27. package/lib/azure-containerapps/lib/index.js +3 -1
  28. package/lib/azure-containerapps/test/container-apps-job.integ.d.ts +6 -0
  29. package/lib/azure-containerapps/test/container-apps-job.integ.js +95 -0
  30. package/lib/azure-containerapps/test/container-apps-job.spec.d.ts +1 -0
  31. package/lib/azure-containerapps/test/container-apps-job.spec.js +261 -0
  32. package/lib/azure-containerregistry/index.d.ts +1 -0
  33. package/lib/azure-containerregistry/index.js +18 -0
  34. package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
  35. package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
  36. package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
  37. package/lib/azure-containerregistry/lib/container-registry.js +217 -0
  38. package/lib/azure-containerregistry/lib/index.d.ts +2 -0
  39. package/lib/azure-containerregistry/lib/index.js +19 -0
  40. package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
  41. package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
  42. package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
  43. package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
  44. package/lib/azure-cosmosdb/index.d.ts +1 -0
  45. package/lib/azure-cosmosdb/index.js +18 -0
  46. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
  47. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
  48. package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
  49. package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
  50. package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
  51. package/lib/azure-cosmosdb/lib/index.js +19 -0
  52. package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
  53. package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
  54. package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
  55. package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
  56. package/lib/azure-dataexplorer/index.d.ts +1 -0
  57. package/lib/azure-dataexplorer/index.js +18 -0
  58. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.d.ts +5 -0
  59. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.js +131 -0
  60. package/lib/azure-dataexplorer/lib/data-explorer-cluster.d.ts +54 -0
  61. package/lib/azure-dataexplorer/lib/data-explorer-cluster.js +91 -0
  62. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.d.ts +5 -0
  63. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.js +78 -0
  64. package/lib/azure-dataexplorer/lib/data-explorer-database.d.ts +24 -0
  65. package/lib/azure-dataexplorer/lib/data-explorer-database.js +68 -0
  66. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.d.ts +5 -0
  67. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.js +94 -0
  68. package/lib/azure-dataexplorer/lib/data-explorer-table.d.ts +25 -0
  69. package/lib/azure-dataexplorer/lib/data-explorer-table.js +62 -0
  70. package/lib/azure-dataexplorer/lib/index.d.ts +6 -0
  71. package/lib/azure-dataexplorer/lib/index.js +23 -0
  72. package/lib/azure-dataexplorer/test/data-explorer.integ.d.ts +1 -0
  73. package/lib/azure-dataexplorer/test/data-explorer.integ.js +78 -0
  74. package/lib/azure-dataexplorer/test/data-explorer.spec.d.ts +1 -0
  75. package/lib/azure-dataexplorer/test/data-explorer.spec.js +248 -0
  76. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  77. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  78. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  79. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  80. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  81. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  82. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  83. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  84. package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
  85. package/lib/azure-eventgrideventsubscription/index.d.ts +1 -0
  86. package/lib/azure-eventgrideventsubscription/index.js +18 -0
  87. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.d.ts +5 -0
  88. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.js +151 -0
  89. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.d.ts +59 -0
  90. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.js +67 -0
  91. package/lib/azure-eventgrideventsubscription/lib/index.d.ts +2 -0
  92. package/lib/azure-eventgrideventsubscription/lib/index.js +19 -0
  93. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.d.ts +1 -0
  94. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.js +100 -0
  95. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.d.ts +1 -0
  96. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.js +242 -0
  97. package/lib/azure-eventgridsystemtopic/index.d.ts +1 -0
  98. package/lib/azure-eventgridsystemtopic/index.js +18 -0
  99. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.d.ts +5 -0
  100. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.js +164 -0
  101. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.d.ts +46 -0
  102. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.js +68 -0
  103. package/lib/azure-eventgridsystemtopic/lib/index.d.ts +2 -0
  104. package/lib/azure-eventgridsystemtopic/lib/index.js +19 -0
  105. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.d.ts +1 -0
  106. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.js +64 -0
  107. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.d.ts +1 -0
  108. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.js +241 -0
  109. package/lib/azure-eventhub/index.d.ts +7 -0
  110. package/lib/azure-eventhub/index.js +24 -0
  111. package/lib/azure-eventhub/lib/event-hub-namespace.d.ts +204 -0
  112. package/lib/azure-eventhub/lib/event-hub-namespace.js +178 -0
  113. package/lib/azure-eventhub/lib/event-hub-schemas.d.ts +63 -0
  114. package/lib/azure-eventhub/lib/event-hub-schemas.js +370 -0
  115. package/lib/azure-eventhub/lib/event-hub.d.ts +153 -0
  116. package/lib/azure-eventhub/lib/event-hub.js +171 -0
  117. package/lib/azure-eventhub/lib/index.d.ts +6 -0
  118. package/lib/azure-eventhub/lib/index.js +23 -0
  119. package/lib/azure-eventhub/test/event-hub.integ.d.ts +9 -0
  120. package/lib/azure-eventhub/test/event-hub.integ.js +113 -0
  121. package/lib/azure-eventhub/test/event-hub.spec.d.ts +8 -0
  122. package/lib/azure-eventhub/test/event-hub.spec.js +438 -0
  123. package/lib/azure-functionapp/index.d.ts +1 -0
  124. package/lib/azure-functionapp/index.js +18 -0
  125. package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
  126. package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
  127. package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
  128. package/lib/azure-functionapp/lib/function-app.js +223 -0
  129. package/lib/azure-functionapp/lib/index.d.ts +2 -0
  130. package/lib/azure-functionapp/lib/index.js +19 -0
  131. package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
  132. package/lib/azure-functionapp/test/function-app.integ.js +134 -0
  133. package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
  134. package/lib/azure-functionapp/test/function-app.spec.js +566 -0
  135. package/lib/azure-keyvault/index.d.ts +1 -0
  136. package/lib/azure-keyvault/index.js +18 -0
  137. package/lib/azure-keyvault/lib/index.d.ts +2 -0
  138. package/lib/azure-keyvault/lib/index.js +19 -0
  139. package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
  140. package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
  141. package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
  142. package/lib/azure-keyvault/lib/key-vault.js +243 -0
  143. package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
  144. package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
  145. package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
  146. package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
  147. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
  148. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  149. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  150. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  151. package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
  152. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  153. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  154. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
  155. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  156. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  157. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  158. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  159. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  160. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  161. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  162. package/lib/azure-sreagent/index.d.ts +1 -0
  163. package/lib/azure-sreagent/index.js +18 -0
  164. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  165. package/lib/azure-sreagent/lib/index.js +19 -0
  166. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  167. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  168. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  169. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  170. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  171. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  172. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  173. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  174. package/lib/azure-staticwebapp/index.d.ts +1 -0
  175. package/lib/azure-staticwebapp/index.js +18 -0
  176. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  177. package/lib/azure-staticwebapp/lib/index.js +19 -0
  178. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  179. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  180. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  181. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  182. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  183. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  184. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  185. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  186. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  187. package/lib/azure-storageblobcontainer/index.d.ts +1 -0
  188. package/lib/azure-storageblobcontainer/index.js +18 -0
  189. package/lib/azure-storageblobcontainer/lib/index.d.ts +2 -0
  190. package/lib/azure-storageblobcontainer/lib/index.js +19 -0
  191. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.d.ts +5 -0
  192. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.js +108 -0
  193. package/lib/azure-storageblobcontainer/lib/storage-blob-container.d.ts +37 -0
  194. package/lib/azure-storageblobcontainer/lib/storage-blob-container.js +63 -0
  195. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.d.ts +1 -0
  196. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.js +60 -0
  197. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.d.ts +1 -0
  198. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.js +172 -0
  199. package/lib/azure-subnet/lib/subnet.js +1 -1
  200. package/lib/azure-userassignedidentity/index.d.ts +1 -0
  201. package/lib/azure-userassignedidentity/index.js +18 -0
  202. package/lib/azure-userassignedidentity/lib/index.d.ts +2 -0
  203. package/lib/azure-userassignedidentity/lib/index.js +19 -0
  204. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.d.ts +8 -0
  205. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.js +107 -0
  206. package/lib/azure-userassignedidentity/lib/user-assigned-identity.d.ts +37 -0
  207. package/lib/azure-userassignedidentity/lib/user-assigned-identity.js +85 -0
  208. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.d.ts +1 -0
  209. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.js +64 -0
  210. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.d.ts +1 -0
  211. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.js +241 -0
  212. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  213. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  214. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
  215. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  216. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  217. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  218. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  219. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  220. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  221. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  222. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  223. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  224. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  225. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +66 -1
  226. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +141 -2
  227. package/lib/azure-vmss/lib/vmss-schemas.d.ts +195 -0
  228. package/lib/azure-vmss/lib/vmss-schemas.js +33 -1
  229. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +463 -1
  230. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  231. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  232. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  233. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  234. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  235. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  236. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  237. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  238. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  239. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  240. package/lib/index.d.ts +39 -0
  241. package/lib/index.js +41 -2
  242. package/lib/testing/index.js +20 -3
  243. package/lib/testing/lib/cleanup.js +1 -1
  244. package/lib/testing/lib/metadata.js +12 -4
  245. package/lib/testing/lib/naming.js +57 -1
  246. package/package.json +1 -1
  247. package/scripts/azure-version-updater/create-issue.ts +189 -0
  248. package/scripts/azure-version-updater/discover.ts +382 -0
  249. package/scripts/azure-version-updater/spec-mapping.ts +164 -0
  250. package/scripts/azure-version-updater/tsconfig.json +11 -0
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ /**
3
+ * API schemas for Azure Container Registry across all supported versions
4
+ *
5
+ * This file defines the complete API schemas for Microsoft.ContainerRegistry/registries
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.CONTAINER_REGISTRY_TYPE = exports.ALL_CONTAINER_REGISTRY_VERSIONS = exports.CONTAINER_REGISTRY_VERSION_2025_04_01 = exports.CONTAINER_REGISTRY_VERSION_2023_07_01 = exports.CONTAINER_REGISTRY_SCHEMA_2025_04_01 = exports.CONTAINER_REGISTRY_SCHEMA_2023_07_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 Container Registry versions
17
+ */
18
+ const COMMON_PROPERTIES = {
19
+ location: {
20
+ dataType: version_interfaces_1.PropertyType.STRING,
21
+ required: true,
22
+ description: "The Azure region where the Container Registry will be created",
23
+ validation: [
24
+ {
25
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
26
+ message: "Location is required for Container Registries",
27
+ },
28
+ {
29
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
30
+ value: "^[a-z0-9]+$",
31
+ message: "Location must contain only lowercase letters and numbers",
32
+ },
33
+ ],
34
+ },
35
+ tags: {
36
+ dataType: version_interfaces_1.PropertyType.OBJECT,
37
+ required: false,
38
+ defaultValue: {},
39
+ description: "A dictionary of tags to apply to the Container Registry",
40
+ validation: [
41
+ {
42
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
43
+ value: version_interfaces_1.PropertyType.OBJECT,
44
+ message: "Tags must be an object with string key-value pairs",
45
+ },
46
+ ],
47
+ },
48
+ name: {
49
+ dataType: version_interfaces_1.PropertyType.STRING,
50
+ required: true,
51
+ description: "The name of the Container Registry. Must be globally unique, 5-50 alphanumeric characters",
52
+ validation: [
53
+ {
54
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
55
+ message: "Container Registry name is required",
56
+ },
57
+ {
58
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
59
+ value: "^[a-zA-Z0-9]{5,50}$",
60
+ message: "Container Registry name must be 5-50 alphanumeric characters only",
61
+ },
62
+ ],
63
+ },
64
+ sku: {
65
+ dataType: version_interfaces_1.PropertyType.OBJECT,
66
+ required: true,
67
+ description: "The SKU (pricing tier) for the Container Registry (Basic, Standard, Premium)",
68
+ validation: [
69
+ {
70
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
71
+ message: "SKU is required for Container Registries",
72
+ },
73
+ ],
74
+ },
75
+ adminUserEnabled: {
76
+ dataType: version_interfaces_1.PropertyType.BOOLEAN,
77
+ required: false,
78
+ defaultValue: false,
79
+ description: "Whether the admin user is enabled for the registry",
80
+ },
81
+ publicNetworkAccess: {
82
+ dataType: version_interfaces_1.PropertyType.STRING,
83
+ required: false,
84
+ defaultValue: "Enabled",
85
+ description: "Whether public network access is enabled (Enabled or Disabled)",
86
+ validation: [
87
+ {
88
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
89
+ value: "^(Enabled|Disabled)$",
90
+ message: "Public network access must be either 'Enabled' or 'Disabled'",
91
+ },
92
+ ],
93
+ },
94
+ networkRuleSet: {
95
+ dataType: version_interfaces_1.PropertyType.OBJECT,
96
+ required: false,
97
+ description: "Network rule set configuration for the Container Registry (Premium SKU only)",
98
+ },
99
+ encryption: {
100
+ dataType: version_interfaces_1.PropertyType.OBJECT,
101
+ required: false,
102
+ description: "Encryption settings with customer-managed keys (Premium SKU only)",
103
+ },
104
+ policies: {
105
+ dataType: version_interfaces_1.PropertyType.OBJECT,
106
+ required: false,
107
+ description: "Policy configuration including retention, trust, export, quarantine, and soft delete policies",
108
+ },
109
+ identity: {
110
+ dataType: version_interfaces_1.PropertyType.OBJECT,
111
+ required: false,
112
+ description: "Managed identity configuration for the Container Registry",
113
+ },
114
+ zoneRedundancy: {
115
+ dataType: version_interfaces_1.PropertyType.STRING,
116
+ required: false,
117
+ defaultValue: "Disabled",
118
+ description: "Whether zone redundancy is enabled (Enabled or Disabled, Premium SKU only)",
119
+ validation: [
120
+ {
121
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
122
+ value: "^(Enabled|Disabled)$",
123
+ message: "Zone redundancy must be either 'Enabled' or 'Disabled'",
124
+ },
125
+ ],
126
+ },
127
+ dataEndpointEnabled: {
128
+ dataType: version_interfaces_1.PropertyType.BOOLEAN,
129
+ required: false,
130
+ defaultValue: false,
131
+ description: "Whether to enable a dedicated data endpoint (Premium SKU only)",
132
+ },
133
+ anonymousPullEnabled: {
134
+ dataType: version_interfaces_1.PropertyType.BOOLEAN,
135
+ required: false,
136
+ defaultValue: false,
137
+ description: "Whether anonymous pull is enabled for unauthenticated access (Standard or Premium SKU)",
138
+ },
139
+ networkRuleBypassOptions: {
140
+ dataType: version_interfaces_1.PropertyType.STRING,
141
+ required: false,
142
+ defaultValue: "AzureServices",
143
+ description: "Whether to allow trusted Azure Services to access a network restricted registry",
144
+ validation: [
145
+ {
146
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
147
+ value: "^(AzureServices|None)$",
148
+ message: "Network rule bypass options must be either 'AzureServices' or 'None'",
149
+ },
150
+ ],
151
+ },
152
+ ignoreChanges: {
153
+ dataType: version_interfaces_1.PropertyType.ARRAY,
154
+ required: false,
155
+ description: "Array of property names to ignore during updates",
156
+ validation: [
157
+ {
158
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
159
+ value: version_interfaces_1.PropertyType.ARRAY,
160
+ message: "IgnoreChanges must be an array of strings",
161
+ },
162
+ ],
163
+ },
164
+ };
165
+ // =============================================================================
166
+ // VERSION-SPECIFIC SCHEMAS
167
+ // =============================================================================
168
+ /**
169
+ * API Schema for Container Registry version 2023-07-01
170
+ */
171
+ exports.CONTAINER_REGISTRY_SCHEMA_2023_07_01 = {
172
+ resourceType: "Microsoft.ContainerRegistry/registries",
173
+ version: "2023-07-01",
174
+ properties: {
175
+ ...COMMON_PROPERTIES,
176
+ },
177
+ required: ["location", "name", "sku"],
178
+ optional: [
179
+ "tags",
180
+ "adminUserEnabled",
181
+ "publicNetworkAccess",
182
+ "networkRuleSet",
183
+ "encryption",
184
+ "policies",
185
+ "identity",
186
+ "zoneRedundancy",
187
+ "dataEndpointEnabled",
188
+ "anonymousPullEnabled",
189
+ "networkRuleBypassOptions",
190
+ "ignoreChanges",
191
+ ],
192
+ deprecated: [],
193
+ transformationRules: {},
194
+ validationRules: [
195
+ {
196
+ property: "location",
197
+ rules: [
198
+ {
199
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
200
+ message: "Location is required for Container Registries",
201
+ },
202
+ ],
203
+ },
204
+ {
205
+ property: "name",
206
+ rules: [
207
+ {
208
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
209
+ message: "Name is required for Container Registries",
210
+ },
211
+ ],
212
+ },
213
+ ],
214
+ };
215
+ /**
216
+ * API Schema for Container Registry version 2025-04-01
217
+ */
218
+ exports.CONTAINER_REGISTRY_SCHEMA_2025_04_01 = {
219
+ resourceType: "Microsoft.ContainerRegistry/registries",
220
+ version: "2025-04-01",
221
+ properties: {
222
+ ...COMMON_PROPERTIES,
223
+ },
224
+ required: ["location", "name", "sku"],
225
+ optional: [
226
+ "tags",
227
+ "adminUserEnabled",
228
+ "publicNetworkAccess",
229
+ "networkRuleSet",
230
+ "encryption",
231
+ "policies",
232
+ "identity",
233
+ "zoneRedundancy",
234
+ "dataEndpointEnabled",
235
+ "anonymousPullEnabled",
236
+ "networkRuleBypassOptions",
237
+ "ignoreChanges",
238
+ ],
239
+ deprecated: [],
240
+ transformationRules: {},
241
+ validationRules: [
242
+ {
243
+ property: "location",
244
+ rules: [
245
+ {
246
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
247
+ message: "Location is required for Container Registries",
248
+ },
249
+ ],
250
+ },
251
+ {
252
+ property: "name",
253
+ rules: [
254
+ {
255
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
256
+ message: "Name is required for Container Registries",
257
+ },
258
+ ],
259
+ },
260
+ ],
261
+ };
262
+ // =============================================================================
263
+ // VERSION CONFIGURATIONS
264
+ // =============================================================================
265
+ /**
266
+ * Version configuration for Container Registry 2023-07-01
267
+ */
268
+ exports.CONTAINER_REGISTRY_VERSION_2023_07_01 = {
269
+ version: "2023-07-01",
270
+ schema: exports.CONTAINER_REGISTRY_SCHEMA_2023_07_01,
271
+ supportLevel: version_interfaces_1.VersionSupportLevel.MAINTENANCE,
272
+ releaseDate: "2023-07-01",
273
+ deprecationDate: undefined,
274
+ sunsetDate: undefined,
275
+ breakingChanges: [],
276
+ migrationGuide: "/docs/container-registry/migration-2023-07-01",
277
+ changeLog: [
278
+ {
279
+ changeType: "updated",
280
+ description: "Stable release with policy and encryption support",
281
+ breaking: false,
282
+ },
283
+ ],
284
+ };
285
+ /**
286
+ * Version configuration for Container Registry 2025-04-01
287
+ */
288
+ exports.CONTAINER_REGISTRY_VERSION_2025_04_01 = {
289
+ version: "2025-04-01",
290
+ schema: exports.CONTAINER_REGISTRY_SCHEMA_2025_04_01,
291
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
292
+ releaseDate: "2025-04-01",
293
+ deprecationDate: undefined,
294
+ sunsetDate: undefined,
295
+ breakingChanges: [],
296
+ migrationGuide: "/docs/container-registry/migration-2025-04-01",
297
+ changeLog: [
298
+ {
299
+ changeType: "updated",
300
+ description: "Latest API version with improved features and performance enhancements",
301
+ breaking: false,
302
+ },
303
+ ],
304
+ };
305
+ /**
306
+ * All supported Container Registry versions for registration
307
+ */
308
+ exports.ALL_CONTAINER_REGISTRY_VERSIONS = [
309
+ exports.CONTAINER_REGISTRY_VERSION_2023_07_01,
310
+ exports.CONTAINER_REGISTRY_VERSION_2025_04_01,
311
+ ];
312
+ /**
313
+ * Resource type constant
314
+ */
315
+ exports.CONTAINER_REGISTRY_TYPE = "Microsoft.ContainerRegistry/registries";
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlZ2lzdHJ5LXNjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtY29udGFpbmVycmVnaXN0cnkvbGliL2NvbnRhaW5lci1yZWdpc3RyeS1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1QsK0RBQStEO1FBQ2pFLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsK0NBQStDO2FBQ3pEO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLGFBQWE7Z0JBQzFDLEtBQUssRUFBRSxhQUFhO2dCQUNwQixPQUFPLEVBQUUsMERBQTBEO2FBQ3BFO1NBQ0Y7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixZQUFZLEVBQUUsRUFBRTtRQUNoQixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUsb0RBQW9EO2FBQzlEO1NBQ0Y7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1QsMkZBQTJGO1FBQzdGLFVBQVUsRUFBRTtZQUNW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RTtRQUNUO1lBQ0UsVUFBVSxFQUFFLFNBQVM7WUFDckIsV0FBVyxFQUFFLG1EQUFtRDtZQUNoRSxRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxxQ0FBcUMsR0FBa0I7SUFDbEUsT0FBTyxFQUFFLFlBQVk7SUFDckIsTUFBTSxFQUFFLDRDQUFvQztJQUM1QyxZQUFZLEVBQUUsd0NBQW1CLENBQUMsTUFBTTtJQUN4QyxXQUFXLEVBQUUsWUFBWTtJQUN6QixlQUFlLEVBQUUsU0FBUztJQUMxQixVQUFVLEVBQUUsU0FBUztJQUNyQixlQUFlLEVBQUUsRUFBRTtJQUNuQixjQUFjLEVBQUUsK0NBQStDO0lBQy9ELFNBQVMsRUFBRTtRQUNUO1lBQ0UsVUFBVSxFQUFFLFNBQVM7WUFDckIsV0FBVyxFQUNULHdFQUF3RTtZQUMxRSxRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSwrQkFBK0IsR0FBb0I7SUFDOUQsNkNBQXFDO0lBQ3JDLDZDQUFxQztDQUN0QyxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLHVCQUF1QixHQUFHLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBUEkgc2NoZW1hcyBmb3IgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5IGFjcm9zcyBhbGwgc3VwcG9ydGVkIHZlcnNpb25zXG4gKlxuICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvbXBsZXRlIEFQSSBzY2hlbWFzIGZvciBNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllc1xuICogYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLiBUaGUgc2NoZW1hcyBhcmUgdXNlZCBieSB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICogZnJhbWV3b3JrIGZvciB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgYW5kIHZlcnNpb24gbWFuYWdlbWVudC5cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgUHJvcGVydHlUeXBlLFxuICBWYWxpZGF0aW9uUnVsZVR5cGUsXG4gIFZlcnNpb25Db25maWcsXG4gIFZlcnNpb25TdXBwb3J0TGV2ZWwsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTU1PTiBQUk9QRVJUWSBERUZJTklUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydHkgZGVmaW5pdGlvbnMgc2hhcmVkIGFjcm9zcyBhbGwgQ29udGFpbmVyIFJlZ2lzdHJ5IHZlcnNpb25zXG4gKi9cbmNvbnN0IENPTU1PTl9QUk9QRVJUSUVTOiB7IFtrZXk6IHN0cmluZ106IFByb3BlcnR5RGVmaW5pdGlvbiB9ID0ge1xuICBsb2NhdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgQXp1cmUgcmVnaW9uIHdoZXJlIHRoZSBDb250YWluZXIgUmVnaXN0cnkgd2lsbCBiZSBjcmVhdGVkXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIkxvY2F0aW9uIGlzIHJlcXVpcmVkIGZvciBDb250YWluZXIgUmVnaXN0cmllc1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENILFxuICAgICAgICB2YWx1ZTogXCJeW2EtejAtOV0rJFwiLFxuICAgICAgICBtZXNzYWdlOiBcIkxvY2F0aW9uIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzIGFuZCBudW1iZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHRhZ3M6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlOiB7fSxcbiAgICBkZXNjcmlwdGlvbjogXCJBIGRpY3Rpb25hcnkgb2YgdGFncyB0byBhcHBseSB0byB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcIlRhZ3MgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBzdHJpbmcga2V5LXZhbHVlIHBhaXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIG5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIG5hbWUgb2YgdGhlIENvbnRhaW5lciBSZWdpc3RyeS4gTXVzdCBiZSBnbG9iYWxseSB1bmlxdWUsIDUtNTAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnNcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiQ29udGFpbmVyIFJlZ2lzdHJ5IG5hbWUgaXMgcmVxdWlyZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXlthLXpBLVowLTldezUsNTB9JFwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiQ29udGFpbmVyIFJlZ2lzdHJ5IG5hbWUgbXVzdCBiZSA1LTUwIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9ubHlcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgc2t1OiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBTS1UgKHByaWNpbmcgdGllcikgZm9yIHRoZSBDb250YWluZXIgUmVnaXN0cnkgKEJhc2ljLCBTdGFuZGFyZCwgUHJlbWl1bSlcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiU0tVIGlzIHJlcXVpcmVkIGZvciBDb250YWluZXIgUmVnaXN0cmllc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBhZG1pblVzZXJFbmFibGVkOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5CT09MRUFOLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIldoZXRoZXIgdGhlIGFkbWluIHVzZXIgaXMgZW5hYmxlZCBmb3IgdGhlIHJlZ2lzdHJ5XCIsXG4gIH0sXG4gIHB1YmxpY05ldHdvcmtBY2Nlc3M6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlOiBcIkVuYWJsZWRcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiV2hldGhlciBwdWJsaWMgbmV0d29yayBhY2Nlc3MgaXMgZW5hYmxlZCAoRW5hYmxlZCBvciBEaXNhYmxlZClcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXihFbmFibGVkfERpc2FibGVkKSRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQdWJsaWMgbmV0d29yayBhY2Nlc3MgbXVzdCBiZSBlaXRoZXIgJ0VuYWJsZWQnIG9yICdEaXNhYmxlZCdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgbmV0d29ya1J1bGVTZXQ6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIk5ldHdvcmsgcnVsZSBzZXQgY29uZmlndXJhdGlvbiBmb3IgdGhlIENvbnRhaW5lciBSZWdpc3RyeSAoUHJlbWl1bSBTS1Ugb25seSlcIixcbiAgfSxcbiAgZW5jcnlwdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiRW5jcnlwdGlvbiBzZXR0aW5ncyB3aXRoIGN1c3RvbWVyLW1hbmFnZWQga2V5cyAoUHJlbWl1bSBTS1Ugb25seSlcIixcbiAgfSxcbiAgcG9saWNpZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlBvbGljeSBjb25maWd1cmF0aW9uIGluY2x1ZGluZyByZXRlbnRpb24sIHRydXN0LCBleHBvcnQsIHF1YXJhbnRpbmUsIGFuZCBzb2Z0IGRlbGV0ZSBwb2xpY2llc1wiLFxuICB9LFxuICBpZGVudGl0eToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJNYW5hZ2VkIGlkZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb250YWluZXIgUmVnaXN0cnlcIixcbiAgfSxcbiAgem9uZVJlZHVuZGFuY3k6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlOiBcIkRpc2FibGVkXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIldoZXRoZXIgem9uZSByZWR1bmRhbmN5IGlzIGVuYWJsZWQgKEVuYWJsZWQgb3IgRGlzYWJsZWQsIFByZW1pdW0gU0tVIG9ubHkpXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlBBVFRFUk5fTUFUQ0gsXG4gICAgICAgIHZhbHVlOiBcIl4oRW5hYmxlZHxEaXNhYmxlZCkkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiWm9uZSByZWR1bmRhbmN5IG11c3QgYmUgZWl0aGVyICdFbmFibGVkJyBvciAnRGlzYWJsZWQnXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGRhdGFFbmRwb2ludEVuYWJsZWQ6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkJPT0xFQU4sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIldoZXRoZXIgdG8gZW5hYmxlIGEgZGVkaWNhdGVkIGRhdGEgZW5kcG9pbnQgKFByZW1pdW0gU0tVIG9ubHkpXCIsXG4gIH0sXG4gIGFub255bW91c1B1bGxFbmFibGVkOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5CT09MRUFOLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJXaGV0aGVyIGFub255bW91cyBwdWxsIGlzIGVuYWJsZWQgZm9yIHVuYXV0aGVudGljYXRlZCBhY2Nlc3MgKFN0YW5kYXJkIG9yIFByZW1pdW0gU0tVKVwiLFxuICB9LFxuICBuZXR3b3JrUnVsZUJ5cGFzc09wdGlvbnM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlOiBcIkF6dXJlU2VydmljZXNcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiV2hldGhlciB0byBhbGxvdyB0cnVzdGVkIEF6dXJlIFNlcnZpY2VzIHRvIGFjY2VzcyBhIG5ldHdvcmsgcmVzdHJpY3RlZCByZWdpc3RyeVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENILFxuICAgICAgICB2YWx1ZTogXCJeKEF6dXJlU2VydmljZXN8Tm9uZSkkXCIsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgXCJOZXR3b3JrIHJ1bGUgYnlwYXNzIG9wdGlvbnMgbXVzdCBiZSBlaXRoZXIgJ0F6dXJlU2VydmljZXMnIG9yICdOb25lJ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBpZ25vcmVDaGFuZ2VzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiQXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgdG8gaWdub3JlIGR1cmluZyB1cGRhdGVzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgICAgIG1lc3NhZ2U6IFwiSWdub3JlQ2hhbmdlcyBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3NcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJTSU9OLVNQRUNJRklDIFNDSEVNQVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQVBJIFNjaGVtYSBmb3IgQ29udGFpbmVyIFJlZ2lzdHJ5IHZlcnNpb24gMjAyMy0wNy0wMVxuICovXG5leHBvcnQgY29uc3QgQ09OVEFJTkVSX1JFR0lTVFJZX1NDSEVNQV8yMDIzXzA3XzAxOiBBcGlTY2hlbWEgPSB7XG4gIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllc1wiLFxuICB2ZXJzaW9uOiBcIjIwMjMtMDctMDFcIixcbiAgcHJvcGVydGllczoge1xuICAgIC4uLkNPTU1PTl9QUk9QRVJUSUVTLFxuICB9LFxuICByZXF1aXJlZDogW1wibG9jYXRpb25cIiwgXCJuYW1lXCIsIFwic2t1XCJdLFxuICBvcHRpb25hbDogW1xuICAgIFwidGFnc1wiLFxuICAgIFwiYWRtaW5Vc2VyRW5hYmxlZFwiLFxuICAgIFwicHVibGljTmV0d29ya0FjY2Vzc1wiLFxuICAgIFwibmV0d29ya1J1bGVTZXRcIixcbiAgICBcImVuY3J5cHRpb25cIixcbiAgICBcInBvbGljaWVzXCIsXG4gICAgXCJpZGVudGl0eVwiLFxuICAgIFwiem9uZVJlZHVuZGFuY3lcIixcbiAgICBcImRhdGFFbmRwb2ludEVuYWJsZWRcIixcbiAgICBcImFub255bW91c1B1bGxFbmFibGVkXCIsXG4gICAgXCJuZXR3b3JrUnVsZUJ5cGFzc09wdGlvbnNcIixcbiAgICBcImlnbm9yZUNoYW5nZXNcIixcbiAgXSxcbiAgZGVwcmVjYXRlZDogW10sXG4gIHRyYW5zZm9ybWF0aW9uUnVsZXM6IHt9LFxuICB2YWxpZGF0aW9uUnVsZXM6IFtcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJsb2NhdGlvblwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJMb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgQ29udGFpbmVyIFJlZ2lzdHJpZXNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJuYW1lXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIk5hbWUgaXMgcmVxdWlyZWQgZm9yIENvbnRhaW5lciBSZWdpc3RyaWVzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIEFQSSBTY2hlbWEgZm9yIENvbnRhaW5lciBSZWdpc3RyeSB2ZXJzaW9uIDIwMjUtMDQtMDFcbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRBSU5FUl9SRUdJU1RSWV9TQ0hFTUFfMjAyNV8wNF8wMTogQXBpU2NoZW1hID0ge1xuICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0LkNvbnRhaW5lclJlZ2lzdHJ5L3JlZ2lzdHJpZXNcIixcbiAgdmVyc2lvbjogXCIyMDI1LTA0LTAxXCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5DT01NT05fUFJPUEVSVElFUyxcbiAgfSxcbiAgcmVxdWlyZWQ6IFtcImxvY2F0aW9uXCIsIFwibmFtZVwiLCBcInNrdVwiXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcInRhZ3NcIixcbiAgICBcImFkbWluVXNlckVuYWJsZWRcIixcbiAgICBcInB1YmxpY05ldHdvcmtBY2Nlc3NcIixcbiAgICBcIm5ldHdvcmtSdWxlU2V0XCIsXG4gICAgXCJlbmNyeXB0aW9uXCIsXG4gICAgXCJwb2xpY2llc1wiLFxuICAgIFwiaWRlbnRpdHlcIixcbiAgICBcInpvbmVSZWR1bmRhbmN5XCIsXG4gICAgXCJkYXRhRW5kcG9pbnRFbmFibGVkXCIsXG4gICAgXCJhbm9ueW1vdXNQdWxsRW5hYmxlZFwiLFxuICAgIFwibmV0d29ya1J1bGVCeXBhc3NPcHRpb25zXCIsXG4gICAgXCJpZ25vcmVDaGFuZ2VzXCIsXG4gIF0sXG4gIGRlcHJlY2F0ZWQ6IFtdLFxuICB0cmFuc2Zvcm1hdGlvblJ1bGVzOiB7fSxcbiAgdmFsaWRhdGlvblJ1bGVzOiBbXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwibG9jYXRpb25cIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiTG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIENvbnRhaW5lciBSZWdpc3RyaWVzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwibmFtZVwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJOYW1lIGlzIHJlcXVpcmVkIGZvciBDb250YWluZXIgUmVnaXN0cmllc1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04gQ09ORklHVVJBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyc2lvbiBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnkgMjAyMy0wNy0wMVxuICovXG5leHBvcnQgY29uc3QgQ09OVEFJTkVSX1JFR0lTVFJZX1ZFUlNJT05fMjAyM18wN18wMTogVmVyc2lvbkNvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCIyMDIzLTA3LTAxXCIsXG4gIHNjaGVtYTogQ09OVEFJTkVSX1JFR0lTVFJZX1NDSEVNQV8yMDIzXzA3XzAxLFxuICBzdXBwb3J0TGV2ZWw6IFZlcnNpb25TdXBwb3J0TGV2ZWwuTUFJTlRFTkFOQ0UsXG4gIHJlbGVhc2VEYXRlOiBcIjIwMjMtMDctMDFcIixcbiAgZGVwcmVjYXRpb25EYXRlOiB1bmRlZmluZWQsXG4gIHN1bnNldERhdGU6IHVuZGVmaW5lZCxcbiAgYnJlYWtpbmdDaGFuZ2VzOiBbXSxcbiAgbWlncmF0aW9uR3VpZGU6IFwiL2RvY3MvY29udGFpbmVyLXJlZ2lzdHJ5L21pZ3JhdGlvbi0yMDIzLTA3LTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwidXBkYXRlZFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiU3RhYmxlIHJlbGVhc2Ugd2l0aCBwb2xpY3kgYW5kIGVuY3J5cHRpb24gc3VwcG9ydFwiLFxuICAgICAgYnJlYWtpbmc6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIFZlcnNpb24gY29uZmlndXJhdGlvbiBmb3IgQ29udGFpbmVyIFJlZ2lzdHJ5IDIwMjUtMDQtMDFcbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRBSU5FUl9SRUdJU1RSWV9WRVJTSU9OXzIwMjVfMDRfMDE6IFZlcnNpb25Db25maWcgPSB7XG4gIHZlcnNpb246IFwiMjAyNS0wNC0wMVwiLFxuICBzY2hlbWE6IENPTlRBSU5FUl9SRUdJU1RSWV9TQ0hFTUFfMjAyNV8wNF8wMSxcbiAgc3VwcG9ydExldmVsOiBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgcmVsZWFzZURhdGU6IFwiMjAyNS0wNC0wMVwiLFxuICBkZXByZWNhdGlvbkRhdGU6IHVuZGVmaW5lZCxcbiAgc3Vuc2V0RGF0ZTogdW5kZWZpbmVkLFxuICBicmVha2luZ0NoYW5nZXM6IFtdLFxuICBtaWdyYXRpb25HdWlkZTogXCIvZG9jcy9jb250YWluZXItcmVnaXN0cnkvbWlncmF0aW9uLTIwMjUtMDQtMDFcIixcbiAgY2hhbmdlTG9nOiBbXG4gICAge1xuICAgICAgY2hhbmdlVHlwZTogXCJ1cGRhdGVkXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJMYXRlc3QgQVBJIHZlcnNpb24gd2l0aCBpbXByb3ZlZCBmZWF0dXJlcyBhbmQgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzXCIsXG4gICAgICBicmVha2luZzogZmFsc2UsXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKlxuICogQWxsIHN1cHBvcnRlZCBDb250YWluZXIgUmVnaXN0cnkgdmVyc2lvbnMgZm9yIHJlZ2lzdHJhdGlvblxuICovXG5leHBvcnQgY29uc3QgQUxMX0NPTlRBSU5FUl9SRUdJU1RSWV9WRVJTSU9OUzogVmVyc2lvbkNvbmZpZ1tdID0gW1xuICBDT05UQUlORVJfUkVHSVNUUllfVkVSU0lPTl8yMDIzXzA3XzAxLFxuICBDT05UQUlORVJfUkVHSVNUUllfVkVSU0lPTl8yMDI1XzA0XzAxLFxuXTtcblxuLyoqXG4gKiBSZXNvdXJjZSB0eXBlIGNvbnN0YW50XG4gKi9cbmV4cG9ydCBjb25zdCBDT05UQUlORVJfUkVHSVNUUllfVFlQRSA9IFwiTWljcm9zb2Z0LkNvbnRhaW5lclJlZ2lzdHJ5L3JlZ2lzdHJpZXNcIjtcbiJdfQ==
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Unified Azure Container Registry implementation using VersionedAzapiResource framework
3
+ *
4
+ * This class provides a single, version-aware implementation for Azure Container Registry
5
+ * that automatically handles version management, schema validation, and property transformation
6
+ * across all supported API versions.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2023-07-01 (Maintenance)
10
+ * - 2025-04-01 (Active, Latest)
11
+ *
12
+ * Features:
13
+ * - Automatic latest version resolution when no version is specified
14
+ * - Explicit version pinning for stability requirements
15
+ * - Schema-driven validation and transformation
16
+ * - JSII compliance for multi-language support
17
+ */
18
+ import * as cdktn from "cdktn";
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
+ * SKU configuration for Container Registry
24
+ */
25
+ export interface ContainerRegistrySku {
26
+ /**
27
+ * The SKU name (Basic, Standard, Premium)
28
+ */
29
+ readonly name: string;
30
+ }
31
+ /**
32
+ * IP rule for network rule set
33
+ */
34
+ export interface ContainerRegistryIpRule {
35
+ /**
36
+ * IP address or CIDR range
37
+ */
38
+ readonly value: string;
39
+ /**
40
+ * The action of IP ACL rule (Allow)
41
+ * @default "Allow"
42
+ */
43
+ readonly action?: string;
44
+ }
45
+ /**
46
+ * Network rule set configuration for Container Registry
47
+ */
48
+ export interface ContainerRegistryNetworkRuleSet {
49
+ /**
50
+ * Default action when no rule matches (Allow or Deny)
51
+ * @default "Allow"
52
+ */
53
+ readonly defaultAction?: string;
54
+ /**
55
+ * IP rules for the Container Registry
56
+ */
57
+ readonly ipRules?: ContainerRegistryIpRule[];
58
+ }
59
+ /**
60
+ * Key vault properties for encryption
61
+ */
62
+ export interface ContainerRegistryKeyVaultProperties {
63
+ /**
64
+ * The client ID of the identity used to access the key vault
65
+ */
66
+ readonly identity?: string;
67
+ /**
68
+ * The key identifier of the key vault key
69
+ */
70
+ readonly keyIdentifier?: string;
71
+ }
72
+ /**
73
+ * Encryption configuration for Container Registry
74
+ */
75
+ export interface ContainerRegistryEncryption {
76
+ /**
77
+ * Key vault properties for customer-managed key encryption
78
+ */
79
+ readonly keyVaultProperties?: ContainerRegistryKeyVaultProperties;
80
+ /**
81
+ * The encryption status (enabled or disabled)
82
+ * @default "disabled"
83
+ */
84
+ readonly status?: string;
85
+ }
86
+ /**
87
+ * Retention policy for Container Registry
88
+ */
89
+ export interface ContainerRegistryRetentionPolicy {
90
+ /**
91
+ * Number of days to retain untagged manifests
92
+ * @default 7
93
+ */
94
+ readonly days?: number;
95
+ /**
96
+ * The retention policy status (enabled or disabled)
97
+ * @default "disabled"
98
+ */
99
+ readonly status?: string;
100
+ }
101
+ /**
102
+ * Trust policy for Container Registry
103
+ */
104
+ export interface ContainerRegistryTrustPolicy {
105
+ /**
106
+ * The trust policy type (Notary)
107
+ * @default "Notary"
108
+ */
109
+ readonly type?: string;
110
+ /**
111
+ * The trust policy status (enabled or disabled)
112
+ * @default "disabled"
113
+ */
114
+ readonly status?: string;
115
+ }
116
+ /**
117
+ * Export policy for Container Registry
118
+ */
119
+ export interface ContainerRegistryExportPolicy {
120
+ /**
121
+ * The export policy status (enabled or disabled)
122
+ * @default "enabled"
123
+ */
124
+ readonly status?: string;
125
+ }
126
+ /**
127
+ * Soft delete policy for Container Registry
128
+ */
129
+ export interface ContainerRegistrySoftDeletePolicy {
130
+ /**
131
+ * Number of days after which a soft-deleted item is permanently deleted
132
+ * @default 7
133
+ */
134
+ readonly retentionDays?: number;
135
+ /**
136
+ * The soft delete policy status (enabled or disabled)
137
+ * @default "disabled"
138
+ */
139
+ readonly status?: string;
140
+ }
141
+ /**
142
+ * Policy configuration for Container Registry
143
+ */
144
+ export interface ContainerRegistryPolicies {
145
+ /**
146
+ * Retention policy for untagged manifests
147
+ */
148
+ readonly retentionPolicy?: ContainerRegistryRetentionPolicy;
149
+ /**
150
+ * Trust policy for content trust
151
+ */
152
+ readonly trustPolicy?: ContainerRegistryTrustPolicy;
153
+ /**
154
+ * Export policy for the registry
155
+ */
156
+ readonly exportPolicy?: ContainerRegistryExportPolicy;
157
+ /**
158
+ * Soft delete policy for the registry
159
+ */
160
+ readonly softDeletePolicy?: ContainerRegistrySoftDeletePolicy;
161
+ }
162
+ /**
163
+ * Identity configuration for Container Registry
164
+ */
165
+ export interface ContainerRegistryIdentity {
166
+ /**
167
+ * The type of identity (SystemAssigned, UserAssigned, SystemAssigned,UserAssigned)
168
+ */
169
+ readonly type: string;
170
+ /**
171
+ * User assigned identity IDs
172
+ */
173
+ readonly userAssignedIdentities?: {
174
+ [key: string]: any;
175
+ };
176
+ }
177
+ /**
178
+ * Properties for the unified Azure Container Registry
179
+ *
180
+ * Extends AzapiResourceProps with Container Registry specific properties
181
+ */
182
+ export interface ContainerRegistryProps extends AzapiResourceProps {
183
+ /**
184
+ * The SKU (pricing tier) for the Container Registry
185
+ * @example { name: "Standard" }
186
+ */
187
+ readonly sku: ContainerRegistrySku;
188
+ /**
189
+ * Whether the admin user is enabled
190
+ * @default false
191
+ */
192
+ readonly adminUserEnabled?: boolean;
193
+ /**
194
+ * Whether public network access is enabled
195
+ * @default "Enabled"
196
+ */
197
+ readonly publicNetworkAccess?: string;
198
+ /**
199
+ * Network rule set configuration (Premium SKU only)
200
+ */
201
+ readonly networkRuleSet?: ContainerRegistryNetworkRuleSet;
202
+ /**
203
+ * Encryption settings with customer-managed keys (Premium SKU only)
204
+ */
205
+ readonly encryption?: ContainerRegistryEncryption;
206
+ /**
207
+ * Policy configuration for the registry
208
+ */
209
+ readonly policies?: ContainerRegistryPolicies;
210
+ /**
211
+ * Managed identity configuration
212
+ */
213
+ readonly identity?: ContainerRegistryIdentity;
214
+ /**
215
+ * Whether zone redundancy is enabled (Premium SKU only)
216
+ * @default "Disabled"
217
+ */
218
+ readonly zoneRedundancy?: string;
219
+ /**
220
+ * Whether to enable a dedicated data endpoint (Premium SKU only)
221
+ * @default false
222
+ */
223
+ readonly dataEndpointEnabled?: boolean;
224
+ /**
225
+ * Whether anonymous pull is enabled (Standard or Premium SKU)
226
+ * @default false
227
+ */
228
+ readonly anonymousPullEnabled?: boolean;
229
+ /**
230
+ * Whether to allow trusted Azure Services to bypass network rules
231
+ * @default "AzureServices"
232
+ */
233
+ readonly networkRuleBypassOptions?: string;
234
+ /**
235
+ * The lifecycle rules to ignore changes
236
+ * @example ["tags"]
237
+ */
238
+ readonly ignoreChanges?: string[];
239
+ /**
240
+ * Resource group ID where the Container Registry will be created
241
+ */
242
+ readonly resourceGroupId?: string;
243
+ }
244
+ /**
245
+ * Unified Azure Container Registry implementation
246
+ *
247
+ * This class provides a single, version-aware implementation that replaces all
248
+ * version-specific Container Registry classes. It automatically handles version
249
+ * resolution, schema validation, and property transformation while maintaining
250
+ * full backward compatibility.
251
+ *
252
+ * @example
253
+ * // Basic usage with automatic version resolution:
254
+ * const registry = new ContainerRegistry(this, "acr", {
255
+ * name: "mycontainerregistry",
256
+ * location: "eastus",
257
+ * resourceGroupId: resourceGroup.id,
258
+ * sku: { name: "Standard" },
259
+ * });
260
+ *
261
+ * @example
262
+ * // Premium registry with advanced features:
263
+ * const registry = new ContainerRegistry(this, "acr", {
264
+ * name: "mycontainerregistry",
265
+ * location: "eastus",
266
+ * resourceGroupId: resourceGroup.id,
267
+ * sku: { name: "Premium" },
268
+ * publicNetworkAccess: "Disabled",
269
+ * zoneRedundancy: "Enabled",
270
+ * dataEndpointEnabled: true,
271
+ * policies: {
272
+ * retentionPolicy: { days: 30, status: "enabled" },
273
+ * softDeletePolicy: { retentionDays: 14, status: "enabled" },
274
+ * },
275
+ * });
276
+ *
277
+ * @stability stable
278
+ */
279
+ export declare class ContainerRegistry extends AzapiResource {
280
+ readonly props: ContainerRegistryProps;
281
+ readonly idOutput: cdktn.TerraformOutput;
282
+ readonly locationOutput: cdktn.TerraformOutput;
283
+ readonly nameOutput: cdktn.TerraformOutput;
284
+ readonly tagsOutput: cdktn.TerraformOutput;
285
+ readonly loginServerOutput: cdktn.TerraformOutput;
286
+ /**
287
+ * Creates a new Azure Container Registry using the VersionedAzapiResource framework
288
+ *
289
+ * @param scope - The scope in which to define this construct
290
+ * @param id - The unique identifier for this instance
291
+ * @param props - Configuration properties for the Container Registry
292
+ */
293
+ constructor(scope: Construct, id: string, props: ContainerRegistryProps);
294
+ /**
295
+ * Gets the default API version to use when no explicit version is specified
296
+ */
297
+ protected defaultVersion(): string;
298
+ /**
299
+ * Gets the Azure resource type for Container Registries
300
+ */
301
+ protected resourceType(): string;
302
+ /**
303
+ * Gets the API schema for the resolved version
304
+ */
305
+ protected apiSchema(): ApiSchema;
306
+ /**
307
+ * Indicates that location is required for Container Registries
308
+ */
309
+ protected requiresLocation(): boolean;
310
+ /**
311
+ * Creates the resource body for the Azure API call
312
+ */
313
+ protected createResourceBody(props: any): any;
314
+ /**
315
+ * Get the login server URL for the Container Registry
316
+ */
317
+ get loginServer(): string;
318
+ /**
319
+ * Add a tag to the Container Registry
320
+ */
321
+ addTag(key: string, value: string): void;
322
+ /**
323
+ * Remove a tag from the Container Registry
324
+ */
325
+ removeTag(key: string): void;
326
+ /**
327
+ * Applies ignore changes lifecycle rules if specified in props
328
+ */
329
+ private _applyIgnoreChanges;
330
+ }