packages feed

amazonka-securitylake-2.0: gen/Amazonka/SecurityLake/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.SecurityLake.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.SecurityLake.Types
  ( -- * Service Configuration
    defaultService,

    -- * Errors
    _AccessDeniedException,
    _AccountNotFoundException,
    _BucketNotFoundException,
    _ConcurrentModificationException,
    _ConflictException,
    _ConflictSourceNamesException,
    _ConflictSubscriptionException,
    _EventBridgeException,
    _InternalServerException,
    _InvalidInputException,
    _ResourceNotFoundException,
    _S3Exception,
    _ServiceQuotaExceededException,
    _ThrottlingException,
    _ValidationException,

    -- * AccessType
    AccessType (..),

    -- * AwsLogSourceType
    AwsLogSourceType (..),

    -- * Dimension
    Dimension (..),

    -- * EndpointProtocol
    EndpointProtocol (..),

    -- * HttpsMethod
    HttpsMethod (..),

    -- * OcsfEventClass
    OcsfEventClass (..),

    -- * Region
    Region (..),

    -- * SettingsStatus
    SettingsStatus (..),

    -- * SourceStatus
    SourceStatus (..),

    -- * StorageClass
    StorageClass (..),

    -- * SubscriptionProtocolType
    SubscriptionProtocolType (..),

    -- * SubscriptionStatus
    SubscriptionStatus (..),

    -- * AccountSources
    AccountSources (..),
    newAccountSources,
    accountSources_eventClass,
    accountSources_logsStatus,
    accountSources_account,
    accountSources_sourceType,

    -- * AutoEnableNewRegionConfiguration
    AutoEnableNewRegionConfiguration (..),
    newAutoEnableNewRegionConfiguration,
    autoEnableNewRegionConfiguration_region,
    autoEnableNewRegionConfiguration_sources,

    -- * Failures
    Failures (..),
    newFailures,
    failures_exceptionMessage,
    failures_remediation,
    failures_timestamp,

    -- * FailuresResponse
    FailuresResponse (..),
    newFailuresResponse,
    failuresResponse_failures,
    failuresResponse_region,

    -- * LakeConfigurationRequest
    LakeConfigurationRequest (..),
    newLakeConfigurationRequest,
    lakeConfigurationRequest_encryptionKey,
    lakeConfigurationRequest_replicationDestinationRegions,
    lakeConfigurationRequest_replicationRoleArn,
    lakeConfigurationRequest_retentionSettings,
    lakeConfigurationRequest_tagsMap,

    -- * LakeConfigurationResponse
    LakeConfigurationResponse (..),
    newLakeConfigurationResponse,
    lakeConfigurationResponse_encryptionKey,
    lakeConfigurationResponse_replicationDestinationRegions,
    lakeConfigurationResponse_replicationRoleArn,
    lakeConfigurationResponse_retentionSettings,
    lakeConfigurationResponse_s3BucketArn,
    lakeConfigurationResponse_status,
    lakeConfigurationResponse_tagsMap,

    -- * LogsStatus
    LogsStatus (..),
    newLogsStatus,
    logsStatus_healthStatus,
    logsStatus_pathToLogs,

    -- * ProtocolAndNotificationEndpoint
    ProtocolAndNotificationEndpoint (..),
    newProtocolAndNotificationEndpoint,
    protocolAndNotificationEndpoint_endpoint,
    protocolAndNotificationEndpoint_protocol,

    -- * RetentionSetting
    RetentionSetting (..),
    newRetentionSetting,
    retentionSetting_retentionPeriod,
    retentionSetting_storageClass,

    -- * SourceType
    SourceType (..),
    newSourceType,
    sourceType_awsSourceType,
    sourceType_customSourceType,

    -- * SubscriberResource
    SubscriberResource (..),
    newSubscriberResource,
    subscriberResource_accessTypes,
    subscriberResource_createdAt,
    subscriberResource_externalId,
    subscriberResource_roleArn,
    subscriberResource_s3BucketArn,
    subscriberResource_snsArn,
    subscriberResource_subscriberDescription,
    subscriberResource_subscriberName,
    subscriberResource_subscriptionEndpoint,
    subscriberResource_subscriptionProtocol,
    subscriberResource_subscriptionStatus,
    subscriberResource_updatedAt,
    subscriberResource_accountId,
    subscriberResource_sourceTypes,
    subscriberResource_subscriptionId,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityLake.Types.AccessType
import Amazonka.SecurityLake.Types.AccountSources
import Amazonka.SecurityLake.Types.AutoEnableNewRegionConfiguration
import Amazonka.SecurityLake.Types.AwsLogSourceType
import Amazonka.SecurityLake.Types.Dimension
import Amazonka.SecurityLake.Types.EndpointProtocol
import Amazonka.SecurityLake.Types.Failures
import Amazonka.SecurityLake.Types.FailuresResponse
import Amazonka.SecurityLake.Types.HttpsMethod
import Amazonka.SecurityLake.Types.LakeConfigurationRequest
import Amazonka.SecurityLake.Types.LakeConfigurationResponse
import Amazonka.SecurityLake.Types.LogsStatus
import Amazonka.SecurityLake.Types.OcsfEventClass
import Amazonka.SecurityLake.Types.ProtocolAndNotificationEndpoint
import Amazonka.SecurityLake.Types.Region
import Amazonka.SecurityLake.Types.RetentionSetting
import Amazonka.SecurityLake.Types.SettingsStatus
import Amazonka.SecurityLake.Types.SourceStatus
import Amazonka.SecurityLake.Types.SourceType
import Amazonka.SecurityLake.Types.StorageClass
import Amazonka.SecurityLake.Types.SubscriberResource
import Amazonka.SecurityLake.Types.SubscriptionProtocolType
import Amazonka.SecurityLake.Types.SubscriptionStatus
import qualified Amazonka.Sign.V4 as Sign

-- | API version @2018-05-10@ of the Amazon Security Lake SDK configuration.
defaultService :: Core.Service
defaultService =
  Core.Service
    { Core.abbrev = "SecurityLake",
      Core.signer = Sign.v4,
      Core.endpointPrefix = "securitylake",
      Core.signingName = "securitylake",
      Core.version = "2018-05-10",
      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
      Core.endpoint = Core.defaultEndpoint defaultService,
      Core.timeout = Prelude.Just 70,
      Core.check = Core.statusSuccess,
      Core.error = Core.parseJSONError "SecurityLake",
      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

-- | You do not have sufficient access to perform this action. Access denied
-- errors appear when Amazon Security Lake explicitly or implicitly denies
-- an authorization request. An explicit denial occurs when a policy
-- contains a Deny statement for the specific Amazon Web Services action.
-- An implicit denial occurs when there is no applicable Deny statement and
-- also no applicable Allow statement.
_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_AccessDeniedException =
  Core._MatchServiceError
    defaultService
    "AccessDeniedException"
    Prelude.. Core.hasStatus 403

-- | Amazon Security Lake cannot find an Amazon Web Services account with the
-- accountID that you specified, or the account whose credentials you used
-- to make this request isn\'t a member of an organization.
_AccountNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_AccountNotFoundException =
  Core._MatchServiceError
    defaultService
    "AccountNotFoundException"
    Prelude.. Core.hasStatus 403

-- | Amazon Security Lake generally returns 404 errors if the requested
-- object is missing from the bucket.
_BucketNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_BucketNotFoundException =
  Core._MatchServiceError
    defaultService
    "BucketNotFoundException"
    Prelude.. Core.hasStatus 409

-- | More than one process tried to modify a resource at the same time.
_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConcurrentModificationException =
  Core._MatchServiceError
    defaultService
    "ConcurrentModificationException"
    Prelude.. Core.hasStatus 409

-- | Occurs when a conflict with a previous successful write is detected.
-- This generally occurs when the previous write did not have time to
-- propagate to the host serving the current request. A retry (with
-- appropriate backoff logic) is the recommended response to this
-- exception.
_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConflictException =
  Core._MatchServiceError
    defaultService
    "ConflictException"
    Prelude.. Core.hasStatus 409

-- | There was a conflict when you attempted to modify a Security Lake source
-- name.
_ConflictSourceNamesException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConflictSourceNamesException =
  Core._MatchServiceError
    defaultService
    "ConflictSourceNamesException"
    Prelude.. Core.hasStatus 400

-- | A conflicting subscription exception operation is in progress.
_ConflictSubscriptionException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConflictSubscriptionException =
  Core._MatchServiceError
    defaultService
    "ConflictSubscriptionException"
    Prelude.. Core.hasStatus 400

-- | Represents an error interacting with the Amazon EventBridge service.
_EventBridgeException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_EventBridgeException =
  Core._MatchServiceError
    defaultService
    "EventBridgeException"
    Prelude.. Core.hasStatus 400

-- | Internal service exceptions are sometimes caused by transient issues.
-- Before you start troubleshooting, perform the operation again.
_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InternalServerException =
  Core._MatchServiceError
    defaultService
    "InternalServerException"
    Prelude.. Core.hasStatus 500

-- | The request was rejected because a value that\'s not valid or is out of
-- range was supplied for an input parameter.
_InvalidInputException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidInputException =
  Core._MatchServiceError
    defaultService
    "InvalidInputException"
    Prelude.. Core.hasStatus 400

-- | The resource could not be found.
_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ResourceNotFoundException =
  Core._MatchServiceError
    defaultService
    "ResourceNotFoundException"
    Prelude.. Core.hasStatus 404

-- | Provides an extension of the AmazonServiceException for errors reported
-- by Amazon S3 while processing a request. In particular, this class
-- provides access to the Amazon S3 extended request ID. If Amazon S3 is
-- incorrectly handling a request and you need to contact Amazon, this
-- extended request ID may provide useful debugging information.
_S3Exception :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_S3Exception =
  Core._MatchServiceError
    defaultService
    "S3Exception"
    Prelude.. Core.hasStatus 400

-- | You have exceeded your service quota. To perform the requested action,
-- remove some of the relevant resources, or use Service Quotas to request
-- a service quota increase.
_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ServiceQuotaExceededException =
  Core._MatchServiceError
    defaultService
    "ServiceQuotaExceededException"
    Prelude.. Core.hasStatus 402

-- | The limit on the number of requests per second was exceeded.
_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ThrottlingException =
  Core._MatchServiceError
    defaultService
    "ThrottlingException"
    Prelude.. Core.hasStatus 429

-- | Your signing certificate could not be validated.
_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ValidationException =
  Core._MatchServiceError
    defaultService
    "ValidationException"
    Prelude.. Core.hasStatus 400