diff --git a/Makefile b/Makefile index ccc75c4a8..04066dbda 100644 --- a/Makefile +++ b/Makefile @@ -198,7 +198,7 @@ test-integration: @echo "AWS operation coverage: $(AWS_MODEL_OPERATION_COVERAGE_DIR)" generate-aws-model-coverage: - @go run ./cmd/aws-model-coverage -out $(AWS_MODEL_OPERATION_COVERAGE_DIR) + @go run ./cmd/aws-model-coverage -out $(AWS_MODEL_OPERATION_COVERAGE_DIR) -json $(AWS_MODEL_OPERATION_COVERAGE_DIR)/coverage.json aws-model-coverage: generate-aws-model-coverage @go run ./cmd/aws-model-coverage diff --git a/cmd/aws-model-coverage/main.go b/cmd/aws-model-coverage/main.go index ca2b1fa67..096566387 100644 --- a/cmd/aws-model-coverage/main.go +++ b/cmd/aws-model-coverage/main.go @@ -14,18 +14,26 @@ import ( func main() { outputDir := flag.String("out", "", "write one publishable page per service into this directory") + jsonOutput := flag.String("json", "", "write a machine-readable coverage inventory to this file") flag.Parse() coverages, err := compareAll() if err != nil { fail(err) } - if *outputDir == "" { + if *outputDir == "" && *jsonOutput == "" { fmt.Print(awsmodel.RenderCoverageSummary(coverages)) return } - if err := awsmodel.WritePages(*outputDir, coverages); err != nil { - fail(err) + if *outputDir != "" { + if err := awsmodel.WritePages(*outputDir, coverages); err != nil { + fail(err) + } + } + if *jsonOutput != "" { + if err := awsmodel.WriteCoverageJSON(*jsonOutput, coverages); err != nil { + fail(err) + } } } diff --git a/docs/README.md b/docs/README.md index f84aef98f..cdced4a87 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,6 +4,8 @@ This directory contains the Spinifex documentation. This is available in individ The [AWS API coverage](coverage/README.md) pages are generated from Spinifex's dispatch tables and the pinned AWS API models, one page per service. Run `make aws-model-coverage` to regenerate them and print a summary. Only `pages.json` and the `intro.md` files under `coverage/` are hand-written; every `README.md` there is generated and will be overwritten. +The same run writes [`coverage/coverage.json`](coverage/coverage.json), a versioned machine-readable model-versus-dispatch inventory. It is generated and must not be edited. Its operation states are structural: `implemented` means a registered action has neither a stub nor an explicit refusal. It is not a behavioural compatibility claim; conformance evidence and capability profiles establish that separately. + A published page names the operations Spinifex serves, and nothing else. It carries no percentage, no unimplemented operation and no operation the platform will never offer: the same run writes those to [`coverage/internal-report.md`](coverage/internal-report.md), which no slug in the docs site's configuration points at, so it stays internal. A `notApplicable` declaration in `pages.json` therefore publishes nothing; it keeps a permanent absence out of the report's candidate work. ## Frontmatter diff --git a/docs/coverage/README.md b/docs/coverage/README.md index 44c45e0c3..d16a793e6 100644 --- a/docs/coverage/README.md +++ b/docs/coverage/README.md @@ -17,7 +17,7 @@ tags: ## Overview -The platform serves **381 operations** across the AWS APIs below. Every page names the operations its service implements from the pinned model, generated from the dispatch tables on each build rather than written by hand. +The platform serves **385 operations** across the AWS APIs below. Every page names the operations its service implements from the pinned model, generated from the dispatch tables on each build rather than written by hand. | Service | Operations | |---|---:| @@ -29,6 +29,6 @@ The platform serves **381 operations** across the AWS APIs below. Every page nam | [ELBv2](/coverage/elbv2) | 34 | | [IAM](/coverage/iam) | 76 | | [RDS](/coverage/rds) | 26 | -| [S3](/coverage/s3) | 19 | +| [S3](/coverage/s3) | 23 | | [STS](/coverage/sts) | 5 | -| **Total** | **381** | +| **Total** | **385** | diff --git a/docs/coverage/coverage.json b/docs/coverage/coverage.json new file mode 100644 index 000000000..7c829dc19 --- /dev/null +++ b/docs/coverage/coverage.json @@ -0,0 +1,3210 @@ +{ + "schema_version": 1, + "model_source": { + "aws_sdk_go_version": "v1.55.8" + }, + "services": [ + { + "service": "acm", + "api_version": "2015-12-08", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AddTagsToCertificate", + "DeleteCertificate", + "DescribeCertificate", + "ExportCertificate", + "GetAccountConfiguration", + "GetCertificate", + "ImportCertificate", + "ListCertificates", + "ListTagsForCertificate", + "PutAccountConfiguration", + "RemoveTagsFromCertificate", + "RenewCertificate", + "RequestCertificate", + "ResendValidationEmail", + "UpdateCertificateOptions" + ], + "registered": [ + "AddTagsToCertificate", + "DeleteCertificate", + "DescribeCertificate", + "GetCertificate", + "ImportCertificate", + "ListCertificates", + "ListTagsForCertificate", + "RemoveTagsFromCertificate", + "RequestCertificate" + ], + "implemented": [ + "AddTagsToCertificate", + "DeleteCertificate", + "DescribeCertificate", + "GetCertificate", + "ImportCertificate", + "ListCertificates", + "ListTagsForCertificate", + "RemoveTagsFromCertificate", + "RequestCertificate" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "ExportCertificate", + "GetAccountConfiguration", + "PutAccountConfiguration", + "RenewCertificate", + "ResendValidationEmail", + "UpdateCertificateOptions" + ], + "extra": [] + } + }, + { + "service": "ec2", + "api_version": "2016-11-15", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AcceptAddressTransfer", + "AcceptReservedInstancesExchangeQuote", + "AcceptTransitGatewayMulticastDomainAssociations", + "AcceptTransitGatewayPeeringAttachment", + "AcceptTransitGatewayVpcAttachment", + "AcceptVpcEndpointConnections", + "AcceptVpcPeeringConnection", + "AdvertiseByoipCidr", + "AllocateAddress", + "AllocateHosts", + "AllocateIpamPoolCidr", + "ApplySecurityGroupsToClientVpnTargetNetwork", + "AssignIpv6Addresses", + "AssignPrivateIpAddresses", + "AssignPrivateNatGatewayAddress", + "AssociateAddress", + "AssociateClientVpnTargetNetwork", + "AssociateDhcpOptions", + "AssociateEnclaveCertificateIamRole", + "AssociateIamInstanceProfile", + "AssociateInstanceEventWindow", + "AssociateIpamByoasn", + "AssociateIpamResourceDiscovery", + "AssociateNatGatewayAddress", + "AssociateRouteTable", + "AssociateSubnetCidrBlock", + "AssociateTransitGatewayMulticastDomain", + "AssociateTransitGatewayPolicyTable", + "AssociateTransitGatewayRouteTable", + "AssociateTrunkInterface", + "AssociateVpcCidrBlock", + "AttachClassicLinkVpc", + "AttachInternetGateway", + "AttachNetworkInterface", + "AttachVerifiedAccessTrustProvider", + "AttachVolume", + "AttachVpnGateway", + "AuthorizeClientVpnIngress", + "AuthorizeSecurityGroupEgress", + "AuthorizeSecurityGroupIngress", + "BundleInstance", + "CancelBundleTask", + "CancelCapacityReservation", + "CancelCapacityReservationFleets", + "CancelConversionTask", + "CancelExportTask", + "CancelImageLaunchPermission", + "CancelImportTask", + "CancelReservedInstancesListing", + "CancelSpotFleetRequests", + "CancelSpotInstanceRequests", + "ConfirmProductInstance", + "CopyFpgaImage", + "CopyImage", + "CopySnapshot", + "CreateCapacityReservation", + "CreateCapacityReservationFleet", + "CreateCarrierGateway", + "CreateClientVpnEndpoint", + "CreateClientVpnRoute", + "CreateCoipCidr", + "CreateCoipPool", + "CreateCustomerGateway", + "CreateDefaultSubnet", + "CreateDefaultVpc", + "CreateDhcpOptions", + "CreateEgressOnlyInternetGateway", + "CreateFleet", + "CreateFlowLogs", + "CreateFpgaImage", + "CreateImage", + "CreateInstanceConnectEndpoint", + "CreateInstanceEventWindow", + "CreateInstanceExportTask", + "CreateInternetGateway", + "CreateIpam", + "CreateIpamExternalResourceVerificationToken", + "CreateIpamPool", + "CreateIpamResourceDiscovery", + "CreateIpamScope", + "CreateKeyPair", + "CreateLaunchTemplate", + "CreateLaunchTemplateVersion", + "CreateLocalGatewayRoute", + "CreateLocalGatewayRouteTable", + "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "CreateLocalGatewayRouteTableVpcAssociation", + "CreateManagedPrefixList", + "CreateNatGateway", + "CreateNetworkAcl", + "CreateNetworkAclEntry", + "CreateNetworkInsightsAccessScope", + "CreateNetworkInsightsPath", + "CreateNetworkInterface", + "CreateNetworkInterfacePermission", + "CreatePlacementGroup", + "CreatePublicIpv4Pool", + "CreateReplaceRootVolumeTask", + "CreateReservedInstancesListing", + "CreateRestoreImageTask", + "CreateRoute", + "CreateRouteTable", + "CreateSecurityGroup", + "CreateSnapshot", + "CreateSnapshots", + "CreateSpotDatafeedSubscription", + "CreateStoreImageTask", + "CreateSubnet", + "CreateSubnetCidrReservation", + "CreateTags", + "CreateTrafficMirrorFilter", + "CreateTrafficMirrorFilterRule", + "CreateTrafficMirrorSession", + "CreateTrafficMirrorTarget", + "CreateTransitGateway", + "CreateTransitGatewayConnect", + "CreateTransitGatewayConnectPeer", + "CreateTransitGatewayMulticastDomain", + "CreateTransitGatewayPeeringAttachment", + "CreateTransitGatewayPolicyTable", + "CreateTransitGatewayPrefixListReference", + "CreateTransitGatewayRoute", + "CreateTransitGatewayRouteTable", + "CreateTransitGatewayRouteTableAnnouncement", + "CreateTransitGatewayVpcAttachment", + "CreateVerifiedAccessEndpoint", + "CreateVerifiedAccessGroup", + "CreateVerifiedAccessInstance", + "CreateVerifiedAccessTrustProvider", + "CreateVolume", + "CreateVpc", + "CreateVpcEndpoint", + "CreateVpcEndpointConnectionNotification", + "CreateVpcEndpointServiceConfiguration", + "CreateVpcPeeringConnection", + "CreateVpnConnection", + "CreateVpnConnectionRoute", + "CreateVpnGateway", + "DeleteCarrierGateway", + "DeleteClientVpnEndpoint", + "DeleteClientVpnRoute", + "DeleteCoipCidr", + "DeleteCoipPool", + "DeleteCustomerGateway", + "DeleteDhcpOptions", + "DeleteEgressOnlyInternetGateway", + "DeleteFleets", + "DeleteFlowLogs", + "DeleteFpgaImage", + "DeleteInstanceConnectEndpoint", + "DeleteInstanceEventWindow", + "DeleteInternetGateway", + "DeleteIpam", + "DeleteIpamExternalResourceVerificationToken", + "DeleteIpamPool", + "DeleteIpamResourceDiscovery", + "DeleteIpamScope", + "DeleteKeyPair", + "DeleteLaunchTemplate", + "DeleteLaunchTemplateVersions", + "DeleteLocalGatewayRoute", + "DeleteLocalGatewayRouteTable", + "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "DeleteLocalGatewayRouteTableVpcAssociation", + "DeleteManagedPrefixList", + "DeleteNatGateway", + "DeleteNetworkAcl", + "DeleteNetworkAclEntry", + "DeleteNetworkInsightsAccessScope", + "DeleteNetworkInsightsAccessScopeAnalysis", + "DeleteNetworkInsightsAnalysis", + "DeleteNetworkInsightsPath", + "DeleteNetworkInterface", + "DeleteNetworkInterfacePermission", + "DeletePlacementGroup", + "DeletePublicIpv4Pool", + "DeleteQueuedReservedInstances", + "DeleteRoute", + "DeleteRouteTable", + "DeleteSecurityGroup", + "DeleteSnapshot", + "DeleteSpotDatafeedSubscription", + "DeleteSubnet", + "DeleteSubnetCidrReservation", + "DeleteTags", + "DeleteTrafficMirrorFilter", + "DeleteTrafficMirrorFilterRule", + "DeleteTrafficMirrorSession", + "DeleteTrafficMirrorTarget", + "DeleteTransitGateway", + "DeleteTransitGatewayConnect", + "DeleteTransitGatewayConnectPeer", + "DeleteTransitGatewayMulticastDomain", + "DeleteTransitGatewayPeeringAttachment", + "DeleteTransitGatewayPolicyTable", + "DeleteTransitGatewayPrefixListReference", + "DeleteTransitGatewayRoute", + "DeleteTransitGatewayRouteTable", + "DeleteTransitGatewayRouteTableAnnouncement", + "DeleteTransitGatewayVpcAttachment", + "DeleteVerifiedAccessEndpoint", + "DeleteVerifiedAccessGroup", + "DeleteVerifiedAccessInstance", + "DeleteVerifiedAccessTrustProvider", + "DeleteVolume", + "DeleteVpc", + "DeleteVpcEndpointConnectionNotifications", + "DeleteVpcEndpointServiceConfigurations", + "DeleteVpcEndpoints", + "DeleteVpcPeeringConnection", + "DeleteVpnConnection", + "DeleteVpnConnectionRoute", + "DeleteVpnGateway", + "DeprovisionByoipCidr", + "DeprovisionIpamByoasn", + "DeprovisionIpamPoolCidr", + "DeprovisionPublicIpv4PoolCidr", + "DeregisterImage", + "DeregisterInstanceEventNotificationAttributes", + "DeregisterTransitGatewayMulticastGroupMembers", + "DeregisterTransitGatewayMulticastGroupSources", + "DescribeAccountAttributes", + "DescribeAddressTransfers", + "DescribeAddresses", + "DescribeAddressesAttribute", + "DescribeAggregateIdFormat", + "DescribeAvailabilityZones", + "DescribeAwsNetworkPerformanceMetricSubscriptions", + "DescribeBundleTasks", + "DescribeByoipCidrs", + "DescribeCapacityBlockOfferings", + "DescribeCapacityReservationFleets", + "DescribeCapacityReservations", + "DescribeCarrierGateways", + "DescribeClassicLinkInstances", + "DescribeClientVpnAuthorizationRules", + "DescribeClientVpnConnections", + "DescribeClientVpnEndpoints", + "DescribeClientVpnRoutes", + "DescribeClientVpnTargetNetworks", + "DescribeCoipPools", + "DescribeConversionTasks", + "DescribeCustomerGateways", + "DescribeDhcpOptions", + "DescribeEgressOnlyInternetGateways", + "DescribeElasticGpus", + "DescribeExportImageTasks", + "DescribeExportTasks", + "DescribeFastLaunchImages", + "DescribeFastSnapshotRestores", + "DescribeFleetHistory", + "DescribeFleetInstances", + "DescribeFleets", + "DescribeFlowLogs", + "DescribeFpgaImageAttribute", + "DescribeFpgaImages", + "DescribeHostReservationOfferings", + "DescribeHostReservations", + "DescribeHosts", + "DescribeIamInstanceProfileAssociations", + "DescribeIdFormat", + "DescribeIdentityIdFormat", + "DescribeImageAttribute", + "DescribeImages", + "DescribeImportImageTasks", + "DescribeImportSnapshotTasks", + "DescribeInstanceAttribute", + "DescribeInstanceConnectEndpoints", + "DescribeInstanceCreditSpecifications", + "DescribeInstanceEventNotificationAttributes", + "DescribeInstanceEventWindows", + "DescribeInstanceStatus", + "DescribeInstanceTopology", + "DescribeInstanceTypeOfferings", + "DescribeInstanceTypes", + "DescribeInstances", + "DescribeInternetGateways", + "DescribeIpamByoasn", + "DescribeIpamExternalResourceVerificationTokens", + "DescribeIpamPools", + "DescribeIpamResourceDiscoveries", + "DescribeIpamResourceDiscoveryAssociations", + "DescribeIpamScopes", + "DescribeIpams", + "DescribeIpv6Pools", + "DescribeKeyPairs", + "DescribeLaunchTemplateVersions", + "DescribeLaunchTemplates", + "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "DescribeLocalGatewayRouteTableVpcAssociations", + "DescribeLocalGatewayRouteTables", + "DescribeLocalGatewayVirtualInterfaceGroups", + "DescribeLocalGatewayVirtualInterfaces", + "DescribeLocalGateways", + "DescribeLockedSnapshots", + "DescribeMacHosts", + "DescribeManagedPrefixLists", + "DescribeMovingAddresses", + "DescribeNatGateways", + "DescribeNetworkAcls", + "DescribeNetworkInsightsAccessScopeAnalyses", + "DescribeNetworkInsightsAccessScopes", + "DescribeNetworkInsightsAnalyses", + "DescribeNetworkInsightsPaths", + "DescribeNetworkInterfaceAttribute", + "DescribeNetworkInterfacePermissions", + "DescribeNetworkInterfaces", + "DescribePlacementGroups", + "DescribePrefixLists", + "DescribePrincipalIdFormat", + "DescribePublicIpv4Pools", + "DescribeRegions", + "DescribeReplaceRootVolumeTasks", + "DescribeReservedInstances", + "DescribeReservedInstancesListings", + "DescribeReservedInstancesModifications", + "DescribeReservedInstancesOfferings", + "DescribeRouteTables", + "DescribeScheduledInstanceAvailability", + "DescribeScheduledInstances", + "DescribeSecurityGroupReferences", + "DescribeSecurityGroupRules", + "DescribeSecurityGroups", + "DescribeSnapshotAttribute", + "DescribeSnapshotTierStatus", + "DescribeSnapshots", + "DescribeSpotDatafeedSubscription", + "DescribeSpotFleetInstances", + "DescribeSpotFleetRequestHistory", + "DescribeSpotFleetRequests", + "DescribeSpotInstanceRequests", + "DescribeSpotPriceHistory", + "DescribeStaleSecurityGroups", + "DescribeStoreImageTasks", + "DescribeSubnets", + "DescribeTags", + "DescribeTrafficMirrorFilterRules", + "DescribeTrafficMirrorFilters", + "DescribeTrafficMirrorSessions", + "DescribeTrafficMirrorTargets", + "DescribeTransitGatewayAttachments", + "DescribeTransitGatewayConnectPeers", + "DescribeTransitGatewayConnects", + "DescribeTransitGatewayMulticastDomains", + "DescribeTransitGatewayPeeringAttachments", + "DescribeTransitGatewayPolicyTables", + "DescribeTransitGatewayRouteTableAnnouncements", + "DescribeTransitGatewayRouteTables", + "DescribeTransitGatewayVpcAttachments", + "DescribeTransitGateways", + "DescribeTrunkInterfaceAssociations", + "DescribeVerifiedAccessEndpoints", + "DescribeVerifiedAccessGroups", + "DescribeVerifiedAccessInstanceLoggingConfigurations", + "DescribeVerifiedAccessInstances", + "DescribeVerifiedAccessTrustProviders", + "DescribeVolumeAttribute", + "DescribeVolumeStatus", + "DescribeVolumes", + "DescribeVolumesModifications", + "DescribeVpcAttribute", + "DescribeVpcClassicLink", + "DescribeVpcClassicLinkDnsSupport", + "DescribeVpcEndpointConnectionNotifications", + "DescribeVpcEndpointConnections", + "DescribeVpcEndpointServiceConfigurations", + "DescribeVpcEndpointServicePermissions", + "DescribeVpcEndpointServices", + "DescribeVpcEndpoints", + "DescribeVpcPeeringConnections", + "DescribeVpcs", + "DescribeVpnConnections", + "DescribeVpnGateways", + "DetachClassicLinkVpc", + "DetachInternetGateway", + "DetachNetworkInterface", + "DetachVerifiedAccessTrustProvider", + "DetachVolume", + "DetachVpnGateway", + "DisableAddressTransfer", + "DisableAwsNetworkPerformanceMetricSubscription", + "DisableEbsEncryptionByDefault", + "DisableFastLaunch", + "DisableFastSnapshotRestores", + "DisableImage", + "DisableImageBlockPublicAccess", + "DisableImageDeprecation", + "DisableImageDeregistrationProtection", + "DisableIpamOrganizationAdminAccount", + "DisableSerialConsoleAccess", + "DisableSnapshotBlockPublicAccess", + "DisableTransitGatewayRouteTablePropagation", + "DisableVgwRoutePropagation", + "DisableVpcClassicLink", + "DisableVpcClassicLinkDnsSupport", + "DisassociateAddress", + "DisassociateClientVpnTargetNetwork", + "DisassociateEnclaveCertificateIamRole", + "DisassociateIamInstanceProfile", + "DisassociateInstanceEventWindow", + "DisassociateIpamByoasn", + "DisassociateIpamResourceDiscovery", + "DisassociateNatGatewayAddress", + "DisassociateRouteTable", + "DisassociateSubnetCidrBlock", + "DisassociateTransitGatewayMulticastDomain", + "DisassociateTransitGatewayPolicyTable", + "DisassociateTransitGatewayRouteTable", + "DisassociateTrunkInterface", + "DisassociateVpcCidrBlock", + "EnableAddressTransfer", + "EnableAwsNetworkPerformanceMetricSubscription", + "EnableEbsEncryptionByDefault", + "EnableFastLaunch", + "EnableFastSnapshotRestores", + "EnableImage", + "EnableImageBlockPublicAccess", + "EnableImageDeprecation", + "EnableImageDeregistrationProtection", + "EnableIpamOrganizationAdminAccount", + "EnableReachabilityAnalyzerOrganizationSharing", + "EnableSerialConsoleAccess", + "EnableSnapshotBlockPublicAccess", + "EnableTransitGatewayRouteTablePropagation", + "EnableVgwRoutePropagation", + "EnableVolumeIO", + "EnableVpcClassicLink", + "EnableVpcClassicLinkDnsSupport", + "ExportClientVpnClientCertificateRevocationList", + "ExportClientVpnClientConfiguration", + "ExportImage", + "ExportTransitGatewayRoutes", + "GetAssociatedEnclaveCertificateIamRoles", + "GetAssociatedIpv6PoolCidrs", + "GetAwsNetworkPerformanceData", + "GetCapacityReservationUsage", + "GetCoipPoolUsage", + "GetConsoleOutput", + "GetConsoleScreenshot", + "GetDefaultCreditSpecification", + "GetEbsDefaultKmsKeyId", + "GetEbsEncryptionByDefault", + "GetFlowLogsIntegrationTemplate", + "GetGroupsForCapacityReservation", + "GetHostReservationPurchasePreview", + "GetImageBlockPublicAccessState", + "GetInstanceMetadataDefaults", + "GetInstanceTpmEkPub", + "GetInstanceTypesFromInstanceRequirements", + "GetInstanceUefiData", + "GetIpamAddressHistory", + "GetIpamDiscoveredAccounts", + "GetIpamDiscoveredPublicAddresses", + "GetIpamDiscoveredResourceCidrs", + "GetIpamPoolAllocations", + "GetIpamPoolCidrs", + "GetIpamResourceCidrs", + "GetLaunchTemplateData", + "GetManagedPrefixListAssociations", + "GetManagedPrefixListEntries", + "GetNetworkInsightsAccessScopeAnalysisFindings", + "GetNetworkInsightsAccessScopeContent", + "GetPasswordData", + "GetReservedInstancesExchangeQuote", + "GetSecurityGroupsForVpc", + "GetSerialConsoleAccessStatus", + "GetSnapshotBlockPublicAccessState", + "GetSpotPlacementScores", + "GetSubnetCidrReservations", + "GetTransitGatewayAttachmentPropagations", + "GetTransitGatewayMulticastDomainAssociations", + "GetTransitGatewayPolicyTableAssociations", + "GetTransitGatewayPolicyTableEntries", + "GetTransitGatewayPrefixListReferences", + "GetTransitGatewayRouteTableAssociations", + "GetTransitGatewayRouteTablePropagations", + "GetVerifiedAccessEndpointPolicy", + "GetVerifiedAccessGroupPolicy", + "GetVpnConnectionDeviceSampleConfiguration", + "GetVpnConnectionDeviceTypes", + "GetVpnTunnelReplacementStatus", + "ImportClientVpnClientCertificateRevocationList", + "ImportImage", + "ImportInstance", + "ImportKeyPair", + "ImportSnapshot", + "ImportVolume", + "ListImagesInRecycleBin", + "ListSnapshotsInRecycleBin", + "LockSnapshot", + "ModifyAddressAttribute", + "ModifyAvailabilityZoneGroup", + "ModifyCapacityReservation", + "ModifyCapacityReservationFleet", + "ModifyClientVpnEndpoint", + "ModifyDefaultCreditSpecification", + "ModifyEbsDefaultKmsKeyId", + "ModifyFleet", + "ModifyFpgaImageAttribute", + "ModifyHosts", + "ModifyIdFormat", + "ModifyIdentityIdFormat", + "ModifyImageAttribute", + "ModifyInstanceAttribute", + "ModifyInstanceCapacityReservationAttributes", + "ModifyInstanceCreditSpecification", + "ModifyInstanceEventStartTime", + "ModifyInstanceEventWindow", + "ModifyInstanceMaintenanceOptions", + "ModifyInstanceMetadataDefaults", + "ModifyInstanceMetadataOptions", + "ModifyInstancePlacement", + "ModifyIpam", + "ModifyIpamPool", + "ModifyIpamResourceCidr", + "ModifyIpamResourceDiscovery", + "ModifyIpamScope", + "ModifyLaunchTemplate", + "ModifyLocalGatewayRoute", + "ModifyManagedPrefixList", + "ModifyNetworkInterfaceAttribute", + "ModifyPrivateDnsNameOptions", + "ModifyReservedInstances", + "ModifySecurityGroupRules", + "ModifySnapshotAttribute", + "ModifySnapshotTier", + "ModifySpotFleetRequest", + "ModifySubnetAttribute", + "ModifyTrafficMirrorFilterNetworkServices", + "ModifyTrafficMirrorFilterRule", + "ModifyTrafficMirrorSession", + "ModifyTransitGateway", + "ModifyTransitGatewayPrefixListReference", + "ModifyTransitGatewayVpcAttachment", + "ModifyVerifiedAccessEndpoint", + "ModifyVerifiedAccessEndpointPolicy", + "ModifyVerifiedAccessGroup", + "ModifyVerifiedAccessGroupPolicy", + "ModifyVerifiedAccessInstance", + "ModifyVerifiedAccessInstanceLoggingConfiguration", + "ModifyVerifiedAccessTrustProvider", + "ModifyVolume", + "ModifyVolumeAttribute", + "ModifyVpcAttribute", + "ModifyVpcEndpoint", + "ModifyVpcEndpointConnectionNotification", + "ModifyVpcEndpointServiceConfiguration", + "ModifyVpcEndpointServicePayerResponsibility", + "ModifyVpcEndpointServicePermissions", + "ModifyVpcPeeringConnectionOptions", + "ModifyVpcTenancy", + "ModifyVpnConnection", + "ModifyVpnConnectionOptions", + "ModifyVpnTunnelCertificate", + "ModifyVpnTunnelOptions", + "MonitorInstances", + "MoveAddressToVpc", + "MoveByoipCidrToIpam", + "ProvisionByoipCidr", + "ProvisionIpamByoasn", + "ProvisionIpamPoolCidr", + "ProvisionPublicIpv4PoolCidr", + "PurchaseCapacityBlock", + "PurchaseHostReservation", + "PurchaseReservedInstancesOffering", + "PurchaseScheduledInstances", + "RebootInstances", + "RegisterImage", + "RegisterInstanceEventNotificationAttributes", + "RegisterTransitGatewayMulticastGroupMembers", + "RegisterTransitGatewayMulticastGroupSources", + "RejectTransitGatewayMulticastDomainAssociations", + "RejectTransitGatewayPeeringAttachment", + "RejectTransitGatewayVpcAttachment", + "RejectVpcEndpointConnections", + "RejectVpcPeeringConnection", + "ReleaseAddress", + "ReleaseHosts", + "ReleaseIpamPoolAllocation", + "ReplaceIamInstanceProfileAssociation", + "ReplaceNetworkAclAssociation", + "ReplaceNetworkAclEntry", + "ReplaceRoute", + "ReplaceRouteTableAssociation", + "ReplaceTransitGatewayRoute", + "ReplaceVpnTunnel", + "ReportInstanceStatus", + "RequestSpotFleet", + "RequestSpotInstances", + "ResetAddressAttribute", + "ResetEbsDefaultKmsKeyId", + "ResetFpgaImageAttribute", + "ResetImageAttribute", + "ResetInstanceAttribute", + "ResetNetworkInterfaceAttribute", + "ResetSnapshotAttribute", + "RestoreAddressToClassic", + "RestoreImageFromRecycleBin", + "RestoreManagedPrefixListVersion", + "RestoreSnapshotFromRecycleBin", + "RestoreSnapshotTier", + "RevokeClientVpnIngress", + "RevokeSecurityGroupEgress", + "RevokeSecurityGroupIngress", + "RunInstances", + "RunScheduledInstances", + "SearchLocalGatewayRoutes", + "SearchTransitGatewayMulticastGroups", + "SearchTransitGatewayRoutes", + "SendDiagnosticInterrupt", + "StartInstances", + "StartNetworkInsightsAccessScopeAnalysis", + "StartNetworkInsightsAnalysis", + "StartVpcEndpointServicePrivateDnsVerification", + "StopInstances", + "TerminateClientVpnConnections", + "TerminateInstances", + "UnassignIpv6Addresses", + "UnassignPrivateIpAddresses", + "UnassignPrivateNatGatewayAddress", + "UnlockSnapshot", + "UnmonitorInstances", + "UpdateSecurityGroupRuleDescriptionsEgress", + "UpdateSecurityGroupRuleDescriptionsIngress", + "WithdrawByoipCidr" + ], + "registered": [ + "AllocateAddress", + "AssociateAddress", + "AssociateIamInstanceProfile", + "AssociateRouteTable", + "AttachInternetGateway", + "AttachNetworkInterface", + "AttachVolume", + "AuthorizeSecurityGroupEgress", + "AuthorizeSecurityGroupIngress", + "CancelCapacityReservation", + "CancelSpotInstanceRequests", + "CopyImage", + "CopySnapshot", + "CreateCapacityReservation", + "CreateEgressOnlyInternetGateway", + "CreateImage", + "CreateInternetGateway", + "CreateKeyPair", + "CreateLaunchTemplate", + "CreateLaunchTemplateVersion", + "CreateNatGateway", + "CreateNetworkInterface", + "CreatePlacementGroup", + "CreateRoute", + "CreateRouteTable", + "CreateSecurityGroup", + "CreateSnapshot", + "CreateSubnet", + "CreateTags", + "CreateVolume", + "CreateVpc", + "DeleteEgressOnlyInternetGateway", + "DeleteInternetGateway", + "DeleteKeyPair", + "DeleteLaunchTemplate", + "DeleteLaunchTemplateVersions", + "DeleteNatGateway", + "DeleteNetworkInterface", + "DeletePlacementGroup", + "DeleteRoute", + "DeleteRouteTable", + "DeleteSecurityGroup", + "DeleteSnapshot", + "DeleteSubnet", + "DeleteTags", + "DeleteVolume", + "DeleteVpc", + "DeregisterImage", + "DescribeAccountAttributes", + "DescribeAddresses", + "DescribeAddressesAttribute", + "DescribeAvailabilityZones", + "DescribeCapacityReservations", + "DescribeEgressOnlyInternetGateways", + "DescribeIamInstanceProfileAssociations", + "DescribeImageAttribute", + "DescribeImages", + "DescribeInstanceAttribute", + "DescribeInstanceCreditSpecifications", + "DescribeInstanceStatus", + "DescribeInstanceTypeOfferings", + "DescribeInstanceTypes", + "DescribeInstances", + "DescribeInternetGateways", + "DescribeKeyPairs", + "DescribeLaunchTemplateVersions", + "DescribeLaunchTemplates", + "DescribeNatGateways", + "DescribeNetworkInterfaces", + "DescribePlacementGroups", + "DescribeRegions", + "DescribeRouteTables", + "DescribeSecurityGroupRules", + "DescribeSecurityGroups", + "DescribeSnapshots", + "DescribeSpotInstanceRequests", + "DescribeSubnets", + "DescribeTags", + "DescribeVolumeStatus", + "DescribeVolumes", + "DescribeVolumesModifications", + "DescribeVpcAttribute", + "DescribeVpcs", + "DetachInternetGateway", + "DetachNetworkInterface", + "DetachVolume", + "DisableEbsEncryptionByDefault", + "DisableSerialConsoleAccess", + "DisassociateAddress", + "DisassociateIamInstanceProfile", + "DisassociateRouteTable", + "EnableEbsEncryptionByDefault", + "EnableSerialConsoleAccess", + "GetConsoleOutput", + "GetEbsEncryptionByDefault", + "GetPasswordData", + "GetSecurityGroupsForVpc", + "GetSerialConsoleAccessStatus", + "ImportKeyPair", + "ModifyImageAttribute", + "ModifyInstanceAttribute", + "ModifyInstanceMetadataOptions", + "ModifyLaunchTemplate", + "ModifyNetworkInterfaceAttribute", + "ModifySubnetAttribute", + "ModifyVolume", + "ModifyVpcAttribute", + "MonitorInstances", + "RebootInstances", + "RegisterImage", + "ReleaseAddress", + "ReplaceIamInstanceProfileAssociation", + "ReplaceRoute", + "ReplaceRouteTableAssociation", + "RequestSpotInstances", + "ResetImageAttribute", + "RevokeSecurityGroupEgress", + "RevokeSecurityGroupIngress", + "RunInstances", + "StartInstances", + "StopInstances", + "TerminateInstances", + "UnmonitorInstances", + "UpdateSecurityGroupRuleDescriptionsEgress", + "UpdateSecurityGroupRuleDescriptionsIngress" + ], + "implemented": [ + "AllocateAddress", + "AssociateAddress", + "AssociateIamInstanceProfile", + "AssociateRouteTable", + "AttachInternetGateway", + "AttachNetworkInterface", + "AttachVolume", + "AuthorizeSecurityGroupEgress", + "AuthorizeSecurityGroupIngress", + "CancelCapacityReservation", + "CancelSpotInstanceRequests", + "CopyImage", + "CopySnapshot", + "CreateCapacityReservation", + "CreateEgressOnlyInternetGateway", + "CreateImage", + "CreateInternetGateway", + "CreateKeyPair", + "CreateLaunchTemplate", + "CreateLaunchTemplateVersion", + "CreateNatGateway", + "CreateNetworkInterface", + "CreatePlacementGroup", + "CreateRoute", + "CreateRouteTable", + "CreateSecurityGroup", + "CreateSnapshot", + "CreateSubnet", + "CreateTags", + "CreateVolume", + "CreateVpc", + "DeleteEgressOnlyInternetGateway", + "DeleteInternetGateway", + "DeleteKeyPair", + "DeleteLaunchTemplate", + "DeleteLaunchTemplateVersions", + "DeleteNatGateway", + "DeleteNetworkInterface", + "DeletePlacementGroup", + "DeleteRoute", + "DeleteRouteTable", + "DeleteSecurityGroup", + "DeleteSnapshot", + "DeleteSubnet", + "DeleteTags", + "DeleteVolume", + "DeleteVpc", + "DeregisterImage", + "DescribeAccountAttributes", + "DescribeAddresses", + "DescribeAddressesAttribute", + "DescribeAvailabilityZones", + "DescribeCapacityReservations", + "DescribeEgressOnlyInternetGateways", + "DescribeIamInstanceProfileAssociations", + "DescribeImageAttribute", + "DescribeImages", + "DescribeInstanceAttribute", + "DescribeInstanceCreditSpecifications", + "DescribeInstanceStatus", + "DescribeInstanceTypeOfferings", + "DescribeInstanceTypes", + "DescribeInstances", + "DescribeInternetGateways", + "DescribeKeyPairs", + "DescribeLaunchTemplateVersions", + "DescribeLaunchTemplates", + "DescribeNatGateways", + "DescribeNetworkInterfaces", + "DescribePlacementGroups", + "DescribeRegions", + "DescribeRouteTables", + "DescribeSecurityGroupRules", + "DescribeSecurityGroups", + "DescribeSnapshots", + "DescribeSpotInstanceRequests", + "DescribeSubnets", + "DescribeTags", + "DescribeVolumeStatus", + "DescribeVolumes", + "DescribeVolumesModifications", + "DescribeVpcAttribute", + "DescribeVpcs", + "DetachInternetGateway", + "DetachNetworkInterface", + "DetachVolume", + "DisableEbsEncryptionByDefault", + "DisableSerialConsoleAccess", + "DisassociateAddress", + "DisassociateIamInstanceProfile", + "DisassociateRouteTable", + "EnableEbsEncryptionByDefault", + "EnableSerialConsoleAccess", + "GetConsoleOutput", + "GetEbsEncryptionByDefault", + "GetPasswordData", + "GetSecurityGroupsForVpc", + "GetSerialConsoleAccessStatus", + "ImportKeyPair", + "ModifyImageAttribute", + "ModifyInstanceAttribute", + "ModifyInstanceMetadataOptions", + "ModifyLaunchTemplate", + "ModifyNetworkInterfaceAttribute", + "ModifySubnetAttribute", + "ModifyVolume", + "ModifyVpcAttribute", + "MonitorInstances", + "RebootInstances", + "RegisterImage", + "ReleaseAddress", + "ReplaceIamInstanceProfileAssociation", + "ReplaceRoute", + "ReplaceRouteTableAssociation", + "RequestSpotInstances", + "ResetImageAttribute", + "RevokeSecurityGroupEgress", + "RevokeSecurityGroupIngress", + "RunInstances", + "StartInstances", + "StopInstances", + "TerminateInstances", + "UnmonitorInstances", + "UpdateSecurityGroupRuleDescriptionsEgress", + "UpdateSecurityGroupRuleDescriptionsIngress" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "AcceptAddressTransfer", + "AcceptReservedInstancesExchangeQuote", + "AcceptTransitGatewayMulticastDomainAssociations", + "AcceptTransitGatewayPeeringAttachment", + "AcceptTransitGatewayVpcAttachment", + "AcceptVpcEndpointConnections", + "AcceptVpcPeeringConnection", + "AdvertiseByoipCidr", + "AllocateHosts", + "AllocateIpamPoolCidr", + "ApplySecurityGroupsToClientVpnTargetNetwork", + "AssignIpv6Addresses", + "AssignPrivateIpAddresses", + "AssignPrivateNatGatewayAddress", + "AssociateClientVpnTargetNetwork", + "AssociateDhcpOptions", + "AssociateEnclaveCertificateIamRole", + "AssociateInstanceEventWindow", + "AssociateIpamByoasn", + "AssociateIpamResourceDiscovery", + "AssociateNatGatewayAddress", + "AssociateSubnetCidrBlock", + "AssociateTransitGatewayMulticastDomain", + "AssociateTransitGatewayPolicyTable", + "AssociateTransitGatewayRouteTable", + "AssociateTrunkInterface", + "AssociateVpcCidrBlock", + "AttachClassicLinkVpc", + "AttachVerifiedAccessTrustProvider", + "AttachVpnGateway", + "AuthorizeClientVpnIngress", + "BundleInstance", + "CancelBundleTask", + "CancelCapacityReservationFleets", + "CancelConversionTask", + "CancelExportTask", + "CancelImageLaunchPermission", + "CancelImportTask", + "CancelReservedInstancesListing", + "CancelSpotFleetRequests", + "ConfirmProductInstance", + "CopyFpgaImage", + "CreateCapacityReservationFleet", + "CreateCarrierGateway", + "CreateClientVpnEndpoint", + "CreateClientVpnRoute", + "CreateCoipCidr", + "CreateCoipPool", + "CreateCustomerGateway", + "CreateDefaultSubnet", + "CreateDefaultVpc", + "CreateDhcpOptions", + "CreateFleet", + "CreateFlowLogs", + "CreateFpgaImage", + "CreateInstanceConnectEndpoint", + "CreateInstanceEventWindow", + "CreateInstanceExportTask", + "CreateIpam", + "CreateIpamExternalResourceVerificationToken", + "CreateIpamPool", + "CreateIpamResourceDiscovery", + "CreateIpamScope", + "CreateLocalGatewayRoute", + "CreateLocalGatewayRouteTable", + "CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "CreateLocalGatewayRouteTableVpcAssociation", + "CreateManagedPrefixList", + "CreateNetworkAcl", + "CreateNetworkAclEntry", + "CreateNetworkInsightsAccessScope", + "CreateNetworkInsightsPath", + "CreateNetworkInterfacePermission", + "CreatePublicIpv4Pool", + "CreateReplaceRootVolumeTask", + "CreateReservedInstancesListing", + "CreateRestoreImageTask", + "CreateSnapshots", + "CreateSpotDatafeedSubscription", + "CreateStoreImageTask", + "CreateSubnetCidrReservation", + "CreateTrafficMirrorFilter", + "CreateTrafficMirrorFilterRule", + "CreateTrafficMirrorSession", + "CreateTrafficMirrorTarget", + "CreateTransitGateway", + "CreateTransitGatewayConnect", + "CreateTransitGatewayConnectPeer", + "CreateTransitGatewayMulticastDomain", + "CreateTransitGatewayPeeringAttachment", + "CreateTransitGatewayPolicyTable", + "CreateTransitGatewayPrefixListReference", + "CreateTransitGatewayRoute", + "CreateTransitGatewayRouteTable", + "CreateTransitGatewayRouteTableAnnouncement", + "CreateTransitGatewayVpcAttachment", + "CreateVerifiedAccessEndpoint", + "CreateVerifiedAccessGroup", + "CreateVerifiedAccessInstance", + "CreateVerifiedAccessTrustProvider", + "CreateVpcEndpoint", + "CreateVpcEndpointConnectionNotification", + "CreateVpcEndpointServiceConfiguration", + "CreateVpcPeeringConnection", + "CreateVpnConnection", + "CreateVpnConnectionRoute", + "CreateVpnGateway", + "DeleteCarrierGateway", + "DeleteClientVpnEndpoint", + "DeleteClientVpnRoute", + "DeleteCoipCidr", + "DeleteCoipPool", + "DeleteCustomerGateway", + "DeleteDhcpOptions", + "DeleteFleets", + "DeleteFlowLogs", + "DeleteFpgaImage", + "DeleteInstanceConnectEndpoint", + "DeleteInstanceEventWindow", + "DeleteIpam", + "DeleteIpamExternalResourceVerificationToken", + "DeleteIpamPool", + "DeleteIpamResourceDiscovery", + "DeleteIpamScope", + "DeleteLocalGatewayRoute", + "DeleteLocalGatewayRouteTable", + "DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "DeleteLocalGatewayRouteTableVpcAssociation", + "DeleteManagedPrefixList", + "DeleteNetworkAcl", + "DeleteNetworkAclEntry", + "DeleteNetworkInsightsAccessScope", + "DeleteNetworkInsightsAccessScopeAnalysis", + "DeleteNetworkInsightsAnalysis", + "DeleteNetworkInsightsPath", + "DeleteNetworkInterfacePermission", + "DeletePublicIpv4Pool", + "DeleteQueuedReservedInstances", + "DeleteSpotDatafeedSubscription", + "DeleteSubnetCidrReservation", + "DeleteTrafficMirrorFilter", + "DeleteTrafficMirrorFilterRule", + "DeleteTrafficMirrorSession", + "DeleteTrafficMirrorTarget", + "DeleteTransitGateway", + "DeleteTransitGatewayConnect", + "DeleteTransitGatewayConnectPeer", + "DeleteTransitGatewayMulticastDomain", + "DeleteTransitGatewayPeeringAttachment", + "DeleteTransitGatewayPolicyTable", + "DeleteTransitGatewayPrefixListReference", + "DeleteTransitGatewayRoute", + "DeleteTransitGatewayRouteTable", + "DeleteTransitGatewayRouteTableAnnouncement", + "DeleteTransitGatewayVpcAttachment", + "DeleteVerifiedAccessEndpoint", + "DeleteVerifiedAccessGroup", + "DeleteVerifiedAccessInstance", + "DeleteVerifiedAccessTrustProvider", + "DeleteVpcEndpointConnectionNotifications", + "DeleteVpcEndpointServiceConfigurations", + "DeleteVpcEndpoints", + "DeleteVpcPeeringConnection", + "DeleteVpnConnection", + "DeleteVpnConnectionRoute", + "DeleteVpnGateway", + "DeprovisionByoipCidr", + "DeprovisionIpamByoasn", + "DeprovisionIpamPoolCidr", + "DeprovisionPublicIpv4PoolCidr", + "DeregisterInstanceEventNotificationAttributes", + "DeregisterTransitGatewayMulticastGroupMembers", + "DeregisterTransitGatewayMulticastGroupSources", + "DescribeAddressTransfers", + "DescribeAggregateIdFormat", + "DescribeAwsNetworkPerformanceMetricSubscriptions", + "DescribeBundleTasks", + "DescribeByoipCidrs", + "DescribeCapacityBlockOfferings", + "DescribeCapacityReservationFleets", + "DescribeCarrierGateways", + "DescribeClassicLinkInstances", + "DescribeClientVpnAuthorizationRules", + "DescribeClientVpnConnections", + "DescribeClientVpnEndpoints", + "DescribeClientVpnRoutes", + "DescribeClientVpnTargetNetworks", + "DescribeCoipPools", + "DescribeConversionTasks", + "DescribeCustomerGateways", + "DescribeDhcpOptions", + "DescribeElasticGpus", + "DescribeExportImageTasks", + "DescribeExportTasks", + "DescribeFastLaunchImages", + "DescribeFastSnapshotRestores", + "DescribeFleetHistory", + "DescribeFleetInstances", + "DescribeFleets", + "DescribeFlowLogs", + "DescribeFpgaImageAttribute", + "DescribeFpgaImages", + "DescribeHostReservationOfferings", + "DescribeHostReservations", + "DescribeHosts", + "DescribeIdFormat", + "DescribeIdentityIdFormat", + "DescribeImportImageTasks", + "DescribeImportSnapshotTasks", + "DescribeInstanceConnectEndpoints", + "DescribeInstanceEventNotificationAttributes", + "DescribeInstanceEventWindows", + "DescribeInstanceTopology", + "DescribeIpamByoasn", + "DescribeIpamExternalResourceVerificationTokens", + "DescribeIpamPools", + "DescribeIpamResourceDiscoveries", + "DescribeIpamResourceDiscoveryAssociations", + "DescribeIpamScopes", + "DescribeIpams", + "DescribeIpv6Pools", + "DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "DescribeLocalGatewayRouteTableVpcAssociations", + "DescribeLocalGatewayRouteTables", + "DescribeLocalGatewayVirtualInterfaceGroups", + "DescribeLocalGatewayVirtualInterfaces", + "DescribeLocalGateways", + "DescribeLockedSnapshots", + "DescribeMacHosts", + "DescribeManagedPrefixLists", + "DescribeMovingAddresses", + "DescribeNetworkAcls", + "DescribeNetworkInsightsAccessScopeAnalyses", + "DescribeNetworkInsightsAccessScopes", + "DescribeNetworkInsightsAnalyses", + "DescribeNetworkInsightsPaths", + "DescribeNetworkInterfaceAttribute", + "DescribeNetworkInterfacePermissions", + "DescribePrefixLists", + "DescribePrincipalIdFormat", + "DescribePublicIpv4Pools", + "DescribeReplaceRootVolumeTasks", + "DescribeReservedInstances", + "DescribeReservedInstancesListings", + "DescribeReservedInstancesModifications", + "DescribeReservedInstancesOfferings", + "DescribeScheduledInstanceAvailability", + "DescribeScheduledInstances", + "DescribeSecurityGroupReferences", + "DescribeSnapshotAttribute", + "DescribeSnapshotTierStatus", + "DescribeSpotDatafeedSubscription", + "DescribeSpotFleetInstances", + "DescribeSpotFleetRequestHistory", + "DescribeSpotFleetRequests", + "DescribeSpotPriceHistory", + "DescribeStaleSecurityGroups", + "DescribeStoreImageTasks", + "DescribeTrafficMirrorFilterRules", + "DescribeTrafficMirrorFilters", + "DescribeTrafficMirrorSessions", + "DescribeTrafficMirrorTargets", + "DescribeTransitGatewayAttachments", + "DescribeTransitGatewayConnectPeers", + "DescribeTransitGatewayConnects", + "DescribeTransitGatewayMulticastDomains", + "DescribeTransitGatewayPeeringAttachments", + "DescribeTransitGatewayPolicyTables", + "DescribeTransitGatewayRouteTableAnnouncements", + "DescribeTransitGatewayRouteTables", + "DescribeTransitGatewayVpcAttachments", + "DescribeTransitGateways", + "DescribeTrunkInterfaceAssociations", + "DescribeVerifiedAccessEndpoints", + "DescribeVerifiedAccessGroups", + "DescribeVerifiedAccessInstanceLoggingConfigurations", + "DescribeVerifiedAccessInstances", + "DescribeVerifiedAccessTrustProviders", + "DescribeVolumeAttribute", + "DescribeVpcClassicLink", + "DescribeVpcClassicLinkDnsSupport", + "DescribeVpcEndpointConnectionNotifications", + "DescribeVpcEndpointConnections", + "DescribeVpcEndpointServiceConfigurations", + "DescribeVpcEndpointServicePermissions", + "DescribeVpcEndpointServices", + "DescribeVpcEndpoints", + "DescribeVpcPeeringConnections", + "DescribeVpnConnections", + "DescribeVpnGateways", + "DetachClassicLinkVpc", + "DetachVerifiedAccessTrustProvider", + "DetachVpnGateway", + "DisableAddressTransfer", + "DisableAwsNetworkPerformanceMetricSubscription", + "DisableFastLaunch", + "DisableFastSnapshotRestores", + "DisableImage", + "DisableImageBlockPublicAccess", + "DisableImageDeprecation", + "DisableImageDeregistrationProtection", + "DisableIpamOrganizationAdminAccount", + "DisableSnapshotBlockPublicAccess", + "DisableTransitGatewayRouteTablePropagation", + "DisableVgwRoutePropagation", + "DisableVpcClassicLink", + "DisableVpcClassicLinkDnsSupport", + "DisassociateClientVpnTargetNetwork", + "DisassociateEnclaveCertificateIamRole", + "DisassociateInstanceEventWindow", + "DisassociateIpamByoasn", + "DisassociateIpamResourceDiscovery", + "DisassociateNatGatewayAddress", + "DisassociateSubnetCidrBlock", + "DisassociateTransitGatewayMulticastDomain", + "DisassociateTransitGatewayPolicyTable", + "DisassociateTransitGatewayRouteTable", + "DisassociateTrunkInterface", + "DisassociateVpcCidrBlock", + "EnableAddressTransfer", + "EnableAwsNetworkPerformanceMetricSubscription", + "EnableFastLaunch", + "EnableFastSnapshotRestores", + "EnableImage", + "EnableImageBlockPublicAccess", + "EnableImageDeprecation", + "EnableImageDeregistrationProtection", + "EnableIpamOrganizationAdminAccount", + "EnableReachabilityAnalyzerOrganizationSharing", + "EnableSnapshotBlockPublicAccess", + "EnableTransitGatewayRouteTablePropagation", + "EnableVgwRoutePropagation", + "EnableVolumeIO", + "EnableVpcClassicLink", + "EnableVpcClassicLinkDnsSupport", + "ExportClientVpnClientCertificateRevocationList", + "ExportClientVpnClientConfiguration", + "ExportImage", + "ExportTransitGatewayRoutes", + "GetAssociatedEnclaveCertificateIamRoles", + "GetAssociatedIpv6PoolCidrs", + "GetAwsNetworkPerformanceData", + "GetCapacityReservationUsage", + "GetCoipPoolUsage", + "GetConsoleScreenshot", + "GetDefaultCreditSpecification", + "GetEbsDefaultKmsKeyId", + "GetFlowLogsIntegrationTemplate", + "GetGroupsForCapacityReservation", + "GetHostReservationPurchasePreview", + "GetImageBlockPublicAccessState", + "GetInstanceMetadataDefaults", + "GetInstanceTpmEkPub", + "GetInstanceTypesFromInstanceRequirements", + "GetInstanceUefiData", + "GetIpamAddressHistory", + "GetIpamDiscoveredAccounts", + "GetIpamDiscoveredPublicAddresses", + "GetIpamDiscoveredResourceCidrs", + "GetIpamPoolAllocations", + "GetIpamPoolCidrs", + "GetIpamResourceCidrs", + "GetLaunchTemplateData", + "GetManagedPrefixListAssociations", + "GetManagedPrefixListEntries", + "GetNetworkInsightsAccessScopeAnalysisFindings", + "GetNetworkInsightsAccessScopeContent", + "GetReservedInstancesExchangeQuote", + "GetSnapshotBlockPublicAccessState", + "GetSpotPlacementScores", + "GetSubnetCidrReservations", + "GetTransitGatewayAttachmentPropagations", + "GetTransitGatewayMulticastDomainAssociations", + "GetTransitGatewayPolicyTableAssociations", + "GetTransitGatewayPolicyTableEntries", + "GetTransitGatewayPrefixListReferences", + "GetTransitGatewayRouteTableAssociations", + "GetTransitGatewayRouteTablePropagations", + "GetVerifiedAccessEndpointPolicy", + "GetVerifiedAccessGroupPolicy", + "GetVpnConnectionDeviceSampleConfiguration", + "GetVpnConnectionDeviceTypes", + "GetVpnTunnelReplacementStatus", + "ImportClientVpnClientCertificateRevocationList", + "ImportImage", + "ImportInstance", + "ImportSnapshot", + "ImportVolume", + "ListImagesInRecycleBin", + "ListSnapshotsInRecycleBin", + "LockSnapshot", + "ModifyAddressAttribute", + "ModifyAvailabilityZoneGroup", + "ModifyCapacityReservation", + "ModifyCapacityReservationFleet", + "ModifyClientVpnEndpoint", + "ModifyDefaultCreditSpecification", + "ModifyEbsDefaultKmsKeyId", + "ModifyFleet", + "ModifyFpgaImageAttribute", + "ModifyHosts", + "ModifyIdFormat", + "ModifyIdentityIdFormat", + "ModifyInstanceCapacityReservationAttributes", + "ModifyInstanceCreditSpecification", + "ModifyInstanceEventStartTime", + "ModifyInstanceEventWindow", + "ModifyInstanceMaintenanceOptions", + "ModifyInstanceMetadataDefaults", + "ModifyInstancePlacement", + "ModifyIpam", + "ModifyIpamPool", + "ModifyIpamResourceCidr", + "ModifyIpamResourceDiscovery", + "ModifyIpamScope", + "ModifyLocalGatewayRoute", + "ModifyManagedPrefixList", + "ModifyPrivateDnsNameOptions", + "ModifyReservedInstances", + "ModifySecurityGroupRules", + "ModifySnapshotAttribute", + "ModifySnapshotTier", + "ModifySpotFleetRequest", + "ModifyTrafficMirrorFilterNetworkServices", + "ModifyTrafficMirrorFilterRule", + "ModifyTrafficMirrorSession", + "ModifyTransitGateway", + "ModifyTransitGatewayPrefixListReference", + "ModifyTransitGatewayVpcAttachment", + "ModifyVerifiedAccessEndpoint", + "ModifyVerifiedAccessEndpointPolicy", + "ModifyVerifiedAccessGroup", + "ModifyVerifiedAccessGroupPolicy", + "ModifyVerifiedAccessInstance", + "ModifyVerifiedAccessInstanceLoggingConfiguration", + "ModifyVerifiedAccessTrustProvider", + "ModifyVolumeAttribute", + "ModifyVpcEndpoint", + "ModifyVpcEndpointConnectionNotification", + "ModifyVpcEndpointServiceConfiguration", + "ModifyVpcEndpointServicePayerResponsibility", + "ModifyVpcEndpointServicePermissions", + "ModifyVpcPeeringConnectionOptions", + "ModifyVpcTenancy", + "ModifyVpnConnection", + "ModifyVpnConnectionOptions", + "ModifyVpnTunnelCertificate", + "ModifyVpnTunnelOptions", + "MoveAddressToVpc", + "MoveByoipCidrToIpam", + "ProvisionByoipCidr", + "ProvisionIpamByoasn", + "ProvisionIpamPoolCidr", + "ProvisionPublicIpv4PoolCidr", + "PurchaseCapacityBlock", + "PurchaseHostReservation", + "PurchaseReservedInstancesOffering", + "PurchaseScheduledInstances", + "RegisterInstanceEventNotificationAttributes", + "RegisterTransitGatewayMulticastGroupMembers", + "RegisterTransitGatewayMulticastGroupSources", + "RejectTransitGatewayMulticastDomainAssociations", + "RejectTransitGatewayPeeringAttachment", + "RejectTransitGatewayVpcAttachment", + "RejectVpcEndpointConnections", + "RejectVpcPeeringConnection", + "ReleaseHosts", + "ReleaseIpamPoolAllocation", + "ReplaceNetworkAclAssociation", + "ReplaceNetworkAclEntry", + "ReplaceTransitGatewayRoute", + "ReplaceVpnTunnel", + "ReportInstanceStatus", + "RequestSpotFleet", + "ResetAddressAttribute", + "ResetEbsDefaultKmsKeyId", + "ResetFpgaImageAttribute", + "ResetInstanceAttribute", + "ResetNetworkInterfaceAttribute", + "ResetSnapshotAttribute", + "RestoreAddressToClassic", + "RestoreImageFromRecycleBin", + "RestoreManagedPrefixListVersion", + "RestoreSnapshotFromRecycleBin", + "RestoreSnapshotTier", + "RevokeClientVpnIngress", + "RunScheduledInstances", + "SearchLocalGatewayRoutes", + "SearchTransitGatewayMulticastGroups", + "SearchTransitGatewayRoutes", + "SendDiagnosticInterrupt", + "StartNetworkInsightsAccessScopeAnalysis", + "StartNetworkInsightsAnalysis", + "StartVpcEndpointServicePrivateDnsVerification", + "TerminateClientVpnConnections", + "UnassignIpv6Addresses", + "UnassignPrivateIpAddresses", + "UnassignPrivateNatGatewayAddress", + "UnlockSnapshot", + "WithdrawByoipCidr" + ], + "extra": [] + } + }, + { + "service": "ecr", + "api_version": "2015-09-21", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "BatchCheckLayerAvailability", + "BatchDeleteImage", + "BatchGetImage", + "BatchGetRepositoryScanningConfiguration", + "CompleteLayerUpload", + "CreatePullThroughCacheRule", + "CreateRepository", + "CreateRepositoryCreationTemplate", + "DeleteLifecyclePolicy", + "DeletePullThroughCacheRule", + "DeleteRegistryPolicy", + "DeleteRepository", + "DeleteRepositoryCreationTemplate", + "DeleteRepositoryPolicy", + "DescribeImageReplicationStatus", + "DescribeImageScanFindings", + "DescribeImages", + "DescribePullThroughCacheRules", + "DescribeRegistry", + "DescribeRepositories", + "DescribeRepositoryCreationTemplates", + "GetAuthorizationToken", + "GetDownloadUrlForLayer", + "GetLifecyclePolicy", + "GetLifecyclePolicyPreview", + "GetRegistryPolicy", + "GetRegistryScanningConfiguration", + "GetRepositoryPolicy", + "InitiateLayerUpload", + "ListImages", + "ListTagsForResource", + "PutImage", + "PutImageScanningConfiguration", + "PutImageTagMutability", + "PutLifecyclePolicy", + "PutRegistryPolicy", + "PutRegistryScanningConfiguration", + "PutReplicationConfiguration", + "SetRepositoryPolicy", + "StartImageScan", + "StartLifecyclePolicyPreview", + "TagResource", + "UntagResource", + "UpdatePullThroughCacheRule", + "UpdateRepositoryCreationTemplate", + "UploadLayerPart", + "ValidatePullThroughCacheRule" + ], + "registered": [ + "BatchCheckLayerAvailability", + "BatchDeleteImage", + "BatchGetImage", + "BatchGetRepositoryScanningConfiguration", + "CompleteLayerUpload", + "CreateRepository", + "DeleteLifecyclePolicy", + "DeleteRepository", + "DeleteRepositoryPolicy", + "DescribeImageScanFindings", + "DescribeImages", + "DescribeRegistry", + "DescribeRepositories", + "GetAuthorizationToken", + "GetDownloadUrlForLayer", + "GetImageScanningConfiguration", + "GetLifecyclePolicy", + "GetLifecyclePolicyPreview", + "GetRegistryPolicy", + "GetRegistryScanningConfiguration", + "GetRepositoryPolicy", + "InitiateLayerUpload", + "ListImages", + "ListRepositories", + "ListTagsForResource", + "PutImage", + "PutImageScanningConfiguration", + "PutImageTagMutability", + "PutLifecyclePolicy", + "PutRegistryPolicy", + "PutRegistryScanningConfiguration", + "PutReplicationConfiguration", + "ReplicateImage", + "SetRepositoryPolicy", + "StartImageScan", + "StartLifecyclePolicyPreview", + "TagResource", + "UntagResource", + "UploadLayerPart" + ], + "implemented": [ + "BatchDeleteImage", + "BatchGetImage", + "CreateRepository", + "DeleteLifecyclePolicy", + "DeleteRepository", + "DeleteRepositoryPolicy", + "DescribeImages", + "DescribeRepositories", + "GetAuthorizationToken", + "GetLifecyclePolicy", + "GetLifecyclePolicyPreview", + "GetRepositoryPolicy", + "ListImages", + "ListTagsForResource", + "PutImage", + "PutImageScanningConfiguration", + "PutImageTagMutability", + "PutLifecyclePolicy", + "SetRepositoryPolicy", + "StartLifecyclePolicyPreview", + "TagResource", + "UntagResource" + ], + "stubbed": [ + "BatchCheckLayerAvailability", + "CompleteLayerUpload", + "DescribeRegistry", + "GetDownloadUrlForLayer", + "GetRegistryPolicy", + "InitiateLayerUpload", + "ListRepositories", + "PutRegistryPolicy", + "PutReplicationConfiguration", + "ReplicateImage", + "UploadLayerPart" + ], + "unsupported": [ + "BatchGetRepositoryScanningConfiguration", + "DescribeImageScanFindings", + "GetImageScanningConfiguration", + "GetRegistryScanningConfiguration", + "PutRegistryScanningConfiguration", + "StartImageScan" + ], + "missing": [ + "CreatePullThroughCacheRule", + "CreateRepositoryCreationTemplate", + "DeletePullThroughCacheRule", + "DeleteRegistryPolicy", + "DeleteRepositoryCreationTemplate", + "DescribeImageReplicationStatus", + "DescribePullThroughCacheRules", + "DescribeRepositoryCreationTemplates", + "UpdatePullThroughCacheRule", + "UpdateRepositoryCreationTemplate", + "ValidatePullThroughCacheRule" + ], + "extra": [ + "GetImageScanningConfiguration", + "ListRepositories", + "ReplicateImage" + ] + } + }, + { + "service": "ecs", + "api_version": "2014-11-13", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "CreateCapacityProvider", + "CreateCluster", + "CreateService", + "CreateTaskSet", + "DeleteAccountSetting", + "DeleteAttributes", + "DeleteCapacityProvider", + "DeleteCluster", + "DeleteService", + "DeleteTaskDefinitions", + "DeleteTaskSet", + "DeregisterContainerInstance", + "DeregisterTaskDefinition", + "DescribeCapacityProviders", + "DescribeClusters", + "DescribeContainerInstances", + "DescribeServices", + "DescribeTaskDefinition", + "DescribeTaskSets", + "DescribeTasks", + "DiscoverPollEndpoint", + "ExecuteCommand", + "GetTaskProtection", + "ListAccountSettings", + "ListAttributes", + "ListClusters", + "ListContainerInstances", + "ListServices", + "ListServicesByNamespace", + "ListTagsForResource", + "ListTaskDefinitionFamilies", + "ListTaskDefinitions", + "ListTasks", + "PutAccountSetting", + "PutAccountSettingDefault", + "PutAttributes", + "PutClusterCapacityProviders", + "RegisterContainerInstance", + "RegisterTaskDefinition", + "RunTask", + "StartTask", + "StopTask", + "SubmitAttachmentStateChanges", + "SubmitContainerStateChange", + "SubmitTaskStateChange", + "TagResource", + "UntagResource", + "UpdateCapacityProvider", + "UpdateCluster", + "UpdateClusterSettings", + "UpdateContainerAgent", + "UpdateContainerInstancesState", + "UpdateService", + "UpdateServicePrimaryTaskSet", + "UpdateTaskProtection", + "UpdateTaskSet" + ], + "registered": [ + "CreateCapacityProvider", + "CreateCluster", + "CreateService", + "DeleteCapacityProvider", + "DeleteCluster", + "DeleteService", + "DeregisterContainerInstance", + "DeregisterTaskDefinition", + "DescribeCapacityProviders", + "DescribeClusters", + "DescribeContainerInstances", + "DescribeServices", + "DescribeTaskDefinition", + "DescribeTasks", + "ListAccountSettings", + "ListClusters", + "ListContainerInstances", + "ListServices", + "ListServicesByNamespace", + "ListTagsForResource", + "ListTaskDefinitionFamilies", + "ListTaskDefinitions", + "ListTasks", + "PollAssignments", + "ProvisionCapacity", + "PutAccountSetting", + "PutClusterCapacityProviders", + "RegisterContainerInstance", + "RegisterTaskDefinition", + "ReportTaskGPU", + "RunTask", + "StartTask", + "StopTask", + "SubmitTaskStateChange", + "TagResource", + "UntagResource", + "UpdateCluster", + "UpdateContainerInstancesState", + "UpdateService" + ], + "implemented": [ + "CreateCapacityProvider", + "CreateCluster", + "CreateService", + "DeleteCapacityProvider", + "DeleteCluster", + "DeleteService", + "DeregisterContainerInstance", + "DeregisterTaskDefinition", + "DescribeCapacityProviders", + "DescribeClusters", + "DescribeContainerInstances", + "DescribeServices", + "DescribeTaskDefinition", + "DescribeTasks", + "ListClusters", + "ListContainerInstances", + "ListServices", + "ListTagsForResource", + "ListTaskDefinitions", + "ListTasks", + "PutClusterCapacityProviders", + "RegisterContainerInstance", + "RegisterTaskDefinition", + "RunTask", + "StartTask", + "StopTask", + "SubmitTaskStateChange", + "TagResource", + "UntagResource", + "UpdateContainerInstancesState", + "UpdateService" + ], + "stubbed": [ + "ListAccountSettings", + "ListServicesByNamespace", + "ListTaskDefinitionFamilies", + "PutAccountSetting", + "UpdateCluster" + ], + "unsupported": [], + "missing": [ + "CreateTaskSet", + "DeleteAccountSetting", + "DeleteAttributes", + "DeleteTaskDefinitions", + "DeleteTaskSet", + "DescribeTaskSets", + "DiscoverPollEndpoint", + "ExecuteCommand", + "GetTaskProtection", + "ListAttributes", + "PutAccountSettingDefault", + "PutAttributes", + "SubmitAttachmentStateChanges", + "SubmitContainerStateChange", + "UpdateCapacityProvider", + "UpdateClusterSettings", + "UpdateContainerAgent", + "UpdateServicePrimaryTaskSet", + "UpdateTaskProtection", + "UpdateTaskSet" + ], + "extra": [ + "PollAssignments", + "ProvisionCapacity", + "ReportTaskGPU" + ] + } + }, + { + "service": "eks", + "api_version": "2017-11-01", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AssociateAccessPolicy", + "AssociateEncryptionConfig", + "AssociateIdentityProviderConfig", + "CreateAccessEntry", + "CreateAddon", + "CreateCluster", + "CreateEksAnywhereSubscription", + "CreateFargateProfile", + "CreateNodegroup", + "CreatePodIdentityAssociation", + "DeleteAccessEntry", + "DeleteAddon", + "DeleteCluster", + "DeleteEksAnywhereSubscription", + "DeleteFargateProfile", + "DeleteNodegroup", + "DeletePodIdentityAssociation", + "DeregisterCluster", + "DescribeAccessEntry", + "DescribeAddon", + "DescribeAddonConfiguration", + "DescribeAddonVersions", + "DescribeCluster", + "DescribeEksAnywhereSubscription", + "DescribeFargateProfile", + "DescribeIdentityProviderConfig", + "DescribeInsight", + "DescribeNodegroup", + "DescribePodIdentityAssociation", + "DescribeUpdate", + "DisassociateAccessPolicy", + "DisassociateIdentityProviderConfig", + "ListAccessEntries", + "ListAccessPolicies", + "ListAddons", + "ListAssociatedAccessPolicies", + "ListClusters", + "ListEksAnywhereSubscriptions", + "ListFargateProfiles", + "ListIdentityProviderConfigs", + "ListInsights", + "ListNodegroups", + "ListPodIdentityAssociations", + "ListTagsForResource", + "ListUpdates", + "RegisterCluster", + "TagResource", + "UntagResource", + "UpdateAccessEntry", + "UpdateAddon", + "UpdateClusterConfig", + "UpdateClusterVersion", + "UpdateEksAnywhereSubscription", + "UpdateNodegroupConfig", + "UpdateNodegroupVersion", + "UpdatePodIdentityAssociation" + ], + "registered": [ + "AssociateAccessPolicy", + "AssociateIdentityProviderConfig", + "CreateAccessEntry", + "CreateAddon", + "CreateCluster", + "CreateNodegroup", + "DeleteAccessEntry", + "DeleteAddon", + "DeleteCluster", + "DeleteNodegroup", + "DescribeAccessEntry", + "DescribeAddon", + "DescribeAddonVersions", + "DescribeCluster", + "DescribeIdentityProviderConfig", + "DescribeNodegroup", + "DisassociateAccessPolicy", + "DisassociateIdentityProviderConfig", + "GetRecoveryDirective", + "ListAccessEntries", + "ListAccessPolicies", + "ListAddons", + "ListAssociatedAccessPolicies", + "ListClusters", + "ListIdentityProviderConfigs", + "ListInternalAddons", + "ListNodegroups", + "ListTagsForResource", + "PublishInternal", + "TagResource", + "UntagResource", + "UpdateAccessEntry", + "UpdateAddon", + "UpdateClusterConfig", + "UpdateClusterVersion", + "UpdateNodegroupConfig", + "UpdateNodegroupVersion", + "WebhookTokenReview" + ], + "implemented": [ + "AssociateAccessPolicy", + "AssociateIdentityProviderConfig", + "CreateAccessEntry", + "CreateAddon", + "CreateCluster", + "CreateNodegroup", + "DeleteAccessEntry", + "DeleteAddon", + "DeleteCluster", + "DeleteNodegroup", + "DescribeAccessEntry", + "DescribeAddon", + "DescribeAddonVersions", + "DescribeCluster", + "DescribeIdentityProviderConfig", + "DescribeNodegroup", + "DisassociateAccessPolicy", + "DisassociateIdentityProviderConfig", + "ListAccessEntries", + "ListAccessPolicies", + "ListAddons", + "ListAssociatedAccessPolicies", + "ListClusters", + "ListIdentityProviderConfigs", + "ListNodegroups", + "ListTagsForResource", + "TagResource", + "UntagResource", + "UpdateAccessEntry", + "UpdateAddon", + "UpdateClusterConfig", + "UpdateClusterVersion", + "UpdateNodegroupConfig", + "UpdateNodegroupVersion" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "AssociateEncryptionConfig", + "CreateEksAnywhereSubscription", + "CreateFargateProfile", + "CreatePodIdentityAssociation", + "DeleteEksAnywhereSubscription", + "DeleteFargateProfile", + "DeletePodIdentityAssociation", + "DeregisterCluster", + "DescribeAddonConfiguration", + "DescribeEksAnywhereSubscription", + "DescribeFargateProfile", + "DescribeInsight", + "DescribePodIdentityAssociation", + "DescribeUpdate", + "ListEksAnywhereSubscriptions", + "ListFargateProfiles", + "ListInsights", + "ListPodIdentityAssociations", + "ListUpdates", + "RegisterCluster", + "UpdateEksAnywhereSubscription", + "UpdatePodIdentityAssociation" + ], + "extra": [ + "GetRecoveryDirective", + "ListInternalAddons", + "PublishInternal", + "WebhookTokenReview" + ] + } + }, + { + "service": "elasticloadbalancingv2", + "api_version": "2015-12-01", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AddListenerCertificates", + "AddTags", + "AddTrustStoreRevocations", + "CreateListener", + "CreateLoadBalancer", + "CreateRule", + "CreateTargetGroup", + "CreateTrustStore", + "DeleteListener", + "DeleteLoadBalancer", + "DeleteRule", + "DeleteSharedTrustStoreAssociation", + "DeleteTargetGroup", + "DeleteTrustStore", + "DeregisterTargets", + "DescribeAccountLimits", + "DescribeListenerCertificates", + "DescribeListeners", + "DescribeLoadBalancerAttributes", + "DescribeLoadBalancers", + "DescribeRules", + "DescribeSSLPolicies", + "DescribeTags", + "DescribeTargetGroupAttributes", + "DescribeTargetGroups", + "DescribeTargetHealth", + "DescribeTrustStoreAssociations", + "DescribeTrustStoreRevocations", + "DescribeTrustStores", + "GetResourcePolicy", + "GetTrustStoreCaCertificatesBundle", + "GetTrustStoreRevocationContent", + "ModifyListener", + "ModifyLoadBalancerAttributes", + "ModifyRule", + "ModifyTargetGroup", + "ModifyTargetGroupAttributes", + "ModifyTrustStore", + "RegisterTargets", + "RemoveListenerCertificates", + "RemoveTags", + "RemoveTrustStoreRevocations", + "SetIpAddressType", + "SetRulePriorities", + "SetSecurityGroups", + "SetSubnets" + ], + "registered": [ + "AddListenerCertificates", + "AddTags", + "CreateListener", + "CreateLoadBalancer", + "CreateRule", + "CreateTargetGroup", + "DeleteListener", + "DeleteLoadBalancer", + "DeleteRule", + "DeleteTargetGroup", + "DeregisterTargets", + "DescribeAccountLimits", + "DescribeListenerAttributes", + "DescribeListenerCertificates", + "DescribeListeners", + "DescribeLoadBalancerAttributes", + "DescribeLoadBalancers", + "DescribeRules", + "DescribeSSLPolicies", + "DescribeTags", + "DescribeTargetGroupAttributes", + "DescribeTargetGroups", + "DescribeTargetHealth", + "GetLBConfig", + "LBAgentHeartbeat", + "ModifyListener", + "ModifyListenerAttributes", + "ModifyLoadBalancerAttributes", + "ModifyRule", + "ModifyTargetGroup", + "ModifyTargetGroupAttributes", + "RegisterTargets", + "RemoveListenerCertificates", + "RemoveTags", + "SetIpAddressType", + "SetRulePriorities", + "SetSecurityGroups", + "SetSubnets" + ], + "implemented": [ + "AddListenerCertificates", + "AddTags", + "CreateListener", + "CreateLoadBalancer", + "CreateRule", + "CreateTargetGroup", + "DeleteListener", + "DeleteLoadBalancer", + "DeleteRule", + "DeleteTargetGroup", + "DeregisterTargets", + "DescribeAccountLimits", + "DescribeListenerCertificates", + "DescribeListeners", + "DescribeLoadBalancerAttributes", + "DescribeLoadBalancers", + "DescribeRules", + "DescribeSSLPolicies", + "DescribeTags", + "DescribeTargetGroupAttributes", + "DescribeTargetGroups", + "DescribeTargetHealth", + "ModifyListener", + "ModifyLoadBalancerAttributes", + "ModifyRule", + "ModifyTargetGroup", + "ModifyTargetGroupAttributes", + "RegisterTargets", + "RemoveListenerCertificates", + "RemoveTags", + "SetIpAddressType", + "SetRulePriorities", + "SetSecurityGroups", + "SetSubnets" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "AddTrustStoreRevocations", + "CreateTrustStore", + "DeleteSharedTrustStoreAssociation", + "DeleteTrustStore", + "DescribeTrustStoreAssociations", + "DescribeTrustStoreRevocations", + "DescribeTrustStores", + "GetResourcePolicy", + "GetTrustStoreCaCertificatesBundle", + "GetTrustStoreRevocationContent", + "ModifyTrustStore", + "RemoveTrustStoreRevocations" + ], + "extra": [ + "DescribeListenerAttributes", + "GetLBConfig", + "LBAgentHeartbeat", + "ModifyListenerAttributes" + ] + } + }, + { + "service": "iam", + "api_version": "2010-05-08", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AddClientIDToOpenIDConnectProvider", + "AddRoleToInstanceProfile", + "AddUserToGroup", + "AttachGroupPolicy", + "AttachRolePolicy", + "AttachUserPolicy", + "ChangePassword", + "CreateAccessKey", + "CreateAccountAlias", + "CreateGroup", + "CreateInstanceProfile", + "CreateLoginProfile", + "CreateOpenIDConnectProvider", + "CreatePolicy", + "CreatePolicyVersion", + "CreateRole", + "CreateSAMLProvider", + "CreateServiceLinkedRole", + "CreateServiceSpecificCredential", + "CreateUser", + "CreateVirtualMFADevice", + "DeactivateMFADevice", + "DeleteAccessKey", + "DeleteAccountAlias", + "DeleteAccountPasswordPolicy", + "DeleteGroup", + "DeleteGroupPolicy", + "DeleteInstanceProfile", + "DeleteLoginProfile", + "DeleteOpenIDConnectProvider", + "DeletePolicy", + "DeletePolicyVersion", + "DeleteRole", + "DeleteRolePermissionsBoundary", + "DeleteRolePolicy", + "DeleteSAMLProvider", + "DeleteSSHPublicKey", + "DeleteServerCertificate", + "DeleteServiceLinkedRole", + "DeleteServiceSpecificCredential", + "DeleteSigningCertificate", + "DeleteUser", + "DeleteUserPermissionsBoundary", + "DeleteUserPolicy", + "DeleteVirtualMFADevice", + "DetachGroupPolicy", + "DetachRolePolicy", + "DetachUserPolicy", + "EnableMFADevice", + "GenerateCredentialReport", + "GenerateOrganizationsAccessReport", + "GenerateServiceLastAccessedDetails", + "GetAccessKeyLastUsed", + "GetAccountAuthorizationDetails", + "GetAccountPasswordPolicy", + "GetAccountSummary", + "GetContextKeysForCustomPolicy", + "GetContextKeysForPrincipalPolicy", + "GetCredentialReport", + "GetGroup", + "GetGroupPolicy", + "GetInstanceProfile", + "GetLoginProfile", + "GetMFADevice", + "GetOpenIDConnectProvider", + "GetOrganizationsAccessReport", + "GetPolicy", + "GetPolicyVersion", + "GetRole", + "GetRolePolicy", + "GetSAMLProvider", + "GetSSHPublicKey", + "GetServerCertificate", + "GetServiceLastAccessedDetails", + "GetServiceLastAccessedDetailsWithEntities", + "GetServiceLinkedRoleDeletionStatus", + "GetUser", + "GetUserPolicy", + "ListAccessKeys", + "ListAccountAliases", + "ListAttachedGroupPolicies", + "ListAttachedRolePolicies", + "ListAttachedUserPolicies", + "ListEntitiesForPolicy", + "ListGroupPolicies", + "ListGroups", + "ListGroupsForUser", + "ListInstanceProfileTags", + "ListInstanceProfiles", + "ListInstanceProfilesForRole", + "ListMFADeviceTags", + "ListMFADevices", + "ListOpenIDConnectProviderTags", + "ListOpenIDConnectProviders", + "ListPolicies", + "ListPoliciesGrantingServiceAccess", + "ListPolicyTags", + "ListPolicyVersions", + "ListRolePolicies", + "ListRoleTags", + "ListRoles", + "ListSAMLProviderTags", + "ListSAMLProviders", + "ListSSHPublicKeys", + "ListServerCertificateTags", + "ListServerCertificates", + "ListServiceSpecificCredentials", + "ListSigningCertificates", + "ListUserPolicies", + "ListUserTags", + "ListUsers", + "ListVirtualMFADevices", + "PutGroupPolicy", + "PutRolePermissionsBoundary", + "PutRolePolicy", + "PutUserPermissionsBoundary", + "PutUserPolicy", + "RemoveClientIDFromOpenIDConnectProvider", + "RemoveRoleFromInstanceProfile", + "RemoveUserFromGroup", + "ResetServiceSpecificCredential", + "ResyncMFADevice", + "SetDefaultPolicyVersion", + "SetSecurityTokenServicePreferences", + "SimulateCustomPolicy", + "SimulatePrincipalPolicy", + "TagInstanceProfile", + "TagMFADevice", + "TagOpenIDConnectProvider", + "TagPolicy", + "TagRole", + "TagSAMLProvider", + "TagServerCertificate", + "TagUser", + "UntagInstanceProfile", + "UntagMFADevice", + "UntagOpenIDConnectProvider", + "UntagPolicy", + "UntagRole", + "UntagSAMLProvider", + "UntagServerCertificate", + "UntagUser", + "UpdateAccessKey", + "UpdateAccountPasswordPolicy", + "UpdateAssumeRolePolicy", + "UpdateGroup", + "UpdateLoginProfile", + "UpdateOpenIDConnectProviderThumbprint", + "UpdateRole", + "UpdateRoleDescription", + "UpdateSAMLProvider", + "UpdateSSHPublicKey", + "UpdateServerCertificate", + "UpdateServiceSpecificCredential", + "UpdateSigningCertificate", + "UpdateUser", + "UploadSSHPublicKey", + "UploadServerCertificate", + "UploadSigningCertificate" + ], + "registered": [ + "AddRoleToInstanceProfile", + "AddUserToGroup", + "AttachGroupPolicy", + "AttachRolePolicy", + "AttachUserPolicy", + "CreateAccessKey", + "CreateGroup", + "CreateInstanceProfile", + "CreateOpenIDConnectProvider", + "CreatePolicy", + "CreateRole", + "CreateUser", + "DeleteAccessKey", + "DeleteGroup", + "DeleteGroupPolicy", + "DeleteInstanceProfile", + "DeleteOpenIDConnectProvider", + "DeletePolicy", + "DeleteRole", + "DeleteRolePolicy", + "DeleteUser", + "DeleteUserPolicy", + "DetachGroupPolicy", + "DetachRolePolicy", + "DetachUserPolicy", + "GetAccountSummary", + "GetGroup", + "GetGroupPolicy", + "GetInstanceProfile", + "GetOpenIDConnectProvider", + "GetPolicy", + "GetPolicyVersion", + "GetRole", + "GetRolePolicy", + "GetUser", + "GetUserPolicy", + "ListAccessKeys", + "ListAttachedGroupPolicies", + "ListAttachedRolePolicies", + "ListAttachedUserPolicies", + "ListEntitiesForPolicy", + "ListGroupPolicies", + "ListGroups", + "ListGroupsForUser", + "ListInstanceProfileTags", + "ListInstanceProfiles", + "ListInstanceProfilesForRole", + "ListOpenIDConnectProviderTags", + "ListOpenIDConnectProviders", + "ListPolicies", + "ListPolicyTags", + "ListPolicyVersions", + "ListRolePolicies", + "ListRoleTags", + "ListRoles", + "ListUserPolicies", + "ListUserTags", + "ListUsers", + "PutGroupPolicy", + "PutRolePolicy", + "PutUserPolicy", + "RemoveRoleFromInstanceProfile", + "RemoveUserFromGroup", + "TagInstanceProfile", + "TagOpenIDConnectProvider", + "TagPolicy", + "TagRole", + "TagUser", + "UntagInstanceProfile", + "UntagOpenIDConnectProvider", + "UntagPolicy", + "UntagRole", + "UntagUser", + "UpdateAccessKey", + "UpdateAssumeRolePolicy", + "UpdateRole" + ], + "implemented": [ + "AddRoleToInstanceProfile", + "AddUserToGroup", + "AttachGroupPolicy", + "AttachRolePolicy", + "AttachUserPolicy", + "CreateAccessKey", + "CreateGroup", + "CreateInstanceProfile", + "CreateOpenIDConnectProvider", + "CreatePolicy", + "CreateRole", + "CreateUser", + "DeleteAccessKey", + "DeleteGroup", + "DeleteGroupPolicy", + "DeleteInstanceProfile", + "DeleteOpenIDConnectProvider", + "DeletePolicy", + "DeleteRole", + "DeleteRolePolicy", + "DeleteUser", + "DeleteUserPolicy", + "DetachGroupPolicy", + "DetachRolePolicy", + "DetachUserPolicy", + "GetAccountSummary", + "GetGroup", + "GetGroupPolicy", + "GetInstanceProfile", + "GetOpenIDConnectProvider", + "GetPolicy", + "GetPolicyVersion", + "GetRole", + "GetRolePolicy", + "GetUser", + "GetUserPolicy", + "ListAccessKeys", + "ListAttachedGroupPolicies", + "ListAttachedRolePolicies", + "ListAttachedUserPolicies", + "ListEntitiesForPolicy", + "ListGroupPolicies", + "ListGroups", + "ListGroupsForUser", + "ListInstanceProfileTags", + "ListInstanceProfiles", + "ListInstanceProfilesForRole", + "ListOpenIDConnectProviderTags", + "ListOpenIDConnectProviders", + "ListPolicies", + "ListPolicyTags", + "ListPolicyVersions", + "ListRolePolicies", + "ListRoleTags", + "ListRoles", + "ListUserPolicies", + "ListUserTags", + "ListUsers", + "PutGroupPolicy", + "PutRolePolicy", + "PutUserPolicy", + "RemoveRoleFromInstanceProfile", + "RemoveUserFromGroup", + "TagInstanceProfile", + "TagOpenIDConnectProvider", + "TagPolicy", + "TagRole", + "TagUser", + "UntagInstanceProfile", + "UntagOpenIDConnectProvider", + "UntagPolicy", + "UntagRole", + "UntagUser", + "UpdateAccessKey", + "UpdateAssumeRolePolicy", + "UpdateRole" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "AddClientIDToOpenIDConnectProvider", + "ChangePassword", + "CreateAccountAlias", + "CreateLoginProfile", + "CreatePolicyVersion", + "CreateSAMLProvider", + "CreateServiceLinkedRole", + "CreateServiceSpecificCredential", + "CreateVirtualMFADevice", + "DeactivateMFADevice", + "DeleteAccountAlias", + "DeleteAccountPasswordPolicy", + "DeleteLoginProfile", + "DeletePolicyVersion", + "DeleteRolePermissionsBoundary", + "DeleteSAMLProvider", + "DeleteSSHPublicKey", + "DeleteServerCertificate", + "DeleteServiceLinkedRole", + "DeleteServiceSpecificCredential", + "DeleteSigningCertificate", + "DeleteUserPermissionsBoundary", + "DeleteVirtualMFADevice", + "EnableMFADevice", + "GenerateCredentialReport", + "GenerateOrganizationsAccessReport", + "GenerateServiceLastAccessedDetails", + "GetAccessKeyLastUsed", + "GetAccountAuthorizationDetails", + "GetAccountPasswordPolicy", + "GetContextKeysForCustomPolicy", + "GetContextKeysForPrincipalPolicy", + "GetCredentialReport", + "GetLoginProfile", + "GetMFADevice", + "GetOrganizationsAccessReport", + "GetSAMLProvider", + "GetSSHPublicKey", + "GetServerCertificate", + "GetServiceLastAccessedDetails", + "GetServiceLastAccessedDetailsWithEntities", + "GetServiceLinkedRoleDeletionStatus", + "ListAccountAliases", + "ListMFADeviceTags", + "ListMFADevices", + "ListPoliciesGrantingServiceAccess", + "ListSAMLProviderTags", + "ListSAMLProviders", + "ListSSHPublicKeys", + "ListServerCertificateTags", + "ListServerCertificates", + "ListServiceSpecificCredentials", + "ListSigningCertificates", + "ListVirtualMFADevices", + "PutRolePermissionsBoundary", + "PutUserPermissionsBoundary", + "RemoveClientIDFromOpenIDConnectProvider", + "ResetServiceSpecificCredential", + "ResyncMFADevice", + "SetDefaultPolicyVersion", + "SetSecurityTokenServicePreferences", + "SimulateCustomPolicy", + "SimulatePrincipalPolicy", + "TagMFADevice", + "TagSAMLProvider", + "TagServerCertificate", + "UntagMFADevice", + "UntagSAMLProvider", + "UntagServerCertificate", + "UpdateAccountPasswordPolicy", + "UpdateGroup", + "UpdateLoginProfile", + "UpdateOpenIDConnectProviderThumbprint", + "UpdateRoleDescription", + "UpdateSAMLProvider", + "UpdateSSHPublicKey", + "UpdateServerCertificate", + "UpdateServiceSpecificCredential", + "UpdateSigningCertificate", + "UpdateUser", + "UploadSSHPublicKey", + "UploadServerCertificate", + "UploadSigningCertificate" + ], + "extra": [] + } + }, + { + "service": "rds", + "api_version": "2014-10-31", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AddRoleToDBCluster", + "AddRoleToDBInstance", + "AddSourceIdentifierToSubscription", + "AddTagsToResource", + "ApplyPendingMaintenanceAction", + "AuthorizeDBSecurityGroupIngress", + "BacktrackDBCluster", + "CancelExportTask", + "CopyDBClusterParameterGroup", + "CopyDBClusterSnapshot", + "CopyDBParameterGroup", + "CopyDBSnapshot", + "CopyOptionGroup", + "CreateBlueGreenDeployment", + "CreateCustomDBEngineVersion", + "CreateDBCluster", + "CreateDBClusterEndpoint", + "CreateDBClusterParameterGroup", + "CreateDBClusterSnapshot", + "CreateDBInstance", + "CreateDBInstanceReadReplica", + "CreateDBParameterGroup", + "CreateDBProxy", + "CreateDBProxyEndpoint", + "CreateDBSecurityGroup", + "CreateDBShardGroup", + "CreateDBSnapshot", + "CreateDBSubnetGroup", + "CreateEventSubscription", + "CreateGlobalCluster", + "CreateIntegration", + "CreateOptionGroup", + "CreateTenantDatabase", + "DeleteBlueGreenDeployment", + "DeleteCustomDBEngineVersion", + "DeleteDBCluster", + "DeleteDBClusterAutomatedBackup", + "DeleteDBClusterEndpoint", + "DeleteDBClusterParameterGroup", + "DeleteDBClusterSnapshot", + "DeleteDBInstance", + "DeleteDBInstanceAutomatedBackup", + "DeleteDBParameterGroup", + "DeleteDBProxy", + "DeleteDBProxyEndpoint", + "DeleteDBSecurityGroup", + "DeleteDBShardGroup", + "DeleteDBSnapshot", + "DeleteDBSubnetGroup", + "DeleteEventSubscription", + "DeleteGlobalCluster", + "DeleteIntegration", + "DeleteOptionGroup", + "DeleteTenantDatabase", + "DeregisterDBProxyTargets", + "DescribeAccountAttributes", + "DescribeBlueGreenDeployments", + "DescribeCertificates", + "DescribeDBClusterAutomatedBackups", + "DescribeDBClusterBacktracks", + "DescribeDBClusterEndpoints", + "DescribeDBClusterParameterGroups", + "DescribeDBClusterParameters", + "DescribeDBClusterSnapshotAttributes", + "DescribeDBClusterSnapshots", + "DescribeDBClusters", + "DescribeDBEngineVersions", + "DescribeDBInstanceAutomatedBackups", + "DescribeDBInstances", + "DescribeDBLogFiles", + "DescribeDBParameterGroups", + "DescribeDBParameters", + "DescribeDBProxies", + "DescribeDBProxyEndpoints", + "DescribeDBProxyTargetGroups", + "DescribeDBProxyTargets", + "DescribeDBRecommendations", + "DescribeDBSecurityGroups", + "DescribeDBShardGroups", + "DescribeDBSnapshotAttributes", + "DescribeDBSnapshotTenantDatabases", + "DescribeDBSnapshots", + "DescribeDBSubnetGroups", + "DescribeEngineDefaultClusterParameters", + "DescribeEngineDefaultParameters", + "DescribeEventCategories", + "DescribeEventSubscriptions", + "DescribeEvents", + "DescribeExportTasks", + "DescribeGlobalClusters", + "DescribeIntegrations", + "DescribeOptionGroupOptions", + "DescribeOptionGroups", + "DescribeOrderableDBInstanceOptions", + "DescribePendingMaintenanceActions", + "DescribeReservedDBInstances", + "DescribeReservedDBInstancesOfferings", + "DescribeSourceRegions", + "DescribeTenantDatabases", + "DescribeValidDBInstanceModifications", + "DisableHttpEndpoint", + "DownloadDBLogFilePortion", + "EnableHttpEndpoint", + "FailoverDBCluster", + "FailoverGlobalCluster", + "ListTagsForResource", + "ModifyActivityStream", + "ModifyCertificates", + "ModifyCurrentDBClusterCapacity", + "ModifyCustomDBEngineVersion", + "ModifyDBCluster", + "ModifyDBClusterEndpoint", + "ModifyDBClusterParameterGroup", + "ModifyDBClusterSnapshotAttribute", + "ModifyDBInstance", + "ModifyDBParameterGroup", + "ModifyDBProxy", + "ModifyDBProxyEndpoint", + "ModifyDBProxyTargetGroup", + "ModifyDBRecommendation", + "ModifyDBShardGroup", + "ModifyDBSnapshot", + "ModifyDBSnapshotAttribute", + "ModifyDBSubnetGroup", + "ModifyEventSubscription", + "ModifyGlobalCluster", + "ModifyIntegration", + "ModifyOptionGroup", + "ModifyTenantDatabase", + "PromoteReadReplica", + "PromoteReadReplicaDBCluster", + "PurchaseReservedDBInstancesOffering", + "RebootDBCluster", + "RebootDBInstance", + "RebootDBShardGroup", + "RegisterDBProxyTargets", + "RemoveFromGlobalCluster", + "RemoveRoleFromDBCluster", + "RemoveRoleFromDBInstance", + "RemoveSourceIdentifierFromSubscription", + "RemoveTagsFromResource", + "ResetDBClusterParameterGroup", + "ResetDBParameterGroup", + "RestoreDBClusterFromS3", + "RestoreDBClusterFromSnapshot", + "RestoreDBClusterToPointInTime", + "RestoreDBInstanceFromDBSnapshot", + "RestoreDBInstanceFromS3", + "RestoreDBInstanceToPointInTime", + "RevokeDBSecurityGroupIngress", + "StartActivityStream", + "StartDBCluster", + "StartDBInstance", + "StartDBInstanceAutomatedBackupsReplication", + "StartExportTask", + "StopActivityStream", + "StopDBCluster", + "StopDBInstance", + "StopDBInstanceAutomatedBackupsReplication", + "SwitchoverBlueGreenDeployment", + "SwitchoverGlobalCluster", + "SwitchoverReadReplica" + ], + "registered": [ + "AcknowledgeDBBootstrap", + "AddTagsToResource", + "CreateDBCluster", + "CreateDBInstance", + "CreateDBInstanceReadReplica", + "CreateDBParameterGroup", + "CreateDBSnapshot", + "CreateDBSubnetGroup", + "CreateOptionGroup", + "DeleteDBCluster", + "DeleteDBInstance", + "DeleteDBParameterGroup", + "DeleteDBSnapshot", + "DeleteDBSubnetGroup", + "DeleteOptionGroup", + "DescribeDBClusters", + "DescribeDBEngineVersions", + "DescribeDBInstanceAutomatedBackups", + "DescribeDBInstances", + "DescribeDBParameterGroups", + "DescribeDBParameters", + "DescribeDBSnapshots", + "DescribeDBSubnetGroups", + "DescribeEvents", + "DescribeOptionGroups", + "DescribeOrderableDBInstanceOptions", + "FailoverDBCluster", + "GetDBBootstrapConfig", + "ListTagsForResource", + "ModifyDBCluster", + "ModifyDBInstance", + "ModifyDBParameterGroup", + "ModifyOptionGroup", + "PollDBCommands", + "PromoteReadReplica", + "RebootDBInstance", + "RegisterDBInstance", + "RemoveTagsFromResource", + "RestoreDBInstanceFromDBSnapshot", + "RestoreDBInstanceToPointInTime", + "StartDBInstance", + "StopDBInstance", + "SubmitDBStateChange" + ], + "implemented": [ + "AddTagsToResource", + "CreateDBInstance", + "CreateDBParameterGroup", + "CreateDBSnapshot", + "CreateDBSubnetGroup", + "DeleteDBInstance", + "DeleteDBParameterGroup", + "DeleteDBSnapshot", + "DeleteDBSubnetGroup", + "DescribeDBEngineVersions", + "DescribeDBInstanceAutomatedBackups", + "DescribeDBInstances", + "DescribeDBParameterGroups", + "DescribeDBParameters", + "DescribeDBSnapshots", + "DescribeDBSubnetGroups", + "DescribeEvents", + "DescribeOrderableDBInstanceOptions", + "ListTagsForResource", + "ModifyDBInstance", + "ModifyDBParameterGroup", + "RebootDBInstance", + "RemoveTagsFromResource", + "RestoreDBInstanceFromDBSnapshot", + "StartDBInstance", + "StopDBInstance" + ], + "stubbed": [], + "unsupported": [ + "CreateDBCluster", + "CreateDBInstanceReadReplica", + "CreateOptionGroup", + "DeleteDBCluster", + "DeleteOptionGroup", + "DescribeDBClusters", + "DescribeOptionGroups", + "FailoverDBCluster", + "ModifyDBCluster", + "ModifyOptionGroup", + "PromoteReadReplica", + "RestoreDBInstanceToPointInTime" + ], + "missing": [ + "AddRoleToDBCluster", + "AddRoleToDBInstance", + "AddSourceIdentifierToSubscription", + "ApplyPendingMaintenanceAction", + "AuthorizeDBSecurityGroupIngress", + "BacktrackDBCluster", + "CancelExportTask", + "CopyDBClusterParameterGroup", + "CopyDBClusterSnapshot", + "CopyDBParameterGroup", + "CopyDBSnapshot", + "CopyOptionGroup", + "CreateBlueGreenDeployment", + "CreateCustomDBEngineVersion", + "CreateDBClusterEndpoint", + "CreateDBClusterParameterGroup", + "CreateDBClusterSnapshot", + "CreateDBProxy", + "CreateDBProxyEndpoint", + "CreateDBSecurityGroup", + "CreateDBShardGroup", + "CreateEventSubscription", + "CreateGlobalCluster", + "CreateIntegration", + "CreateTenantDatabase", + "DeleteBlueGreenDeployment", + "DeleteCustomDBEngineVersion", + "DeleteDBClusterAutomatedBackup", + "DeleteDBClusterEndpoint", + "DeleteDBClusterParameterGroup", + "DeleteDBClusterSnapshot", + "DeleteDBInstanceAutomatedBackup", + "DeleteDBProxy", + "DeleteDBProxyEndpoint", + "DeleteDBSecurityGroup", + "DeleteDBShardGroup", + "DeleteEventSubscription", + "DeleteGlobalCluster", + "DeleteIntegration", + "DeleteTenantDatabase", + "DeregisterDBProxyTargets", + "DescribeAccountAttributes", + "DescribeBlueGreenDeployments", + "DescribeCertificates", + "DescribeDBClusterAutomatedBackups", + "DescribeDBClusterBacktracks", + "DescribeDBClusterEndpoints", + "DescribeDBClusterParameterGroups", + "DescribeDBClusterParameters", + "DescribeDBClusterSnapshotAttributes", + "DescribeDBClusterSnapshots", + "DescribeDBLogFiles", + "DescribeDBProxies", + "DescribeDBProxyEndpoints", + "DescribeDBProxyTargetGroups", + "DescribeDBProxyTargets", + "DescribeDBRecommendations", + "DescribeDBSecurityGroups", + "DescribeDBShardGroups", + "DescribeDBSnapshotAttributes", + "DescribeDBSnapshotTenantDatabases", + "DescribeEngineDefaultClusterParameters", + "DescribeEngineDefaultParameters", + "DescribeEventCategories", + "DescribeEventSubscriptions", + "DescribeExportTasks", + "DescribeGlobalClusters", + "DescribeIntegrations", + "DescribeOptionGroupOptions", + "DescribePendingMaintenanceActions", + "DescribeReservedDBInstances", + "DescribeReservedDBInstancesOfferings", + "DescribeSourceRegions", + "DescribeTenantDatabases", + "DescribeValidDBInstanceModifications", + "DisableHttpEndpoint", + "DownloadDBLogFilePortion", + "EnableHttpEndpoint", + "FailoverGlobalCluster", + "ModifyActivityStream", + "ModifyCertificates", + "ModifyCurrentDBClusterCapacity", + "ModifyCustomDBEngineVersion", + "ModifyDBClusterEndpoint", + "ModifyDBClusterParameterGroup", + "ModifyDBClusterSnapshotAttribute", + "ModifyDBProxy", + "ModifyDBProxyEndpoint", + "ModifyDBProxyTargetGroup", + "ModifyDBRecommendation", + "ModifyDBShardGroup", + "ModifyDBSnapshot", + "ModifyDBSnapshotAttribute", + "ModifyDBSubnetGroup", + "ModifyEventSubscription", + "ModifyGlobalCluster", + "ModifyIntegration", + "ModifyTenantDatabase", + "PromoteReadReplicaDBCluster", + "PurchaseReservedDBInstancesOffering", + "RebootDBCluster", + "RebootDBShardGroup", + "RegisterDBProxyTargets", + "RemoveFromGlobalCluster", + "RemoveRoleFromDBCluster", + "RemoveRoleFromDBInstance", + "RemoveSourceIdentifierFromSubscription", + "ResetDBClusterParameterGroup", + "ResetDBParameterGroup", + "RestoreDBClusterFromS3", + "RestoreDBClusterFromSnapshot", + "RestoreDBClusterToPointInTime", + "RestoreDBInstanceFromS3", + "RevokeDBSecurityGroupIngress", + "StartActivityStream", + "StartDBCluster", + "StartDBInstanceAutomatedBackupsReplication", + "StartExportTask", + "StopActivityStream", + "StopDBCluster", + "StopDBInstanceAutomatedBackupsReplication", + "SwitchoverBlueGreenDeployment", + "SwitchoverGlobalCluster", + "SwitchoverReadReplica" + ], + "extra": [ + "AcknowledgeDBBootstrap", + "GetDBBootstrapConfig", + "PollDBCommands", + "RegisterDBInstance", + "SubmitDBStateChange" + ] + } + }, + { + "service": "s3", + "api_version": "2006-03-01", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AbortMultipartUpload", + "CompleteMultipartUpload", + "CopyObject", + "CreateBucket", + "CreateMultipartUpload", + "CreateSession", + "DeleteBucket", + "DeleteBucketAnalyticsConfiguration", + "DeleteBucketCors", + "DeleteBucketEncryption", + "DeleteBucketIntelligentTieringConfiguration", + "DeleteBucketInventoryConfiguration", + "DeleteBucketLifecycle", + "DeleteBucketMetricsConfiguration", + "DeleteBucketOwnershipControls", + "DeleteBucketPolicy", + "DeleteBucketReplication", + "DeleteBucketTagging", + "DeleteBucketWebsite", + "DeleteObject", + "DeleteObjectTagging", + "DeleteObjects", + "DeletePublicAccessBlock", + "GetBucketAccelerateConfiguration", + "GetBucketAcl", + "GetBucketAnalyticsConfiguration", + "GetBucketCors", + "GetBucketEncryption", + "GetBucketIntelligentTieringConfiguration", + "GetBucketInventoryConfiguration", + "GetBucketLifecycle", + "GetBucketLifecycleConfiguration", + "GetBucketLocation", + "GetBucketLogging", + "GetBucketMetricsConfiguration", + "GetBucketNotification", + "GetBucketNotificationConfiguration", + "GetBucketOwnershipControls", + "GetBucketPolicy", + "GetBucketPolicyStatus", + "GetBucketReplication", + "GetBucketRequestPayment", + "GetBucketTagging", + "GetBucketVersioning", + "GetBucketWebsite", + "GetObject", + "GetObjectAcl", + "GetObjectAttributes", + "GetObjectLegalHold", + "GetObjectLockConfiguration", + "GetObjectRetention", + "GetObjectTagging", + "GetObjectTorrent", + "GetPublicAccessBlock", + "HeadBucket", + "HeadObject", + "ListBucketAnalyticsConfigurations", + "ListBucketIntelligentTieringConfigurations", + "ListBucketInventoryConfigurations", + "ListBucketMetricsConfigurations", + "ListBuckets", + "ListDirectoryBuckets", + "ListMultipartUploads", + "ListObjectVersions", + "ListObjects", + "ListObjectsV2", + "ListParts", + "PutBucketAccelerateConfiguration", + "PutBucketAcl", + "PutBucketAnalyticsConfiguration", + "PutBucketCors", + "PutBucketEncryption", + "PutBucketIntelligentTieringConfiguration", + "PutBucketInventoryConfiguration", + "PutBucketLifecycle", + "PutBucketLifecycleConfiguration", + "PutBucketLogging", + "PutBucketMetricsConfiguration", + "PutBucketNotification", + "PutBucketNotificationConfiguration", + "PutBucketOwnershipControls", + "PutBucketPolicy", + "PutBucketReplication", + "PutBucketRequestPayment", + "PutBucketTagging", + "PutBucketVersioning", + "PutBucketWebsite", + "PutObject", + "PutObjectAcl", + "PutObjectLegalHold", + "PutObjectLockConfiguration", + "PutObjectRetention", + "PutObjectTagging", + "PutPublicAccessBlock", + "RestoreObject", + "SelectObjectContent", + "UploadPart", + "UploadPartCopy", + "WriteGetObjectResponse" + ], + "registered": [ + "AbortMultipartUpload", + "CompleteMultipartUpload", + "CopyObject", + "CreateBucket", + "CreateMultipartUpload", + "DeleteBucket", + "DeleteBucketTagging", + "DeleteObject", + "DeleteObjects", + "GetBucketLocation", + "GetBucketTagging", + "GetObject", + "HeadBucket", + "HeadObject", + "ListBuckets", + "ListMultipartUploads", + "ListObjects", + "ListObjectsV2", + "ListParts", + "PutBucketTagging", + "PutObject", + "UploadPart", + "UploadPartCopy" + ], + "implemented": [ + "AbortMultipartUpload", + "CompleteMultipartUpload", + "CopyObject", + "CreateBucket", + "CreateMultipartUpload", + "DeleteBucket", + "DeleteBucketTagging", + "DeleteObject", + "DeleteObjects", + "GetBucketLocation", + "GetBucketTagging", + "GetObject", + "HeadBucket", + "HeadObject", + "ListBuckets", + "ListMultipartUploads", + "ListObjects", + "ListObjectsV2", + "ListParts", + "PutBucketTagging", + "PutObject", + "UploadPart", + "UploadPartCopy" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "CreateSession", + "DeleteBucketAnalyticsConfiguration", + "DeleteBucketCors", + "DeleteBucketEncryption", + "DeleteBucketIntelligentTieringConfiguration", + "DeleteBucketInventoryConfiguration", + "DeleteBucketLifecycle", + "DeleteBucketMetricsConfiguration", + "DeleteBucketOwnershipControls", + "DeleteBucketPolicy", + "DeleteBucketReplication", + "DeleteBucketWebsite", + "DeleteObjectTagging", + "DeletePublicAccessBlock", + "GetBucketAccelerateConfiguration", + "GetBucketAcl", + "GetBucketAnalyticsConfiguration", + "GetBucketCors", + "GetBucketEncryption", + "GetBucketIntelligentTieringConfiguration", + "GetBucketInventoryConfiguration", + "GetBucketLifecycle", + "GetBucketLifecycleConfiguration", + "GetBucketLogging", + "GetBucketMetricsConfiguration", + "GetBucketNotification", + "GetBucketNotificationConfiguration", + "GetBucketOwnershipControls", + "GetBucketPolicy", + "GetBucketPolicyStatus", + "GetBucketReplication", + "GetBucketRequestPayment", + "GetBucketVersioning", + "GetBucketWebsite", + "GetObjectAcl", + "GetObjectAttributes", + "GetObjectLegalHold", + "GetObjectLockConfiguration", + "GetObjectRetention", + "GetObjectTagging", + "GetObjectTorrent", + "GetPublicAccessBlock", + "ListBucketAnalyticsConfigurations", + "ListBucketIntelligentTieringConfigurations", + "ListBucketInventoryConfigurations", + "ListBucketMetricsConfigurations", + "ListDirectoryBuckets", + "ListObjectVersions", + "PutBucketAccelerateConfiguration", + "PutBucketAcl", + "PutBucketAnalyticsConfiguration", + "PutBucketCors", + "PutBucketEncryption", + "PutBucketIntelligentTieringConfiguration", + "PutBucketInventoryConfiguration", + "PutBucketLifecycle", + "PutBucketLifecycleConfiguration", + "PutBucketLogging", + "PutBucketMetricsConfiguration", + "PutBucketNotification", + "PutBucketNotificationConfiguration", + "PutBucketOwnershipControls", + "PutBucketPolicy", + "PutBucketReplication", + "PutBucketRequestPayment", + "PutBucketVersioning", + "PutBucketWebsite", + "PutObjectAcl", + "PutObjectLegalHold", + "PutObjectLockConfiguration", + "PutObjectRetention", + "PutObjectTagging", + "PutPublicAccessBlock", + "RestoreObject", + "SelectObjectContent", + "WriteGetObjectResponse" + ], + "extra": [] + } + }, + { + "service": "sts", + "api_version": "2011-06-15", + "opaque": false, + "note": "", + "operations": { + "modelled": [ + "AssumeRole", + "AssumeRoleWithSAML", + "AssumeRoleWithWebIdentity", + "DecodeAuthorizationMessage", + "GetAccessKeyInfo", + "GetCallerIdentity", + "GetFederationToken", + "GetSessionToken" + ], + "registered": [ + "AssumeRole", + "AssumeRoleWithWebIdentity", + "GetAccessKeyInfo", + "GetCallerIdentity", + "GetSessionToken" + ], + "implemented": [ + "AssumeRole", + "AssumeRoleWithWebIdentity", + "GetAccessKeyInfo", + "GetCallerIdentity", + "GetSessionToken" + ], + "stubbed": [], + "unsupported": [], + "missing": [ + "AssumeRoleWithSAML", + "DecodeAuthorizationMessage", + "GetFederationToken" + ], + "extra": [] + } + } + ] +} diff --git a/docs/coverage/internal-report.md b/docs/coverage/internal-report.md index 4f9026e3c..d95a3a5c2 100644 --- a/docs/coverage/internal-report.md +++ b/docs/coverage/internal-report.md @@ -973,7 +973,7 @@ option-groups: Option groups configure engine add-ons for engines this platform ## s3 -`2006-03-01` — 19 of 99 modelled operations implemented (19.2%), 0 stubbed, 6 not applicable, 0 registered outside the pinned model. +`2006-03-01` — 23 of 99 modelled operations implemented (23.2%), 0 stubbed, 6 not applicable, 0 registered outside the pinned model. ### Not implemented @@ -987,7 +987,6 @@ option-groups: Option groups configure engine add-ons for engines this platform - `DeleteBucketOwnershipControls` - `DeleteBucketPolicy` - `DeleteBucketReplication` -- `DeleteBucketTagging` - `DeleteBucketWebsite` - `DeleteObjectTagging` - `DeletePublicAccessBlock` @@ -999,7 +998,6 @@ option-groups: Option groups configure engine add-ons for engines this platform - `GetBucketInventoryConfiguration` - `GetBucketLifecycle` - `GetBucketLifecycleConfiguration` -- `GetBucketLocation` - `GetBucketLogging` - `GetBucketMetricsConfiguration` - `GetBucketNotification` @@ -1008,7 +1006,6 @@ option-groups: Option groups configure engine add-ons for engines this platform - `GetBucketPolicy` - `GetBucketPolicyStatus` - `GetBucketReplication` -- `GetBucketTagging` - `GetBucketVersioning` - `GetBucketWebsite` - `GetObjectAcl` @@ -1040,7 +1037,6 @@ option-groups: Option groups configure engine add-ons for engines this platform - `PutBucketOwnershipControls` - `PutBucketPolicy` - `PutBucketReplication` -- `PutBucketTagging` - `PutBucketVersioning` - `PutBucketWebsite` - `PutObjectAcl` diff --git a/docs/coverage/s3/README.md b/docs/coverage/s3/README.md index 5e2b19af4..dba82bee4 100644 --- a/docs/coverage/s3/README.md +++ b/docs/coverage/s3/README.md @@ -18,7 +18,7 @@ tags: ## Overview -Predastore implements **19 operations** in the S3 `2006-03-01` API model. +Predastore implements **23 operations** in the S3 `2006-03-01` API model. ### Predastore serves this endpoint @@ -40,8 +40,11 @@ That behaviour is measured separately, against the `ceph/s3-tests` suite Ceph RG | `CreateBucket` | | `CreateMultipartUpload` | | `DeleteBucket` | +| `DeleteBucketTagging` | | `DeleteObject` | | `DeleteObjects` | +| `GetBucketLocation` | +| `GetBucketTagging` | | `GetObject` | | `HeadBucket` | | `HeadObject` | @@ -50,6 +53,7 @@ That behaviour is measured separately, against the `ceph/s3-tests` suite Ceph RG | `ListObjects` | | `ListObjectsV2` | | `ListParts` | +| `PutBucketTagging` | | `PutObject` | | `UploadPart` | | `UploadPartCopy` | diff --git a/internal/awsmodel/coverage.go b/internal/awsmodel/coverage.go index be95f0f19..12d3db58b 100644 --- a/internal/awsmodel/coverage.go +++ b/internal/awsmodel/coverage.go @@ -1,7 +1,9 @@ package awsmodel import ( + "encoding/json" "fmt" + "os" "sort" "strings" ) @@ -33,6 +35,42 @@ type OperationCoverage struct { Note string } +// CoverageJSONSchemaVersion identifies the generated coverage.json schema. +// Increment it only for an incompatible change to the JSON document. +const CoverageJSONSchemaVersion = 1 + +// coverageJSON is the generated, machine-readable form of the operation +// inventory. It deliberately reports dispatch state only: an operation in +// implemented has a registered, non-stubbed and non-refused dispatcher, but +// that alone does not establish behavioural AWS compatibility. +type coverageJSON struct { + SchemaVersion int `json:"schema_version"` + ModelSource coverageJSONModelSource `json:"model_source"` + Services []coverageJSONService `json:"services"` +} + +type coverageJSONModelSource struct { + AWSSDKGoVersion string `json:"aws_sdk_go_version"` +} + +type coverageJSONService struct { + Service string `json:"service"` + APIVersion string `json:"api_version"` + Opaque bool `json:"opaque"` + Note string `json:"note"` + Operations coverageJSONOperations `json:"operations"` +} + +type coverageJSONOperations struct { + Modelled []string `json:"modelled"` + Registered []string `json:"registered"` + Implemented []string `json:"implemented"` + Stubbed []string `json:"stubbed"` + Unsupported []string `json:"unsupported"` + Missing []string `json:"missing"` + Extra []string `json:"extra"` +} + // CompareOperations compares one embedded service model with an authoritative // gateway dispatch inventory. func CompareOperations(service Service, dispatch DispatchInventory) (OperationCoverage, error) { @@ -140,6 +178,60 @@ func RenderCoverageSummary(coverages []OperationCoverage) string { return report.String() } +// RenderCoverageJSON renders a deterministic, versioned inventory suitable +// for tools. The operation lists describe only the generated model-versus- +// dispatch comparison; consumers must establish behavioural support from +// their own evidence rather than inferring it from dispatch registration. +func RenderCoverageJSON(coverages []OperationCoverage) (string, error) { + document := coverageJSON{ + SchemaVersion: CoverageJSONSchemaVersion, + ModelSource: coverageJSONModelSource{ + AWSSDKGoVersion: SourceSDKVersion, + }, + Services: make([]coverageJSONService, 0, len(coverages)), + } + for _, coverage := range sortedCoverages(coverages) { + document.Services = append(document.Services, coverageJSONService{ + Service: string(coverage.Service), + APIVersion: coverage.APIVersion, + Opaque: coverage.Opaque, + Note: coverage.Note, + Operations: coverageJSONOperations{ + Modelled: copiedOperations(coverage.Modelled), + Registered: copiedOperations(coverage.Registered), + Implemented: copiedOperations(coverage.Implemented), + Stubbed: copiedOperations(coverage.Stubbed), + Unsupported: copiedOperations(coverage.Unsupported), + Missing: copiedOperations(coverage.Missing), + Extra: copiedOperations(coverage.Extra), + }, + }) + } + contents, err := json.MarshalIndent(document, "", " ") + if err != nil { + return "", fmt.Errorf("awsmodel: marshal coverage JSON: %w", err) + } + return string(contents) + "\n", nil +} + +// WriteCoverageJSON writes the generated machine-readable inventory to path. +func WriteCoverageJSON(path string, coverages []OperationCoverage) error { + contents, err := RenderCoverageJSON(coverages) + if err != nil { + return err + } + if err := os.WriteFile(path, []byte(contents), 0o600); err != nil { + return fmt.Errorf("awsmodel: write coverage JSON: %w", err) + } + return nil +} + +// copiedOperations represents an empty operation set as [] rather than null, +// so consumers can use every array field without a special case. +func copiedOperations(operations []string) []string { + return append([]string{}, operations...) +} + // RenderInternalReport renders the full comparison, including the operations // the published pages leave out. It is not a site page: the docs build renders // only the slugs it is configured with, and this file is not one of them. diff --git a/internal/awsmodel/coverage_json_test.go b/internal/awsmodel/coverage_json_test.go new file mode 100644 index 000000000..aeaf6eacb --- /dev/null +++ b/internal/awsmodel/coverage_json_test.go @@ -0,0 +1,94 @@ +package awsmodel + +import ( + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" +) + +func TestRenderCoverageJSONIsDeterministicAndPreservesDispatchStates(t *testing.T) { + sts, err := CompareOperations(STS, DispatchInventory{ + Registered: []string{"AssumeRole", "GetCallerIdentity", "GetSessionToken"}, + Stubbed: []string{"GetSessionToken"}, + Unsupported: []string{"GetCallerIdentity"}, + }) + if err != nil { + t.Fatal(err) + } + iam, err := CompareOperations(IAM, DispatchInventory{}) + if err != nil { + t.Fatal(err) + } + + contents, err := RenderCoverageJSON([]OperationCoverage{sts, iam}) + if err != nil { + t.Fatal(err) + } + var document struct { + SchemaVersion int `json:"schema_version"` + ModelSource struct { + AWSSDKGoVersion string `json:"aws_sdk_go_version"` + } `json:"model_source"` + Services []struct { + Service string `json:"service"` + Operations struct { + Implemented []string `json:"implemented"` + Stubbed []string `json:"stubbed"` + Unsupported []string `json:"unsupported"` + Registered []string `json:"registered"` + } `json:"operations"` + } `json:"services"` + } + if err := json.Unmarshal([]byte(contents), &document); err != nil { + t.Fatalf("generated JSON is invalid: %v\n%s", err, contents) + } + if document.SchemaVersion != CoverageJSONSchemaVersion { + t.Errorf("schema version = %d, want %d", document.SchemaVersion, CoverageJSONSchemaVersion) + } + if document.ModelSource.AWSSDKGoVersion != SourceSDKVersion { + t.Errorf("source version = %q, want %q", document.ModelSource.AWSSDKGoVersion, SourceSDKVersion) + } + if !strings.Contains(contents, `"registered": []`) { + t.Errorf("an empty operation set must be an array, not null:\n%s", contents) + } + if len(document.Services) != 2 || document.Services[0].Service != "iam" || document.Services[1].Service != "sts" { + t.Fatalf("services are not deterministic: %#v", document.Services) + } + states := document.Services[1].Operations + if got, want := strings.Join(states.Implemented, ","), "AssumeRole"; got != want { + t.Errorf("implemented = %q, want %q", got, want) + } + if got, want := strings.Join(states.Stubbed, ","), "GetSessionToken"; got != want { + t.Errorf("stubbed = %q, want %q", got, want) + } + if got, want := strings.Join(states.Unsupported, ","), "GetCallerIdentity"; got != want { + t.Errorf("unsupported = %q, want %q", got, want) + } + if got, want := strings.Join(states.Registered, ","), "AssumeRole,GetCallerIdentity,GetSessionToken"; got != want { + t.Errorf("registered = %q, want %q", got, want) + } +} + +func TestWriteCoverageJSONWritesTheSameDocument(t *testing.T) { + coverage, err := CompareOperations(STS, DispatchInventory{Registered: []string{"AssumeRole"}}) + if err != nil { + t.Fatal(err) + } + want, err := RenderCoverageJSON([]OperationCoverage{coverage}) + if err != nil { + t.Fatal(err) + } + path := filepath.Join(t.TempDir(), "coverage.json") + if err := WriteCoverageJSON(path, []OperationCoverage{coverage}); err != nil { + t.Fatal(err) + } + got, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + if string(got) != want { + t.Errorf("written JSON differs from renderer:\n got: %s\nwant: %s", got, want) + } +}