/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */

#pragma once
#include <aws/config/ConfigService_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>

namespace Aws
{
namespace ConfigService
{
namespace Model
{
  enum class ResourceType
  {
    NOT_SET,
    AWS_EC2_CustomerGateway,
    AWS_EC2_EIP,
    AWS_EC2_Host,
    AWS_EC2_Instance,
    AWS_EC2_InternetGateway,
    AWS_EC2_NetworkAcl,
    AWS_EC2_NetworkInterface,
    AWS_EC2_RouteTable,
    AWS_EC2_SecurityGroup,
    AWS_EC2_Subnet,
    AWS_CloudTrail_Trail,
    AWS_EC2_Volume,
    AWS_EC2_VPC,
    AWS_EC2_VPNConnection,
    AWS_EC2_VPNGateway,
    AWS_EC2_RegisteredHAInstance,
    AWS_EC2_NatGateway,
    AWS_EC2_EgressOnlyInternetGateway,
    AWS_EC2_VPCEndpoint,
    AWS_EC2_VPCEndpointService,
    AWS_EC2_FlowLog,
    AWS_EC2_VPCPeeringConnection,
    AWS_Elasticsearch_Domain,
    AWS_IAM_Group,
    AWS_IAM_Policy,
    AWS_IAM_Role,
    AWS_IAM_User,
    AWS_ElasticLoadBalancingV2_LoadBalancer,
    AWS_ACM_Certificate,
    AWS_RDS_DBInstance,
    AWS_RDS_DBSubnetGroup,
    AWS_RDS_DBSecurityGroup,
    AWS_RDS_DBSnapshot,
    AWS_RDS_DBCluster,
    AWS_RDS_DBClusterSnapshot,
    AWS_RDS_EventSubscription,
    AWS_S3_Bucket,
    AWS_S3_AccountPublicAccessBlock,
    AWS_Redshift_Cluster,
    AWS_Redshift_ClusterSnapshot,
    AWS_Redshift_ClusterParameterGroup,
    AWS_Redshift_ClusterSecurityGroup,
    AWS_Redshift_ClusterSubnetGroup,
    AWS_Redshift_EventSubscription,
    AWS_SSM_ManagedInstanceInventory,
    AWS_CloudWatch_Alarm,
    AWS_CloudFormation_Stack,
    AWS_ElasticLoadBalancing_LoadBalancer,
    AWS_AutoScaling_AutoScalingGroup,
    AWS_AutoScaling_LaunchConfiguration,
    AWS_AutoScaling_ScalingPolicy,
    AWS_AutoScaling_ScheduledAction,
    AWS_DynamoDB_Table,
    AWS_CodeBuild_Project,
    AWS_WAF_RateBasedRule,
    AWS_WAF_Rule,
    AWS_WAF_RuleGroup,
    AWS_WAF_WebACL,
    AWS_WAFRegional_RateBasedRule,
    AWS_WAFRegional_Rule,
    AWS_WAFRegional_RuleGroup,
    AWS_WAFRegional_WebACL,
    AWS_CloudFront_Distribution,
    AWS_CloudFront_StreamingDistribution,
    AWS_Lambda_Function,
    AWS_NetworkFirewall_Firewall,
    AWS_NetworkFirewall_FirewallPolicy,
    AWS_NetworkFirewall_RuleGroup,
    AWS_ElasticBeanstalk_Application,
    AWS_ElasticBeanstalk_ApplicationVersion,
    AWS_ElasticBeanstalk_Environment,
    AWS_WAFv2_WebACL,
    AWS_WAFv2_RuleGroup,
    AWS_WAFv2_IPSet,
    AWS_WAFv2_RegexPatternSet,
    AWS_WAFv2_ManagedRuleSet,
    AWS_XRay_EncryptionConfig,
    AWS_SSM_AssociationCompliance,
    AWS_SSM_PatchCompliance,
    AWS_Shield_Protection,
    AWS_ShieldRegional_Protection,
    AWS_Config_ConformancePackCompliance,
    AWS_Config_ResourceCompliance,
    AWS_ApiGateway_Stage,
    AWS_ApiGateway_RestApi,
    AWS_ApiGatewayV2_Stage,
    AWS_ApiGatewayV2_Api,
    AWS_CodePipeline_Pipeline,
    AWS_ServiceCatalog_CloudFormationProvisionedProduct,
    AWS_ServiceCatalog_CloudFormationProduct,
    AWS_ServiceCatalog_Portfolio,
    AWS_SQS_Queue,
    AWS_KMS_Key,
    AWS_QLDB_Ledger,
    AWS_SecretsManager_Secret,
    AWS_SNS_Topic,
    AWS_SSM_FileData,
    AWS_Backup_BackupPlan,
    AWS_Backup_BackupSelection,
    AWS_Backup_BackupVault,
    AWS_Backup_RecoveryPoint,
    AWS_ECR_Repository,
    AWS_ECS_Cluster,
    AWS_ECS_Service,
    AWS_ECS_TaskDefinition,
    AWS_EFS_AccessPoint,
    AWS_EFS_FileSystem,
    AWS_EKS_Cluster,
    AWS_OpenSearch_Domain,
    AWS_EC2_TransitGateway,
    AWS_Kinesis_Stream,
    AWS_Kinesis_StreamConsumer,
    AWS_CodeDeploy_Application,
    AWS_CodeDeploy_DeploymentConfig,
    AWS_CodeDeploy_DeploymentGroup,
    AWS_EC2_LaunchTemplate,
    AWS_ECR_PublicRepository,
    AWS_GuardDuty_Detector,
    AWS_EMR_SecurityConfiguration,
    AWS_SageMaker_CodeRepository,
    AWS_Route53Resolver_ResolverEndpoint,
    AWS_Route53Resolver_ResolverRule,
    AWS_Route53Resolver_ResolverRuleAssociation,
    AWS_DMS_ReplicationSubnetGroup,
    AWS_DMS_EventSubscription,
    AWS_MSK_Cluster,
    AWS_StepFunctions_Activity,
    AWS_WorkSpaces_Workspace,
    AWS_WorkSpaces_ConnectionAlias,
    AWS_SageMaker_Model,
    AWS_ElasticLoadBalancingV2_Listener,
    AWS_StepFunctions_StateMachine,
    AWS_Batch_JobQueue,
    AWS_Batch_ComputeEnvironment,
    AWS_AccessAnalyzer_Analyzer,
    AWS_Athena_WorkGroup,
    AWS_Athena_DataCatalog,
    AWS_Detective_Graph,
    AWS_GlobalAccelerator_Accelerator,
    AWS_GlobalAccelerator_EndpointGroup,
    AWS_GlobalAccelerator_Listener,
    AWS_EC2_TransitGatewayAttachment,
    AWS_EC2_TransitGatewayRouteTable,
    AWS_DMS_Certificate,
    AWS_AppConfig_Application,
    AWS_AppSync_GraphQLApi,
    AWS_DataSync_LocationSMB,
    AWS_DataSync_LocationFSxLustre,
    AWS_DataSync_LocationS3,
    AWS_DataSync_LocationEFS,
    AWS_DataSync_Task,
    AWS_DataSync_LocationNFS,
    AWS_EC2_NetworkInsightsAccessScopeAnalysis,
    AWS_EKS_FargateProfile,
    AWS_Glue_Job,
    AWS_GuardDuty_ThreatIntelSet,
    AWS_GuardDuty_IPSet,
    AWS_SageMaker_Workteam,
    AWS_SageMaker_NotebookInstanceLifecycleConfig,
    AWS_ServiceDiscovery_Service,
    AWS_ServiceDiscovery_PublicDnsNamespace,
    AWS_SES_ContactList,
    AWS_SES_ConfigurationSet,
    AWS_Route53_HostedZone
  };

namespace ResourceTypeMapper
{
AWS_CONFIGSERVICE_API ResourceType GetResourceTypeForName(const Aws::String& name);

AWS_CONFIGSERVICE_API Aws::String GetNameForResourceType(ResourceType value);
} // namespace ResourceTypeMapper
} // namespace Model
} // namespace ConfigService
} // namespace Aws
