packages feed

amazonka-route53-autonaming-2.0: gen/Amazonka/Route53AutoNaming/Types.hs

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

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

-- |
-- Module      : Amazonka.Route53AutoNaming.Types
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Route53AutoNaming.Types
  ( -- * Service Configuration
    defaultService,

    -- * Errors
    _CustomHealthNotFound,
    _DuplicateRequest,
    _InstanceNotFound,
    _InvalidInput,
    _NamespaceAlreadyExists,
    _NamespaceNotFound,
    _OperationNotFound,
    _RequestLimitExceeded,
    _ResourceInUse,
    _ResourceLimitExceeded,
    _ResourceNotFoundException,
    _ServiceAlreadyExists,
    _ServiceNotFound,
    _TooManyTagsException,

    -- * CustomHealthStatus
    CustomHealthStatus (..),

    -- * FilterCondition
    FilterCondition (..),

    -- * HealthCheckType
    HealthCheckType (..),

    -- * HealthStatus
    HealthStatus (..),

    -- * HealthStatusFilter
    HealthStatusFilter (..),

    -- * NamespaceFilterName
    NamespaceFilterName (..),

    -- * NamespaceType
    NamespaceType (..),

    -- * OperationFilterName
    OperationFilterName (..),

    -- * OperationStatus
    OperationStatus (..),

    -- * OperationTargetType
    OperationTargetType (..),

    -- * OperationType
    OperationType (..),

    -- * RecordType
    RecordType (..),

    -- * RoutingPolicy
    RoutingPolicy (..),

    -- * ServiceFilterName
    ServiceFilterName (..),

    -- * ServiceType
    ServiceType (..),

    -- * ServiceTypeOption
    ServiceTypeOption (..),

    -- * DnsConfig
    DnsConfig (..),
    newDnsConfig,
    dnsConfig_namespaceId,
    dnsConfig_routingPolicy,
    dnsConfig_dnsRecords,

    -- * DnsConfigChange
    DnsConfigChange (..),
    newDnsConfigChange,
    dnsConfigChange_dnsRecords,

    -- * DnsProperties
    DnsProperties (..),
    newDnsProperties,
    dnsProperties_hostedZoneId,
    dnsProperties_soa,

    -- * DnsRecord
    DnsRecord (..),
    newDnsRecord,
    dnsRecord_type,
    dnsRecord_ttl,

    -- * HealthCheckConfig
    HealthCheckConfig (..),
    newHealthCheckConfig,
    healthCheckConfig_failureThreshold,
    healthCheckConfig_resourcePath,
    healthCheckConfig_type,

    -- * HealthCheckCustomConfig
    HealthCheckCustomConfig (..),
    newHealthCheckCustomConfig,
    healthCheckCustomConfig_failureThreshold,

    -- * HttpInstanceSummary
    HttpInstanceSummary (..),
    newHttpInstanceSummary,
    httpInstanceSummary_attributes,
    httpInstanceSummary_healthStatus,
    httpInstanceSummary_instanceId,
    httpInstanceSummary_namespaceName,
    httpInstanceSummary_serviceName,

    -- * HttpNamespaceChange
    HttpNamespaceChange (..),
    newHttpNamespaceChange,
    httpNamespaceChange_description,

    -- * HttpProperties
    HttpProperties (..),
    newHttpProperties,
    httpProperties_httpName,

    -- * Instance
    Instance (..),
    newInstance,
    instance_attributes,
    instance_creatorRequestId,
    instance_id,

    -- * InstanceSummary
    InstanceSummary (..),
    newInstanceSummary,
    instanceSummary_attributes,
    instanceSummary_id,

    -- * Namespace
    Namespace (..),
    newNamespace,
    namespace_arn,
    namespace_createDate,
    namespace_creatorRequestId,
    namespace_description,
    namespace_id,
    namespace_name,
    namespace_properties,
    namespace_serviceCount,
    namespace_type,

    -- * NamespaceFilter
    NamespaceFilter (..),
    newNamespaceFilter,
    namespaceFilter_condition,
    namespaceFilter_name,
    namespaceFilter_values,

    -- * NamespaceProperties
    NamespaceProperties (..),
    newNamespaceProperties,
    namespaceProperties_dnsProperties,
    namespaceProperties_httpProperties,

    -- * NamespaceSummary
    NamespaceSummary (..),
    newNamespaceSummary,
    namespaceSummary_arn,
    namespaceSummary_createDate,
    namespaceSummary_description,
    namespaceSummary_id,
    namespaceSummary_name,
    namespaceSummary_properties,
    namespaceSummary_serviceCount,
    namespaceSummary_type,

    -- * Operation
    Operation (..),
    newOperation,
    operation_createDate,
    operation_errorCode,
    operation_errorMessage,
    operation_id,
    operation_status,
    operation_targets,
    operation_type,
    operation_updateDate,

    -- * OperationFilter
    OperationFilter (..),
    newOperationFilter,
    operationFilter_condition,
    operationFilter_name,
    operationFilter_values,

    -- * OperationSummary
    OperationSummary (..),
    newOperationSummary,
    operationSummary_id,
    operationSummary_status,

    -- * PrivateDnsNamespaceChange
    PrivateDnsNamespaceChange (..),
    newPrivateDnsNamespaceChange,
    privateDnsNamespaceChange_description,
    privateDnsNamespaceChange_properties,

    -- * PrivateDnsNamespaceProperties
    PrivateDnsNamespaceProperties (..),
    newPrivateDnsNamespaceProperties,
    privateDnsNamespaceProperties_dnsProperties,

    -- * PrivateDnsNamespacePropertiesChange
    PrivateDnsNamespacePropertiesChange (..),
    newPrivateDnsNamespacePropertiesChange,
    privateDnsNamespacePropertiesChange_dnsProperties,

    -- * PrivateDnsPropertiesMutable
    PrivateDnsPropertiesMutable (..),
    newPrivateDnsPropertiesMutable,
    privateDnsPropertiesMutable_soa,

    -- * PrivateDnsPropertiesMutableChange
    PrivateDnsPropertiesMutableChange (..),
    newPrivateDnsPropertiesMutableChange,
    privateDnsPropertiesMutableChange_soa,

    -- * PublicDnsNamespaceChange
    PublicDnsNamespaceChange (..),
    newPublicDnsNamespaceChange,
    publicDnsNamespaceChange_description,
    publicDnsNamespaceChange_properties,

    -- * PublicDnsNamespaceProperties
    PublicDnsNamespaceProperties (..),
    newPublicDnsNamespaceProperties,
    publicDnsNamespaceProperties_dnsProperties,

    -- * PublicDnsNamespacePropertiesChange
    PublicDnsNamespacePropertiesChange (..),
    newPublicDnsNamespacePropertiesChange,
    publicDnsNamespacePropertiesChange_dnsProperties,

    -- * PublicDnsPropertiesMutable
    PublicDnsPropertiesMutable (..),
    newPublicDnsPropertiesMutable,
    publicDnsPropertiesMutable_soa,

    -- * PublicDnsPropertiesMutableChange
    PublicDnsPropertiesMutableChange (..),
    newPublicDnsPropertiesMutableChange,
    publicDnsPropertiesMutableChange_soa,

    -- * SOA
    SOA (..),
    newSOA,
    soa_ttl,

    -- * SOAChange
    SOAChange (..),
    newSOAChange,
    sOAChange_ttl,

    -- * ServiceChange
    ServiceChange (..),
    newServiceChange,
    serviceChange_description,
    serviceChange_dnsConfig,
    serviceChange_healthCheckConfig,

    -- * ServiceFilter
    ServiceFilter (..),
    newServiceFilter,
    serviceFilter_condition,
    serviceFilter_name,
    serviceFilter_values,

    -- * ServiceInfo
    ServiceInfo (..),
    newServiceInfo,
    serviceInfo_arn,
    serviceInfo_createDate,
    serviceInfo_creatorRequestId,
    serviceInfo_description,
    serviceInfo_dnsConfig,
    serviceInfo_healthCheckConfig,
    serviceInfo_healthCheckCustomConfig,
    serviceInfo_id,
    serviceInfo_instanceCount,
    serviceInfo_name,
    serviceInfo_namespaceId,
    serviceInfo_type,

    -- * ServiceSummary
    ServiceSummary (..),
    newServiceSummary,
    serviceSummary_arn,
    serviceSummary_createDate,
    serviceSummary_description,
    serviceSummary_dnsConfig,
    serviceSummary_healthCheckConfig,
    serviceSummary_healthCheckCustomConfig,
    serviceSummary_id,
    serviceSummary_instanceCount,
    serviceSummary_name,
    serviceSummary_type,

    -- * Tag
    Tag (..),
    newTag,
    tag_key,
    tag_value,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.Route53AutoNaming.Types.CustomHealthStatus
import Amazonka.Route53AutoNaming.Types.DnsConfig
import Amazonka.Route53AutoNaming.Types.DnsConfigChange
import Amazonka.Route53AutoNaming.Types.DnsProperties
import Amazonka.Route53AutoNaming.Types.DnsRecord
import Amazonka.Route53AutoNaming.Types.FilterCondition
import Amazonka.Route53AutoNaming.Types.HealthCheckConfig
import Amazonka.Route53AutoNaming.Types.HealthCheckCustomConfig
import Amazonka.Route53AutoNaming.Types.HealthCheckType
import Amazonka.Route53AutoNaming.Types.HealthStatus
import Amazonka.Route53AutoNaming.Types.HealthStatusFilter
import Amazonka.Route53AutoNaming.Types.HttpInstanceSummary
import Amazonka.Route53AutoNaming.Types.HttpNamespaceChange
import Amazonka.Route53AutoNaming.Types.HttpProperties
import Amazonka.Route53AutoNaming.Types.Instance
import Amazonka.Route53AutoNaming.Types.InstanceSummary
import Amazonka.Route53AutoNaming.Types.Namespace
import Amazonka.Route53AutoNaming.Types.NamespaceFilter
import Amazonka.Route53AutoNaming.Types.NamespaceFilterName
import Amazonka.Route53AutoNaming.Types.NamespaceProperties
import Amazonka.Route53AutoNaming.Types.NamespaceSummary
import Amazonka.Route53AutoNaming.Types.NamespaceType
import Amazonka.Route53AutoNaming.Types.Operation
import Amazonka.Route53AutoNaming.Types.OperationFilter
import Amazonka.Route53AutoNaming.Types.OperationFilterName
import Amazonka.Route53AutoNaming.Types.OperationStatus
import Amazonka.Route53AutoNaming.Types.OperationSummary
import Amazonka.Route53AutoNaming.Types.OperationTargetType
import Amazonka.Route53AutoNaming.Types.OperationType
import Amazonka.Route53AutoNaming.Types.PrivateDnsNamespaceChange
import Amazonka.Route53AutoNaming.Types.PrivateDnsNamespaceProperties
import Amazonka.Route53AutoNaming.Types.PrivateDnsNamespacePropertiesChange
import Amazonka.Route53AutoNaming.Types.PrivateDnsPropertiesMutable
import Amazonka.Route53AutoNaming.Types.PrivateDnsPropertiesMutableChange
import Amazonka.Route53AutoNaming.Types.PublicDnsNamespaceChange
import Amazonka.Route53AutoNaming.Types.PublicDnsNamespaceProperties
import Amazonka.Route53AutoNaming.Types.PublicDnsNamespacePropertiesChange
import Amazonka.Route53AutoNaming.Types.PublicDnsPropertiesMutable
import Amazonka.Route53AutoNaming.Types.PublicDnsPropertiesMutableChange
import Amazonka.Route53AutoNaming.Types.RecordType
import Amazonka.Route53AutoNaming.Types.RoutingPolicy
import Amazonka.Route53AutoNaming.Types.SOA
import Amazonka.Route53AutoNaming.Types.SOAChange
import Amazonka.Route53AutoNaming.Types.ServiceChange
import Amazonka.Route53AutoNaming.Types.ServiceFilter
import Amazonka.Route53AutoNaming.Types.ServiceFilterName
import Amazonka.Route53AutoNaming.Types.ServiceInfo
import Amazonka.Route53AutoNaming.Types.ServiceSummary
import Amazonka.Route53AutoNaming.Types.ServiceType
import Amazonka.Route53AutoNaming.Types.ServiceTypeOption
import Amazonka.Route53AutoNaming.Types.Tag
import qualified Amazonka.Sign.V4 as Sign

-- | API version @2017-03-14@ of the Amazon Cloud Map SDK configuration.
defaultService :: Core.Service
defaultService =
  Core.Service
    { Core.abbrev = "Route53AutoNaming",
      Core.signer = Sign.v4,
      Core.endpointPrefix = "servicediscovery",
      Core.signingName = "servicediscovery",
      Core.version = "2017-03-14",
      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
      Core.endpoint = Core.defaultEndpoint defaultService,
      Core.timeout = Prelude.Just 70,
      Core.check = Core.statusSuccess,
      Core.error = Core.parseJSONError "Route53AutoNaming",
      Core.retry = retry
    }
  where
    retry =
      Core.Exponential
        { Core.base = 5.0e-2,
          Core.growth = 2,
          Core.attempts = 5,
          Core.check = check
        }
    check e
      | Lens.has (Core.hasStatus 502) e =
          Prelude.Just "bad_gateway"
      | Lens.has (Core.hasStatus 504) e =
          Prelude.Just "gateway_timeout"
      | Lens.has (Core.hasStatus 500) e =
          Prelude.Just "general_server_error"
      | Lens.has (Core.hasStatus 509) e =
          Prelude.Just "limit_exceeded"
      | Lens.has
          ( Core.hasCode "RequestThrottledException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "request_throttled_exception"
      | Lens.has (Core.hasStatus 503) e =
          Prelude.Just "service_unavailable"
      | Lens.has
          ( Core.hasCode "ThrottledException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttled_exception"
      | Lens.has
          ( Core.hasCode "Throttling"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttling"
      | Lens.has
          ( Core.hasCode "ThrottlingException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttling_exception"
      | Lens.has
          ( Core.hasCode
              "ProvisionedThroughputExceededException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throughput_exceeded"
      | Lens.has (Core.hasStatus 429) e =
          Prelude.Just "too_many_requests"
      | Prelude.otherwise = Prelude.Nothing

-- | The health check for the instance that\'s specified by @ServiceId@ and
-- @InstanceId@ isn\'t a custom health check.
_CustomHealthNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_CustomHealthNotFound =
  Core._MatchServiceError
    defaultService
    "CustomHealthNotFound"

-- | The operation is already in progress.
_DuplicateRequest :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_DuplicateRequest =
  Core._MatchServiceError
    defaultService
    "DuplicateRequest"

-- | No instance exists with the specified ID, or the instance was recently
-- registered, and information about the instance hasn\'t propagated yet.
_InstanceNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InstanceNotFound =
  Core._MatchServiceError
    defaultService
    "InstanceNotFound"

-- | One or more specified values aren\'t valid. For example, a required
-- value might be missing, a numeric value might be outside the allowed
-- range, or a string value might exceed length constraints.
_InvalidInput :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidInput =
  Core._MatchServiceError
    defaultService
    "InvalidInput"

-- | The namespace that you\'re trying to create already exists.
_NamespaceAlreadyExists :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_NamespaceAlreadyExists =
  Core._MatchServiceError
    defaultService
    "NamespaceAlreadyExists"

-- | No namespace exists with the specified ID.
_NamespaceNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_NamespaceNotFound =
  Core._MatchServiceError
    defaultService
    "NamespaceNotFound"

-- | No operation exists with the specified ID.
_OperationNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_OperationNotFound =
  Core._MatchServiceError
    defaultService
    "OperationNotFound"

-- | The operation can\'t be completed because you\'ve reached the quota for
-- the number of requests. For more information, see
-- <https://docs.aws.amazon.com/cloud-map/latest/dg/throttling.html Cloud Map API request throttling quota>
-- in the /Cloud Map Developer Guide/.
_RequestLimitExceeded :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_RequestLimitExceeded =
  Core._MatchServiceError
    defaultService
    "RequestLimitExceeded"

-- | The specified resource can\'t be deleted because it contains other
-- resources. For example, you can\'t delete a service that contains any
-- instances.
_ResourceInUse :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ResourceInUse =
  Core._MatchServiceError
    defaultService
    "ResourceInUse"

-- | The resource can\'t be created because you\'ve reached the quota on the
-- number of resources.
_ResourceLimitExceeded :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ResourceLimitExceeded =
  Core._MatchServiceError
    defaultService
    "ResourceLimitExceeded"

-- | The operation can\'t be completed because the resource was not found.
_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ResourceNotFoundException =
  Core._MatchServiceError
    defaultService
    "ResourceNotFoundException"

-- | The service can\'t be created because a service with the same name
-- already exists.
_ServiceAlreadyExists :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ServiceAlreadyExists =
  Core._MatchServiceError
    defaultService
    "ServiceAlreadyExists"

-- | No service exists with the specified ID.
_ServiceNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ServiceNotFound =
  Core._MatchServiceError
    defaultService
    "ServiceNotFound"

-- | The list of tags on the resource is over the quota. The maximum number
-- of tags that can be applied to a resource is 50.
_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_TooManyTagsException =
  Core._MatchServiceError
    defaultService
    "TooManyTagsException"