File: types.go

package info (click to toggle)
golang-github-aws-aws-sdk-go-v2 1.24.1-2~bpo12%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-backports
  • size: 554,032 kB
  • sloc: java: 15,941; makefile: 419; sh: 175
file content (2138 lines) | stat: -rw-r--r-- 92,941 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
	"time"
)

// Configures the accounts within the administrator's Organizations organization
// that the specified Firewall Manager administrator can apply policies to.
type AccountScope struct {

	// The list of accounts within the organization that the specified Firewall
	// Manager administrator either can or cannot apply policies to, based on the value
	// of ExcludeSpecifiedAccounts . If ExcludeSpecifiedAccounts is set to true , then
	// the Firewall Manager administrator can apply policies to all members of the
	// organization except for the accounts in this list. If ExcludeSpecifiedAccounts
	// is set to false , then the Firewall Manager administrator can only apply
	// policies to the accounts in this list.
	Accounts []string

	// A boolean value that indicates if the administrator can apply policies to all
	// accounts within an organization. If true, the administrator can apply policies
	// to all accounts within the organization. You can either enable management of all
	// accounts through this operation, or you can specify a list of accounts to manage
	// in AccountScope$Accounts . You cannot specify both.
	AllAccountsEnabled bool

	// A boolean value that excludes the accounts in AccountScope$Accounts from the
	// administrator's scope. If true, the Firewall Manager administrator can apply
	// policies to all members of the organization except for the accounts listed in
	// AccountScope$Accounts . You can either specify a list of accounts to exclude by
	// AccountScope$Accounts , or you can enable management of all accounts by
	// AccountScope$AllAccountsEnabled . You cannot specify both.
	ExcludeSpecifiedAccounts bool

	noSmithyDocumentSerde
}

// Describes a remediation action target.
type ActionTarget struct {

	// A description of the remediation action target.
	Description *string

	// The ID of the remediation target.
	ResourceId *string

	noSmithyDocumentSerde
}

// Contains high level information about the Firewall Manager administrator
// account.
type AdminAccountSummary struct {

	// The Amazon Web Services account ID of the Firewall Manager administrator's
	// account.
	AdminAccount *string

	// A boolean value that indicates if the administrator is the default
	// administrator. If true, then this is the default administrator account. The
	// default administrator can manage third-party firewalls and has full
	// administrative scope. There is only one default administrator account per
	// organization. For information about Firewall Manager default administrator
	// accounts, see Managing Firewall Manager administrators (https://docs.aws.amazon.com/waf/latest/developerguide/fms-administrators.html)
	// in the Firewall Manager Developer Guide.
	DefaultAdmin bool

	// The current status of the request to onboard a member account as an Firewall
	// Manager administator.
	//   - ONBOARDING - The account is onboarding to Firewall Manager as an
	//   administrator.
	//   - ONBOARDING_COMPLETE - Firewall Manager The account is onboarded to Firewall
	//   Manager as an administrator, and can perform actions on the resources defined in
	//   their AdminScope .
	//   - OFFBOARDING - The account is being removed as an Firewall Manager
	//   administrator.
	//   - OFFBOARDING_COMPLETE - The account has been removed as an Firewall Manager
	//   administrator.
	Status OrganizationStatus

	noSmithyDocumentSerde
}

// Defines the resources that the Firewall Manager administrator can manage. For
// more information about administrative scope, see Managing Firewall Manager
// administrators (https://docs.aws.amazon.com/waf/latest/developerguide/fms-administrators.html)
// in the Firewall Manager Developer Guide.
type AdminScope struct {

	// Defines the accounts that the specified Firewall Manager administrator can
	// apply policies to.
	AccountScope *AccountScope

	// Defines the Organizations organizational units that the specified Firewall
	// Manager administrator can apply policies to. For more information about OUs in
	// Organizations, see Managing organizational units (OUs)  (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html)
	// in the Organizations User Guide.
	OrganizationalUnitScope *OrganizationalUnitScope

	// Defines the Firewall Manager policy types that the specified Firewall Manager
	// administrator can create and manage.
	PolicyTypeScope *PolicyTypeScope

	// Defines the Amazon Web Services Regions that the specified Firewall Manager
	// administrator can perform actions in.
	RegionScope *RegionScope

	noSmithyDocumentSerde
}

// An individual Firewall Manager application.
type App struct {

	// The application's name.
	//
	// This member is required.
	AppName *string

	// The application's port number, for example 80 .
	//
	// This member is required.
	Port *int64

	// The IP protocol name or number. The name can be one of tcp , udp , or icmp . For
	// information on possible numbers, see Protocol Numbers (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)
	// .
	//
	// This member is required.
	Protocol *string

	noSmithyDocumentSerde
}

// An Firewall Manager applications list.
type AppsListData struct {

	// An array of applications in the Firewall Manager applications list.
	//
	// This member is required.
	AppsList []App

	// The name of the Firewall Manager applications list.
	//
	// This member is required.
	ListName *string

	// The time that the Firewall Manager applications list was created.
	CreateTime *time.Time

	// The time that the Firewall Manager applications list was last updated.
	LastUpdateTime *time.Time

	// The ID of the Firewall Manager applications list.
	ListId *string

	// A unique identifier for each update to the list. When you update the list, the
	// update token must match the token of the current version of the application
	// list. You can retrieve the update token by getting the list.
	ListUpdateToken *string

	// A map of previous version numbers to their corresponding App object arrays.
	PreviousAppsList map[string][]App

	noSmithyDocumentSerde
}

// Details of the Firewall Manager applications list.
type AppsListDataSummary struct {

	// An array of App objects in the Firewall Manager applications list.
	AppsList []App

	// The Amazon Resource Name (ARN) of the applications list.
	ListArn *string

	// The ID of the applications list.
	ListId *string

	// The name of the applications list.
	ListName *string

	noSmithyDocumentSerde
}

// Violation detail for an EC2 instance resource.
type AwsEc2InstanceViolation struct {

	// Violation detail for network interfaces associated with the EC2 instance.
	AwsEc2NetworkInterfaceViolations []AwsEc2NetworkInterfaceViolation

	// The resource ID of the EC2 instance.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// Violation detail for network interfaces associated with an EC2 instance.
type AwsEc2NetworkInterfaceViolation struct {

	// List of security groups that violate the rules specified in the primary
	// security group of the Firewall Manager policy.
	ViolatingSecurityGroups []string

	// The resource ID of the network interface.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// Violation detail for the rule violation in a security group when compared to
// the primary security group of the Firewall Manager policy.
type AwsVPCSecurityGroupViolation struct {

	// List of rules specified in the security group of the Firewall Manager policy
	// that partially match the ViolationTarget rule.
	PartialMatches []PartialMatch

	// Remediation options for the rule specified in the ViolationTarget .
	PossibleSecurityGroupRemediationActions []SecurityGroupRemediationAction

	// The security group rule that is being evaluated.
	ViolationTarget *string

	// A description of the security group that violates the policy.
	ViolationTargetDescription *string

	noSmithyDocumentSerde
}

// Details of the resource that is not protected by the policy.
type ComplianceViolator struct {

	// Metadata about the resource that doesn't comply with the policy scope.
	Metadata map[string]string

	// The resource ID.
	ResourceId *string

	// The resource type. This is in the format shown in the Amazon Web Services
	// Resource Types Reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
	// . For example: AWS::ElasticLoadBalancingV2::LoadBalancer ,
	// AWS::CloudFront::Distribution , or AWS::NetworkFirewall::FirewallPolicy .
	ResourceType *string

	// The reason that the resource is not protected by the policy.
	ViolationReason ViolationReason

	noSmithyDocumentSerde
}

// A resource in the organization that's available to be associated with a
// Firewall Manager resource set.
type DiscoveredResource struct {

	// The Amazon Web Services account ID associated with the discovered resource.
	AccountId *string

	// The name of the discovered resource.
	Name *string

	// The type of the discovered resource.
	Type *string

	// The universal resource identifier (URI) of the discovered resource.
	URI *string

	noSmithyDocumentSerde
}

// A DNS Firewall rule group that Firewall Manager tried to associate with a VPC
// is already associated with the VPC and can't be associated again.
type DnsDuplicateRuleGroupViolation struct {

	// Information about the VPC ID.
	ViolationTarget *string

	// A description of the violation that specifies the rule group and VPC.
	ViolationTargetDescription *string

	noSmithyDocumentSerde
}

// The VPC that Firewall Manager was applying a DNS Fireall policy to reached the
// limit for associated DNS Firewall rule groups. Firewall Manager tried to
// associate another rule group with the VPC and failed due to the limit.
type DnsRuleGroupLimitExceededViolation struct {

	// The number of rule groups currently associated with the VPC.
	NumberOfRuleGroupsAlreadyAssociated int32

	// Information about the VPC ID.
	ViolationTarget *string

	// A description of the violation that specifies the rule group and VPC.
	ViolationTargetDescription *string

	noSmithyDocumentSerde
}

// A rule group that Firewall Manager tried to associate with a VPC has the same
// priority as a rule group that's already associated.
type DnsRuleGroupPriorityConflictViolation struct {

	// The ID of the Firewall Manager DNS Firewall policy that was already applied to
	// the VPC. This policy contains the rule group that's already associated with the
	// VPC.
	ConflictingPolicyId *string

	// The priority setting of the two conflicting rule groups.
	ConflictingPriority int32

	// The priorities of rule groups that are already associated with the VPC. To
	// retry your operation, choose priority settings that aren't in this list for the
	// rule groups in your new DNS Firewall policy.
	UnavailablePriorities []int32

	// Information about the VPC ID.
	ViolationTarget *string

	// A description of the violation that specifies the VPC and the rule group that's
	// already associated with it.
	ViolationTargetDescription *string

	noSmithyDocumentSerde
}

// The action of associating an EC2 resource, such as a subnet or internet
// gateway, with a route table.
type EC2AssociateRouteTableAction struct {

	// The ID of the EC2 route table that is associated with the remediation action.
	//
	// This member is required.
	RouteTableId *ActionTarget

	// A description of the EC2 route table that is associated with the remediation
	// action.
	Description *string

	// The ID of the gateway to be used with the EC2 route table that is associated
	// with the remediation action.
	GatewayId *ActionTarget

	// The ID of the subnet for the EC2 route table that is associated with the
	// remediation action.
	SubnetId *ActionTarget

	noSmithyDocumentSerde
}

// An action that copies the EC2 route table for use in remediation.
type EC2CopyRouteTableAction struct {

	// The ID of the copied EC2 route table that is associated with the remediation
	// action.
	//
	// This member is required.
	RouteTableId *ActionTarget

	// The VPC ID of the copied EC2 route table that is associated with the
	// remediation action.
	//
	// This member is required.
	VpcId *ActionTarget

	// A description of the copied EC2 route table that is associated with the
	// remediation action.
	Description *string

	noSmithyDocumentSerde
}

// Information about the CreateRoute action in Amazon EC2.
type EC2CreateRouteAction struct {

	// Information about the ID of the route table for the route.
	//
	// This member is required.
	RouteTableId *ActionTarget

	// A description of CreateRoute action in Amazon EC2.
	Description *string

	// Information about the IPv4 CIDR address block used for the destination match.
	DestinationCidrBlock *string

	// Information about the IPv6 CIDR block destination.
	DestinationIpv6CidrBlock *string

	// Information about the ID of a prefix list used for the destination match.
	DestinationPrefixListId *string

	// Information about the ID of an internet gateway or virtual private gateway
	// attached to your VPC.
	GatewayId *ActionTarget

	// Information about the ID of a VPC endpoint. Supported for Gateway Load Balancer
	// endpoints only.
	VpcEndpointId *ActionTarget

	noSmithyDocumentSerde
}

// Information about the CreateRouteTable action in Amazon EC2.
type EC2CreateRouteTableAction struct {

	// Information about the ID of a VPC.
	//
	// This member is required.
	VpcId *ActionTarget

	// A description of the CreateRouteTable action.
	Description *string

	noSmithyDocumentSerde
}

// Information about the DeleteRoute action in Amazon EC2.
type EC2DeleteRouteAction struct {

	// Information about the ID of the route table.
	//
	// This member is required.
	RouteTableId *ActionTarget

	// A description of the DeleteRoute action.
	Description *string

	// Information about the IPv4 CIDR range for the route. The value you specify must
	// match the CIDR for the route exactly.
	DestinationCidrBlock *string

	// Information about the IPv6 CIDR range for the route. The value you specify must
	// match the CIDR for the route exactly.
	DestinationIpv6CidrBlock *string

	// Information about the ID of the prefix list for the route.
	DestinationPrefixListId *string

	noSmithyDocumentSerde
}

// Information about the ReplaceRoute action in Amazon EC2.
type EC2ReplaceRouteAction struct {

	// Information about the ID of the route table.
	//
	// This member is required.
	RouteTableId *ActionTarget

	// A description of the ReplaceRoute action in Amazon EC2.
	Description *string

	// Information about the IPv4 CIDR address block used for the destination match.
	// The value that you provide must match the CIDR of an existing route in the
	// table.
	DestinationCidrBlock *string

	// Information about the IPv6 CIDR address block used for the destination match.
	// The value that you provide must match the CIDR of an existing route in the
	// table.
	DestinationIpv6CidrBlock *string

	// Information about the ID of the prefix list for the route.
	DestinationPrefixListId *string

	// Information about the ID of an internet gateway or virtual private gateway.
	GatewayId *ActionTarget

	noSmithyDocumentSerde
}

// Information about the ReplaceRouteTableAssociation action in Amazon EC2.
type EC2ReplaceRouteTableAssociationAction struct {

	// Information about the association ID.
	//
	// This member is required.
	AssociationId *ActionTarget

	// Information about the ID of the new route table to associate with the subnet.
	//
	// This member is required.
	RouteTableId *ActionTarget

	// A description of the ReplaceRouteTableAssociation action in Amazon EC2.
	Description *string

	noSmithyDocumentSerde
}

// Describes the compliance status for the account. An account is considered
// noncompliant if it includes resources that are not protected by the specified
// policy or that don't comply with the policy.
type EvaluationResult struct {

	// Describes an Amazon Web Services account's compliance with the Firewall Manager
	// policy.
	ComplianceStatus PolicyComplianceStatusType

	// Indicates that over 100 resources are noncompliant with the Firewall Manager
	// policy.
	EvaluationLimitExceeded bool

	// The number of resources that are noncompliant with the specified policy. For
	// WAF and Shield Advanced policies, a resource is considered noncompliant if it is
	// not associated with the policy. For security group policies, a resource is
	// considered noncompliant if it doesn't comply with the rules of the policy and
	// remediation is disabled or not possible.
	ViolatorCount int64

	noSmithyDocumentSerde
}

// Information about the expected route in the route table.
type ExpectedRoute struct {

	// Information about the allowed targets.
	AllowedTargets []string

	// Information about the contributing subnets.
	ContributingSubnets []string

	// Information about the IPv4 CIDR block.
	IpV4Cidr *string

	// Information about the IPv6 CIDR block.
	IpV6Cidr *string

	// Information about the ID of the prefix list for the route.
	PrefixListId *string

	// Information about the route table ID.
	RouteTableId *string

	noSmithyDocumentSerde
}

// Details of a resource that failed when trying to update it's association to a
// resource set.
type FailedItem struct {

	// The reason the resource's association could not be updated.
	Reason FailedItemReason

	// The univeral resource indicator (URI) of the resource that failed.
	URI *string

	noSmithyDocumentSerde
}

// Contains details about the firewall subnet that violates the policy scope.
type FirewallSubnetIsOutOfScopeViolation struct {

	// The ID of the firewall subnet that violates the policy scope.
	FirewallSubnetId *string

	// The Availability Zone of the firewall subnet that violates the policy scope.
	SubnetAvailabilityZone *string

	// The Availability Zone ID of the firewall subnet that violates the policy scope.
	SubnetAvailabilityZoneId *string

	// The VPC endpoint ID of the firewall subnet that violates the policy scope.
	VpcEndpointId *string

	// The VPC ID of the firewall subnet that violates the policy scope.
	VpcId *string

	noSmithyDocumentSerde
}

// The violation details for a firewall subnet's VPC endpoint that's deleted or
// missing.
type FirewallSubnetMissingVPCEndpointViolation struct {

	// The ID of the firewall that this VPC endpoint is associated with.
	FirewallSubnetId *string

	// The name of the Availability Zone of the deleted VPC subnet.
	SubnetAvailabilityZone *string

	// The ID of the Availability Zone of the deleted VPC subnet.
	SubnetAvailabilityZoneId *string

	// The resource ID of the VPC associated with the deleted VPC subnet.
	VpcId *string

	noSmithyDocumentSerde
}

// Contains information about the actions that you can take to remediate scope
// violations caused by your policy's FirewallCreationConfig .
// FirewallCreationConfig is an optional configuration that you can use to choose
// which Availability Zones Firewall Manager creates Network Firewall endpoints in.
type FMSPolicyUpdateFirewallCreationConfigAction struct {

	// Describes the remedial action.
	Description *string

	// A FirewallCreationConfig that you can copy into your current policy's
	// SecurityServiceData (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_SecurityServicePolicyData.html)
	// in order to remedy scope violations.
	FirewallCreationConfig *string

	noSmithyDocumentSerde
}

// Violation detail for an internet gateway route with an inactive state in the
// customer subnet route table or Network Firewall subnet route table.
type NetworkFirewallBlackHoleRouteDetectedViolation struct {

	// Information about the route table ID.
	RouteTableId *string

	// Information about the route or routes that are in violation.
	ViolatingRoutes []Route

	// The subnet that has an inactive state.
	ViolationTarget *string

	// Information about the VPC ID.
	VpcId *string

	noSmithyDocumentSerde
}

// Violation detail for the subnet for which internet traffic that hasn't been
// inspected.
type NetworkFirewallInternetTrafficNotInspectedViolation struct {

	// The actual firewall subnet routes.
	ActualFirewallSubnetRoutes []Route

	// The actual internet gateway routes.
	ActualInternetGatewayRoutes []Route

	// Information about the subnet route table for the current firewall.
	CurrentFirewallSubnetRouteTable *string

	// The current route table for the internet gateway.
	CurrentInternetGatewayRouteTable *string

	// The expected endpoint for the current firewall.
	ExpectedFirewallEndpoint *string

	// The firewall subnet routes that are expected.
	ExpectedFirewallSubnetRoutes []ExpectedRoute

	// The internet gateway routes that are expected.
	ExpectedInternetGatewayRoutes []ExpectedRoute

	// The firewall subnet ID.
	FirewallSubnetId *string

	// The internet gateway ID.
	InternetGatewayId *string

	// Information about whether the route table is used in another Availability Zone.
	IsRouteTableUsedInDifferentAZ bool

	// Information about the route table ID.
	RouteTableId *string

	// The subnet Availability Zone.
	SubnetAvailabilityZone *string

	// The subnet ID.
	SubnetId *string

	// The route or routes that are in violation.
	ViolatingRoutes []Route

	// Information about the VPC ID.
	VpcId *string

	noSmithyDocumentSerde
}

// Violation detail for the improperly configured subnet route. It's possible
// there is a missing route table route, or a configuration that causes traffic to
// cross an Availability Zone boundary.
type NetworkFirewallInvalidRouteConfigurationViolation struct {

	// The actual firewall endpoint.
	ActualFirewallEndpoint *string

	// The actual subnet ID for the firewall.
	ActualFirewallSubnetId *string

	// The actual firewall subnet routes that are expected.
	ActualFirewallSubnetRoutes []Route

	// The actual internet gateway routes.
	ActualInternetGatewayRoutes []Route

	// The subnets that are affected.
	AffectedSubnets []string

	// The subnet route table for the current firewall.
	CurrentFirewallSubnetRouteTable *string

	// The route table for the current internet gateway.
	CurrentInternetGatewayRouteTable *string

	// The firewall endpoint that's expected.
	ExpectedFirewallEndpoint *string

	// The expected subnet ID for the firewall.
	ExpectedFirewallSubnetId *string

	// The firewall subnet routes that are expected.
	ExpectedFirewallSubnetRoutes []ExpectedRoute

	// The expected routes for the internet gateway.
	ExpectedInternetGatewayRoutes []ExpectedRoute

	// The internet gateway ID.
	InternetGatewayId *string

	// Information about whether the route table is used in another Availability Zone.
	IsRouteTableUsedInDifferentAZ bool

	// The route table ID.
	RouteTableId *string

	// The route that's in violation.
	ViolatingRoute *Route

	// Information about the VPC ID.
	VpcId *string

	noSmithyDocumentSerde
}

// Violation detail for an expected route missing in Network Firewall.
type NetworkFirewallMissingExpectedRoutesViolation struct {

	// The expected routes.
	ExpectedRoutes []ExpectedRoute

	// The target of the violation.
	ViolationTarget *string

	// Information about the VPC ID.
	VpcId *string

	noSmithyDocumentSerde
}

// Violation detail for Network Firewall for a subnet that's not associated to the
// expected Firewall Manager managed route table.
type NetworkFirewallMissingExpectedRTViolation struct {

	// The Availability Zone of a violating subnet.
	AvailabilityZone *string

	// The resource ID of the current route table that's associated with the subnet,
	// if one is available.
	CurrentRouteTable *string

	// The resource ID of the route table that should be associated with the subnet.
	ExpectedRouteTable *string

	// The resource ID of the VPC associated with a violating subnet.
	VPC *string

	// The ID of the Network Firewall or VPC resource that's in violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// Violation detail for Network Firewall for a subnet that doesn't have a Firewall
// Manager managed firewall in its VPC.
type NetworkFirewallMissingFirewallViolation struct {

	// The Availability Zone of a violating subnet.
	AvailabilityZone *string

	// The reason the resource has this violation, if one is available.
	TargetViolationReason *string

	// The resource ID of the VPC associated with a violating subnet.
	VPC *string

	// The ID of the Network Firewall or VPC resource that's in violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// Violation detail for Network Firewall for an Availability Zone that's missing
// the expected Firewall Manager managed subnet.
type NetworkFirewallMissingSubnetViolation struct {

	// The Availability Zone of a violating subnet.
	AvailabilityZone *string

	// The reason the resource has this violation, if one is available.
	TargetViolationReason *string

	// The resource ID of the VPC associated with a violating subnet.
	VPC *string

	// The ID of the Network Firewall or VPC resource that's in violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// Configures the firewall policy deployment model of Network Firewall. For
// information about Network Firewall deployment models, see Network Firewall
// example architectures with routing (https://docs.aws.amazon.com/network-firewall/latest/developerguide/architectures.html)
// in the Network Firewall Developer Guide.
type NetworkFirewallPolicy struct {

	// Defines the deployment model to use for the firewall policy. To use a
	// distributed model, set PolicyOption (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html)
	// to NULL .
	FirewallDeploymentModel FirewallDeploymentModel

	noSmithyDocumentSerde
}

// The definition of the Network Firewall firewall policy.
type NetworkFirewallPolicyDescription struct {

	// The default actions to take on a packet that doesn't match any stateful rules.
	// The stateful default action is optional, and is only valid when using the strict
	// rule order. Valid values of the stateful default action:
	//   - aws:drop_strict
	//   - aws:drop_established
	//   - aws:alert_strict
	//   - aws:alert_established
	StatefulDefaultActions []string

	// Additional options governing how Network Firewall handles stateful rules. The
	// stateful rule groups that you use in your policy must have stateful rule options
	// settings that are compatible with these settings.
	StatefulEngineOptions *StatefulEngineOptions

	// The stateful rule groups that are used in the Network Firewall firewall policy.
	StatefulRuleGroups []StatefulRuleGroup

	// Names of custom actions that are available for use in the stateless default
	// actions settings.
	StatelessCustomActions []string

	// The actions to take on packets that don't match any of the stateless rule
	// groups.
	StatelessDefaultActions []string

	// The actions to take on packet fragments that don't match any of the stateless
	// rule groups.
	StatelessFragmentDefaultActions []string

	// The stateless rule groups that are used in the Network Firewall firewall policy.
	StatelessRuleGroups []StatelessRuleGroup

	noSmithyDocumentSerde
}

// Violation detail for Network Firewall for a firewall policy that has a
// different NetworkFirewallPolicyDescription than is required by the Firewall
// Manager policy.
type NetworkFirewallPolicyModifiedViolation struct {

	// The policy that's currently in use in the individual account.
	CurrentPolicyDescription *NetworkFirewallPolicyDescription

	// The policy that should be in use in the individual account in order to be
	// compliant.
	ExpectedPolicyDescription *NetworkFirewallPolicyDescription

	// The ID of the Network Firewall or VPC resource that's in violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// The setting that allows the policy owner to change the behavior of the rule
// group within a policy.
type NetworkFirewallStatefulRuleGroupOverride struct {

	// The action that changes the rule group from DROP to ALERT . This only applies to
	// managed rule groups.
	Action NetworkFirewallOverrideAction

	noSmithyDocumentSerde
}

// Violation detail for an unexpected route that's present in a route table.
type NetworkFirewallUnexpectedFirewallRoutesViolation struct {

	// The endpoint of the firewall.
	FirewallEndpoint *string

	// The subnet ID for the firewall.
	FirewallSubnetId *string

	// The ID of the route table.
	RouteTableId *string

	// The routes that are in violation.
	ViolatingRoutes []Route

	// Information about the VPC ID.
	VpcId *string

	noSmithyDocumentSerde
}

// Violation detail for an unexpected gateway route that’s present in a route
// table.
type NetworkFirewallUnexpectedGatewayRoutesViolation struct {

	// Information about the gateway ID.
	GatewayId *string

	// Information about the route table.
	RouteTableId *string

	// The routes that are in violation.
	ViolatingRoutes []Route

	// Information about the VPC ID.
	VpcId *string

	noSmithyDocumentSerde
}

// Defines the Organizations organizational units (OUs) that the specified
// Firewall Manager administrator can apply policies to. For more information about
// OUs in Organizations, see Managing organizational units (OUs)  (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html)
// in the Organizations User Guide.
type OrganizationalUnitScope struct {

	// A boolean value that indicates if the administrator can apply policies to all
	// OUs within an organization. If true, the administrator can manage all OUs within
	// the organization. You can either enable management of all OUs through this
	// operation, or you can specify OUs to manage in
	// OrganizationalUnitScope$OrganizationalUnits . You cannot specify both.
	AllOrganizationalUnitsEnabled bool

	// A boolean value that excludes the OUs in
	// OrganizationalUnitScope$OrganizationalUnits from the administrator's scope. If
	// true, the Firewall Manager administrator can apply policies to all OUs in the
	// organization except for the OUs listed in
	// OrganizationalUnitScope$OrganizationalUnits . You can either specify a list of
	// OUs to exclude by OrganizationalUnitScope$OrganizationalUnits , or you can
	// enable management of all OUs by
	// OrganizationalUnitScope$AllOrganizationalUnitsEnabled . You cannot specify both.
	ExcludeSpecifiedOrganizationalUnits bool

	// The list of OUs within the organization that the specified Firewall Manager
	// administrator either can or cannot apply policies to, based on the value of
	// OrganizationalUnitScope$ExcludeSpecifiedOrganizationalUnits . If
	// OrganizationalUnitScope$ExcludeSpecifiedOrganizationalUnits is set to true ,
	// then the Firewall Manager administrator can apply policies to all OUs in the
	// organization except for the OUs in this list. If
	// OrganizationalUnitScope$ExcludeSpecifiedOrganizationalUnits is set to false ,
	// then the Firewall Manager administrator can only apply policies to the OUs in
	// this list.
	OrganizationalUnits []string

	noSmithyDocumentSerde
}

// The reference rule that partially matches the ViolationTarget rule and
// violation reason.
type PartialMatch struct {

	// The reference rule from the primary security group of the Firewall Manager
	// policy.
	Reference *string

	// The violation reason.
	TargetViolationReasons []string

	noSmithyDocumentSerde
}

// An Firewall Manager policy.
type Policy struct {

	// If set to True , resources with the tags that are specified in the ResourceTag
	// array are not in scope of the policy. If set to False , and the ResourceTag
	// array is not null, only resources with the specified tags are in scope of the
	// policy.
	//
	// This member is required.
	ExcludeResourceTags bool

	// The name of the Firewall Manager policy.
	//
	// This member is required.
	PolicyName *string

	// Indicates if the policy should be automatically applied to new resources.
	//
	// This member is required.
	RemediationEnabled bool

	// The type of resource protected by or in scope of the policy. This is in the
	// format shown in the Amazon Web Services Resource Types Reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
	// . To apply this policy to multiple resource types, specify a resource type of
	// ResourceTypeList and then specify the resource types in a ResourceTypeList . The
	// following are valid resource types for each Firewall Manager policy type:
	//   - Amazon Web Services WAF Classic - AWS::ApiGateway::Stage ,
	//   AWS::CloudFront::Distribution , and AWS::ElasticLoadBalancingV2::LoadBalancer
	//   .
	//   - WAF - AWS::ApiGateway::Stage , AWS::ElasticLoadBalancingV2::LoadBalancer ,
	//   and AWS::CloudFront::Distribution .
	//   - DNS Firewall, Network Firewall, and third-party firewall - AWS::EC2::VPC .
	//   - Shield Advanced - AWS::ElasticLoadBalancingV2::LoadBalancer ,
	//   AWS::ElasticLoadBalancing::LoadBalancer , AWS::EC2::EIP , and
	//   AWS::CloudFront::Distribution .
	//   - Security group content audit - AWS::EC2::SecurityGroup ,
	//   AWS::EC2::NetworkInterface , and AWS::EC2::Instance .
	//   - Security group usage audit - AWS::EC2::SecurityGroup .
	//
	// This member is required.
	ResourceType *string

	// Details about the security service that is being used to protect the resources.
	//
	// This member is required.
	SecurityServicePolicyData *SecurityServicePolicyData

	// Indicates whether Firewall Manager should automatically remove protections from
	// resources that leave the policy scope and clean up resources that Firewall
	// Manager is managing for accounts when those accounts leave policy scope. For
	// example, Firewall Manager will disassociate a Firewall Manager managed web ACL
	// from a protected customer resource when the customer resource leaves policy
	// scope. By default, Firewall Manager doesn't remove protections or delete
	// Firewall Manager managed resources. This option is not available for Shield
	// Advanced or WAF Classic policies.
	DeleteUnusedFMManagedResources bool

	// Specifies the Amazon Web Services account IDs and Organizations organizational
	// units (OUs) to exclude from the policy. Specifying an OU is the equivalent of
	// specifying all accounts in the OU and in any of its child OUs, including any
	// child OUs and accounts that are added at a later time. You can specify
	// inclusions or exclusions, but not both. If you specify an IncludeMap , Firewall
	// Manager applies the policy to all accounts specified by the IncludeMap , and
	// does not evaluate any ExcludeMap specifications. If you do not specify an
	// IncludeMap , then Firewall Manager applies the policy to all accounts except for
	// those specified by the ExcludeMap . You can specify account IDs, OUs, or a
	// combination:
	//   - Specify account IDs by setting the key to ACCOUNT . For example, the
	//   following is a valid map: {“ACCOUNT” : [“accountID1”, “accountID2”]} .
	//   - Specify OUs by setting the key to ORG_UNIT . For example, the following is a
	//   valid map: {“ORG_UNIT” : [“ouid111”, “ouid112”]} .
	//   - Specify accounts and OUs together in a single map, separated with a comma.
	//   For example, the following is a valid map: {“ACCOUNT” : [“accountID1”,
	//   “accountID2”], “ORG_UNIT” : [“ouid111”, “ouid112”]} .
	ExcludeMap map[string][]string

	// Specifies the Amazon Web Services account IDs and Organizations organizational
	// units (OUs) to include in the policy. Specifying an OU is the equivalent of
	// specifying all accounts in the OU and in any of its child OUs, including any
	// child OUs and accounts that are added at a later time. You can specify
	// inclusions or exclusions, but not both. If you specify an IncludeMap , Firewall
	// Manager applies the policy to all accounts specified by the IncludeMap , and
	// does not evaluate any ExcludeMap specifications. If you do not specify an
	// IncludeMap , then Firewall Manager applies the policy to all accounts except for
	// those specified by the ExcludeMap . You can specify account IDs, OUs, or a
	// combination:
	//   - Specify account IDs by setting the key to ACCOUNT . For example, the
	//   following is a valid map: {“ACCOUNT” : [“accountID1”, “accountID2”]} .
	//   - Specify OUs by setting the key to ORG_UNIT . For example, the following is a
	//   valid map: {“ORG_UNIT” : [“ouid111”, “ouid112”]} .
	//   - Specify accounts and OUs together in a single map, separated with a comma.
	//   For example, the following is a valid map: {“ACCOUNT” : [“accountID1”,
	//   “accountID2”], “ORG_UNIT” : [“ouid111”, “ouid112”]} .
	IncludeMap map[string][]string

	// The definition of the Network Firewall firewall policy.
	PolicyDescription *string

	// The ID of the Firewall Manager policy.
	PolicyId *string

	// Indicates whether the policy is in or out of an admin's policy or Region scope.
	//   - ACTIVE - The administrator can manage and delete the policy.
	//   - OUT_OF_ADMIN_SCOPE - The administrator can view the policy, but they can't
	//   edit or delete the policy. Existing policy protections stay in place. Any new
	//   resources that come into scope of the policy won't be protected.
	PolicyStatus CustomerPolicyStatus

	// A unique identifier for each update to the policy. When issuing a PutPolicy
	// request, the PolicyUpdateToken in the request must match the PolicyUpdateToken
	// of the current policy version. To get the PolicyUpdateToken of the current
	// policy version, use a GetPolicy request.
	PolicyUpdateToken *string

	// The unique identifiers of the resource sets used by the policy.
	ResourceSetIds []string

	// An array of ResourceTag objects.
	ResourceTags []ResourceTag

	// An array of ResourceType objects. Use this only to specify multiple resource
	// types. To specify a single resource type, use ResourceType .
	ResourceTypeList []string

	noSmithyDocumentSerde
}

// Describes the noncompliant resources in a member account for a specific
// Firewall Manager policy. A maximum of 100 entries are displayed. If more than
// 100 resources are noncompliant, EvaluationLimitExceeded is set to True .
type PolicyComplianceDetail struct {

	// Indicates if over 100 resources are noncompliant with the Firewall Manager
	// policy.
	EvaluationLimitExceeded bool

	// A timestamp that indicates when the returned information should be considered
	// out of date.
	ExpiredAt *time.Time

	// Details about problems with dependent services, such as WAF or Config, and the
	// error message received that indicates the problem with the service.
	IssueInfoMap map[string]string

	// The Amazon Web Services account ID.
	MemberAccount *string

	// The ID of the Firewall Manager policy.
	PolicyId *string

	// The Amazon Web Services account that created the Firewall Manager policy.
	PolicyOwner *string

	// An array of resources that aren't protected by the WAF or Shield Advanced
	// policy or that aren't in compliance with the security group policy.
	Violators []ComplianceViolator

	noSmithyDocumentSerde
}

// Indicates whether the account is compliant with the specified policy. An
// account is considered noncompliant if it includes resources that are not
// protected by the policy, for WAF and Shield Advanced policies, or that are
// noncompliant with the policy, for security group policies.
type PolicyComplianceStatus struct {

	// An array of EvaluationResult objects.
	EvaluationResults []EvaluationResult

	// Details about problems with dependent services, such as WAF or Config, and the
	// error message received that indicates the problem with the service.
	IssueInfoMap map[string]string

	// Timestamp of the last update to the EvaluationResult objects.
	LastUpdated *time.Time

	// The member account ID.
	MemberAccount *string

	// The ID of the Firewall Manager policy.
	PolicyId *string

	// The name of the Firewall Manager policy.
	PolicyName *string

	// The Amazon Web Services account that created the Firewall Manager policy.
	PolicyOwner *string

	noSmithyDocumentSerde
}

// Contains the Network Firewall firewall policy options to configure the policy's
// deployment model and third-party firewall policy settings.
type PolicyOption struct {

	// Defines the deployment model to use for the firewall policy.
	NetworkFirewallPolicy *NetworkFirewallPolicy

	// Defines the policy options for a third-party firewall policy.
	ThirdPartyFirewallPolicy *ThirdPartyFirewallPolicy

	noSmithyDocumentSerde
}

// Details of the Firewall Manager policy.
type PolicySummary struct {

	// Indicates whether Firewall Manager should automatically remove protections from
	// resources that leave the policy scope and clean up resources that Firewall
	// Manager is managing for accounts when those accounts leave policy scope. For
	// example, Firewall Manager will disassociate a Firewall Manager managed web ACL
	// from a protected customer resource when the customer resource leaves policy
	// scope. By default, Firewall Manager doesn't remove protections or delete
	// Firewall Manager managed resources. This option is not available for Shield
	// Advanced or WAF Classic policies.
	DeleteUnusedFMManagedResources bool

	// The Amazon Resource Name (ARN) of the specified policy.
	PolicyArn *string

	// The ID of the specified policy.
	PolicyId *string

	// The name of the specified policy.
	PolicyName *string

	// Indicates whether the policy is in or out of an admin's policy or Region scope.
	//   - ACTIVE - The administrator can manage and delete the policy.
	//   - OUT_OF_ADMIN_SCOPE - The administrator can view the policy, but they can't
	//   edit or delete the policy. Existing policy protections stay in place. Any new
	//   resources that come into scope of the policy won't be protected.
	PolicyStatus CustomerPolicyStatus

	// Indicates if the policy should be automatically applied to new resources.
	RemediationEnabled bool

	// The type of resource protected by or in scope of the policy. This is in the
	// format shown in the Amazon Web Services Resource Types Reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
	// . For WAF and Shield Advanced, examples include
	// AWS::ElasticLoadBalancingV2::LoadBalancer and AWS::CloudFront::Distribution .
	// For a security group common policy, valid values are AWS::EC2::NetworkInterface
	// and AWS::EC2::Instance . For a security group content audit policy, valid values
	// are AWS::EC2::SecurityGroup , AWS::EC2::NetworkInterface , and
	// AWS::EC2::Instance . For a security group usage audit policy, the value is
	// AWS::EC2::SecurityGroup . For an Network Firewall policy or DNS Firewall policy,
	// the value is AWS::EC2::VPC .
	ResourceType *string

	// The service that the policy is using to protect the resources. This specifies
	// the type of policy that is created, either an WAF policy, a Shield Advanced
	// policy, or a security group policy.
	SecurityServiceType SecurityServiceType

	noSmithyDocumentSerde
}

// Defines the policy types that the specified Firewall Manager administrator can
// manage.
type PolicyTypeScope struct {

	// Allows the specified Firewall Manager administrator to manage all Firewall
	// Manager policy types, except for third-party policy types. Third-party policy
	// types can only be managed by the Firewall Manager default administrator.
	AllPolicyTypesEnabled bool

	// The list of policy types that the specified Firewall Manager administrator can
	// manage.
	PolicyTypes []SecurityServiceType

	noSmithyDocumentSerde
}

// A list of remediation actions.
type PossibleRemediationAction struct {

	// The ordered list of remediation actions.
	//
	// This member is required.
	OrderedRemediationActions []RemediationActionWithOrder

	// A description of the list of remediation actions.
	Description *string

	// Information about whether an action is taken by default.
	IsDefaultAction bool

	noSmithyDocumentSerde
}

// A list of possible remediation action lists. Each individual possible
// remediation action is a list of individual remediation actions.
type PossibleRemediationActions struct {

	// Information about the actions.
	Actions []PossibleRemediationAction

	// A description of the possible remediation actions list.
	Description *string

	noSmithyDocumentSerde
}

// An Firewall Manager protocols list.
type ProtocolsListData struct {

	// The name of the Firewall Manager protocols list.
	//
	// This member is required.
	ListName *string

	// An array of protocols in the Firewall Manager protocols list.
	//
	// This member is required.
	ProtocolsList []string

	// The time that the Firewall Manager protocols list was created.
	CreateTime *time.Time

	// The time that the Firewall Manager protocols list was last updated.
	LastUpdateTime *time.Time

	// The ID of the Firewall Manager protocols list.
	ListId *string

	// A unique identifier for each update to the list. When you update the list, the
	// update token must match the token of the current version of the application
	// list. You can retrieve the update token by getting the list.
	ListUpdateToken *string

	// A map of previous version numbers to their corresponding protocol arrays.
	PreviousProtocolsList map[string][]string

	noSmithyDocumentSerde
}

// Details of the Firewall Manager protocols list.
type ProtocolsListDataSummary struct {

	// The Amazon Resource Name (ARN) of the specified protocols list.
	ListArn *string

	// The ID of the specified protocols list.
	ListId *string

	// The name of the specified protocols list.
	ListName *string

	// An array of protocols in the Firewall Manager protocols list.
	ProtocolsList []string

	noSmithyDocumentSerde
}

// Defines the Amazon Web Services Regions that the specified Firewall Manager
// administrator can manage.
type RegionScope struct {

	// Allows the specified Firewall Manager administrator to manage all Amazon Web
	// Services Regions.
	AllRegionsEnabled bool

	// The Amazon Web Services Regions that the specified Firewall Manager
	// administrator can perform actions in.
	Regions []string

	noSmithyDocumentSerde
}

// Information about an individual action you can take to remediate a violation.
type RemediationAction struct {

	// A description of a remediation action.
	Description *string

	// Information about the AssociateRouteTable action in the Amazon EC2 API.
	EC2AssociateRouteTableAction *EC2AssociateRouteTableAction

	// Information about the CopyRouteTable action in the Amazon EC2 API.
	EC2CopyRouteTableAction *EC2CopyRouteTableAction

	// Information about the CreateRoute action in the Amazon EC2 API.
	EC2CreateRouteAction *EC2CreateRouteAction

	// Information about the CreateRouteTable action in the Amazon EC2 API.
	EC2CreateRouteTableAction *EC2CreateRouteTableAction

	// Information about the DeleteRoute action in the Amazon EC2 API.
	EC2DeleteRouteAction *EC2DeleteRouteAction

	// Information about the ReplaceRoute action in the Amazon EC2 API.
	EC2ReplaceRouteAction *EC2ReplaceRouteAction

	// Information about the ReplaceRouteTableAssociation action in the Amazon EC2 API.
	EC2ReplaceRouteTableAssociationAction *EC2ReplaceRouteTableAssociationAction

	// The remedial action to take when updating a firewall configuration.
	FMSPolicyUpdateFirewallCreationConfigAction *FMSPolicyUpdateFirewallCreationConfigAction

	noSmithyDocumentSerde
}

// An ordered list of actions you can take to remediate a violation.
type RemediationActionWithOrder struct {

	// The order of the remediation actions in the list.
	Order int32

	// Information about an action you can take to remediate a violation.
	RemediationAction *RemediationAction

	noSmithyDocumentSerde
}

// Details of a resource that is associated to an Firewall Manager resource set.
type Resource struct {

	// The resource's universal resource indicator (URI).
	//
	// This member is required.
	URI *string

	// The Amazon Web Services account ID that the associated resource belongs to.
	AccountId *string

	noSmithyDocumentSerde
}

// A set of resources to include in a policy.
type ResourceSet struct {

	// The descriptive name of the resource set. You can't change the name of a
	// resource set after you create it.
	//
	// This member is required.
	Name *string

	// Determines the resources that can be associated to the resource set. Depending
	// on your setting for max results and the number of resource sets, a single call
	// might not return the full list.
	//
	// This member is required.
	ResourceTypeList []string

	// A description of the resource set.
	Description *string

	// A unique identifier for the resource set. This ID is returned in the responses
	// to create and list commands. You provide it to operations like update and
	// delete.
	Id *string

	// The last time that the resource set was changed.
	LastUpdateTime *time.Time

	// Indicates whether the resource set is in or out of an admin's Region scope.
	//   - ACTIVE - The administrator can manage and delete the resource set.
	//   - OUT_OF_ADMIN_SCOPE - The administrator can view the resource set, but they
	//   can't edit or delete the resource set. Existing protections stay in place. Any
	//   new resource that come into scope of the resource set won't be protected.
	ResourceSetStatus ResourceSetStatus

	// An optional token that you can use for optimistic locking. Firewall Manager
	// returns a token to your requests that access the resource set. The token marks
	// the state of the resource set resource at the time of the request. Update tokens
	// are not allowed when creating a resource set. After creation, each subsequent
	// update call to the resource set requires the update token. To make an
	// unconditional change to the resource set, omit the token in your update request.
	// Without the token, Firewall Manager performs your updates regardless of whether
	// the resource set has changed since you last retrieved it. To make a conditional
	// change to the resource set, provide the token in your update request. Firewall
	// Manager uses the token to ensure that the resource set hasn't changed since you
	// last retrieved it. If it has changed, the operation fails with an
	// InvalidTokenException . If this happens, retrieve the resource set again to get
	// a current copy of it with a new token. Reapply your changes as needed, then try
	// the operation again using the new token.
	UpdateToken *string

	noSmithyDocumentSerde
}

// Summarizes the resource sets used in a policy.
type ResourceSetSummary struct {

	// A description of the resource set.
	Description *string

	// A unique identifier for the resource set. This ID is returned in the responses
	// to create and list commands. You provide it to operations like update and
	// delete.
	Id *string

	// The last time that the resource set was changed.
	LastUpdateTime *time.Time

	// The descriptive name of the resource set. You can't change the name of a
	// resource set after you create it.
	Name *string

	// Indicates whether the resource set is in or out of an admin's Region scope.
	//   - ACTIVE - The administrator can manage and delete the resource set.
	//   - OUT_OF_ADMIN_SCOPE - The administrator can view the resource set, but they
	//   can't edit or delete the resource set. Existing protections stay in place. Any
	//   new resource that come into scope of the resource set won't be protected.
	ResourceSetStatus ResourceSetStatus

	noSmithyDocumentSerde
}

// The resource tags that Firewall Manager uses to determine if a particular
// resource should be included or excluded from the Firewall Manager policy. Tags
// enable you to categorize your Amazon Web Services resources in different ways,
// for example, by purpose, owner, or environment. Each tag consists of a key and
// an optional value. Firewall Manager combines the tags with "AND" so that, if you
// add more than one tag to a policy scope, a resource must have all the specified
// tags to be included or excluded. For more information, see Working with Tag
// Editor (https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html)
// .
type ResourceTag struct {

	// The resource tag key.
	//
	// This member is required.
	Key *string

	// The resource tag value.
	Value *string

	noSmithyDocumentSerde
}

// Violation detail based on resource type.
type ResourceViolation struct {

	// Violation detail for an EC2 instance.
	AwsEc2InstanceViolation *AwsEc2InstanceViolation

	// Violation detail for a network interface.
	AwsEc2NetworkInterfaceViolation *AwsEc2NetworkInterfaceViolation

	// Violation detail for security groups.
	AwsVPCSecurityGroupViolation *AwsVPCSecurityGroupViolation

	// Violation detail for a DNS Firewall policy that indicates that a rule group
	// that Firewall Manager tried to associate with a VPC is already associated with
	// the VPC and can't be associated again.
	DnsDuplicateRuleGroupViolation *DnsDuplicateRuleGroupViolation

	// Violation detail for a DNS Firewall policy that indicates that the VPC reached
	// the limit for associated DNS Firewall rule groups. Firewall Manager tried to
	// associate another rule group with the VPC and failed.
	DnsRuleGroupLimitExceededViolation *DnsRuleGroupLimitExceededViolation

	// Violation detail for a DNS Firewall policy that indicates that a rule group
	// that Firewall Manager tried to associate with a VPC has the same priority as a
	// rule group that's already associated.
	DnsRuleGroupPriorityConflictViolation *DnsRuleGroupPriorityConflictViolation

	// Contains details about the firewall subnet that violates the policy scope.
	FirewallSubnetIsOutOfScopeViolation *FirewallSubnetIsOutOfScopeViolation

	// The violation details for a third-party firewall's VPC endpoint subnet that was
	// deleted.
	FirewallSubnetMissingVPCEndpointViolation *FirewallSubnetMissingVPCEndpointViolation

	// Violation detail for an internet gateway route with an inactive state in the
	// customer subnet route table or Network Firewall subnet route table.
	NetworkFirewallBlackHoleRouteDetectedViolation *NetworkFirewallBlackHoleRouteDetectedViolation

	// Violation detail for the subnet for which internet traffic hasn't been
	// inspected.
	NetworkFirewallInternetTrafficNotInspectedViolation *NetworkFirewallInternetTrafficNotInspectedViolation

	// The route configuration is invalid.
	NetworkFirewallInvalidRouteConfigurationViolation *NetworkFirewallInvalidRouteConfigurationViolation

	// Violation detail for an Network Firewall policy that indicates that a subnet is
	// not associated with the expected Firewall Manager managed route table.
	NetworkFirewallMissingExpectedRTViolation *NetworkFirewallMissingExpectedRTViolation

	// Expected routes are missing from Network Firewall.
	NetworkFirewallMissingExpectedRoutesViolation *NetworkFirewallMissingExpectedRoutesViolation

	// Violation detail for an Network Firewall policy that indicates that a subnet
	// has no Firewall Manager managed firewall in its VPC.
	NetworkFirewallMissingFirewallViolation *NetworkFirewallMissingFirewallViolation

	// Violation detail for an Network Firewall policy that indicates that an
	// Availability Zone is missing the expected Firewall Manager managed subnet.
	NetworkFirewallMissingSubnetViolation *NetworkFirewallMissingSubnetViolation

	// Violation detail for an Network Firewall policy that indicates that a firewall
	// policy in an individual account has been modified in a way that makes it
	// noncompliant. For example, the individual account owner might have deleted a
	// rule group, changed the priority of a stateless rule group, or changed a policy
	// default action.
	NetworkFirewallPolicyModifiedViolation *NetworkFirewallPolicyModifiedViolation

	// There's an unexpected firewall route.
	NetworkFirewallUnexpectedFirewallRoutesViolation *NetworkFirewallUnexpectedFirewallRoutesViolation

	// There's an unexpected gateway route.
	NetworkFirewallUnexpectedGatewayRoutesViolation *NetworkFirewallUnexpectedGatewayRoutesViolation

	// A list of possible remediation action lists. Each individual possible
	// remediation action is a list of individual remediation actions.
	PossibleRemediationActions *PossibleRemediationActions

	// Contains details about the route endpoint that violates the policy scope.
	RouteHasOutOfScopeEndpointViolation *RouteHasOutOfScopeEndpointViolation

	// The violation details for a third-party firewall that has the Firewall Manager
	// managed route table that was associated with the third-party firewall has been
	// deleted.
	ThirdPartyFirewallMissingExpectedRouteTableViolation *ThirdPartyFirewallMissingExpectedRouteTableViolation

	// The violation details for a third-party firewall that's been deleted.
	ThirdPartyFirewallMissingFirewallViolation *ThirdPartyFirewallMissingFirewallViolation

	// The violation details for a third-party firewall's subnet that's been deleted.
	ThirdPartyFirewallMissingSubnetViolation *ThirdPartyFirewallMissingSubnetViolation

	noSmithyDocumentSerde
}

// Describes a route in a route table.
type Route struct {

	// The destination of the route.
	Destination *string

	// The type of destination for the route.
	DestinationType DestinationType

	// The route's target.
	Target *string

	// The type of target for the route.
	TargetType TargetType

	noSmithyDocumentSerde
}

// Contains details about the route endpoint that violates the policy scope.
type RouteHasOutOfScopeEndpointViolation struct {

	// The route table associated with the current firewall subnet.
	CurrentFirewallSubnetRouteTable *string

	// The current route table associated with the Internet Gateway.
	CurrentInternetGatewayRouteTable *string

	// The ID of the firewall subnet.
	FirewallSubnetId *string

	// The list of firewall subnet routes.
	FirewallSubnetRoutes []Route

	// The ID of the Internet Gateway.
	InternetGatewayId *string

	// The routes in the route table associated with the Internet Gateway.
	InternetGatewayRoutes []Route

	// The ID of the route table.
	RouteTableId *string

	// The subnet's Availability Zone.
	SubnetAvailabilityZone *string

	// The ID of the subnet's Availability Zone.
	SubnetAvailabilityZoneId *string

	// The ID of the subnet associated with the route that violates the policy scope.
	SubnetId *string

	// The list of routes that violate the route table.
	ViolatingRoutes []Route

	// The VPC ID of the route that violates the policy scope.
	VpcId *string

	noSmithyDocumentSerde
}

// Remediation option for the rule specified in the ViolationTarget .
type SecurityGroupRemediationAction struct {

	// Brief description of the action that will be performed.
	Description *string

	// Indicates if the current action is the default action.
	IsDefaultAction bool

	// The remediation action that will be performed.
	RemediationActionType RemediationActionType

	// The final state of the rule specified in the ViolationTarget after it is
	// remediated.
	RemediationResult *SecurityGroupRuleDescription

	noSmithyDocumentSerde
}

// Describes a set of permissions for a security group rule.
type SecurityGroupRuleDescription struct {

	// The start of the port range for the TCP and UDP protocols, or an ICMP/ICMPv6
	// type number. A value of -1 indicates all ICMP/ICMPv6 types.
	FromPort *int64

	// The IPv4 ranges for the security group rule.
	IPV4Range *string

	// The IPv6 ranges for the security group rule.
	IPV6Range *string

	// The ID of the prefix list for the security group rule.
	PrefixListId *string

	// The IP protocol name ( tcp , udp , icmp , icmpv6 ) or number.
	Protocol *string

	// The end of the port range for the TCP and UDP protocols, or an ICMP/ICMPv6
	// code. A value of -1 indicates all ICMP/ICMPv6 codes.
	ToPort *int64

	noSmithyDocumentSerde
}

// Details about the security service that is being used to protect the resources.
type SecurityServicePolicyData struct {

	// The service that the policy is using to protect the resources. This specifies
	// the type of policy that is created, either an WAF policy, a Shield Advanced
	// policy, or a security group policy. For security group policies, Firewall
	// Manager supports one security group for each common policy and for each content
	// audit policy. This is an adjustable limit that you can increase by contacting
	// Amazon Web Services Support.
	//
	// This member is required.
	Type SecurityServiceType

	// Details about the service that are specific to the service type, in JSON
	// format.
	//   - Example: DNS_FIREWALL
	//   "{\"type\":\"DNS_FIREWALL\",\"preProcessRuleGroups\":[{\"ruleGroupId\":\"rslvr-frg-1\",\"priority\":10}],\"postProcessRuleGroups\":[{\"ruleGroupId\":\"rslvr-frg-2\",\"priority\":9911}]}"
	//   Valid values for preProcessRuleGroups are between 1 and 99. Valid values for
	//   postProcessRuleGroups are between 9901 and 10000.
	//   - Example: IMPORT_NETWORK_FIREWALL
	//   "{\"type\":\"IMPORT_NETWORK_FIREWALL\",\"awsNetworkFirewallConfig\":{\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-west-2:000000000000:stateless-rulegroup\/rg1\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:drop\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:pass\"],\"networkFirewallStatelessCustomActions\":[],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-west-2:aws-managed:stateful-rulegroup\/ThreatSignaturesEmergingEventsStrictOrder\",\"priority\":8}],\"networkFirewallStatefulEngineOptions\":{\"ruleOrder\":\"STRICT_ORDER\"},\"networkFirewallStatefulDefaultActions\":[\"aws:drop_strict\"]}}"
	//   "{\"type\":\"DNS_FIREWALL\",\"preProcessRuleGroups\":[{\"ruleGroupId\":\"rslvr-frg-1\",\"priority\":10}],\"postProcessRuleGroups\":[{\"ruleGroupId\":\"rslvr-frg-2\",\"priority\":9911}]}"
	//   Valid values for preProcessRuleGroups are between 1 and 99. Valid values for
	//   postProcessRuleGroups are between 9901 and 10000.
	//   - Example: NETWORK_FIREWALL - Centralized deployment model
	//   "{\"type\":\"NETWORK_FIREWALL\",\"awsNetworkFirewallConfig\":{\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessCustomActions\":[{\"actionName\":\"customActionName\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"metricdimensionvalue\"}]}}}],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\"}],\"networkFirewallLoggingConfiguration\":{\"logDestinationConfigs\":[{\"logDestinationType\":\"S3\",\"logType\":\"ALERT\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}},{\"logDestinationType\":\"S3\",\"logType\":\"FLOW\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}}],\"overrideExistingConfig\":true}},\"firewallDeploymentModel\":{\"centralizedFirewallDeploymentModel\":{\"centralizedFirewallOrchestrationConfig\":{\"inspectionVpcIds\":[{\"resourceId\":\"vpc-1234\",\"accountId\":\"123456789011\"}],\"firewallCreationConfig\":{\"endpointLocation\":{\"availabilityZoneConfigList\":[{\"availabilityZoneId\":null,\"availabilityZoneName\":\"us-east-1a\",\"allowedIPV4CidrList\":[\"10.0.0.0/28\"]}]}},\"allowedIPV4CidrList\":[]}}}}"
	//   To use the centralized deployment model, you must set PolicyOption (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html)
	//   to CENTRALIZED .
	//   - Example: NETWORK_FIREWALL - Distributed deployment model with automatic
	//   Availability Zone configuration
	//   "{\"type\":\"NETWORK_FIREWALL\",\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessCustomActions\":[{\"actionName\":\"customActionName\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"metricdimensionvalue\"}]}}}],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\"}],\"networkFirewallOrchestrationConfig\":{\"singleFirewallEndpointPerVPC\":false,\"allowedIPV4CidrList\":[\"10.0.0.0/28\",\"192.168.0.0/28\"],\"routeManagementAction\":\"OFF\"},\"networkFirewallLoggingConfiguration\":{\"logDestinationConfigs\":[{\"logDestinationType\":\"S3\",\"logType\":\"ALERT\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}},{\"logDestinationType\":\"S3\",\"logType\":\"FLOW\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}}],\"overrideExistingConfig\":true}}"
	//   With automatic Availbility Zone configuration, Firewall Manager chooses which
	//   Availability Zones to create the endpoints in. To use the distributed deployment
	//   model, you must set PolicyOption (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html)
	//   to NULL .
	//   - Example: NETWORK_FIREWALL - Distributed deployment model with automatic
	//   Availability Zone configuration and route management
	//   "{\"type\":\"NETWORK_FIREWALL\",\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessCustomActions\":[{\"actionName\":\"customActionName\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"metricdimensionvalue\"}]}}}],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\"}],\"networkFirewallOrchestrationConfig\":{\"singleFirewallEndpointPerVPC\":false,\"allowedIPV4CidrList\":[\"10.0.0.0/28\",\"192.168.0.0/28\"],\"routeManagementAction\":\"MONITOR\",\"routeManagementTargetTypes\":[\"InternetGateway\"]},\"networkFirewallLoggingConfiguration\":{\"logDestinationConfigs\":[{\"logDestinationType\":\"S3\",\"logType\":\"ALERT\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}},{\"logDestinationType\":\"S3\",\"logType\":
	//   \"FLOW\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}}],\"overrideExistingConfig\":true}}"
	//   To use the distributed deployment model, you must set PolicyOption (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html)
	//   to NULL .
	//   - Example: NETWORK_FIREWALL - Distributed deployment model with custom
	//   Availability Zone configuration
	//   "{\"type\":\"NETWORK_FIREWALL\",\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:forward_to_sfe\",\"fragmentcustomactionname\"],\"networkFirewallStatelessCustomActions\":[{\"actionName\":\"customActionName\",
	//   \"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"metricdimensionvalue\"}]}}},{\"actionName\":\"fragmentcustomactionname\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"fragmentmetricdimensionvalue\"}]}}}],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\"}],\"networkFirewallOrchestrationConfig\":{\"firewallCreationConfig\":{
	//   \"endpointLocation\":{\"availabilityZoneConfigList\":[{\"availabilityZoneName\":\"us-east-1a\",\"allowedIPV4CidrList\":[\"10.0.0.0/28\"]},{\"availabilityZoneName\":\"us-east-1b\",\"allowedIPV4CidrList\":[
	//   \"10.0.0.0/28\"]}]}
	//   },\"singleFirewallEndpointPerVPC\":false,\"allowedIPV4CidrList\":null,\"routeManagementAction\":\"OFF\",\"networkFirewallLoggingConfiguration\":{\"logDestinationConfigs\":[{\"logDestinationType\":\"S3\",\"logType\":\"ALERT\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}},{\"logDestinationType\":\"S3\",\"logType\":\"FLOW\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}}],\"overrideExistingConfig\":boolean}}"
	//   With custom Availability Zone configuration, you define which specific
	//   Availability Zones to create endpoints in by configuring
	//   firewallCreationConfig . To configure the Availability Zones in
	//   firewallCreationConfig , specify either the availabilityZoneName or
	//   availabilityZoneId parameter, not both parameters. To use the distributed
	//   deployment model, you must set PolicyOption (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html)
	//   to NULL .
	//   - Example: NETWORK_FIREWALL - Distributed deployment model with custom
	//   Availability Zone configuration and route management
	//   "{\"type\":\"NETWORK_FIREWALL\",\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:forward_to_sfe\",\"fragmentcustomactionname\"],\"networkFirewallStatelessCustomActions\":[{\"actionName\":\"customActionName\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"metricdimensionvalue\"}]}}},{\"actionName\":\"fragmentcustomactionname\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"fragmentmetricdimensionvalue\"}]}}}],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\"}],\"networkFirewallOrchestrationConfig\":{\"firewallCreationConfig\":{\"endpointLocation\":{\"availabilityZoneConfigList\":[{\"availabilityZoneName\":\"us-east-1a\",\"allowedIPV4CidrList\":[\"10.0.0.0/28\"]},{\"availabilityZoneName\":\"us-east-1b\",\"allowedIPV4CidrList\":[\"10.0.0.0/28\"]}]}},\"singleFirewallEndpointPerVPC\":false,\"allowedIPV4CidrList\":null,\"routeManagementAction\":\"MONITOR\",\"routeManagementTargetTypes\":[\"InternetGateway\"],\"routeManagementConfig\":{\"allowCrossAZTrafficIfNoEndpoint\":true}},\"networkFirewallLoggingConfiguration\":{\"logDestinationConfigs\":[{\"logDestinationType\":\"S3\",\"logType\":\"ALERT\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}},{\"logDestinationType\":\"S3\",\"logType\":\"FLOW\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}}],\"overrideExistingConfig\":boolean}}"
	//   To use the distributed deployment model, you must set PolicyOption (https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html)
	//   to NULL .
	//   - Example: SECURITY_GROUPS_COMMON
	//   "{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":false,\"exclusiveResourceSecurityGroupManagement\":false,
	//   \"applyToAllEC2InstanceENIs\":false,\"securityGroups\":[{\"id\":\"
	//   sg-000e55995d61a06bd\"}]}"
	//   - Example: SECURITY_GROUPS_COMMON - Security group tag distribution
	//   ""{\"type\":\"SECURITY_GROUPS_COMMON\",\"securityGroups\":[{\"id\":\"sg-000e55995d61a06bd\"}],\"revertManualSecurityGroupChanges\":true,\"exclusiveResourceSecurityGroupManagement\":false,\"applyToAllEC2InstanceENIs\":false,\"includeSharedVPC\":false,\"enableTagDistribution\":true}""
	//   Firewall Manager automatically distributes tags from the primary group to the
	//   security groups created by this policy. To use security group tag distribution,
	//   you must also set revertManualSecurityGroupChanges to true , otherwise
	//   Firewall Manager won't be able to create the policy. When you enable
	//   revertManualSecurityGroupChanges , Firewall Manager identifies and reports
	//   when the security groups created by this policy become non-compliant. Firewall
	//   Manager won't distrubute system tags added by Amazon Web Services services into
	//   the replica security groups. System tags begin with the aws: prefix.
	//   - Example: Shared VPCs. Apply the preceding policy to resources in shared
	//   VPCs as well as to those in VPCs that the account owns
	//   "{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":false,\"exclusiveResourceSecurityGroupManagement\":false,
	//   \"applyToAllEC2InstanceENIs\":false,\"includeSharedVPC\":true,\"securityGroups\":[{\"id\":\"
	//   sg-000e55995d61a06bd\"}]}"
	//   - Example: SECURITY_GROUPS_CONTENT_AUDIT
	//   "{\"type\":\"SECURITY_GROUPS_CONTENT_AUDIT\",\"securityGroups\":[{\"id\":\"sg-000e55995d61a06bd\"}],\"securityGroupAction\":{\"type\":\"ALLOW\"}}"
	//   The security group action for content audit can be ALLOW or DENY . For ALLOW ,
	//   all in-scope security group rules must be within the allowed range of the
	//   policy's security group rules. For DENY , all in-scope security group rules
	//   must not contain a value or a range that matches a rule value or range in the
	//   policy security group.
	//   - Example: SECURITY_GROUPS_USAGE_AUDIT
	//   "{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":true,\"coalesceRedundantSecurityGroups\":true}"
	//   - Example: SHIELD_ADVANCED with web ACL management
	//   "{\"type\":\"SHIELD_ADVANCED\",\"optimizeUnassociatedWebACL\":true}" If you
	//   set optimizeUnassociatedWebACL to true , Firewall Manager creates web ACLs in
	//   accounts within the policy scope if the web ACLs will be used by at least one
	//   resource. Firewall Manager creates web ACLs in the accounts within policy scope
	//   only if the web ACLs will be used by at least one resource. If at any time an
	//   account comes into policy scope, Firewall Manager automatically creates a web
	//   ACL in the account if at least one resource will use the web ACL. Upon
	//   enablement, Firewall Manager performs a one-time cleanup of unused web ACLs in
	//   your account. The cleanup process can take several hours. If a resource leaves
	//   policy scope after Firewall Manager creates a web ACL, Firewall Manager doesn't
	//   disassociate the resource from the web ACL. If you want Firewall Manager to
	//   clean up the web ACL, you must first manually disassociate the resources from
	//   the web ACL, and then enable the manage unused web ACLs option in your policy.
	//   If you set optimizeUnassociatedWebACL to false , and Firewall Manager
	//   automatically creates an empty web ACL in each account that's within policy
	//   scope.
	//   - Specification for SHIELD_ADVANCED for Amazon CloudFront distributions
	//   "{\"type\":\"SHIELD_ADVANCED\",\"automaticResponseConfiguration\":
	//   {\"automaticResponseStatus\":\"ENABLED|IGNORED|DISABLED\",
	//   \"automaticResponseAction\":\"BLOCK|COUNT\"},
	//   \"overrideCustomerWebaclClassic\":true|false,
	//   \"optimizeUnassociatedWebACL\":true|false}" For example:
	//   "{\"type\":\"SHIELD_ADVANCED\",\"automaticResponseConfiguration\":
	//   {\"automaticResponseStatus\":\"ENABLED\",
	//   \"automaticResponseAction\":\"COUNT\"}}" The default value for
	//   automaticResponseStatus is IGNORED . The value for automaticResponseAction is
	//   only required when automaticResponseStatus is set to ENABLED . The default
	//   value for overrideCustomerWebaclClassic is false . For other resource types
	//   that you can protect with a Shield Advanced policy, this ManagedServiceData
	//   configuration is an empty string.
	//   - Example: THIRD_PARTY_FIREWALL Replace THIRD_PARTY_FIREWALL_NAME with the
	//   name of the third-party firewall. "{ "type":"THIRD_PARTY_FIREWALL",
	//   "thirdPartyFirewall":"THIRD_PARTY_FIREWALL_NAME", "thirdPartyFirewallConfig":{
	//   "thirdPartyFirewallPolicyList":["global-1"] }, "firewallDeploymentModel":{
	//   "distributedFirewallDeploymentModel":{
	//   "distributedFirewallOrchestrationConfig":{ "firewallCreationConfig":{
	//   "endpointLocation":{ "availabilityZoneConfigList":[ {
	//   "availabilityZoneName":"${AvailabilityZone}" } ] } }, "allowedIPV4CidrList":[ ]
	//   } } } }"
	//   - Example: WAFV2 - Account takeover prevention, Bot Control managed rule
	//   groups, optimize unassociated web ACL, and rule action override
	//   "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\":{\"versionEnabled\":null,\"version\":null,\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesATPRuleSet\",\"managedRuleGroupConfigs\":[{\"awsmanagedRulesATPRuleSet\":{\"loginPath\":\"/loginpath\",\"requestInspection\":{\"payloadType\":\"FORM_ENCODED|JSON\",\"usernameField\":{\"identifier\":\"/form/username\"},\"passwordField\":{\"identifier\":\"/form/password\"}}}}]},\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[],\"sampledRequestsEnabled\":true},{\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\":{\"versionEnabled\":null,\"version\":null,\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesBotControlRuleSet\",\"managedRuleGroupConfigs\":[{\"awsmanagedRulesBotControlRuleSet\":{\"inspectionLevel\":\"TARGETED|COMMON\"}}]},\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[],\"sampledRequestsEnabled\":true,\"ruleActionOverrides\":[{\"name\":\"Rule1\",\"actionToUse\":{\"allow|block|count|captcha|challenge\":{}}},{\"name\":\"Rule2\",\"actionToUse\":{\"allow|block|count|captcha|challenge\":{}}}]}],\"postProcessRuleGroups\":[],\"defaultAction\":{\"type\":\"ALLOW\"},\"customRequestHandling\":null,\"customResponse\":null,\"overrideCustomerWebACLAssociation\":false,\"loggingConfiguration\":null,\"sampledRequestsEnabledForDefaultActions\":true,\"optimizeUnassociatedWebACL\":true}"
	//   - Bot Control - For information about AWSManagedRulesBotControlRuleSet managed
	//   rule groups, see AWSManagedRulesBotControlRuleSet (https://docs.aws.amazon.com/waf/latest/APIReference/API_AWSManagedRulesBotControlRuleSet.html)
	//   in the WAF API Reference.
	//   - Fraud Control account takeover prevention (ATP) - For information about the
	//   properties available for AWSManagedRulesATPRuleSet managed rule groups, see
	//   AWSManagedRulesATPRuleSet (https://docs.aws.amazon.com/waf/latest/APIReference/API_AWSManagedRulesATPRuleSet.html)
	//   in the WAF API Reference.
	//   - Optimize unassociated web ACL - If you set optimizeUnassociatedWebACL to
	//   true , Firewall Manager creates web ACLs in accounts within the policy scope
	//   if the web ACLs will be used by at least one resource. Firewall Manager creates
	//   web ACLs in the accounts within policy scope only if the web ACLs will be used
	//   by at least one resource. If at any time an account comes into policy scope,
	//   Firewall Manager automatically creates a web ACL in the account if at least one
	//   resource will use the web ACL. Upon enablement, Firewall Manager performs a
	//   one-time cleanup of unused web ACLs in your account. The cleanup process can
	//   take several hours. If a resource leaves policy scope after Firewall Manager
	//   creates a web ACL, Firewall Manager disassociates the resource from the web ACL,
	//   but won't clean up the unused web ACL. Firewall Manager only cleans up unused
	//   web ACLs when you first enable management of unused web ACLs in a policy. If you
	//   set optimizeUnassociatedWebACL to false Firewall Manager doesn't manage unused
	//   web ACLs, and Firewall Manager automatically creates an empty web ACL in each
	//   account that's within policy scope.
	//   - Rule action overrides - Firewall Manager supports rule action overrides
	//   only for managed rule groups. To configure a RuleActionOverrides add the Name
	//   of the rule to override, and ActionToUse , which is the new action to use for
	//   the rule. For information about using rule action override, see
	//   RuleActionOverride (https://docs.aws.amazon.com/waf/latest/APIReference/API_RuleActionOverride.html)
	//   in the WAF API Reference.
	//   - Example: WAFV2 - CAPTCHA and Challenge configs
	//   "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\":{\"versionEnabled\":null,\"version\":null,\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesAdminProtectionRuleSet\"},\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[],\"sampledRequestsEnabled\":true}],\"postProcessRuleGroups\":[],\"defaultAction\":{\"type\":\"ALLOW\"},\"customRequestHandling\":null,\"customResponse\":null,\"overrideCustomerWebACLAssociation\":false,\"loggingConfiguration\":null,\"sampledRequestsEnabledForDefaultActions\":true,\"captchaConfig\":{\"immunityTimeProperty\":{\"immunityTime\":500}},\"challengeConfig\":{\"immunityTimeProperty\":{\"immunityTime\":800}},\"tokenDomains\":[\"google.com\",\"amazon.com\"],\"associationConfig\":{\"requestBody\":{\"CLOUDFRONT\":{\"defaultSizeInspectionLimit\":\"KB_16\"}}}}"
	//   - CAPTCHA and Challenge configs - If you update the policy's values for
	//   associationConfig , captchaConfig , challengeConfig , or tokenDomains ,
	//   Firewall Manager will overwrite your local web ACLs to contain the new value(s).
	//   However, if you don't update the policy's associationConfig , captchaConfig ,
	//   challengeConfig , or tokenDomains values, the values in your local web ACLs
	//   will remain unchanged. For information about association configs, see
	//   AssociationConfig (https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociationConfig.html)
	//   . For information about CAPTCHA and Challenge configs, see CaptchaConfig (https://docs.aws.amazon.com/waf/latest/APIReference/API_CaptchaConfig.html)
	//   and ChallengeConfig (https://docs.aws.amazon.com/waf/latest/APIReference/API_ChallengeConfig.html)
	//   in the WAF API Reference.
	//   - defaultSizeInspectionLimit - Specifies the maximum size of the web request
	//   body component that an associated Amazon CloudFront distribution should send to
	//   WAF for inspection. For more information, see DefaultSizeInspectionLimit (https://docs.aws.amazon.com/waf/latest/APIReference/API_RequestBodyAssociatedResourceTypeConfig.html#WAF-Type-RequestBodyAssociatedResourceTypeConfig-DefaultSizeInspectionLimit)
	//   in the WAF API Reference.
	//   - Example: WAFV2 - Firewall Manager support for WAF managed rule group
	//   versioning
	//   "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\":{\"versionEnabled\":true,\"version\":\"Version_2.0\",\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesCommonRuleSet\"},\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[{\"name\":\"NoUserAgent_HEADER\"}]}],\"postProcessRuleGroups\":[],\"defaultAction\":{\"type\":\"ALLOW\"},\"overrideCustomerWebACLAssociation\":false,\"loggingConfiguration\":{\"logDestinationConfigs\":[\"arn:aws:firehose:us-west-2:12345678912:deliverystream/aws-waf-logs-fms-admin-destination\"],\"redactedFields\":[{\"redactedFieldType\":\"SingleHeader\",\"redactedFieldValue\":\"Cookies\"},{\"redactedFieldType\":\"Method\"}]}}"
	//   To use a specific version of a WAF managed rule group in your Firewall Manager
	//   policy, you must set versionEnabled to true , and set version to the version
	//   you'd like to use. If you don't set versionEnabled to true , or if you omit
	//   versionEnabled , then Firewall Manager uses the default version of the WAF
	//   managed rule group.
	//   - Example: WAFV2 - Logging configurations
	//   "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupArn\":null,
	//   \"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\":
	//   {\"versionEnabled\":null,\"version\":null,\"vendorName\":\"AWS\",
	//   \"managedRuleGroupName\":\"AWSManagedRulesAdminProtectionRuleSet\"}
	//   ,\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[],
	//   \"sampledRequestsEnabled\":true}],\"postProcessRuleGroups\":[],
	//   \"defaultAction\":{\"type\":\"ALLOW\"},\"customRequestHandling\"
	//   :null,\"customResponse\":null,\"overrideCustomerWebACLAssociation\"
	//   :false,\"loggingConfiguration\":{\"logDestinationConfigs\":
	//   [\"arn:aws:s3:::aws-waf-logs-example-bucket\"]
	//   ,\"redactedFields\":[],\"loggingFilterConfigs\":{\"defaultBehavior\":\"KEEP\",
	//   \"filters\":[{\"behavior\":\"KEEP\",\"requirement\":\"MEETS_ALL\",
	//   \"conditions\":[{\"actionCondition\":\"CAPTCHA\"},{\"actionCondition\":
	//   \"CHALLENGE\"},
	//   {\"actionCondition\":\"EXCLUDED_AS_COUNT\"}]}]}},\"sampledRequestsEnabledForDefaultActions\":true}"
	//   Firewall Manager supports Amazon Kinesis Data Firehose and Amazon S3 as the
	//   logDestinationConfigs in your loggingConfiguration . For information about WAF
	//   logging configurations, see LoggingConfiguration (https://docs.aws.amazon.com/waf/latest/APIReference/API_LoggingConfiguration.html)
	//   in the WAF API Reference In the loggingConfiguration , you can specify one
	//   logDestinationConfigs . Optionally provide as many as 20 redactedFields . The
	//   RedactedFieldType must be one of URI , QUERY_STRING , HEADER , or METHOD .
	//   - Example: WAF Classic "{\"type\": \"WAF\", \"ruleGroups\":
	//   [{\"id\":\"12345678-1bcd-9012-efga-0987654321ab\", \"overrideAction\" :
	//   {\"type\": \"COUNT\"}}], \"defaultAction\": {\"type\": \"BLOCK\"}}"
	ManagedServiceData *string

	// Contains the Network Firewall firewall policy options to configure a
	// centralized deployment model.
	PolicyOption *PolicyOption

	noSmithyDocumentSerde
}

// Configuration settings for the handling of the stateful rule groups in a
// Network Firewall firewall policy.
type StatefulEngineOptions struct {

	// Indicates how to manage the order of stateful rule evaluation for the policy.
	// DEFAULT_ACTION_ORDER is the default behavior. Stateful rules are provided to the
	// rule engine as Suricata compatible strings, and Suricata evaluates them based on
	// certain settings. For more information, see Evaluation order for stateful rules (https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html)
	// in the Network Firewall Developer Guide.
	RuleOrder RuleOrder

	noSmithyDocumentSerde
}

// Network Firewall stateful rule group, used in a NetworkFirewallPolicyDescription
// .
type StatefulRuleGroup struct {

	// The action that allows the policy owner to override the behavior of the rule
	// group within a policy.
	Override *NetworkFirewallStatefulRuleGroupOverride

	// An integer setting that indicates the order in which to run the stateful rule
	// groups in a single Network Firewall firewall policy. This setting only applies
	// to firewall policies that specify the STRICT_ORDER rule order in the stateful
	// engine options settings. Network Firewall evalutes each stateful rule group
	// against a packet starting with the group that has the lowest priority setting.
	// You must ensure that the priority settings are unique within each policy. For
	// information about You can change the priority settings of your rule groups at
	// any time. To make it easier to insert rule groups later, number them so there's
	// a wide range in between, for example use 100, 200, and so on.
	Priority *int32

	// The resource ID of the rule group.
	ResourceId *string

	// The name of the rule group.
	RuleGroupName *string

	noSmithyDocumentSerde
}

// Network Firewall stateless rule group, used in a
// NetworkFirewallPolicyDescription .
type StatelessRuleGroup struct {

	// The priority of the rule group. Network Firewall evaluates the stateless rule
	// groups in a firewall policy starting from the lowest priority setting.
	Priority *int32

	// The resource ID of the rule group.
	ResourceId *string

	// The name of the rule group.
	RuleGroupName *string

	noSmithyDocumentSerde
}

// A collection of key:value pairs associated with an Amazon Web Services
// resource. The key:value pair can be anything you define. Typically, the tag key
// represents a category (such as "environment") and the tag value represents a
// specific value within that category (such as "test," "development," or
// "production"). You can add up to 50 tags to each Amazon Web Services resource.
type Tag struct {

	// Part of the key:value pair that defines a tag. You can use a tag key to
	// describe a category of information, such as "customer." Tag keys are
	// case-sensitive.
	//
	// This member is required.
	Key *string

	// Part of the key:value pair that defines a tag. You can use a tag value to
	// describe a specific value within a category, such as "companyA" or "companyB."
	// Tag values are case-sensitive.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// Configures the third-party firewall's firewall policy.
type ThirdPartyFirewallFirewallPolicy struct {

	// The ID of the specified firewall policy.
	FirewallPolicyId *string

	// The name of the specified firewall policy.
	FirewallPolicyName *string

	noSmithyDocumentSerde
}

// The violation details for a third-party firewall that's not associated with an
// Firewall Manager managed route table.
type ThirdPartyFirewallMissingExpectedRouteTableViolation struct {

	// The Availability Zone of the firewall subnet that's causing the violation.
	AvailabilityZone *string

	// The resource ID of the current route table that's associated with the subnet,
	// if one is available.
	CurrentRouteTable *string

	// The resource ID of the route table that should be associated with the subnet.
	ExpectedRouteTable *string

	// The resource ID of the VPC associated with a fireawll subnet that's causing the
	// violation.
	VPC *string

	// The ID of the third-party firewall or VPC resource that's causing the violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// The violation details about a third-party firewall's subnet that doesn't have a
// Firewall Manager managed firewall in its VPC.
type ThirdPartyFirewallMissingFirewallViolation struct {

	// The Availability Zone of the third-party firewall that's causing the violation.
	AvailabilityZone *string

	// The reason the resource is causing this violation, if a reason is available.
	TargetViolationReason *string

	// The resource ID of the VPC associated with a third-party firewall.
	VPC *string

	// The ID of the third-party firewall that's causing the violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// The violation details for a third-party firewall for an Availability Zone
// that's missing the Firewall Manager managed subnet.
type ThirdPartyFirewallMissingSubnetViolation struct {

	// The Availability Zone of a subnet that's causing the violation.
	AvailabilityZone *string

	// The reason the resource is causing the violation, if a reason is available.
	TargetViolationReason *string

	// The resource ID of the VPC associated with a subnet that's causing the
	// violation.
	VPC *string

	// The ID of the third-party firewall or VPC resource that's causing the violation.
	ViolationTarget *string

	noSmithyDocumentSerde
}

// Configures the deployment model for the third-party firewall.
type ThirdPartyFirewallPolicy struct {

	// Defines the deployment model to use for the third-party firewall policy.
	FirewallDeploymentModel FirewallDeploymentModel

	noSmithyDocumentSerde
}

// Violations for a resource based on the specified Firewall Manager policy and
// Amazon Web Services account.
type ViolationDetail struct {

	// The Amazon Web Services account that the violation details were requested for.
	//
	// This member is required.
	MemberAccount *string

	// The ID of the Firewall Manager policy that the violation details were requested
	// for.
	//
	// This member is required.
	PolicyId *string

	// The resource ID that the violation details were requested for.
	//
	// This member is required.
	ResourceId *string

	// The resource type that the violation details were requested for.
	//
	// This member is required.
	ResourceType *string

	// List of violations for the requested resource.
	//
	// This member is required.
	ResourceViolations []ResourceViolation

	// Brief description for the requested resource.
	ResourceDescription *string

	// The ResourceTag objects associated with the resource.
	ResourceTags []Tag

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde