{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AppMesh.Types
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AppMesh.Types
  ( -- * Service Configuration
    defaultService,

    -- * Errors
    _TooManyTagsException,
    _ConflictException,
    _ForbiddenException,
    _NotFoundException,
    _TooManyRequestsException,
    _InternalServerErrorException,
    _ServiceUnavailableException,
    _BadRequestException,
    _LimitExceededException,
    _ResourceInUseException,

    -- * DefaultGatewayRouteRewrite
    DefaultGatewayRouteRewrite (..),

    -- * DnsResponseType
    DnsResponseType (..),

    -- * DurationUnit
    DurationUnit (..),

    -- * EgressFilterType
    EgressFilterType (..),

    -- * GatewayRouteStatusCode
    GatewayRouteStatusCode (..),

    -- * GrpcRetryPolicyEvent
    GrpcRetryPolicyEvent (..),

    -- * HttpMethod
    HttpMethod (..),

    -- * HttpScheme
    HttpScheme (..),

    -- * ListenerTlsMode
    ListenerTlsMode (..),

    -- * MeshStatusCode
    MeshStatusCode (..),

    -- * PortProtocol
    PortProtocol (..),

    -- * RouteStatusCode
    RouteStatusCode (..),

    -- * TcpRetryPolicyEvent
    TcpRetryPolicyEvent (..),

    -- * VirtualGatewayListenerTlsMode
    VirtualGatewayListenerTlsMode (..),

    -- * VirtualGatewayPortProtocol
    VirtualGatewayPortProtocol (..),

    -- * VirtualGatewayStatusCode
    VirtualGatewayStatusCode (..),

    -- * VirtualNodeStatusCode
    VirtualNodeStatusCode (..),

    -- * VirtualRouterStatusCode
    VirtualRouterStatusCode (..),

    -- * VirtualServiceStatusCode
    VirtualServiceStatusCode (..),

    -- * AccessLog
    AccessLog (..),
    newAccessLog,
    accessLog_file,

    -- * AwsCloudMapInstanceAttribute
    AwsCloudMapInstanceAttribute (..),
    newAwsCloudMapInstanceAttribute,
    awsCloudMapInstanceAttribute_key,
    awsCloudMapInstanceAttribute_value,

    -- * AwsCloudMapServiceDiscovery
    AwsCloudMapServiceDiscovery (..),
    newAwsCloudMapServiceDiscovery,
    awsCloudMapServiceDiscovery_attributes,
    awsCloudMapServiceDiscovery_namespaceName,
    awsCloudMapServiceDiscovery_serviceName,

    -- * Backend
    Backend (..),
    newBackend,
    backend_virtualService,

    -- * BackendDefaults
    BackendDefaults (..),
    newBackendDefaults,
    backendDefaults_clientPolicy,

    -- * ClientPolicy
    ClientPolicy (..),
    newClientPolicy,
    clientPolicy_tls,

    -- * ClientPolicyTls
    ClientPolicyTls (..),
    newClientPolicyTls,
    clientPolicyTls_ports,
    clientPolicyTls_certificate,
    clientPolicyTls_enforce,
    clientPolicyTls_validation,

    -- * ClientTlsCertificate
    ClientTlsCertificate (..),
    newClientTlsCertificate,
    clientTlsCertificate_sds,
    clientTlsCertificate_file,

    -- * DnsServiceDiscovery
    DnsServiceDiscovery (..),
    newDnsServiceDiscovery,
    dnsServiceDiscovery_responseType,
    dnsServiceDiscovery_hostname,

    -- * Duration
    Duration (..),
    newDuration,
    duration_value,
    duration_unit,

    -- * EgressFilter
    EgressFilter (..),
    newEgressFilter,
    egressFilter_type,

    -- * FileAccessLog
    FileAccessLog (..),
    newFileAccessLog,
    fileAccessLog_path,

    -- * GatewayRouteData
    GatewayRouteData (..),
    newGatewayRouteData,
    gatewayRouteData_gatewayRouteName,
    gatewayRouteData_meshName,
    gatewayRouteData_metadata,
    gatewayRouteData_spec,
    gatewayRouteData_status,
    gatewayRouteData_virtualGatewayName,

    -- * GatewayRouteHostnameMatch
    GatewayRouteHostnameMatch (..),
    newGatewayRouteHostnameMatch,
    gatewayRouteHostnameMatch_suffix,
    gatewayRouteHostnameMatch_exact,

    -- * GatewayRouteHostnameRewrite
    GatewayRouteHostnameRewrite (..),
    newGatewayRouteHostnameRewrite,
    gatewayRouteHostnameRewrite_defaultTargetHostname,

    -- * GatewayRouteRef
    GatewayRouteRef (..),
    newGatewayRouteRef,
    gatewayRouteRef_arn,
    gatewayRouteRef_createdAt,
    gatewayRouteRef_gatewayRouteName,
    gatewayRouteRef_lastUpdatedAt,
    gatewayRouteRef_meshName,
    gatewayRouteRef_meshOwner,
    gatewayRouteRef_resourceOwner,
    gatewayRouteRef_version,
    gatewayRouteRef_virtualGatewayName,

    -- * GatewayRouteSpec
    GatewayRouteSpec (..),
    newGatewayRouteSpec,
    gatewayRouteSpec_priority,
    gatewayRouteSpec_http2Route,
    gatewayRouteSpec_grpcRoute,
    gatewayRouteSpec_httpRoute,

    -- * GatewayRouteStatus
    GatewayRouteStatus (..),
    newGatewayRouteStatus,
    gatewayRouteStatus_status,

    -- * GatewayRouteTarget
    GatewayRouteTarget (..),
    newGatewayRouteTarget,
    gatewayRouteTarget_virtualService,

    -- * GatewayRouteVirtualService
    GatewayRouteVirtualService (..),
    newGatewayRouteVirtualService,
    gatewayRouteVirtualService_virtualServiceName,

    -- * GrpcGatewayRoute
    GrpcGatewayRoute (..),
    newGrpcGatewayRoute,
    grpcGatewayRoute_action,
    grpcGatewayRoute_match,

    -- * GrpcGatewayRouteAction
    GrpcGatewayRouteAction (..),
    newGrpcGatewayRouteAction,
    grpcGatewayRouteAction_rewrite,
    grpcGatewayRouteAction_target,

    -- * GrpcGatewayRouteMatch
    GrpcGatewayRouteMatch (..),
    newGrpcGatewayRouteMatch,
    grpcGatewayRouteMatch_hostname,
    grpcGatewayRouteMatch_serviceName,
    grpcGatewayRouteMatch_metadata,

    -- * GrpcGatewayRouteMetadata
    GrpcGatewayRouteMetadata (..),
    newGrpcGatewayRouteMetadata,
    grpcGatewayRouteMetadata_invert,
    grpcGatewayRouteMetadata_match,
    grpcGatewayRouteMetadata_name,

    -- * GrpcGatewayRouteRewrite
    GrpcGatewayRouteRewrite (..),
    newGrpcGatewayRouteRewrite,
    grpcGatewayRouteRewrite_hostname,

    -- * GrpcMetadataMatchMethod
    GrpcMetadataMatchMethod (..),
    newGrpcMetadataMatchMethod,
    grpcMetadataMatchMethod_suffix,
    grpcMetadataMatchMethod_regex,
    grpcMetadataMatchMethod_prefix,
    grpcMetadataMatchMethod_range,
    grpcMetadataMatchMethod_exact,

    -- * GrpcRetryPolicy
    GrpcRetryPolicy (..),
    newGrpcRetryPolicy,
    grpcRetryPolicy_httpRetryEvents,
    grpcRetryPolicy_grpcRetryEvents,
    grpcRetryPolicy_tcpRetryEvents,
    grpcRetryPolicy_maxRetries,
    grpcRetryPolicy_perRetryTimeout,

    -- * GrpcRoute
    GrpcRoute (..),
    newGrpcRoute,
    grpcRoute_retryPolicy,
    grpcRoute_timeout,
    grpcRoute_action,
    grpcRoute_match,

    -- * GrpcRouteAction
    GrpcRouteAction (..),
    newGrpcRouteAction,
    grpcRouteAction_weightedTargets,

    -- * GrpcRouteMatch
    GrpcRouteMatch (..),
    newGrpcRouteMatch,
    grpcRouteMatch_methodName,
    grpcRouteMatch_serviceName,
    grpcRouteMatch_metadata,

    -- * GrpcRouteMetadata
    GrpcRouteMetadata (..),
    newGrpcRouteMetadata,
    grpcRouteMetadata_invert,
    grpcRouteMetadata_match,
    grpcRouteMetadata_name,

    -- * GrpcRouteMetadataMatchMethod
    GrpcRouteMetadataMatchMethod (..),
    newGrpcRouteMetadataMatchMethod,
    grpcRouteMetadataMatchMethod_suffix,
    grpcRouteMetadataMatchMethod_regex,
    grpcRouteMetadataMatchMethod_prefix,
    grpcRouteMetadataMatchMethod_range,
    grpcRouteMetadataMatchMethod_exact,

    -- * GrpcTimeout
    GrpcTimeout (..),
    newGrpcTimeout,
    grpcTimeout_idle,
    grpcTimeout_perRequest,

    -- * HeaderMatchMethod
    HeaderMatchMethod (..),
    newHeaderMatchMethod,
    headerMatchMethod_suffix,
    headerMatchMethod_regex,
    headerMatchMethod_prefix,
    headerMatchMethod_range,
    headerMatchMethod_exact,

    -- * HealthCheckPolicy
    HealthCheckPolicy (..),
    newHealthCheckPolicy,
    healthCheckPolicy_path,
    healthCheckPolicy_port,
    healthCheckPolicy_healthyThreshold,
    healthCheckPolicy_intervalMillis,
    healthCheckPolicy_protocol,
    healthCheckPolicy_timeoutMillis,
    healthCheckPolicy_unhealthyThreshold,

    -- * HttpGatewayRoute
    HttpGatewayRoute (..),
    newHttpGatewayRoute,
    httpGatewayRoute_action,
    httpGatewayRoute_match,

    -- * HttpGatewayRouteAction
    HttpGatewayRouteAction (..),
    newHttpGatewayRouteAction,
    httpGatewayRouteAction_rewrite,
    httpGatewayRouteAction_target,

    -- * HttpGatewayRouteHeader
    HttpGatewayRouteHeader (..),
    newHttpGatewayRouteHeader,
    httpGatewayRouteHeader_invert,
    httpGatewayRouteHeader_match,
    httpGatewayRouteHeader_name,

    -- * HttpGatewayRouteMatch
    HttpGatewayRouteMatch (..),
    newHttpGatewayRouteMatch,
    httpGatewayRouteMatch_hostname,
    httpGatewayRouteMatch_path,
    httpGatewayRouteMatch_prefix,
    httpGatewayRouteMatch_queryParameters,
    httpGatewayRouteMatch_headers,
    httpGatewayRouteMatch_method,

    -- * HttpGatewayRoutePathRewrite
    HttpGatewayRoutePathRewrite (..),
    newHttpGatewayRoutePathRewrite,
    httpGatewayRoutePathRewrite_exact,

    -- * HttpGatewayRoutePrefixRewrite
    HttpGatewayRoutePrefixRewrite (..),
    newHttpGatewayRoutePrefixRewrite,
    httpGatewayRoutePrefixRewrite_value,
    httpGatewayRoutePrefixRewrite_defaultPrefix,

    -- * HttpGatewayRouteRewrite
    HttpGatewayRouteRewrite (..),
    newHttpGatewayRouteRewrite,
    httpGatewayRouteRewrite_hostname,
    httpGatewayRouteRewrite_path,
    httpGatewayRouteRewrite_prefix,

    -- * HttpPathMatch
    HttpPathMatch (..),
    newHttpPathMatch,
    httpPathMatch_regex,
    httpPathMatch_exact,

    -- * HttpQueryParameter
    HttpQueryParameter (..),
    newHttpQueryParameter,
    httpQueryParameter_match,
    httpQueryParameter_name,

    -- * HttpRetryPolicy
    HttpRetryPolicy (..),
    newHttpRetryPolicy,
    httpRetryPolicy_httpRetryEvents,
    httpRetryPolicy_tcpRetryEvents,
    httpRetryPolicy_maxRetries,
    httpRetryPolicy_perRetryTimeout,

    -- * HttpRoute
    HttpRoute (..),
    newHttpRoute,
    httpRoute_retryPolicy,
    httpRoute_timeout,
    httpRoute_action,
    httpRoute_match,

    -- * HttpRouteAction
    HttpRouteAction (..),
    newHttpRouteAction,
    httpRouteAction_weightedTargets,

    -- * HttpRouteHeader
    HttpRouteHeader (..),
    newHttpRouteHeader,
    httpRouteHeader_invert,
    httpRouteHeader_match,
    httpRouteHeader_name,

    -- * HttpRouteMatch
    HttpRouteMatch (..),
    newHttpRouteMatch,
    httpRouteMatch_path,
    httpRouteMatch_prefix,
    httpRouteMatch_queryParameters,
    httpRouteMatch_headers,
    httpRouteMatch_method,
    httpRouteMatch_scheme,

    -- * HttpTimeout
    HttpTimeout (..),
    newHttpTimeout,
    httpTimeout_idle,
    httpTimeout_perRequest,

    -- * Listener
    Listener (..),
    newListener,
    listener_healthCheck,
    listener_connectionPool,
    listener_tls,
    listener_outlierDetection,
    listener_timeout,
    listener_portMapping,

    -- * ListenerTimeout
    ListenerTimeout (..),
    newListenerTimeout,
    listenerTimeout_http2,
    listenerTimeout_grpc,
    listenerTimeout_tcp,
    listenerTimeout_http,

    -- * ListenerTls
    ListenerTls (..),
    newListenerTls,
    listenerTls_validation,
    listenerTls_certificate,
    listenerTls_mode,

    -- * ListenerTlsAcmCertificate
    ListenerTlsAcmCertificate (..),
    newListenerTlsAcmCertificate,
    listenerTlsAcmCertificate_certificateArn,

    -- * ListenerTlsCertificate
    ListenerTlsCertificate (..),
    newListenerTlsCertificate,
    listenerTlsCertificate_acm,
    listenerTlsCertificate_sds,
    listenerTlsCertificate_file,

    -- * ListenerTlsFileCertificate
    ListenerTlsFileCertificate (..),
    newListenerTlsFileCertificate,
    listenerTlsFileCertificate_certificateChain,
    listenerTlsFileCertificate_privateKey,

    -- * ListenerTlsSdsCertificate
    ListenerTlsSdsCertificate (..),
    newListenerTlsSdsCertificate,
    listenerTlsSdsCertificate_secretName,

    -- * ListenerTlsValidationContext
    ListenerTlsValidationContext (..),
    newListenerTlsValidationContext,
    listenerTlsValidationContext_subjectAlternativeNames,
    listenerTlsValidationContext_trust,

    -- * ListenerTlsValidationContextTrust
    ListenerTlsValidationContextTrust (..),
    newListenerTlsValidationContextTrust,
    listenerTlsValidationContextTrust_sds,
    listenerTlsValidationContextTrust_file,

    -- * Logging
    Logging (..),
    newLogging,
    logging_accessLog,

    -- * MatchRange
    MatchRange (..),
    newMatchRange,
    matchRange_end,
    matchRange_start,

    -- * MeshData
    MeshData (..),
    newMeshData,
    meshData_meshName,
    meshData_metadata,
    meshData_spec,
    meshData_status,

    -- * MeshRef
    MeshRef (..),
    newMeshRef,
    meshRef_arn,
    meshRef_createdAt,
    meshRef_lastUpdatedAt,
    meshRef_meshName,
    meshRef_meshOwner,
    meshRef_resourceOwner,
    meshRef_version,

    -- * MeshSpec
    MeshSpec (..),
    newMeshSpec,
    meshSpec_egressFilter,

    -- * MeshStatus
    MeshStatus (..),
    newMeshStatus,
    meshStatus_status,

    -- * OutlierDetection
    OutlierDetection (..),
    newOutlierDetection,
    outlierDetection_baseEjectionDuration,
    outlierDetection_interval,
    outlierDetection_maxEjectionPercent,
    outlierDetection_maxServerErrors,

    -- * PortMapping
    PortMapping (..),
    newPortMapping,
    portMapping_port,
    portMapping_protocol,

    -- * QueryParameterMatch
    QueryParameterMatch (..),
    newQueryParameterMatch,
    queryParameterMatch_exact,

    -- * ResourceMetadata
    ResourceMetadata (..),
    newResourceMetadata,
    resourceMetadata_arn,
    resourceMetadata_createdAt,
    resourceMetadata_lastUpdatedAt,
    resourceMetadata_meshOwner,
    resourceMetadata_resourceOwner,
    resourceMetadata_uid,
    resourceMetadata_version,

    -- * RouteData
    RouteData (..),
    newRouteData,
    routeData_meshName,
    routeData_metadata,
    routeData_routeName,
    routeData_spec,
    routeData_status,
    routeData_virtualRouterName,

    -- * RouteRef
    RouteRef (..),
    newRouteRef,
    routeRef_arn,
    routeRef_createdAt,
    routeRef_lastUpdatedAt,
    routeRef_meshName,
    routeRef_meshOwner,
    routeRef_resourceOwner,
    routeRef_routeName,
    routeRef_version,
    routeRef_virtualRouterName,

    -- * RouteSpec
    RouteSpec (..),
    newRouteSpec,
    routeSpec_priority,
    routeSpec_http2Route,
    routeSpec_grpcRoute,
    routeSpec_tcpRoute,
    routeSpec_httpRoute,

    -- * RouteStatus
    RouteStatus (..),
    newRouteStatus,
    routeStatus_status,

    -- * ServiceDiscovery
    ServiceDiscovery (..),
    newServiceDiscovery,
    serviceDiscovery_awsCloudMap,
    serviceDiscovery_dns,

    -- * SubjectAlternativeNameMatchers
    SubjectAlternativeNameMatchers (..),
    newSubjectAlternativeNameMatchers,
    subjectAlternativeNameMatchers_exact,

    -- * SubjectAlternativeNames
    SubjectAlternativeNames (..),
    newSubjectAlternativeNames,
    subjectAlternativeNames_match,

    -- * TagRef
    TagRef (..),
    newTagRef,
    tagRef_key,
    tagRef_value,

    -- * TcpRoute
    TcpRoute (..),
    newTcpRoute,
    tcpRoute_timeout,
    tcpRoute_action,

    -- * TcpRouteAction
    TcpRouteAction (..),
    newTcpRouteAction,
    tcpRouteAction_weightedTargets,

    -- * TcpTimeout
    TcpTimeout (..),
    newTcpTimeout,
    tcpTimeout_idle,

    -- * TlsValidationContext
    TlsValidationContext (..),
    newTlsValidationContext,
    tlsValidationContext_subjectAlternativeNames,
    tlsValidationContext_trust,

    -- * TlsValidationContextAcmTrust
    TlsValidationContextAcmTrust (..),
    newTlsValidationContextAcmTrust,
    tlsValidationContextAcmTrust_certificateAuthorityArns,

    -- * TlsValidationContextFileTrust
    TlsValidationContextFileTrust (..),
    newTlsValidationContextFileTrust,
    tlsValidationContextFileTrust_certificateChain,

    -- * TlsValidationContextSdsTrust
    TlsValidationContextSdsTrust (..),
    newTlsValidationContextSdsTrust,
    tlsValidationContextSdsTrust_secretName,

    -- * TlsValidationContextTrust
    TlsValidationContextTrust (..),
    newTlsValidationContextTrust,
    tlsValidationContextTrust_acm,
    tlsValidationContextTrust_sds,
    tlsValidationContextTrust_file,

    -- * VirtualGatewayAccessLog
    VirtualGatewayAccessLog (..),
    newVirtualGatewayAccessLog,
    virtualGatewayAccessLog_file,

    -- * VirtualGatewayBackendDefaults
    VirtualGatewayBackendDefaults (..),
    newVirtualGatewayBackendDefaults,
    virtualGatewayBackendDefaults_clientPolicy,

    -- * VirtualGatewayClientPolicy
    VirtualGatewayClientPolicy (..),
    newVirtualGatewayClientPolicy,
    virtualGatewayClientPolicy_tls,

    -- * VirtualGatewayClientPolicyTls
    VirtualGatewayClientPolicyTls (..),
    newVirtualGatewayClientPolicyTls,
    virtualGatewayClientPolicyTls_ports,
    virtualGatewayClientPolicyTls_certificate,
    virtualGatewayClientPolicyTls_enforce,
    virtualGatewayClientPolicyTls_validation,

    -- * VirtualGatewayClientTlsCertificate
    VirtualGatewayClientTlsCertificate (..),
    newVirtualGatewayClientTlsCertificate,
    virtualGatewayClientTlsCertificate_sds,
    virtualGatewayClientTlsCertificate_file,

    -- * VirtualGatewayConnectionPool
    VirtualGatewayConnectionPool (..),
    newVirtualGatewayConnectionPool,
    virtualGatewayConnectionPool_http2,
    virtualGatewayConnectionPool_grpc,
    virtualGatewayConnectionPool_http,

    -- * VirtualGatewayData
    VirtualGatewayData (..),
    newVirtualGatewayData,
    virtualGatewayData_meshName,
    virtualGatewayData_metadata,
    virtualGatewayData_spec,
    virtualGatewayData_status,
    virtualGatewayData_virtualGatewayName,

    -- * VirtualGatewayFileAccessLog
    VirtualGatewayFileAccessLog (..),
    newVirtualGatewayFileAccessLog,
    virtualGatewayFileAccessLog_path,

    -- * VirtualGatewayGrpcConnectionPool
    VirtualGatewayGrpcConnectionPool (..),
    newVirtualGatewayGrpcConnectionPool,
    virtualGatewayGrpcConnectionPool_maxRequests,

    -- * VirtualGatewayHealthCheckPolicy
    VirtualGatewayHealthCheckPolicy (..),
    newVirtualGatewayHealthCheckPolicy,
    virtualGatewayHealthCheckPolicy_path,
    virtualGatewayHealthCheckPolicy_port,
    virtualGatewayHealthCheckPolicy_healthyThreshold,
    virtualGatewayHealthCheckPolicy_intervalMillis,
    virtualGatewayHealthCheckPolicy_protocol,
    virtualGatewayHealthCheckPolicy_timeoutMillis,
    virtualGatewayHealthCheckPolicy_unhealthyThreshold,

    -- * VirtualGatewayHttp2ConnectionPool
    VirtualGatewayHttp2ConnectionPool (..),
    newVirtualGatewayHttp2ConnectionPool,
    virtualGatewayHttp2ConnectionPool_maxRequests,

    -- * VirtualGatewayHttpConnectionPool
    VirtualGatewayHttpConnectionPool (..),
    newVirtualGatewayHttpConnectionPool,
    virtualGatewayHttpConnectionPool_maxPendingRequests,
    virtualGatewayHttpConnectionPool_maxConnections,

    -- * VirtualGatewayListener
    VirtualGatewayListener (..),
    newVirtualGatewayListener,
    virtualGatewayListener_healthCheck,
    virtualGatewayListener_connectionPool,
    virtualGatewayListener_tls,
    virtualGatewayListener_portMapping,

    -- * VirtualGatewayListenerTls
    VirtualGatewayListenerTls (..),
    newVirtualGatewayListenerTls,
    virtualGatewayListenerTls_validation,
    virtualGatewayListenerTls_certificate,
    virtualGatewayListenerTls_mode,

    -- * VirtualGatewayListenerTlsAcmCertificate
    VirtualGatewayListenerTlsAcmCertificate (..),
    newVirtualGatewayListenerTlsAcmCertificate,
    virtualGatewayListenerTlsAcmCertificate_certificateArn,

    -- * VirtualGatewayListenerTlsCertificate
    VirtualGatewayListenerTlsCertificate (..),
    newVirtualGatewayListenerTlsCertificate,
    virtualGatewayListenerTlsCertificate_acm,
    virtualGatewayListenerTlsCertificate_sds,
    virtualGatewayListenerTlsCertificate_file,

    -- * VirtualGatewayListenerTlsFileCertificate
    VirtualGatewayListenerTlsFileCertificate (..),
    newVirtualGatewayListenerTlsFileCertificate,
    virtualGatewayListenerTlsFileCertificate_certificateChain,
    virtualGatewayListenerTlsFileCertificate_privateKey,

    -- * VirtualGatewayListenerTlsSdsCertificate
    VirtualGatewayListenerTlsSdsCertificate (..),
    newVirtualGatewayListenerTlsSdsCertificate,
    virtualGatewayListenerTlsSdsCertificate_secretName,

    -- * VirtualGatewayListenerTlsValidationContext
    VirtualGatewayListenerTlsValidationContext (..),
    newVirtualGatewayListenerTlsValidationContext,
    virtualGatewayListenerTlsValidationContext_subjectAlternativeNames,
    virtualGatewayListenerTlsValidationContext_trust,

    -- * VirtualGatewayListenerTlsValidationContextTrust
    VirtualGatewayListenerTlsValidationContextTrust (..),
    newVirtualGatewayListenerTlsValidationContextTrust,
    virtualGatewayListenerTlsValidationContextTrust_sds,
    virtualGatewayListenerTlsValidationContextTrust_file,

    -- * VirtualGatewayLogging
    VirtualGatewayLogging (..),
    newVirtualGatewayLogging,
    virtualGatewayLogging_accessLog,

    -- * VirtualGatewayPortMapping
    VirtualGatewayPortMapping (..),
    newVirtualGatewayPortMapping,
    virtualGatewayPortMapping_port,
    virtualGatewayPortMapping_protocol,

    -- * VirtualGatewayRef
    VirtualGatewayRef (..),
    newVirtualGatewayRef,
    virtualGatewayRef_arn,
    virtualGatewayRef_createdAt,
    virtualGatewayRef_lastUpdatedAt,
    virtualGatewayRef_meshName,
    virtualGatewayRef_meshOwner,
    virtualGatewayRef_resourceOwner,
    virtualGatewayRef_version,
    virtualGatewayRef_virtualGatewayName,

    -- * VirtualGatewaySpec
    VirtualGatewaySpec (..),
    newVirtualGatewaySpec,
    virtualGatewaySpec_backendDefaults,
    virtualGatewaySpec_logging,
    virtualGatewaySpec_listeners,

    -- * VirtualGatewayStatus
    VirtualGatewayStatus (..),
    newVirtualGatewayStatus,
    virtualGatewayStatus_status,

    -- * VirtualGatewayTlsValidationContext
    VirtualGatewayTlsValidationContext (..),
    newVirtualGatewayTlsValidationContext,
    virtualGatewayTlsValidationContext_subjectAlternativeNames,
    virtualGatewayTlsValidationContext_trust,

    -- * VirtualGatewayTlsValidationContextAcmTrust
    VirtualGatewayTlsValidationContextAcmTrust (..),
    newVirtualGatewayTlsValidationContextAcmTrust,
    virtualGatewayTlsValidationContextAcmTrust_certificateAuthorityArns,

    -- * VirtualGatewayTlsValidationContextFileTrust
    VirtualGatewayTlsValidationContextFileTrust (..),
    newVirtualGatewayTlsValidationContextFileTrust,
    virtualGatewayTlsValidationContextFileTrust_certificateChain,

    -- * VirtualGatewayTlsValidationContextSdsTrust
    VirtualGatewayTlsValidationContextSdsTrust (..),
    newVirtualGatewayTlsValidationContextSdsTrust,
    virtualGatewayTlsValidationContextSdsTrust_secretName,

    -- * VirtualGatewayTlsValidationContextTrust
    VirtualGatewayTlsValidationContextTrust (..),
    newVirtualGatewayTlsValidationContextTrust,
    virtualGatewayTlsValidationContextTrust_acm,
    virtualGatewayTlsValidationContextTrust_sds,
    virtualGatewayTlsValidationContextTrust_file,

    -- * VirtualNodeConnectionPool
    VirtualNodeConnectionPool (..),
    newVirtualNodeConnectionPool,
    virtualNodeConnectionPool_http2,
    virtualNodeConnectionPool_grpc,
    virtualNodeConnectionPool_tcp,
    virtualNodeConnectionPool_http,

    -- * VirtualNodeData
    VirtualNodeData (..),
    newVirtualNodeData,
    virtualNodeData_meshName,
    virtualNodeData_metadata,
    virtualNodeData_spec,
    virtualNodeData_status,
    virtualNodeData_virtualNodeName,

    -- * VirtualNodeGrpcConnectionPool
    VirtualNodeGrpcConnectionPool (..),
    newVirtualNodeGrpcConnectionPool,
    virtualNodeGrpcConnectionPool_maxRequests,

    -- * VirtualNodeHttp2ConnectionPool
    VirtualNodeHttp2ConnectionPool (..),
    newVirtualNodeHttp2ConnectionPool,
    virtualNodeHttp2ConnectionPool_maxRequests,

    -- * VirtualNodeHttpConnectionPool
    VirtualNodeHttpConnectionPool (..),
    newVirtualNodeHttpConnectionPool,
    virtualNodeHttpConnectionPool_maxPendingRequests,
    virtualNodeHttpConnectionPool_maxConnections,

    -- * VirtualNodeRef
    VirtualNodeRef (..),
    newVirtualNodeRef,
    virtualNodeRef_arn,
    virtualNodeRef_createdAt,
    virtualNodeRef_lastUpdatedAt,
    virtualNodeRef_meshName,
    virtualNodeRef_meshOwner,
    virtualNodeRef_resourceOwner,
    virtualNodeRef_version,
    virtualNodeRef_virtualNodeName,

    -- * VirtualNodeServiceProvider
    VirtualNodeServiceProvider (..),
    newVirtualNodeServiceProvider,
    virtualNodeServiceProvider_virtualNodeName,

    -- * VirtualNodeSpec
    VirtualNodeSpec (..),
    newVirtualNodeSpec,
    virtualNodeSpec_backends,
    virtualNodeSpec_backendDefaults,
    virtualNodeSpec_serviceDiscovery,
    virtualNodeSpec_listeners,
    virtualNodeSpec_logging,

    -- * VirtualNodeStatus
    VirtualNodeStatus (..),
    newVirtualNodeStatus,
    virtualNodeStatus_status,

    -- * VirtualNodeTcpConnectionPool
    VirtualNodeTcpConnectionPool (..),
    newVirtualNodeTcpConnectionPool,
    virtualNodeTcpConnectionPool_maxConnections,

    -- * VirtualRouterData
    VirtualRouterData (..),
    newVirtualRouterData,
    virtualRouterData_meshName,
    virtualRouterData_metadata,
    virtualRouterData_spec,
    virtualRouterData_status,
    virtualRouterData_virtualRouterName,

    -- * VirtualRouterListener
    VirtualRouterListener (..),
    newVirtualRouterListener,
    virtualRouterListener_portMapping,

    -- * VirtualRouterRef
    VirtualRouterRef (..),
    newVirtualRouterRef,
    virtualRouterRef_arn,
    virtualRouterRef_createdAt,
    virtualRouterRef_lastUpdatedAt,
    virtualRouterRef_meshName,
    virtualRouterRef_meshOwner,
    virtualRouterRef_resourceOwner,
    virtualRouterRef_version,
    virtualRouterRef_virtualRouterName,

    -- * VirtualRouterServiceProvider
    VirtualRouterServiceProvider (..),
    newVirtualRouterServiceProvider,
    virtualRouterServiceProvider_virtualRouterName,

    -- * VirtualRouterSpec
    VirtualRouterSpec (..),
    newVirtualRouterSpec,
    virtualRouterSpec_listeners,

    -- * VirtualRouterStatus
    VirtualRouterStatus (..),
    newVirtualRouterStatus,
    virtualRouterStatus_status,

    -- * VirtualServiceBackend
    VirtualServiceBackend (..),
    newVirtualServiceBackend,
    virtualServiceBackend_clientPolicy,
    virtualServiceBackend_virtualServiceName,

    -- * VirtualServiceData
    VirtualServiceData (..),
    newVirtualServiceData,
    virtualServiceData_meshName,
    virtualServiceData_metadata,
    virtualServiceData_spec,
    virtualServiceData_status,
    virtualServiceData_virtualServiceName,

    -- * VirtualServiceProvider
    VirtualServiceProvider (..),
    newVirtualServiceProvider,
    virtualServiceProvider_virtualRouter,
    virtualServiceProvider_virtualNode,

    -- * VirtualServiceRef
    VirtualServiceRef (..),
    newVirtualServiceRef,
    virtualServiceRef_arn,
    virtualServiceRef_createdAt,
    virtualServiceRef_lastUpdatedAt,
    virtualServiceRef_meshName,
    virtualServiceRef_meshOwner,
    virtualServiceRef_resourceOwner,
    virtualServiceRef_version,
    virtualServiceRef_virtualServiceName,

    -- * VirtualServiceSpec
    VirtualServiceSpec (..),
    newVirtualServiceSpec,
    virtualServiceSpec_provider,

    -- * VirtualServiceStatus
    VirtualServiceStatus (..),
    newVirtualServiceStatus,
    virtualServiceStatus_status,

    -- * WeightedTarget
    WeightedTarget (..),
    newWeightedTarget,
    weightedTarget_virtualNode,
    weightedTarget_weight,
  )
where

import Amazonka.AppMesh.Types.AccessLog
import Amazonka.AppMesh.Types.AwsCloudMapInstanceAttribute
import Amazonka.AppMesh.Types.AwsCloudMapServiceDiscovery
import Amazonka.AppMesh.Types.Backend
import Amazonka.AppMesh.Types.BackendDefaults
import Amazonka.AppMesh.Types.ClientPolicy
import Amazonka.AppMesh.Types.ClientPolicyTls
import Amazonka.AppMesh.Types.ClientTlsCertificate
import Amazonka.AppMesh.Types.DefaultGatewayRouteRewrite
import Amazonka.AppMesh.Types.DnsResponseType
import Amazonka.AppMesh.Types.DnsServiceDiscovery
import Amazonka.AppMesh.Types.Duration
import Amazonka.AppMesh.Types.DurationUnit
import Amazonka.AppMesh.Types.EgressFilter
import Amazonka.AppMesh.Types.EgressFilterType
import Amazonka.AppMesh.Types.FileAccessLog
import Amazonka.AppMesh.Types.GatewayRouteData
import Amazonka.AppMesh.Types.GatewayRouteHostnameMatch
import Amazonka.AppMesh.Types.GatewayRouteHostnameRewrite
import Amazonka.AppMesh.Types.GatewayRouteRef
import Amazonka.AppMesh.Types.GatewayRouteSpec
import Amazonka.AppMesh.Types.GatewayRouteStatus
import Amazonka.AppMesh.Types.GatewayRouteStatusCode
import Amazonka.AppMesh.Types.GatewayRouteTarget
import Amazonka.AppMesh.Types.GatewayRouteVirtualService
import Amazonka.AppMesh.Types.GrpcGatewayRoute
import Amazonka.AppMesh.Types.GrpcGatewayRouteAction
import Amazonka.AppMesh.Types.GrpcGatewayRouteMatch
import Amazonka.AppMesh.Types.GrpcGatewayRouteMetadata
import Amazonka.AppMesh.Types.GrpcGatewayRouteRewrite
import Amazonka.AppMesh.Types.GrpcMetadataMatchMethod
import Amazonka.AppMesh.Types.GrpcRetryPolicy
import Amazonka.AppMesh.Types.GrpcRetryPolicyEvent
import Amazonka.AppMesh.Types.GrpcRoute
import Amazonka.AppMesh.Types.GrpcRouteAction
import Amazonka.AppMesh.Types.GrpcRouteMatch
import Amazonka.AppMesh.Types.GrpcRouteMetadata
import Amazonka.AppMesh.Types.GrpcRouteMetadataMatchMethod
import Amazonka.AppMesh.Types.GrpcTimeout
import Amazonka.AppMesh.Types.HeaderMatchMethod
import Amazonka.AppMesh.Types.HealthCheckPolicy
import Amazonka.AppMesh.Types.HttpGatewayRoute
import Amazonka.AppMesh.Types.HttpGatewayRouteAction
import Amazonka.AppMesh.Types.HttpGatewayRouteHeader
import Amazonka.AppMesh.Types.HttpGatewayRouteMatch
import Amazonka.AppMesh.Types.HttpGatewayRoutePathRewrite
import Amazonka.AppMesh.Types.HttpGatewayRoutePrefixRewrite
import Amazonka.AppMesh.Types.HttpGatewayRouteRewrite
import Amazonka.AppMesh.Types.HttpMethod
import Amazonka.AppMesh.Types.HttpPathMatch
import Amazonka.AppMesh.Types.HttpQueryParameter
import Amazonka.AppMesh.Types.HttpRetryPolicy
import Amazonka.AppMesh.Types.HttpRoute
import Amazonka.AppMesh.Types.HttpRouteAction
import Amazonka.AppMesh.Types.HttpRouteHeader
import Amazonka.AppMesh.Types.HttpRouteMatch
import Amazonka.AppMesh.Types.HttpScheme
import Amazonka.AppMesh.Types.HttpTimeout
import Amazonka.AppMesh.Types.Listener
import Amazonka.AppMesh.Types.ListenerTimeout
import Amazonka.AppMesh.Types.ListenerTls
import Amazonka.AppMesh.Types.ListenerTlsAcmCertificate
import Amazonka.AppMesh.Types.ListenerTlsCertificate
import Amazonka.AppMesh.Types.ListenerTlsFileCertificate
import Amazonka.AppMesh.Types.ListenerTlsMode
import Amazonka.AppMesh.Types.ListenerTlsSdsCertificate
import Amazonka.AppMesh.Types.ListenerTlsValidationContext
import Amazonka.AppMesh.Types.ListenerTlsValidationContextTrust
import Amazonka.AppMesh.Types.Logging
import Amazonka.AppMesh.Types.MatchRange
import Amazonka.AppMesh.Types.MeshData
import Amazonka.AppMesh.Types.MeshRef
import Amazonka.AppMesh.Types.MeshSpec
import Amazonka.AppMesh.Types.MeshStatus
import Amazonka.AppMesh.Types.MeshStatusCode
import Amazonka.AppMesh.Types.OutlierDetection
import Amazonka.AppMesh.Types.PortMapping
import Amazonka.AppMesh.Types.PortProtocol
import Amazonka.AppMesh.Types.QueryParameterMatch
import Amazonka.AppMesh.Types.ResourceMetadata
import Amazonka.AppMesh.Types.RouteData
import Amazonka.AppMesh.Types.RouteRef
import Amazonka.AppMesh.Types.RouteSpec
import Amazonka.AppMesh.Types.RouteStatus
import Amazonka.AppMesh.Types.RouteStatusCode
import Amazonka.AppMesh.Types.ServiceDiscovery
import Amazonka.AppMesh.Types.SubjectAlternativeNameMatchers
import Amazonka.AppMesh.Types.SubjectAlternativeNames
import Amazonka.AppMesh.Types.TagRef
import Amazonka.AppMesh.Types.TcpRetryPolicyEvent
import Amazonka.AppMesh.Types.TcpRoute
import Amazonka.AppMesh.Types.TcpRouteAction
import Amazonka.AppMesh.Types.TcpTimeout
import Amazonka.AppMesh.Types.TlsValidationContext
import Amazonka.AppMesh.Types.TlsValidationContextAcmTrust
import Amazonka.AppMesh.Types.TlsValidationContextFileTrust
import Amazonka.AppMesh.Types.TlsValidationContextSdsTrust
import Amazonka.AppMesh.Types.TlsValidationContextTrust
import Amazonka.AppMesh.Types.VirtualGatewayAccessLog
import Amazonka.AppMesh.Types.VirtualGatewayBackendDefaults
import Amazonka.AppMesh.Types.VirtualGatewayClientPolicy
import Amazonka.AppMesh.Types.VirtualGatewayClientPolicyTls
import Amazonka.AppMesh.Types.VirtualGatewayClientTlsCertificate
import Amazonka.AppMesh.Types.VirtualGatewayConnectionPool
import Amazonka.AppMesh.Types.VirtualGatewayData
import Amazonka.AppMesh.Types.VirtualGatewayFileAccessLog
import Amazonka.AppMesh.Types.VirtualGatewayGrpcConnectionPool
import Amazonka.AppMesh.Types.VirtualGatewayHealthCheckPolicy
import Amazonka.AppMesh.Types.VirtualGatewayHttp2ConnectionPool
import Amazonka.AppMesh.Types.VirtualGatewayHttpConnectionPool
import Amazonka.AppMesh.Types.VirtualGatewayListener
import Amazonka.AppMesh.Types.VirtualGatewayListenerTls
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsCertificate
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsMode
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContext
import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust
import Amazonka.AppMesh.Types.VirtualGatewayLogging
import Amazonka.AppMesh.Types.VirtualGatewayPortMapping
import Amazonka.AppMesh.Types.VirtualGatewayPortProtocol
import Amazonka.AppMesh.Types.VirtualGatewayRef
import Amazonka.AppMesh.Types.VirtualGatewaySpec
import Amazonka.AppMesh.Types.VirtualGatewayStatus
import Amazonka.AppMesh.Types.VirtualGatewayStatusCode
import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContext
import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust
import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust
import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust
import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextTrust
import Amazonka.AppMesh.Types.VirtualNodeConnectionPool
import Amazonka.AppMesh.Types.VirtualNodeData
import Amazonka.AppMesh.Types.VirtualNodeGrpcConnectionPool
import Amazonka.AppMesh.Types.VirtualNodeHttp2ConnectionPool
import Amazonka.AppMesh.Types.VirtualNodeHttpConnectionPool
import Amazonka.AppMesh.Types.VirtualNodeRef
import Amazonka.AppMesh.Types.VirtualNodeServiceProvider
import Amazonka.AppMesh.Types.VirtualNodeSpec
import Amazonka.AppMesh.Types.VirtualNodeStatus
import Amazonka.AppMesh.Types.VirtualNodeStatusCode
import Amazonka.AppMesh.Types.VirtualNodeTcpConnectionPool
import Amazonka.AppMesh.Types.VirtualRouterData
import Amazonka.AppMesh.Types.VirtualRouterListener
import Amazonka.AppMesh.Types.VirtualRouterRef
import Amazonka.AppMesh.Types.VirtualRouterServiceProvider
import Amazonka.AppMesh.Types.VirtualRouterSpec
import Amazonka.AppMesh.Types.VirtualRouterStatus
import Amazonka.AppMesh.Types.VirtualRouterStatusCode
import Amazonka.AppMesh.Types.VirtualServiceBackend
import Amazonka.AppMesh.Types.VirtualServiceData
import Amazonka.AppMesh.Types.VirtualServiceProvider
import Amazonka.AppMesh.Types.VirtualServiceRef
import Amazonka.AppMesh.Types.VirtualServiceSpec
import Amazonka.AppMesh.Types.VirtualServiceStatus
import Amazonka.AppMesh.Types.VirtualServiceStatusCode
import Amazonka.AppMesh.Types.WeightedTarget
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Sign.V4 as Sign

-- | API version @2019-01-25@ of the Amazon App Mesh SDK configuration.
defaultService :: Core.Service
defaultService :: Service
defaultService =
  Service :: Abbrev
-> Signer
-> ByteString
-> ByteString
-> ByteString
-> (Region -> Endpoint)
-> Maybe Seconds
-> (Status -> Bool)
-> (Status -> [Header] -> ByteStringLazy -> Error)
-> Retry
-> Service
Core.Service
    { $sel:_serviceAbbrev:Service :: Abbrev
Core._serviceAbbrev = Abbrev
"AppMesh",
      $sel:_serviceSigner:Service :: Signer
Core._serviceSigner = Signer
Sign.v4,
      $sel:_serviceEndpointPrefix:Service :: ByteString
Core._serviceEndpointPrefix = ByteString
"appmesh",
      $sel:_serviceSigningName:Service :: ByteString
Core._serviceSigningName = ByteString
"appmesh",
      $sel:_serviceVersion:Service :: ByteString
Core._serviceVersion = ByteString
"2019-01-25",
      $sel:_serviceEndpoint:Service :: Region -> Endpoint
Core._serviceEndpoint =
        Service -> Region -> Endpoint
Core.defaultEndpoint Service
defaultService,
      $sel:_serviceTimeout:Service :: Maybe Seconds
Core._serviceTimeout = Seconds -> Maybe Seconds
forall a. a -> Maybe a
Prelude.Just Seconds
70,
      $sel:_serviceCheck:Service :: Status -> Bool
Core._serviceCheck = Status -> Bool
Core.statusSuccess,
      $sel:_serviceError:Service :: Status -> [Header] -> ByteStringLazy -> Error
Core._serviceError = Abbrev -> Status -> [Header] -> ByteStringLazy -> Error
Core.parseJSONError Abbrev
"AppMesh",
      $sel:_serviceRetry:Service :: Retry
Core._serviceRetry = Retry
retry
    }
  where
    retry :: Retry
retry =
      Exponential :: Double -> Int -> Int -> (ServiceError -> Maybe Text) -> Retry
Core.Exponential
        { $sel:_retryBase:Exponential :: Double
Core._retryBase = Double
5.0e-2,
          $sel:_retryGrowth:Exponential :: Int
Core._retryGrowth = Int
2,
          $sel:_retryAttempts:Exponential :: Int
Core._retryAttempts = Int
5,
          $sel:_retryCheck:Exponential :: ServiceError -> Maybe Text
Core._retryCheck = ServiceError -> Maybe Text
forall a. IsString a => ServiceError -> Maybe a
check
        }
    check :: ServiceError -> Maybe a
check ServiceError
e
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has
          ( ErrorCode -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
ErrorCode -> Optic' p f ServiceError ServiceError
Core.hasCode ErrorCode
"ThrottledException"
              Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400
          )
          ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"throttled_exception"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has (Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
429) ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"too_many_requests"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has
          ( ErrorCode -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
ErrorCode -> Optic' p f ServiceError ServiceError
Core.hasCode ErrorCode
"ThrottlingException"
              Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400
          )
          ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"throttling_exception"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has
          ( ErrorCode -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
ErrorCode -> Optic' p f ServiceError ServiceError
Core.hasCode ErrorCode
"Throttling"
              Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400
          )
          ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"throttling"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has
          ( ErrorCode -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
ErrorCode -> Optic' p f ServiceError ServiceError
Core.hasCode
              ErrorCode
"ProvisionedThroughputExceededException"
              Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400
          )
          ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"throughput_exceeded"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has (Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
504) ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"gateway_timeout"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has
          ( ErrorCode -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
ErrorCode -> Optic' p f ServiceError ServiceError
Core.hasCode ErrorCode
"RequestThrottledException"
              Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
-> Getting Any ServiceError ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400
          )
          ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"request_throttled_exception"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has (Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
502) ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"bad_gateway"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has (Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
503) ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"service_unavailable"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has (Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
500) ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"general_server_error"
      | Getting Any ServiceError ServiceError -> ServiceError -> Bool
forall s a. Getting Any s a -> s -> Bool
Lens.has (Int -> Getting Any ServiceError ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
509) ServiceError
e =
        a -> Maybe a
forall a. a -> Maybe a
Prelude.Just a
"limit_exceeded"
      | Bool
Prelude.otherwise = Maybe a
forall a. Maybe a
Prelude.Nothing

-- | The request exceeds the maximum allowed number of tags allowed per
-- resource. The current limit is 50 user tags per resource. You must
-- reduce the number of tags in the request. None of the tags in this
-- request were applied.
_TooManyTagsException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_TooManyTagsException :: Getting (First ServiceError) a ServiceError
_TooManyTagsException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"TooManyTagsException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400

-- | The request contains a client token that was used for a previous update
-- resource call with different specifications. Try the request again with
-- a new client token.
_ConflictException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_ConflictException :: Getting (First ServiceError) a ServiceError
_ConflictException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"ConflictException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
409

-- | You don\'t have permissions to perform this action.
_ForbiddenException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_ForbiddenException :: Getting (First ServiceError) a ServiceError
_ForbiddenException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"ForbiddenException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
403

-- | The specified resource doesn\'t exist. Check your request syntax and try
-- again.
_NotFoundException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_NotFoundException :: Getting (First ServiceError) a ServiceError
_NotFoundException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"NotFoundException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
404

-- | The maximum request rate permitted by the App Mesh APIs has been
-- exceeded for your account. For best results, use an increasing or
-- variable sleep interval between requests.
_TooManyRequestsException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_TooManyRequestsException :: Getting (First ServiceError) a ServiceError
_TooManyRequestsException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"TooManyRequestsException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
429

-- | The request processing has failed because of an unknown error,
-- exception, or failure.
_InternalServerErrorException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_InternalServerErrorException :: Getting (First ServiceError) a ServiceError
_InternalServerErrorException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"InternalServerErrorException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
500

-- | The request has failed due to a temporary failure of the service.
_ServiceUnavailableException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_ServiceUnavailableException :: Getting (First ServiceError) a ServiceError
_ServiceUnavailableException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"ServiceUnavailableException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
503

-- | The request syntax was malformed. Check your request syntax and try
-- again.
_BadRequestException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_BadRequestException :: Getting (First ServiceError) a ServiceError
_BadRequestException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"BadRequestException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400

-- | You have exceeded a service limit for your account. For more
-- information, see
-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html Service Limits>
-- in the /AWS App Mesh User Guide/.
_LimitExceededException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_LimitExceededException :: Getting (First ServiceError) a ServiceError
_LimitExceededException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"LimitExceededException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
400

-- | You can\'t delete the specified resource because it\'s in use or
-- required by another resource.
_ResourceInUseException :: Core.AsError a => Lens.Getting (Prelude.First Core.ServiceError) a Core.ServiceError
_ResourceInUseException :: Getting (First ServiceError) a ServiceError
_ResourceInUseException =
  Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
forall a.
AsError a =>
Service -> ErrorCode -> Getting (First ServiceError) a ServiceError
Core._MatchServiceError
    Service
defaultService
    ErrorCode
"ResourceInUseException"
    Getting (First ServiceError) a ServiceError
-> ((ServiceError -> Const (First ServiceError) ServiceError)
    -> ServiceError -> Const (First ServiceError) ServiceError)
-> Getting (First ServiceError) a ServiceError
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Int
-> (ServiceError -> Const (First ServiceError) ServiceError)
-> ServiceError
-> Const (First ServiceError) ServiceError
forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Int -> Optic' p f ServiceError ServiceError
Core.hasStatus Int
409