@microsoft/terraform-cdk-constructs 1.7.1 → 1.9.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 (121) hide show
  1. package/.jsii +46476 -27231
  2. package/API.md +68443 -28286
  3. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  4. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  5. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  6. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  7. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  8. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  9. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  10. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  11. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  12. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  13. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  14. package/lib/azure-dnszone/lib/index.d.ts +1 -0
  15. package/lib/azure-dnszone/lib/index.js +2 -1
  16. package/lib/azure-dnszone/lib/records/dns-record-schemas.d.ts +68 -0
  17. package/lib/azure-dnszone/lib/records/dns-record-schemas.js +813 -0
  18. package/lib/azure-dnszone/lib/records/dns-records.d.ts +688 -0
  19. package/lib/azure-dnszone/lib/records/dns-records.js +924 -0
  20. package/lib/azure-dnszone/lib/records/index.d.ts +19 -0
  21. package/lib/azure-dnszone/lib/records/index.js +38 -0
  22. package/lib/azure-dnszone/test/dns-records.integ.d.ts +21 -0
  23. package/lib/azure-dnszone/test/dns-records.integ.js +321 -0
  24. package/lib/azure-dnszone/test/dns-records.spec.d.ts +20 -0
  25. package/lib/azure-dnszone/test/dns-records.spec.js +950 -0
  26. package/lib/azure-loganalyticsworkspace/index.d.ts +6 -0
  27. package/lib/azure-loganalyticsworkspace/index.js +23 -0
  28. package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
  29. package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
  30. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
  31. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
  32. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
  33. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
  34. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
  35. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
  36. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
  37. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
  38. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  39. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  40. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  41. package/lib/azure-networkwatcher/index.d.ts +14 -0
  42. package/lib/azure-networkwatcher/index.js +31 -0
  43. package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
  44. package/lib/azure-networkwatcher/lib/index.js +22 -0
  45. package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
  46. package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
  47. package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
  48. package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
  49. package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
  50. package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
  51. package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
  52. package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
  53. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  54. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  55. package/lib/azure-policysetdefinition/index.d.ts +10 -0
  56. package/lib/azure-policysetdefinition/index.js +27 -0
  57. package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
  58. package/lib/azure-policysetdefinition/lib/index.js +22 -0
  59. package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
  60. package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
  61. package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
  62. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
  63. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
  64. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
  65. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
  66. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
  67. package/lib/azure-privatednszone/lib/index.d.ts +1 -0
  68. package/lib/azure-privatednszone/lib/index.js +2 -1
  69. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +0 -2
  70. package/lib/azure-privatednszone/lib/private-dns-zone.js +6 -13
  71. package/lib/azure-privatednszone/lib/records/index.d.ts +7 -0
  72. package/lib/azure-privatednszone/lib/records/index.js +26 -0
  73. package/lib/azure-privatednszone/lib/records/private-dns-record-schemas.d.ts +52 -0
  74. package/lib/azure-privatednszone/lib/records/private-dns-record-schemas.js +683 -0
  75. package/lib/azure-privatednszone/lib/records/private-dns-records.d.ts +523 -0
  76. package/lib/azure-privatednszone/lib/records/private-dns-records.js +739 -0
  77. package/lib/azure-privatednszone/test/private-dns-records.integ.d.ts +19 -0
  78. package/lib/azure-privatednszone/test/private-dns-records.integ.js +245 -0
  79. package/lib/azure-privatednszone/test/private-dns-records.spec.d.ts +18 -0
  80. package/lib/azure-privatednszone/test/private-dns-records.spec.js +756 -0
  81. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +5 -5
  82. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  83. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  84. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  85. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  86. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  87. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  88. package/lib/azure-subnet/lib/subnet.js +1 -1
  89. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  90. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  91. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
  92. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +4 -2
  93. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +8 -5
  94. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +109 -1
  95. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  96. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  97. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  98. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  99. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  100. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  101. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  102. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  103. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  104. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  105. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  106. package/lib/core-azure/lib/azapi/azapi-resource.js +4 -4
  107. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  108. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  109. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  110. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  111. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  112. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  113. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  114. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  115. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  116. package/lib/index.d.ts +23 -0
  117. package/lib/index.js +25 -2
  118. package/lib/testing/index.js +2 -2
  119. package/lib/testing/lib/cleanup.js +1 -1
  120. package/lib/testing/lib/metadata.js +1 -1
  121. package/package.json +1 -1
@@ -0,0 +1,688 @@
1
+ /**
2
+ * Azure Public DNS Zone Record implementations using AzapiResource framework
3
+ *
4
+ * This file provides implementations for all Public DNS Zone record types:
5
+ * - DnsARecord (A records with IPv4 addresses)
6
+ * - DnsAaaaRecord (AAAA records with IPv6 addresses)
7
+ * - DnsCaaRecord (CAA records for Certificate Authority Authorization) - PUBLIC ONLY
8
+ * - DnsCnameRecord (CNAME records)
9
+ * - DnsMxRecord (MX records with exchange and preference)
10
+ * - DnsNsRecord (NS records for Name Servers) - PUBLIC ONLY
11
+ * - DnsPtrRecord (PTR records)
12
+ * - DnsSoaRecord (SOA records)
13
+ * - DnsSrvRecord (SRV records with priority, weight, port, target)
14
+ * - DnsTxtRecord (TXT records)
15
+ *
16
+ * API Version: 2018-05-01
17
+ *
18
+ * Key differences from Private DNS:
19
+ * - Property casing: Public DNS uses PascalCase (ARecords, TTL vs aRecords, ttl)
20
+ * - CAA records: Only available in public DNS
21
+ * - NS records: Only available in public DNS
22
+ * - targetResource: Public DNS A, AAAA, and CNAME records support alias records
23
+ */
24
+ import * as cdktf from "cdktf";
25
+ import { Construct } from "constructs";
26
+ import { AzapiResource, AzapiResourceProps } from "../../../core-azure/lib/azapi/azapi-resource";
27
+ import { ApiSchema } from "../../../core-azure/lib/version-manager/interfaces/version-interfaces";
28
+ /**
29
+ * Base properties shared by all Public DNS record types
30
+ *
31
+ * Note: The `name` property is inherited from AzapiResourceProps.
32
+ * For DNS records, use @ for apex records or provide a relative name like "www" or "mail".
33
+ */
34
+ export interface DnsRecordBaseProps extends AzapiResourceProps {
35
+ /**
36
+ * Resource ID of the parent DNS Zone
37
+ * @example zone.id or "/subscriptions/.../providers/Microsoft.Network/dnsZones/example.com"
38
+ */
39
+ readonly dnsZoneId: string;
40
+ /**
41
+ * Time to Live in seconds
42
+ * @default 3600
43
+ */
44
+ readonly ttl?: number;
45
+ /**
46
+ * Metadata key-value pairs for the record set
47
+ */
48
+ readonly metadata?: {
49
+ [key: string]: string;
50
+ };
51
+ }
52
+ /**
53
+ * Entry for an A record with IPv4 address
54
+ */
55
+ export interface DnsARecordEntry {
56
+ /**
57
+ * The IPv4 address of this A record
58
+ * @example "20.30.40.50"
59
+ */
60
+ readonly ipv4Address: string;
61
+ }
62
+ /**
63
+ * Properties for Public DNS A Record
64
+ */
65
+ export interface DnsARecordProps extends DnsRecordBaseProps {
66
+ /**
67
+ * Array of A records with IPv4 addresses
68
+ * Either records or targetResourceId must be specified
69
+ */
70
+ readonly records?: DnsARecordEntry[];
71
+ /**
72
+ * Reference to an Azure resource from where the IP content is taken (alias record)
73
+ * Either records or targetResourceId must be specified
74
+ * @example publicIp.id
75
+ */
76
+ readonly targetResourceId?: string;
77
+ }
78
+ /**
79
+ * Azure Public DNS A Record implementation
80
+ *
81
+ * A records map a hostname to one or more IPv4 addresses.
82
+ * Supports alias records via targetResourceId for pointing to Azure resources.
83
+ *
84
+ * @example
85
+ * // Create an A record with IP addresses:
86
+ * const aRecord = new DnsARecord(this, "web-a-record", {
87
+ * name: "www",
88
+ * dnsZoneId: zone.id,
89
+ * ttl: 300,
90
+ * records: [
91
+ * { ipv4Address: "20.30.40.50" },
92
+ * ],
93
+ * });
94
+ *
95
+ * @example
96
+ * // Create an alias A record pointing to an Azure resource:
97
+ * const aliasRecord = new DnsARecord(this, "alias-a-record", {
98
+ * name: "www",
99
+ * dnsZoneId: zone.id,
100
+ * ttl: 300,
101
+ * targetResourceId: publicIp.id,
102
+ * });
103
+ *
104
+ * @stability stable
105
+ */
106
+ export declare class DnsARecord extends AzapiResource {
107
+ readonly props: DnsARecordProps;
108
+ readonly idOutput: cdktf.TerraformOutput;
109
+ readonly nameOutput: cdktf.TerraformOutput;
110
+ readonly fqdnOutput: cdktf.TerraformOutput;
111
+ constructor(scope: Construct, id: string, props: DnsARecordProps);
112
+ protected resolveParentId(props: any): string;
113
+ protected defaultVersion(): string;
114
+ protected resourceType(): string;
115
+ protected apiSchema(): ApiSchema;
116
+ protected requiresLocation(): boolean;
117
+ protected supportsTags(): boolean;
118
+ protected createResourceBody(props: any): any;
119
+ /**
120
+ * Get the FQDN of the record
121
+ */
122
+ get fqdn(): string;
123
+ }
124
+ /**
125
+ * Entry for an AAAA record with IPv6 address
126
+ */
127
+ export interface DnsAaaaRecordEntry {
128
+ /**
129
+ * The IPv6 address of this AAAA record
130
+ * @example "2001:db8::1"
131
+ */
132
+ readonly ipv6Address: string;
133
+ }
134
+ /**
135
+ * Properties for Public DNS AAAA Record
136
+ */
137
+ export interface DnsAaaaRecordProps extends DnsRecordBaseProps {
138
+ /**
139
+ * Array of AAAA records with IPv6 addresses
140
+ * Either records or targetResourceId must be specified
141
+ */
142
+ readonly records?: DnsAaaaRecordEntry[];
143
+ /**
144
+ * Reference to an Azure resource from where the IP content is taken (alias record)
145
+ * Either records or targetResourceId must be specified
146
+ */
147
+ readonly targetResourceId?: string;
148
+ }
149
+ /**
150
+ * Azure Public DNS AAAA Record implementation
151
+ *
152
+ * AAAA records map a hostname to one or more IPv6 addresses.
153
+ * Supports alias records via targetResourceId for pointing to Azure resources.
154
+ *
155
+ * @example
156
+ * // Create an AAAA record:
157
+ * const aaaaRecord = new DnsAaaaRecord(this, "web-aaaa-record", {
158
+ * name: "www",
159
+ * dnsZoneId: zone.id,
160
+ * ttl: 300,
161
+ * records: [
162
+ * { ipv6Address: "2001:db8::1" },
163
+ * ],
164
+ * });
165
+ *
166
+ * @stability stable
167
+ */
168
+ export declare class DnsAaaaRecord extends AzapiResource {
169
+ readonly props: DnsAaaaRecordProps;
170
+ readonly idOutput: cdktf.TerraformOutput;
171
+ readonly nameOutput: cdktf.TerraformOutput;
172
+ readonly fqdnOutput: cdktf.TerraformOutput;
173
+ constructor(scope: Construct, id: string, props: DnsAaaaRecordProps);
174
+ protected resolveParentId(props: any): string;
175
+ protected defaultVersion(): string;
176
+ protected resourceType(): string;
177
+ protected apiSchema(): ApiSchema;
178
+ protected requiresLocation(): boolean;
179
+ protected supportsTags(): boolean;
180
+ protected createResourceBody(props: any): any;
181
+ /**
182
+ * Get the FQDN of the record
183
+ */
184
+ get fqdn(): string;
185
+ }
186
+ /**
187
+ * Entry for a CAA record (Certificate Authority Authorization)
188
+ */
189
+ export interface DnsCaaRecordEntry {
190
+ /**
191
+ * Flags for this CAA record (0-255)
192
+ * 0 = non-critical, 128 = critical
193
+ * @example 0
194
+ */
195
+ readonly flags: number;
196
+ /**
197
+ * The property tag for this CAA record
198
+ * Common values: "issue", "issuewild", "iodef"
199
+ * @example "issue"
200
+ */
201
+ readonly tag: string;
202
+ /**
203
+ * The value associated with the tag
204
+ * @example "letsencrypt.org"
205
+ */
206
+ readonly value: string;
207
+ }
208
+ /**
209
+ * Properties for Public DNS CAA Record
210
+ */
211
+ export interface DnsCaaRecordProps extends DnsRecordBaseProps {
212
+ /**
213
+ * Array of CAA records with flags, tag, and value
214
+ */
215
+ readonly records: DnsCaaRecordEntry[];
216
+ }
217
+ /**
218
+ * Azure Public DNS CAA Record implementation
219
+ *
220
+ * CAA records specify which Certificate Authorities are authorized to issue
221
+ * certificates for a domain. This record type is only available in Public DNS Zones.
222
+ *
223
+ * @example
224
+ * // Create a CAA record to authorize Let's Encrypt:
225
+ * const caaRecord = new DnsCaaRecord(this, "caa-record", {
226
+ * name: "@",
227
+ * dnsZoneId: zone.id,
228
+ * ttl: 3600,
229
+ * records: [
230
+ * { flags: 0, tag: "issue", value: "letsencrypt.org" },
231
+ * { flags: 0, tag: "issuewild", value: ";" }, // Disallow wildcard certs
232
+ * { flags: 0, tag: "iodef", value: "mailto:security@example.com" },
233
+ * ],
234
+ * });
235
+ *
236
+ * @stability stable
237
+ */
238
+ export declare class DnsCaaRecord extends AzapiResource {
239
+ readonly props: DnsCaaRecordProps;
240
+ readonly idOutput: cdktf.TerraformOutput;
241
+ readonly nameOutput: cdktf.TerraformOutput;
242
+ readonly fqdnOutput: cdktf.TerraformOutput;
243
+ constructor(scope: Construct, id: string, props: DnsCaaRecordProps);
244
+ protected resolveParentId(props: any): string;
245
+ protected defaultVersion(): string;
246
+ protected resourceType(): string;
247
+ protected apiSchema(): ApiSchema;
248
+ protected requiresLocation(): boolean;
249
+ protected supportsTags(): boolean;
250
+ protected createResourceBody(props: any): any;
251
+ /**
252
+ * Get the FQDN of the record
253
+ */
254
+ get fqdn(): string;
255
+ }
256
+ /**
257
+ * Properties for Public DNS CNAME Record
258
+ */
259
+ export interface DnsCnameRecordProps extends DnsRecordBaseProps {
260
+ /**
261
+ * The canonical name for this CNAME record
262
+ * Either cname or targetResourceId must be specified
263
+ * @example "www.contoso.com"
264
+ */
265
+ readonly cname?: string;
266
+ /**
267
+ * Reference to an Azure resource from where the DNS content is taken (alias record)
268
+ * Either cname or targetResourceId must be specified
269
+ */
270
+ readonly targetResourceId?: string;
271
+ }
272
+ /**
273
+ * Azure Public DNS CNAME Record implementation
274
+ *
275
+ * CNAME records create an alias from one hostname to another.
276
+ * Supports alias records via targetResourceId for pointing to Azure resources.
277
+ * Note: CNAME records cannot coexist with other record types at the same name.
278
+ *
279
+ * @example
280
+ * // Create a CNAME record:
281
+ * const cnameRecord = new DnsCnameRecord(this, "alias-record", {
282
+ * name: "app",
283
+ * dnsZoneId: zone.id,
284
+ * ttl: 3600,
285
+ * cname: "www.example.com",
286
+ * });
287
+ *
288
+ * @stability stable
289
+ */
290
+ export declare class DnsCnameRecord extends AzapiResource {
291
+ readonly props: DnsCnameRecordProps;
292
+ readonly idOutput: cdktf.TerraformOutput;
293
+ readonly nameOutput: cdktf.TerraformOutput;
294
+ readonly fqdnOutput: cdktf.TerraformOutput;
295
+ constructor(scope: Construct, id: string, props: DnsCnameRecordProps);
296
+ protected resolveParentId(props: any): string;
297
+ protected defaultVersion(): string;
298
+ protected resourceType(): string;
299
+ protected apiSchema(): ApiSchema;
300
+ protected requiresLocation(): boolean;
301
+ protected supportsTags(): boolean;
302
+ protected createResourceBody(props: any): any;
303
+ /**
304
+ * Get the FQDN of the record
305
+ */
306
+ get fqdn(): string;
307
+ }
308
+ /**
309
+ * Entry for an MX record
310
+ */
311
+ export interface DnsMxRecordEntry {
312
+ /**
313
+ * The preference value for this MX record (lower values have higher priority)
314
+ * @example 10
315
+ */
316
+ readonly preference: number;
317
+ /**
318
+ * The mail exchange server hostname
319
+ * @example "mail1.example.com"
320
+ */
321
+ readonly exchange: string;
322
+ }
323
+ /**
324
+ * Properties for Public DNS MX Record
325
+ */
326
+ export interface DnsMxRecordProps extends DnsRecordBaseProps {
327
+ /**
328
+ * Array of MX records with exchange and preference
329
+ */
330
+ readonly records: DnsMxRecordEntry[];
331
+ }
332
+ /**
333
+ * Azure Public DNS MX Record implementation
334
+ *
335
+ * MX records specify mail exchange servers for a domain.
336
+ *
337
+ * @example
338
+ * // Create an MX record:
339
+ * const mxRecord = new DnsMxRecord(this, "mail-record", {
340
+ * name: "@",
341
+ * dnsZoneId: zone.id,
342
+ * ttl: 3600,
343
+ * records: [
344
+ * { preference: 10, exchange: "mail1.example.com" },
345
+ * { preference: 20, exchange: "mail2.example.com" },
346
+ * ],
347
+ * });
348
+ *
349
+ * @stability stable
350
+ */
351
+ export declare class DnsMxRecord extends AzapiResource {
352
+ readonly props: DnsMxRecordProps;
353
+ readonly idOutput: cdktf.TerraformOutput;
354
+ readonly nameOutput: cdktf.TerraformOutput;
355
+ readonly fqdnOutput: cdktf.TerraformOutput;
356
+ constructor(scope: Construct, id: string, props: DnsMxRecordProps);
357
+ protected resolveParentId(props: any): string;
358
+ protected defaultVersion(): string;
359
+ protected resourceType(): string;
360
+ protected apiSchema(): ApiSchema;
361
+ protected requiresLocation(): boolean;
362
+ protected supportsTags(): boolean;
363
+ protected createResourceBody(props: any): any;
364
+ /**
365
+ * Get the FQDN of the record
366
+ */
367
+ get fqdn(): string;
368
+ }
369
+ /**
370
+ * Entry for an NS record
371
+ */
372
+ export interface DnsNsRecordEntry {
373
+ /**
374
+ * The name server domain name
375
+ * @example "ns1.example.com"
376
+ */
377
+ readonly nsdname: string;
378
+ }
379
+ /**
380
+ * Properties for Public DNS NS Record
381
+ */
382
+ export interface DnsNsRecordProps extends DnsRecordBaseProps {
383
+ /**
384
+ * Array of NS records with nsdname values
385
+ */
386
+ readonly records: DnsNsRecordEntry[];
387
+ }
388
+ /**
389
+ * Azure Public DNS NS Record implementation
390
+ *
391
+ * NS records specify the authoritative name servers for a domain or subdomain.
392
+ * This record type is only available in Public DNS Zones.
393
+ *
394
+ * @example
395
+ * // Create an NS record for a subdomain delegation:
396
+ * const nsRecord = new DnsNsRecord(this, "ns-record", {
397
+ * name: "subdomain",
398
+ * dnsZoneId: zone.id,
399
+ * ttl: 3600,
400
+ * records: [
401
+ * { nsdname: "ns1.subdomain.example.com" },
402
+ * { nsdname: "ns2.subdomain.example.com" },
403
+ * ],
404
+ * });
405
+ *
406
+ * @stability stable
407
+ */
408
+ export declare class DnsNsRecord extends AzapiResource {
409
+ readonly props: DnsNsRecordProps;
410
+ readonly idOutput: cdktf.TerraformOutput;
411
+ readonly nameOutput: cdktf.TerraformOutput;
412
+ readonly fqdnOutput: cdktf.TerraformOutput;
413
+ constructor(scope: Construct, id: string, props: DnsNsRecordProps);
414
+ protected resolveParentId(props: any): string;
415
+ protected defaultVersion(): string;
416
+ protected resourceType(): string;
417
+ protected apiSchema(): ApiSchema;
418
+ protected requiresLocation(): boolean;
419
+ protected supportsTags(): boolean;
420
+ protected createResourceBody(props: any): any;
421
+ /**
422
+ * Get the FQDN of the record
423
+ */
424
+ get fqdn(): string;
425
+ }
426
+ /**
427
+ * Entry for a PTR record
428
+ */
429
+ export interface DnsPtrRecordEntry {
430
+ /**
431
+ * The PTR target domain name
432
+ * @example "server1.example.com"
433
+ */
434
+ readonly ptrdname: string;
435
+ }
436
+ /**
437
+ * Properties for Public DNS PTR Record
438
+ */
439
+ export interface DnsPtrRecordProps extends DnsRecordBaseProps {
440
+ /**
441
+ * Array of PTR records with ptrdname values
442
+ */
443
+ readonly records: DnsPtrRecordEntry[];
444
+ }
445
+ /**
446
+ * Azure Public DNS PTR Record implementation
447
+ *
448
+ * PTR records are used for reverse DNS lookups, mapping IP addresses to hostnames.
449
+ *
450
+ * @example
451
+ * // Create a PTR record:
452
+ * const ptrRecord = new DnsPtrRecord(this, "ptr-record", {
453
+ * name: "50",
454
+ * dnsZoneId: reverseZone.id,
455
+ * ttl: 3600,
456
+ * records: [
457
+ * { ptrdname: "server1.example.com" },
458
+ * ],
459
+ * });
460
+ *
461
+ * @stability stable
462
+ */
463
+ export declare class DnsPtrRecord extends AzapiResource {
464
+ readonly props: DnsPtrRecordProps;
465
+ readonly idOutput: cdktf.TerraformOutput;
466
+ readonly nameOutput: cdktf.TerraformOutput;
467
+ readonly fqdnOutput: cdktf.TerraformOutput;
468
+ constructor(scope: Construct, id: string, props: DnsPtrRecordProps);
469
+ protected resolveParentId(props: any): string;
470
+ protected defaultVersion(): string;
471
+ protected resourceType(): string;
472
+ protected apiSchema(): ApiSchema;
473
+ protected requiresLocation(): boolean;
474
+ protected supportsTags(): boolean;
475
+ protected createResourceBody(props: any): any;
476
+ /**
477
+ * Get the FQDN of the record
478
+ */
479
+ get fqdn(): string;
480
+ }
481
+ /**
482
+ * SOA record configuration
483
+ */
484
+ export interface DnsSoaRecordConfig {
485
+ /**
486
+ * The domain name of the authoritative name server
487
+ */
488
+ readonly host?: string;
489
+ /**
490
+ * The email contact for this zone (with @ replaced by .)
491
+ * @example "admin.example.com" (for admin@example.com)
492
+ */
493
+ readonly email?: string;
494
+ /**
495
+ * The serial number for this zone
496
+ */
497
+ readonly serialNumber?: number;
498
+ /**
499
+ * The refresh time in seconds
500
+ */
501
+ readonly refreshTime?: number;
502
+ /**
503
+ * The retry time in seconds
504
+ */
505
+ readonly retryTime?: number;
506
+ /**
507
+ * The expire time in seconds
508
+ */
509
+ readonly expireTime?: number;
510
+ /**
511
+ * The minimum TTL in seconds
512
+ */
513
+ readonly minimumTTL?: number;
514
+ }
515
+ /**
516
+ * Properties for Public DNS SOA Record
517
+ */
518
+ export interface DnsSoaRecordProps extends DnsRecordBaseProps {
519
+ /**
520
+ * SOA record configuration
521
+ */
522
+ readonly soaRecord: DnsSoaRecordConfig;
523
+ }
524
+ /**
525
+ * Azure Public DNS SOA Record implementation
526
+ *
527
+ * SOA records contain administrative information about a DNS zone.
528
+ * Note: Each zone automatically has an SOA record; this is typically used to update it.
529
+ *
530
+ * @example
531
+ * // Update the SOA record:
532
+ * const soaRecord = new DnsSoaRecord(this, "soa-record", {
533
+ * name: "@",
534
+ * dnsZoneId: zone.id,
535
+ * ttl: 3600,
536
+ * soaRecord: {
537
+ * email: "admin.example.com",
538
+ * refreshTime: 3600,
539
+ * retryTime: 300,
540
+ * expireTime: 2419200,
541
+ * minimumTTL: 300,
542
+ * },
543
+ * });
544
+ *
545
+ * @stability stable
546
+ */
547
+ export declare class DnsSoaRecord extends AzapiResource {
548
+ readonly props: DnsSoaRecordProps;
549
+ readonly idOutput: cdktf.TerraformOutput;
550
+ readonly nameOutput: cdktf.TerraformOutput;
551
+ readonly fqdnOutput: cdktf.TerraformOutput;
552
+ constructor(scope: Construct, id: string, props: DnsSoaRecordProps);
553
+ protected resolveParentId(props: any): string;
554
+ protected defaultVersion(): string;
555
+ protected resourceType(): string;
556
+ protected apiSchema(): ApiSchema;
557
+ protected requiresLocation(): boolean;
558
+ protected supportsTags(): boolean;
559
+ protected createResourceBody(props: any): any;
560
+ /**
561
+ * Get the FQDN of the record
562
+ */
563
+ get fqdn(): string;
564
+ }
565
+ /**
566
+ * Entry for an SRV record
567
+ */
568
+ export interface DnsSrvRecordEntry {
569
+ /**
570
+ * The priority of this SRV record (lower values have higher priority)
571
+ */
572
+ readonly priority: number;
573
+ /**
574
+ * The weight of this SRV record (used for load balancing among records with same priority)
575
+ */
576
+ readonly weight: number;
577
+ /**
578
+ * The port number for the service
579
+ */
580
+ readonly port: number;
581
+ /**
582
+ * The target hostname providing the service
583
+ * @example "sipserver.example.com"
584
+ */
585
+ readonly target: string;
586
+ }
587
+ /**
588
+ * Properties for Public DNS SRV Record
589
+ */
590
+ export interface DnsSrvRecordProps extends DnsRecordBaseProps {
591
+ /**
592
+ * Array of SRV records with priority, weight, port, and target
593
+ */
594
+ readonly records: DnsSrvRecordEntry[];
595
+ }
596
+ /**
597
+ * Azure Public DNS SRV Record implementation
598
+ *
599
+ * SRV records specify the location of services like SIP, XMPP, etc.
600
+ *
601
+ * @example
602
+ * // Create an SRV record for a SIP service:
603
+ * const srvRecord = new DnsSrvRecord(this, "sip-record", {
604
+ * name: "_sip._tcp",
605
+ * dnsZoneId: zone.id,
606
+ * ttl: 3600,
607
+ * records: [
608
+ * { priority: 10, weight: 60, port: 5060, target: "sipserver1.example.com" },
609
+ * { priority: 10, weight: 40, port: 5060, target: "sipserver2.example.com" },
610
+ * ],
611
+ * });
612
+ *
613
+ * @stability stable
614
+ */
615
+ export declare class DnsSrvRecord extends AzapiResource {
616
+ readonly props: DnsSrvRecordProps;
617
+ readonly idOutput: cdktf.TerraformOutput;
618
+ readonly nameOutput: cdktf.TerraformOutput;
619
+ readonly fqdnOutput: cdktf.TerraformOutput;
620
+ constructor(scope: Construct, id: string, props: DnsSrvRecordProps);
621
+ protected resolveParentId(props: any): string;
622
+ protected defaultVersion(): string;
623
+ protected resourceType(): string;
624
+ protected apiSchema(): ApiSchema;
625
+ protected requiresLocation(): boolean;
626
+ protected supportsTags(): boolean;
627
+ protected createResourceBody(props: any): any;
628
+ /**
629
+ * Get the FQDN of the record
630
+ */
631
+ get fqdn(): string;
632
+ }
633
+ /**
634
+ * Entry for a TXT record
635
+ */
636
+ export interface DnsTxtRecordEntry {
637
+ /**
638
+ * The text value of this TXT record (array of strings, each up to 255 chars)
639
+ * Long values are automatically split into multiple strings
640
+ * @example ["v=spf1 include:spf.protection.outlook.com -all"]
641
+ */
642
+ readonly value: string[];
643
+ }
644
+ /**
645
+ * Properties for Public DNS TXT Record
646
+ */
647
+ export interface DnsTxtRecordProps extends DnsRecordBaseProps {
648
+ /**
649
+ * Array of TXT records with string values
650
+ */
651
+ readonly records: DnsTxtRecordEntry[];
652
+ }
653
+ /**
654
+ * Azure Public DNS TXT Record implementation
655
+ *
656
+ * TXT records store arbitrary text data, commonly used for SPF, DKIM, domain verification, etc.
657
+ *
658
+ * @example
659
+ * // Create a TXT record for SPF:
660
+ * const txtRecord = new DnsTxtRecord(this, "spf-record", {
661
+ * name: "@",
662
+ * dnsZoneId: zone.id,
663
+ * ttl: 3600,
664
+ * records: [
665
+ * { value: ["v=spf1 include:spf.protection.outlook.com -all"] },
666
+ * ],
667
+ * });
668
+ *
669
+ * @stability stable
670
+ */
671
+ export declare class DnsTxtRecord extends AzapiResource {
672
+ readonly props: DnsTxtRecordProps;
673
+ readonly idOutput: cdktf.TerraformOutput;
674
+ readonly nameOutput: cdktf.TerraformOutput;
675
+ readonly fqdnOutput: cdktf.TerraformOutput;
676
+ constructor(scope: Construct, id: string, props: DnsTxtRecordProps);
677
+ protected resolveParentId(props: any): string;
678
+ protected defaultVersion(): string;
679
+ protected resourceType(): string;
680
+ protected apiSchema(): ApiSchema;
681
+ protected requiresLocation(): boolean;
682
+ protected supportsTags(): boolean;
683
+ protected createResourceBody(props: any): any;
684
+ /**
685
+ * Get the FQDN of the record
686
+ */
687
+ get fqdn(): string;
688
+ }