aws-sdk-fms 1.52.0 → 1.53.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,6 +14,7 @@ module Aws::FMS
14
14
  include Seahorse::Model
15
15
 
16
16
  AWSAccountId = Shapes::StringShape.new(name: 'AWSAccountId')
17
+ AWSAccountIdList = Shapes::ListShape.new(name: 'AWSAccountIdList')
17
18
  AccountRoleStatus = Shapes::StringShape.new(name: 'AccountRoleStatus')
18
19
  ActionTarget = Shapes::StructureShape.new(name: 'ActionTarget')
19
20
  App = Shapes::StructureShape.new(name: 'App')
@@ -28,7 +29,12 @@ module Aws::FMS
28
29
  AwsEc2NetworkInterfaceViolation = Shapes::StructureShape.new(name: 'AwsEc2NetworkInterfaceViolation')
29
30
  AwsEc2NetworkInterfaceViolations = Shapes::ListShape.new(name: 'AwsEc2NetworkInterfaceViolations')
30
31
  AwsVPCSecurityGroupViolation = Shapes::StructureShape.new(name: 'AwsVPCSecurityGroupViolation')
32
+ Base62Id = Shapes::StringShape.new(name: 'Base62Id')
31
33
  BasicInteger = Shapes::IntegerShape.new(name: 'BasicInteger')
34
+ BatchAssociateResourceRequest = Shapes::StructureShape.new(name: 'BatchAssociateResourceRequest')
35
+ BatchAssociateResourceResponse = Shapes::StructureShape.new(name: 'BatchAssociateResourceResponse')
36
+ BatchDisassociateResourceRequest = Shapes::StructureShape.new(name: 'BatchDisassociateResourceRequest')
37
+ BatchDisassociateResourceResponse = Shapes::StructureShape.new(name: 'BatchDisassociateResourceResponse')
32
38
  Boolean = Shapes::BooleanShape.new(name: 'Boolean')
33
39
  CIDR = Shapes::StringShape.new(name: 'CIDR')
34
40
  ComplianceViolator = Shapes::StructureShape.new(name: 'ComplianceViolator')
@@ -42,12 +48,16 @@ module Aws::FMS
42
48
  DeleteNotificationChannelRequest = Shapes::StructureShape.new(name: 'DeleteNotificationChannelRequest')
43
49
  DeletePolicyRequest = Shapes::StructureShape.new(name: 'DeletePolicyRequest')
44
50
  DeleteProtocolsListRequest = Shapes::StructureShape.new(name: 'DeleteProtocolsListRequest')
51
+ DeleteResourceSetRequest = Shapes::StructureShape.new(name: 'DeleteResourceSetRequest')
45
52
  DependentServiceName = Shapes::StringShape.new(name: 'DependentServiceName')
53
+ Description = Shapes::StringShape.new(name: 'Description')
46
54
  DestinationType = Shapes::StringShape.new(name: 'DestinationType')
47
55
  DetailedInfo = Shapes::StringShape.new(name: 'DetailedInfo')
48
56
  DisassociateAdminAccountRequest = Shapes::StructureShape.new(name: 'DisassociateAdminAccountRequest')
49
57
  DisassociateThirdPartyFirewallRequest = Shapes::StructureShape.new(name: 'DisassociateThirdPartyFirewallRequest')
50
58
  DisassociateThirdPartyFirewallResponse = Shapes::StructureShape.new(name: 'DisassociateThirdPartyFirewallResponse')
59
+ DiscoveredResource = Shapes::StructureShape.new(name: 'DiscoveredResource')
60
+ DiscoveredResourceList = Shapes::ListShape.new(name: 'DiscoveredResourceList')
51
61
  DnsDuplicateRuleGroupViolation = Shapes::StructureShape.new(name: 'DnsDuplicateRuleGroupViolation')
52
62
  DnsRuleGroupLimitExceededViolation = Shapes::StructureShape.new(name: 'DnsRuleGroupLimitExceededViolation')
53
63
  DnsRuleGroupPriorities = Shapes::ListShape.new(name: 'DnsRuleGroupPriorities')
@@ -66,6 +76,9 @@ module Aws::FMS
66
76
  ExpectedRoute = Shapes::StructureShape.new(name: 'ExpectedRoute')
67
77
  ExpectedRoutes = Shapes::ListShape.new(name: 'ExpectedRoutes')
68
78
  FMSPolicyUpdateFirewallCreationConfigAction = Shapes::StructureShape.new(name: 'FMSPolicyUpdateFirewallCreationConfigAction')
79
+ FailedItem = Shapes::StructureShape.new(name: 'FailedItem')
80
+ FailedItemList = Shapes::ListShape.new(name: 'FailedItemList')
81
+ FailedItemReason = Shapes::StringShape.new(name: 'FailedItemReason')
69
82
  FirewallDeploymentModel = Shapes::StringShape.new(name: 'FirewallDeploymentModel')
70
83
  FirewallPolicyId = Shapes::StringShape.new(name: 'FirewallPolicyId')
71
84
  FirewallPolicyName = Shapes::StringShape.new(name: 'FirewallPolicyName')
@@ -85,11 +98,15 @@ module Aws::FMS
85
98
  GetProtectionStatusResponse = Shapes::StructureShape.new(name: 'GetProtectionStatusResponse')
86
99
  GetProtocolsListRequest = Shapes::StructureShape.new(name: 'GetProtocolsListRequest')
87
100
  GetProtocolsListResponse = Shapes::StructureShape.new(name: 'GetProtocolsListResponse')
101
+ GetResourceSetRequest = Shapes::StructureShape.new(name: 'GetResourceSetRequest')
102
+ GetResourceSetResponse = Shapes::StructureShape.new(name: 'GetResourceSetResponse')
88
103
  GetThirdPartyFirewallAssociationStatusRequest = Shapes::StructureShape.new(name: 'GetThirdPartyFirewallAssociationStatusRequest')
89
104
  GetThirdPartyFirewallAssociationStatusResponse = Shapes::StructureShape.new(name: 'GetThirdPartyFirewallAssociationStatusResponse')
90
105
  GetViolationDetailsRequest = Shapes::StructureShape.new(name: 'GetViolationDetailsRequest')
91
106
  GetViolationDetailsResponse = Shapes::StructureShape.new(name: 'GetViolationDetailsResponse')
92
107
  IPPortNumber = Shapes::IntegerShape.new(name: 'IPPortNumber')
108
+ Identifier = Shapes::StringShape.new(name: 'Identifier')
109
+ IdentifierList = Shapes::ListShape.new(name: 'IdentifierList')
93
110
  InternalErrorException = Shapes::StructureShape.new(name: 'InternalErrorException')
94
111
  InvalidInputException = Shapes::StructureShape.new(name: 'InvalidInputException')
95
112
  InvalidOperationException = Shapes::StructureShape.new(name: 'InvalidOperationException')
@@ -102,6 +119,8 @@ module Aws::FMS
102
119
  ListAppsListsResponse = Shapes::StructureShape.new(name: 'ListAppsListsResponse')
103
120
  ListComplianceStatusRequest = Shapes::StructureShape.new(name: 'ListComplianceStatusRequest')
104
121
  ListComplianceStatusResponse = Shapes::StructureShape.new(name: 'ListComplianceStatusResponse')
122
+ ListDiscoveredResourcesRequest = Shapes::StructureShape.new(name: 'ListDiscoveredResourcesRequest')
123
+ ListDiscoveredResourcesResponse = Shapes::StructureShape.new(name: 'ListDiscoveredResourcesResponse')
105
124
  ListId = Shapes::StringShape.new(name: 'ListId')
106
125
  ListMemberAccountsRequest = Shapes::StructureShape.new(name: 'ListMemberAccountsRequest')
107
126
  ListMemberAccountsResponse = Shapes::StructureShape.new(name: 'ListMemberAccountsResponse')
@@ -109,6 +128,10 @@ module Aws::FMS
109
128
  ListPoliciesResponse = Shapes::StructureShape.new(name: 'ListPoliciesResponse')
110
129
  ListProtocolsListsRequest = Shapes::StructureShape.new(name: 'ListProtocolsListsRequest')
111
130
  ListProtocolsListsResponse = Shapes::StructureShape.new(name: 'ListProtocolsListsResponse')
131
+ ListResourceSetResourcesRequest = Shapes::StructureShape.new(name: 'ListResourceSetResourcesRequest')
132
+ ListResourceSetResourcesResponse = Shapes::StructureShape.new(name: 'ListResourceSetResourcesResponse')
133
+ ListResourceSetsRequest = Shapes::StructureShape.new(name: 'ListResourceSetsRequest')
134
+ ListResourceSetsResponse = Shapes::StructureShape.new(name: 'ListResourceSetsResponse')
112
135
  ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest')
113
136
  ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse')
114
137
  ListThirdPartyFirewallFirewallPoliciesRequest = Shapes::StructureShape.new(name: 'ListThirdPartyFirewallFirewallPoliciesRequest')
@@ -116,6 +139,7 @@ module Aws::FMS
116
139
  ManagedServiceData = Shapes::StringShape.new(name: 'ManagedServiceData')
117
140
  MarketplaceSubscriptionOnboardingStatus = Shapes::StringShape.new(name: 'MarketplaceSubscriptionOnboardingStatus')
118
141
  MemberAccounts = Shapes::ListShape.new(name: 'MemberAccounts')
142
+ Name = Shapes::StringShape.new(name: 'Name')
119
143
  NetworkFirewallAction = Shapes::StringShape.new(name: 'NetworkFirewallAction')
120
144
  NetworkFirewallActionList = Shapes::ListShape.new(name: 'NetworkFirewallActionList')
121
145
  NetworkFirewallBlackHoleRouteDetectedViolation = Shapes::StructureShape.new(name: 'NetworkFirewallBlackHoleRouteDetectedViolation')
@@ -168,17 +192,26 @@ module Aws::FMS
168
192
  PutPolicyResponse = Shapes::StructureShape.new(name: 'PutPolicyResponse')
169
193
  PutProtocolsListRequest = Shapes::StructureShape.new(name: 'PutProtocolsListRequest')
170
194
  PutProtocolsListResponse = Shapes::StructureShape.new(name: 'PutProtocolsListResponse')
195
+ PutResourceSetRequest = Shapes::StructureShape.new(name: 'PutResourceSetRequest')
196
+ PutResourceSetResponse = Shapes::StructureShape.new(name: 'PutResourceSetResponse')
171
197
  ReferenceRule = Shapes::StringShape.new(name: 'ReferenceRule')
172
198
  RemediationAction = Shapes::StructureShape.new(name: 'RemediationAction')
173
199
  RemediationActionDescription = Shapes::StringShape.new(name: 'RemediationActionDescription')
174
200
  RemediationActionType = Shapes::StringShape.new(name: 'RemediationActionType')
175
201
  RemediationActionWithOrder = Shapes::StructureShape.new(name: 'RemediationActionWithOrder')
202
+ Resource = Shapes::StructureShape.new(name: 'Resource')
176
203
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
177
204
  ResourceCount = Shapes::IntegerShape.new(name: 'ResourceCount')
205
+ ResourceDescription = Shapes::StringShape.new(name: 'ResourceDescription')
178
206
  ResourceId = Shapes::StringShape.new(name: 'ResourceId')
179
207
  ResourceIdList = Shapes::ListShape.new(name: 'ResourceIdList')
208
+ ResourceList = Shapes::ListShape.new(name: 'ResourceList')
180
209
  ResourceName = Shapes::StringShape.new(name: 'ResourceName')
181
210
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
211
+ ResourceSet = Shapes::StructureShape.new(name: 'ResourceSet')
212
+ ResourceSetIds = Shapes::ListShape.new(name: 'ResourceSetIds')
213
+ ResourceSetSummary = Shapes::StructureShape.new(name: 'ResourceSetSummary')
214
+ ResourceSetSummaryList = Shapes::ListShape.new(name: 'ResourceSetSummaryList')
182
215
  ResourceTag = Shapes::StructureShape.new(name: 'ResourceTag')
183
216
  ResourceTagKey = Shapes::StringShape.new(name: 'ResourceTagKey')
184
217
  ResourceTagValue = Shapes::StringShape.new(name: 'ResourceTagValue')
@@ -228,6 +261,8 @@ module Aws::FMS
228
261
  ViolationReason = Shapes::StringShape.new(name: 'ViolationReason')
229
262
  ViolationTarget = Shapes::StringShape.new(name: 'ViolationTarget')
230
263
 
264
+ AWSAccountIdList.member = Shapes::ShapeRef.new(shape: AWSAccountId)
265
+
231
266
  ActionTarget.add_member(:resource_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "ResourceId"))
232
267
  ActionTarget.add_member(:description, Shapes::ShapeRef.new(shape: LengthBoundedString, location_name: "Description"))
233
268
  ActionTarget.struct_class = Types::ActionTarget
@@ -281,6 +316,22 @@ module Aws::FMS
281
316
  AwsVPCSecurityGroupViolation.add_member(:possible_security_group_remediation_actions, Shapes::ShapeRef.new(shape: SecurityGroupRemediationActions, location_name: "PossibleSecurityGroupRemediationActions"))
282
317
  AwsVPCSecurityGroupViolation.struct_class = Types::AwsVPCSecurityGroupViolation
283
318
 
319
+ BatchAssociateResourceRequest.add_member(:resource_set_identifier, Shapes::ShapeRef.new(shape: Identifier, required: true, location_name: "ResourceSetIdentifier"))
320
+ BatchAssociateResourceRequest.add_member(:items, Shapes::ShapeRef.new(shape: IdentifierList, required: true, location_name: "Items"))
321
+ BatchAssociateResourceRequest.struct_class = Types::BatchAssociateResourceRequest
322
+
323
+ BatchAssociateResourceResponse.add_member(:resource_set_identifier, Shapes::ShapeRef.new(shape: Identifier, required: true, location_name: "ResourceSetIdentifier"))
324
+ BatchAssociateResourceResponse.add_member(:failed_items, Shapes::ShapeRef.new(shape: FailedItemList, required: true, location_name: "FailedItems"))
325
+ BatchAssociateResourceResponse.struct_class = Types::BatchAssociateResourceResponse
326
+
327
+ BatchDisassociateResourceRequest.add_member(:resource_set_identifier, Shapes::ShapeRef.new(shape: Identifier, required: true, location_name: "ResourceSetIdentifier"))
328
+ BatchDisassociateResourceRequest.add_member(:items, Shapes::ShapeRef.new(shape: IdentifierList, required: true, location_name: "Items"))
329
+ BatchDisassociateResourceRequest.struct_class = Types::BatchDisassociateResourceRequest
330
+
331
+ BatchDisassociateResourceResponse.add_member(:resource_set_identifier, Shapes::ShapeRef.new(shape: Identifier, required: true, location_name: "ResourceSetIdentifier"))
332
+ BatchDisassociateResourceResponse.add_member(:failed_items, Shapes::ShapeRef.new(shape: FailedItemList, required: true, location_name: "FailedItems"))
333
+ BatchDisassociateResourceResponse.struct_class = Types::BatchDisassociateResourceResponse
334
+
284
335
  ComplianceViolator.add_member(:resource_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "ResourceId"))
285
336
  ComplianceViolator.add_member(:violation_reason, Shapes::ShapeRef.new(shape: ViolationReason, location_name: "ViolationReason"))
286
337
  ComplianceViolator.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "ResourceType"))
@@ -309,6 +360,9 @@ module Aws::FMS
309
360
  DeleteProtocolsListRequest.add_member(:list_id, Shapes::ShapeRef.new(shape: ListId, required: true, location_name: "ListId"))
310
361
  DeleteProtocolsListRequest.struct_class = Types::DeleteProtocolsListRequest
311
362
 
363
+ DeleteResourceSetRequest.add_member(:identifier, Shapes::ShapeRef.new(shape: Base62Id, required: true, location_name: "Identifier"))
364
+ DeleteResourceSetRequest.struct_class = Types::DeleteResourceSetRequest
365
+
312
366
  DisassociateAdminAccountRequest.struct_class = Types::DisassociateAdminAccountRequest
313
367
 
314
368
  DisassociateThirdPartyFirewallRequest.add_member(:third_party_firewall, Shapes::ShapeRef.new(shape: ThirdPartyFirewall, required: true, location_name: "ThirdPartyFirewall"))
@@ -317,6 +371,14 @@ module Aws::FMS
317
371
  DisassociateThirdPartyFirewallResponse.add_member(:third_party_firewall_status, Shapes::ShapeRef.new(shape: ThirdPartyFirewallAssociationStatus, location_name: "ThirdPartyFirewallStatus"))
318
372
  DisassociateThirdPartyFirewallResponse.struct_class = Types::DisassociateThirdPartyFirewallResponse
319
373
 
374
+ DiscoveredResource.add_member(:uri, Shapes::ShapeRef.new(shape: Identifier, location_name: "URI"))
375
+ DiscoveredResource.add_member(:account_id, Shapes::ShapeRef.new(shape: AWSAccountId, location_name: "AccountId"))
376
+ DiscoveredResource.add_member(:type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "Type"))
377
+ DiscoveredResource.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, location_name: "Name"))
378
+ DiscoveredResource.struct_class = Types::DiscoveredResource
379
+
380
+ DiscoveredResourceList.member = Shapes::ShapeRef.new(shape: DiscoveredResource)
381
+
320
382
  DnsDuplicateRuleGroupViolation.add_member(:violation_target, Shapes::ShapeRef.new(shape: ViolationTarget, location_name: "ViolationTarget"))
321
383
  DnsDuplicateRuleGroupViolation.add_member(:violation_target_description, Shapes::ShapeRef.new(shape: LengthBoundedString, location_name: "ViolationTargetDescription"))
322
384
  DnsDuplicateRuleGroupViolation.struct_class = Types::DnsDuplicateRuleGroupViolation
@@ -400,6 +462,12 @@ module Aws::FMS
400
462
  FMSPolicyUpdateFirewallCreationConfigAction.add_member(:firewall_creation_config, Shapes::ShapeRef.new(shape: ManagedServiceData, location_name: "FirewallCreationConfig"))
401
463
  FMSPolicyUpdateFirewallCreationConfigAction.struct_class = Types::FMSPolicyUpdateFirewallCreationConfigAction
402
464
 
465
+ FailedItem.add_member(:uri, Shapes::ShapeRef.new(shape: Identifier, location_name: "URI"))
466
+ FailedItem.add_member(:reason, Shapes::ShapeRef.new(shape: FailedItemReason, location_name: "Reason"))
467
+ FailedItem.struct_class = Types::FailedItem
468
+
469
+ FailedItemList.member = Shapes::ShapeRef.new(shape: FailedItem)
470
+
403
471
  FirewallSubnetIsOutOfScopeViolation.add_member(:firewall_subnet_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "FirewallSubnetId"))
404
472
  FirewallSubnetIsOutOfScopeViolation.add_member(:vpc_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "VpcId"))
405
473
  FirewallSubnetIsOutOfScopeViolation.add_member(:subnet_availability_zone, Shapes::ShapeRef.new(shape: LengthBoundedString, location_name: "SubnetAvailabilityZone"))
@@ -469,6 +537,13 @@ module Aws::FMS
469
537
  GetProtocolsListResponse.add_member(:protocols_list_arn, Shapes::ShapeRef.new(shape: ResourceArn, location_name: "ProtocolsListArn"))
470
538
  GetProtocolsListResponse.struct_class = Types::GetProtocolsListResponse
471
539
 
540
+ GetResourceSetRequest.add_member(:identifier, Shapes::ShapeRef.new(shape: Base62Id, required: true, location_name: "Identifier"))
541
+ GetResourceSetRequest.struct_class = Types::GetResourceSetRequest
542
+
543
+ GetResourceSetResponse.add_member(:resource_set, Shapes::ShapeRef.new(shape: ResourceSet, required: true, location_name: "ResourceSet"))
544
+ GetResourceSetResponse.add_member(:resource_set_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "ResourceSetArn"))
545
+ GetResourceSetResponse.struct_class = Types::GetResourceSetResponse
546
+
472
547
  GetThirdPartyFirewallAssociationStatusRequest.add_member(:third_party_firewall, Shapes::ShapeRef.new(shape: ThirdPartyFirewall, required: true, location_name: "ThirdPartyFirewall"))
473
548
  GetThirdPartyFirewallAssociationStatusRequest.struct_class = Types::GetThirdPartyFirewallAssociationStatusRequest
474
549
 
@@ -485,6 +560,8 @@ module Aws::FMS
485
560
  GetViolationDetailsResponse.add_member(:violation_detail, Shapes::ShapeRef.new(shape: ViolationDetail, location_name: "ViolationDetail"))
486
561
  GetViolationDetailsResponse.struct_class = Types::GetViolationDetailsResponse
487
562
 
563
+ IdentifierList.member = Shapes::ShapeRef.new(shape: Identifier)
564
+
488
565
  InternalErrorException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
489
566
  InternalErrorException.struct_class = Types::InternalErrorException
490
567
 
@@ -523,6 +600,16 @@ module Aws::FMS
523
600
  ListComplianceStatusResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
524
601
  ListComplianceStatusResponse.struct_class = Types::ListComplianceStatusResponse
525
602
 
603
+ ListDiscoveredResourcesRequest.add_member(:member_account_ids, Shapes::ShapeRef.new(shape: AWSAccountIdList, required: true, location_name: "MemberAccountIds"))
604
+ ListDiscoveredResourcesRequest.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, required: true, location_name: "ResourceType"))
605
+ ListDiscoveredResourcesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: PaginationMaxResults, location_name: "MaxResults"))
606
+ ListDiscoveredResourcesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
607
+ ListDiscoveredResourcesRequest.struct_class = Types::ListDiscoveredResourcesRequest
608
+
609
+ ListDiscoveredResourcesResponse.add_member(:items, Shapes::ShapeRef.new(shape: DiscoveredResourceList, location_name: "Items"))
610
+ ListDiscoveredResourcesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
611
+ ListDiscoveredResourcesResponse.struct_class = Types::ListDiscoveredResourcesResponse
612
+
526
613
  ListMemberAccountsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
527
614
  ListMemberAccountsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: PaginationMaxResults, location_name: "MaxResults"))
528
615
  ListMemberAccountsRequest.struct_class = Types::ListMemberAccountsRequest
@@ -548,6 +635,23 @@ module Aws::FMS
548
635
  ListProtocolsListsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
549
636
  ListProtocolsListsResponse.struct_class = Types::ListProtocolsListsResponse
550
637
 
638
+ ListResourceSetResourcesRequest.add_member(:identifier, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "Identifier"))
639
+ ListResourceSetResourcesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: PaginationMaxResults, location_name: "MaxResults"))
640
+ ListResourceSetResourcesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
641
+ ListResourceSetResourcesRequest.struct_class = Types::ListResourceSetResourcesRequest
642
+
643
+ ListResourceSetResourcesResponse.add_member(:items, Shapes::ShapeRef.new(shape: ResourceList, required: true, location_name: "Items"))
644
+ ListResourceSetResourcesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
645
+ ListResourceSetResourcesResponse.struct_class = Types::ListResourceSetResourcesResponse
646
+
647
+ ListResourceSetsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
648
+ ListResourceSetsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: PaginationMaxResults, location_name: "MaxResults"))
649
+ ListResourceSetsRequest.struct_class = Types::ListResourceSetsRequest
650
+
651
+ ListResourceSetsResponse.add_member(:resource_sets, Shapes::ShapeRef.new(shape: ResourceSetSummaryList, location_name: "ResourceSets"))
652
+ ListResourceSetsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
653
+ ListResourceSetsResponse.struct_class = Types::ListResourceSetsResponse
654
+
551
655
  ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "ResourceArn"))
552
656
  ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest
553
657
 
@@ -685,6 +789,8 @@ module Aws::FMS
685
789
  Policy.add_member(:delete_unused_fm_managed_resources, Shapes::ShapeRef.new(shape: Boolean, location_name: "DeleteUnusedFMManagedResources"))
686
790
  Policy.add_member(:include_map, Shapes::ShapeRef.new(shape: CustomerPolicyScopeMap, location_name: "IncludeMap"))
687
791
  Policy.add_member(:exclude_map, Shapes::ShapeRef.new(shape: CustomerPolicyScopeMap, location_name: "ExcludeMap"))
792
+ Policy.add_member(:resource_set_ids, Shapes::ShapeRef.new(shape: ResourceSetIds, location_name: "ResourceSetIds"))
793
+ Policy.add_member(:policy_description, Shapes::ShapeRef.new(shape: ResourceDescription, location_name: "PolicyDescription"))
688
794
  Policy.struct_class = Types::Policy
689
795
 
690
796
  PolicyComplianceDetail.add_member(:policy_owner, Shapes::ShapeRef.new(shape: AWSAccountId, location_name: "PolicyOwner"))
@@ -786,6 +892,14 @@ module Aws::FMS
786
892
  PutProtocolsListResponse.add_member(:protocols_list_arn, Shapes::ShapeRef.new(shape: ResourceArn, location_name: "ProtocolsListArn"))
787
893
  PutProtocolsListResponse.struct_class = Types::PutProtocolsListResponse
788
894
 
895
+ PutResourceSetRequest.add_member(:resource_set, Shapes::ShapeRef.new(shape: ResourceSet, required: true, location_name: "ResourceSet"))
896
+ PutResourceSetRequest.add_member(:tag_list, Shapes::ShapeRef.new(shape: TagList, location_name: "TagList"))
897
+ PutResourceSetRequest.struct_class = Types::PutResourceSetRequest
898
+
899
+ PutResourceSetResponse.add_member(:resource_set, Shapes::ShapeRef.new(shape: ResourceSet, required: true, location_name: "ResourceSet"))
900
+ PutResourceSetResponse.add_member(:resource_set_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "ResourceSetArn"))
901
+ PutResourceSetResponse.struct_class = Types::PutResourceSetResponse
902
+
789
903
  RemediationAction.add_member(:description, Shapes::ShapeRef.new(shape: LengthBoundedString, location_name: "Description"))
790
904
  RemediationAction.add_member(:ec2_create_route_action, Shapes::ShapeRef.new(shape: EC2CreateRouteAction, location_name: "EC2CreateRouteAction"))
791
905
  RemediationAction.add_member(:ec2_replace_route_action, Shapes::ShapeRef.new(shape: EC2ReplaceRouteAction, location_name: "EC2ReplaceRouteAction"))
@@ -801,11 +915,35 @@ module Aws::FMS
801
915
  RemediationActionWithOrder.add_member(:order, Shapes::ShapeRef.new(shape: BasicInteger, location_name: "Order"))
802
916
  RemediationActionWithOrder.struct_class = Types::RemediationActionWithOrder
803
917
 
918
+ Resource.add_member(:uri, Shapes::ShapeRef.new(shape: Identifier, required: true, location_name: "URI"))
919
+ Resource.add_member(:account_id, Shapes::ShapeRef.new(shape: AWSAccountId, location_name: "AccountId"))
920
+ Resource.struct_class = Types::Resource
921
+
804
922
  ResourceIdList.member = Shapes::ShapeRef.new(shape: ResourceId)
805
923
 
924
+ ResourceList.member = Shapes::ShapeRef.new(shape: Resource)
925
+
806
926
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
807
927
  ResourceNotFoundException.struct_class = Types::ResourceNotFoundException
808
928
 
929
+ ResourceSet.add_member(:id, Shapes::ShapeRef.new(shape: Base62Id, location_name: "Id"))
930
+ ResourceSet.add_member(:name, Shapes::ShapeRef.new(shape: Name, required: true, location_name: "Name"))
931
+ ResourceSet.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
932
+ ResourceSet.add_member(:update_token, Shapes::ShapeRef.new(shape: UpdateToken, location_name: "UpdateToken"))
933
+ ResourceSet.add_member(:resource_type_list, Shapes::ShapeRef.new(shape: ResourceTypeList, required: true, location_name: "ResourceTypeList"))
934
+ ResourceSet.add_member(:last_update_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "LastUpdateTime"))
935
+ ResourceSet.struct_class = Types::ResourceSet
936
+
937
+ ResourceSetIds.member = Shapes::ShapeRef.new(shape: Base62Id)
938
+
939
+ ResourceSetSummary.add_member(:id, Shapes::ShapeRef.new(shape: Base62Id, location_name: "Id"))
940
+ ResourceSetSummary.add_member(:name, Shapes::ShapeRef.new(shape: Name, location_name: "Name"))
941
+ ResourceSetSummary.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
942
+ ResourceSetSummary.add_member(:last_update_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "LastUpdateTime"))
943
+ ResourceSetSummary.struct_class = Types::ResourceSetSummary
944
+
945
+ ResourceSetSummaryList.member = Shapes::ShapeRef.new(shape: ResourceSetSummary)
946
+
809
947
  ResourceTag.add_member(:key, Shapes::ShapeRef.new(shape: ResourceTagKey, required: true, location_name: "Key"))
810
948
  ResourceTag.add_member(:value, Shapes::ShapeRef.new(shape: ResourceTagValue, location_name: "Value"))
811
949
  ResourceTag.struct_class = Types::ResourceTag
@@ -1005,6 +1143,31 @@ module Aws::FMS
1005
1143
  o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1006
1144
  end)
1007
1145
 
1146
+ api.add_operation(:batch_associate_resource, Seahorse::Model::Operation.new.tap do |o|
1147
+ o.name = "BatchAssociateResource"
1148
+ o.http_method = "POST"
1149
+ o.http_request_uri = "/"
1150
+ o.input = Shapes::ShapeRef.new(shape: BatchAssociateResourceRequest)
1151
+ o.output = Shapes::ShapeRef.new(shape: BatchAssociateResourceResponse)
1152
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1153
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1154
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1155
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1156
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1157
+ end)
1158
+
1159
+ api.add_operation(:batch_disassociate_resource, Seahorse::Model::Operation.new.tap do |o|
1160
+ o.name = "BatchDisassociateResource"
1161
+ o.http_method = "POST"
1162
+ o.http_request_uri = "/"
1163
+ o.input = Shapes::ShapeRef.new(shape: BatchDisassociateResourceRequest)
1164
+ o.output = Shapes::ShapeRef.new(shape: BatchDisassociateResourceResponse)
1165
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1166
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1167
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1168
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1169
+ end)
1170
+
1008
1171
  api.add_operation(:delete_apps_list, Seahorse::Model::Operation.new.tap do |o|
1009
1172
  o.name = "DeleteAppsList"
1010
1173
  o.http_method = "POST"
@@ -1051,6 +1214,18 @@ module Aws::FMS
1051
1214
  o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1052
1215
  end)
1053
1216
 
1217
+ api.add_operation(:delete_resource_set, Seahorse::Model::Operation.new.tap do |o|
1218
+ o.name = "DeleteResourceSet"
1219
+ o.http_method = "POST"
1220
+ o.http_request_uri = "/"
1221
+ o.input = Shapes::ShapeRef.new(shape: DeleteResourceSetRequest)
1222
+ o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure))
1223
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1224
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1225
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1226
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1227
+ end)
1228
+
1054
1229
  api.add_operation(:disassociate_admin_account, Seahorse::Model::Operation.new.tap do |o|
1055
1230
  o.name = "DisassociateAdminAccount"
1056
1231
  o.http_method = "POST"
@@ -1153,6 +1328,18 @@ module Aws::FMS
1153
1328
  o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1154
1329
  end)
1155
1330
 
1331
+ api.add_operation(:get_resource_set, Seahorse::Model::Operation.new.tap do |o|
1332
+ o.name = "GetResourceSet"
1333
+ o.http_method = "POST"
1334
+ o.http_request_uri = "/"
1335
+ o.input = Shapes::ShapeRef.new(shape: GetResourceSetRequest)
1336
+ o.output = Shapes::ShapeRef.new(shape: GetResourceSetResponse)
1337
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1338
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1339
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1340
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1341
+ end)
1342
+
1156
1343
  api.add_operation(:get_third_party_firewall_association_status, Seahorse::Model::Operation.new.tap do |o|
1157
1344
  o.name = "GetThirdPartyFirewallAssociationStatus"
1158
1345
  o.http_method = "POST"
@@ -1210,6 +1397,17 @@ module Aws::FMS
1210
1397
  )
1211
1398
  end)
1212
1399
 
1400
+ api.add_operation(:list_discovered_resources, Seahorse::Model::Operation.new.tap do |o|
1401
+ o.name = "ListDiscoveredResources"
1402
+ o.http_method = "POST"
1403
+ o.http_request_uri = "/"
1404
+ o.input = Shapes::ShapeRef.new(shape: ListDiscoveredResourcesRequest)
1405
+ o.output = Shapes::ShapeRef.new(shape: ListDiscoveredResourcesResponse)
1406
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1407
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1408
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1409
+ end)
1410
+
1213
1411
  api.add_operation(:list_member_accounts, Seahorse::Model::Operation.new.tap do |o|
1214
1412
  o.name = "ListMemberAccounts"
1215
1413
  o.http_method = "POST"
@@ -1261,6 +1459,29 @@ module Aws::FMS
1261
1459
  )
1262
1460
  end)
1263
1461
 
1462
+ api.add_operation(:list_resource_set_resources, Seahorse::Model::Operation.new.tap do |o|
1463
+ o.name = "ListResourceSetResources"
1464
+ o.http_method = "POST"
1465
+ o.http_request_uri = "/"
1466
+ o.input = Shapes::ShapeRef.new(shape: ListResourceSetResourcesRequest)
1467
+ o.output = Shapes::ShapeRef.new(shape: ListResourceSetResourcesResponse)
1468
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1469
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1470
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1471
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1472
+ end)
1473
+
1474
+ api.add_operation(:list_resource_sets, Seahorse::Model::Operation.new.tap do |o|
1475
+ o.name = "ListResourceSets"
1476
+ o.http_method = "POST"
1477
+ o.http_request_uri = "/"
1478
+ o.input = Shapes::ShapeRef.new(shape: ListResourceSetsRequest)
1479
+ o.output = Shapes::ShapeRef.new(shape: ListResourceSetsResponse)
1480
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1481
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1482
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1483
+ end)
1484
+
1264
1485
  api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o|
1265
1486
  o.name = "ListTagsForResource"
1266
1487
  o.http_method = "POST"
@@ -1342,6 +1563,18 @@ module Aws::FMS
1342
1563
  o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1343
1564
  end)
1344
1565
 
1566
+ api.add_operation(:put_resource_set, Seahorse::Model::Operation.new.tap do |o|
1567
+ o.name = "PutResourceSet"
1568
+ o.http_method = "POST"
1569
+ o.http_request_uri = "/"
1570
+ o.input = Shapes::ShapeRef.new(shape: PutResourceSetRequest)
1571
+ o.output = Shapes::ShapeRef.new(shape: PutResourceSetResponse)
1572
+ o.errors << Shapes::ShapeRef.new(shape: InvalidOperationException)
1573
+ o.errors << Shapes::ShapeRef.new(shape: InvalidInputException)
1574
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1575
+ o.errors << Shapes::ShapeRef.new(shape: InternalErrorException)
1576
+ end)
1577
+
1345
1578
  api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
1346
1579
  o.name = "TagResource"
1347
1580
  o.http_method = "POST"
@@ -39,6 +39,34 @@ module Aws::FMS
39
39
  end
40
40
  end
41
41
 
42
+ class BatchAssociateResource
43
+ def self.build(context)
44
+ unless context.config.regional_endpoint
45
+ endpoint = context.config.endpoint.to_s
46
+ end
47
+ Aws::FMS::EndpointParameters.new(
48
+ region: context.config.region,
49
+ use_dual_stack: context.config.use_dualstack_endpoint,
50
+ use_fips: context.config.use_fips_endpoint,
51
+ endpoint: endpoint,
52
+ )
53
+ end
54
+ end
55
+
56
+ class BatchDisassociateResource
57
+ def self.build(context)
58
+ unless context.config.regional_endpoint
59
+ endpoint = context.config.endpoint.to_s
60
+ end
61
+ Aws::FMS::EndpointParameters.new(
62
+ region: context.config.region,
63
+ use_dual_stack: context.config.use_dualstack_endpoint,
64
+ use_fips: context.config.use_fips_endpoint,
65
+ endpoint: endpoint,
66
+ )
67
+ end
68
+ end
69
+
42
70
  class DeleteAppsList
43
71
  def self.build(context)
44
72
  unless context.config.regional_endpoint
@@ -95,6 +123,20 @@ module Aws::FMS
95
123
  end
96
124
  end
97
125
 
126
+ class DeleteResourceSet
127
+ def self.build(context)
128
+ unless context.config.regional_endpoint
129
+ endpoint = context.config.endpoint.to_s
130
+ end
131
+ Aws::FMS::EndpointParameters.new(
132
+ region: context.config.region,
133
+ use_dual_stack: context.config.use_dualstack_endpoint,
134
+ use_fips: context.config.use_fips_endpoint,
135
+ endpoint: endpoint,
136
+ )
137
+ end
138
+ end
139
+
98
140
  class DisassociateAdminAccount
99
141
  def self.build(context)
100
142
  unless context.config.regional_endpoint
@@ -221,6 +263,20 @@ module Aws::FMS
221
263
  end
222
264
  end
223
265
 
266
+ class GetResourceSet
267
+ def self.build(context)
268
+ unless context.config.regional_endpoint
269
+ endpoint = context.config.endpoint.to_s
270
+ end
271
+ Aws::FMS::EndpointParameters.new(
272
+ region: context.config.region,
273
+ use_dual_stack: context.config.use_dualstack_endpoint,
274
+ use_fips: context.config.use_fips_endpoint,
275
+ endpoint: endpoint,
276
+ )
277
+ end
278
+ end
279
+
224
280
  class GetThirdPartyFirewallAssociationStatus
225
281
  def self.build(context)
226
282
  unless context.config.regional_endpoint
@@ -277,6 +333,20 @@ module Aws::FMS
277
333
  end
278
334
  end
279
335
 
336
+ class ListDiscoveredResources
337
+ def self.build(context)
338
+ unless context.config.regional_endpoint
339
+ endpoint = context.config.endpoint.to_s
340
+ end
341
+ Aws::FMS::EndpointParameters.new(
342
+ region: context.config.region,
343
+ use_dual_stack: context.config.use_dualstack_endpoint,
344
+ use_fips: context.config.use_fips_endpoint,
345
+ endpoint: endpoint,
346
+ )
347
+ end
348
+ end
349
+
280
350
  class ListMemberAccounts
281
351
  def self.build(context)
282
352
  unless context.config.regional_endpoint
@@ -319,6 +389,34 @@ module Aws::FMS
319
389
  end
320
390
  end
321
391
 
392
+ class ListResourceSetResources
393
+ def self.build(context)
394
+ unless context.config.regional_endpoint
395
+ endpoint = context.config.endpoint.to_s
396
+ end
397
+ Aws::FMS::EndpointParameters.new(
398
+ region: context.config.region,
399
+ use_dual_stack: context.config.use_dualstack_endpoint,
400
+ use_fips: context.config.use_fips_endpoint,
401
+ endpoint: endpoint,
402
+ )
403
+ end
404
+ end
405
+
406
+ class ListResourceSets
407
+ def self.build(context)
408
+ unless context.config.regional_endpoint
409
+ endpoint = context.config.endpoint.to_s
410
+ end
411
+ Aws::FMS::EndpointParameters.new(
412
+ region: context.config.region,
413
+ use_dual_stack: context.config.use_dualstack_endpoint,
414
+ use_fips: context.config.use_fips_endpoint,
415
+ endpoint: endpoint,
416
+ )
417
+ end
418
+ end
419
+
322
420
  class ListTagsForResource
323
421
  def self.build(context)
324
422
  unless context.config.regional_endpoint
@@ -403,6 +501,20 @@ module Aws::FMS
403
501
  end
404
502
  end
405
503
 
504
+ class PutResourceSet
505
+ def self.build(context)
506
+ unless context.config.regional_endpoint
507
+ endpoint = context.config.endpoint.to_s
508
+ end
509
+ Aws::FMS::EndpointParameters.new(
510
+ region: context.config.region,
511
+ use_dual_stack: context.config.use_dualstack_endpoint,
512
+ use_fips: context.config.use_fips_endpoint,
513
+ endpoint: endpoint,
514
+ )
515
+ end
516
+ end
517
+
406
518
  class TagResource
407
519
  def self.build(context)
408
520
  unless context.config.regional_endpoint
@@ -60,6 +60,10 @@ module Aws::FMS
60
60
  Aws::FMS::Endpoints::AssociateAdminAccount.build(context)
61
61
  when :associate_third_party_firewall
62
62
  Aws::FMS::Endpoints::AssociateThirdPartyFirewall.build(context)
63
+ when :batch_associate_resource
64
+ Aws::FMS::Endpoints::BatchAssociateResource.build(context)
65
+ when :batch_disassociate_resource
66
+ Aws::FMS::Endpoints::BatchDisassociateResource.build(context)
63
67
  when :delete_apps_list
64
68
  Aws::FMS::Endpoints::DeleteAppsList.build(context)
65
69
  when :delete_notification_channel
@@ -68,6 +72,8 @@ module Aws::FMS
68
72
  Aws::FMS::Endpoints::DeletePolicy.build(context)
69
73
  when :delete_protocols_list
70
74
  Aws::FMS::Endpoints::DeleteProtocolsList.build(context)
75
+ when :delete_resource_set
76
+ Aws::FMS::Endpoints::DeleteResourceSet.build(context)
71
77
  when :disassociate_admin_account
72
78
  Aws::FMS::Endpoints::DisassociateAdminAccount.build(context)
73
79
  when :disassociate_third_party_firewall
@@ -86,6 +92,8 @@ module Aws::FMS
86
92
  Aws::FMS::Endpoints::GetProtectionStatus.build(context)
87
93
  when :get_protocols_list
88
94
  Aws::FMS::Endpoints::GetProtocolsList.build(context)
95
+ when :get_resource_set
96
+ Aws::FMS::Endpoints::GetResourceSet.build(context)
89
97
  when :get_third_party_firewall_association_status
90
98
  Aws::FMS::Endpoints::GetThirdPartyFirewallAssociationStatus.build(context)
91
99
  when :get_violation_details
@@ -94,12 +102,18 @@ module Aws::FMS
94
102
  Aws::FMS::Endpoints::ListAppsLists.build(context)
95
103
  when :list_compliance_status
96
104
  Aws::FMS::Endpoints::ListComplianceStatus.build(context)
105
+ when :list_discovered_resources
106
+ Aws::FMS::Endpoints::ListDiscoveredResources.build(context)
97
107
  when :list_member_accounts
98
108
  Aws::FMS::Endpoints::ListMemberAccounts.build(context)
99
109
  when :list_policies
100
110
  Aws::FMS::Endpoints::ListPolicies.build(context)
101
111
  when :list_protocols_lists
102
112
  Aws::FMS::Endpoints::ListProtocolsLists.build(context)
113
+ when :list_resource_set_resources
114
+ Aws::FMS::Endpoints::ListResourceSetResources.build(context)
115
+ when :list_resource_sets
116
+ Aws::FMS::Endpoints::ListResourceSets.build(context)
103
117
  when :list_tags_for_resource
104
118
  Aws::FMS::Endpoints::ListTagsForResource.build(context)
105
119
  when :list_third_party_firewall_firewall_policies
@@ -112,6 +126,8 @@ module Aws::FMS
112
126
  Aws::FMS::Endpoints::PutPolicy.build(context)
113
127
  when :put_protocols_list
114
128
  Aws::FMS::Endpoints::PutProtocolsList.build(context)
129
+ when :put_resource_set
130
+ Aws::FMS::Endpoints::PutResourceSet.build(context)
115
131
  when :tag_resource
116
132
  Aws::FMS::Endpoints::TagResource.build(context)
117
133
  when :untag_resource