packages feed

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

    -- * Errors
    _ClusterLimitExceededException,
    _ConflictException,
    _Ec2RequestFailedException,
    _InvalidAddressException,
    _InvalidInputCombinationException,
    _InvalidJobStateException,
    _InvalidNextTokenException,
    _InvalidResourceException,
    _KMSRequestFailedException,
    _ReturnShippingLabelAlreadyExistsException,
    _UnsupportedAddressException,

    -- * ClusterState
    ClusterState (..),

    -- * DeviceServiceName
    DeviceServiceName (..),

    -- * JobState
    JobState (..),

    -- * JobType
    JobType (..),

    -- * LongTermPricingType
    LongTermPricingType (..),

    -- * RemoteManagement
    RemoteManagement (..),

    -- * ShipmentState
    ShipmentState (..),

    -- * ShippingLabelStatus
    ShippingLabelStatus (..),

    -- * ShippingOption
    ShippingOption (..),

    -- * SnowballCapacity
    SnowballCapacity (..),

    -- * SnowballType
    SnowballType (..),

    -- * StorageUnit
    StorageUnit (..),

    -- * TransferOption
    TransferOption (..),

    -- * Address
    Address (..),
    newAddress,
    address_addressId,
    address_city,
    address_company,
    address_country,
    address_isRestricted,
    address_landmark,
    address_name,
    address_phoneNumber,
    address_postalCode,
    address_prefectureOrDistrict,
    address_stateOrProvince,
    address_street1,
    address_street2,
    address_street3,

    -- * ClusterListEntry
    ClusterListEntry (..),
    newClusterListEntry,
    clusterListEntry_clusterId,
    clusterListEntry_clusterState,
    clusterListEntry_creationDate,
    clusterListEntry_description,

    -- * ClusterMetadata
    ClusterMetadata (..),
    newClusterMetadata,
    clusterMetadata_addressId,
    clusterMetadata_clusterId,
    clusterMetadata_clusterState,
    clusterMetadata_creationDate,
    clusterMetadata_description,
    clusterMetadata_forwardingAddressId,
    clusterMetadata_jobType,
    clusterMetadata_kmsKeyARN,
    clusterMetadata_notification,
    clusterMetadata_onDeviceServiceConfiguration,
    clusterMetadata_resources,
    clusterMetadata_roleARN,
    clusterMetadata_shippingOption,
    clusterMetadata_snowballType,
    clusterMetadata_taxDocuments,

    -- * CompatibleImage
    CompatibleImage (..),
    newCompatibleImage,
    compatibleImage_amiId,
    compatibleImage_name,

    -- * DataTransfer
    DataTransfer (..),
    newDataTransfer,
    dataTransfer_bytesTransferred,
    dataTransfer_objectsTransferred,
    dataTransfer_totalBytes,
    dataTransfer_totalObjects,

    -- * DeviceConfiguration
    DeviceConfiguration (..),
    newDeviceConfiguration,
    deviceConfiguration_snowconeDeviceConfiguration,

    -- * Ec2AmiResource
    Ec2AmiResource (..),
    newEc2AmiResource,
    ec2AmiResource_snowballAmiId,
    ec2AmiResource_amiId,

    -- * EventTriggerDefinition
    EventTriggerDefinition (..),
    newEventTriggerDefinition,
    eventTriggerDefinition_eventResourceARN,

    -- * INDTaxDocuments
    INDTaxDocuments (..),
    newINDTaxDocuments,
    iNDTaxDocuments_gstin,

    -- * JobListEntry
    JobListEntry (..),
    newJobListEntry,
    jobListEntry_creationDate,
    jobListEntry_description,
    jobListEntry_isMaster,
    jobListEntry_jobId,
    jobListEntry_jobState,
    jobListEntry_jobType,
    jobListEntry_snowballType,

    -- * JobLogs
    JobLogs (..),
    newJobLogs,
    jobLogs_jobCompletionReportURI,
    jobLogs_jobFailureLogURI,
    jobLogs_jobSuccessLogURI,

    -- * JobMetadata
    JobMetadata (..),
    newJobMetadata,
    jobMetadata_addressId,
    jobMetadata_clusterId,
    jobMetadata_creationDate,
    jobMetadata_dataTransferProgress,
    jobMetadata_description,
    jobMetadata_deviceConfiguration,
    jobMetadata_forwardingAddressId,
    jobMetadata_jobId,
    jobMetadata_jobLogInfo,
    jobMetadata_jobState,
    jobMetadata_jobType,
    jobMetadata_kmsKeyARN,
    jobMetadata_longTermPricingId,
    jobMetadata_notification,
    jobMetadata_onDeviceServiceConfiguration,
    jobMetadata_remoteManagement,
    jobMetadata_resources,
    jobMetadata_roleARN,
    jobMetadata_shippingDetails,
    jobMetadata_snowballCapacityPreference,
    jobMetadata_snowballType,
    jobMetadata_taxDocuments,

    -- * JobResource
    JobResource (..),
    newJobResource,
    jobResource_ec2AmiResources,
    jobResource_lambdaResources,
    jobResource_s3Resources,

    -- * KeyRange
    KeyRange (..),
    newKeyRange,
    keyRange_beginMarker,
    keyRange_endMarker,

    -- * LambdaResource
    LambdaResource (..),
    newLambdaResource,
    lambdaResource_eventTriggers,
    lambdaResource_lambdaArn,

    -- * LongTermPricingListEntry
    LongTermPricingListEntry (..),
    newLongTermPricingListEntry,
    longTermPricingListEntry_currentActiveJob,
    longTermPricingListEntry_isLongTermPricingAutoRenew,
    longTermPricingListEntry_jobIds,
    longTermPricingListEntry_longTermPricingEndDate,
    longTermPricingListEntry_longTermPricingId,
    longTermPricingListEntry_longTermPricingStartDate,
    longTermPricingListEntry_longTermPricingStatus,
    longTermPricingListEntry_longTermPricingType,
    longTermPricingListEntry_replacementJob,
    longTermPricingListEntry_snowballType,

    -- * NFSOnDeviceServiceConfiguration
    NFSOnDeviceServiceConfiguration (..),
    newNFSOnDeviceServiceConfiguration,
    nFSOnDeviceServiceConfiguration_storageLimit,
    nFSOnDeviceServiceConfiguration_storageUnit,

    -- * Notification
    Notification (..),
    newNotification,
    notification_jobStatesToNotify,
    notification_notifyAll,
    notification_snsTopicARN,

    -- * OnDeviceServiceConfiguration
    OnDeviceServiceConfiguration (..),
    newOnDeviceServiceConfiguration,
    onDeviceServiceConfiguration_nFSOnDeviceService,
    onDeviceServiceConfiguration_tGWOnDeviceService,

    -- * S3Resource
    S3Resource (..),
    newS3Resource,
    s3Resource_bucketArn,
    s3Resource_keyRange,
    s3Resource_targetOnDeviceServices,

    -- * Shipment
    Shipment (..),
    newShipment,
    shipment_status,
    shipment_trackingNumber,

    -- * ShippingDetails
    ShippingDetails (..),
    newShippingDetails,
    shippingDetails_inboundShipment,
    shippingDetails_outboundShipment,
    shippingDetails_shippingOption,

    -- * SnowconeDeviceConfiguration
    SnowconeDeviceConfiguration (..),
    newSnowconeDeviceConfiguration,
    snowconeDeviceConfiguration_wirelessConnection,

    -- * TGWOnDeviceServiceConfiguration
    TGWOnDeviceServiceConfiguration (..),
    newTGWOnDeviceServiceConfiguration,
    tGWOnDeviceServiceConfiguration_storageLimit,
    tGWOnDeviceServiceConfiguration_storageUnit,

    -- * TargetOnDeviceService
    TargetOnDeviceService (..),
    newTargetOnDeviceService,
    targetOnDeviceService_serviceName,
    targetOnDeviceService_transferOption,

    -- * TaxDocuments
    TaxDocuments (..),
    newTaxDocuments,
    taxDocuments_ind,

    -- * WirelessConnection
    WirelessConnection (..),
    newWirelessConnection,
    wirelessConnection_isWifiEnabled,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Sign.V4 as Sign
import Amazonka.Snowball.Types.Address
import Amazonka.Snowball.Types.ClusterListEntry
import Amazonka.Snowball.Types.ClusterMetadata
import Amazonka.Snowball.Types.ClusterState
import Amazonka.Snowball.Types.CompatibleImage
import Amazonka.Snowball.Types.DataTransfer
import Amazonka.Snowball.Types.DeviceConfiguration
import Amazonka.Snowball.Types.DeviceServiceName
import Amazonka.Snowball.Types.Ec2AmiResource
import Amazonka.Snowball.Types.EventTriggerDefinition
import Amazonka.Snowball.Types.INDTaxDocuments
import Amazonka.Snowball.Types.JobListEntry
import Amazonka.Snowball.Types.JobLogs
import Amazonka.Snowball.Types.JobMetadata
import Amazonka.Snowball.Types.JobResource
import Amazonka.Snowball.Types.JobState
import Amazonka.Snowball.Types.JobType
import Amazonka.Snowball.Types.KeyRange
import Amazonka.Snowball.Types.LambdaResource
import Amazonka.Snowball.Types.LongTermPricingListEntry
import Amazonka.Snowball.Types.LongTermPricingType
import Amazonka.Snowball.Types.NFSOnDeviceServiceConfiguration
import Amazonka.Snowball.Types.Notification
import Amazonka.Snowball.Types.OnDeviceServiceConfiguration
import Amazonka.Snowball.Types.RemoteManagement
import Amazonka.Snowball.Types.S3Resource
import Amazonka.Snowball.Types.Shipment
import Amazonka.Snowball.Types.ShipmentState
import Amazonka.Snowball.Types.ShippingDetails
import Amazonka.Snowball.Types.ShippingLabelStatus
import Amazonka.Snowball.Types.ShippingOption
import Amazonka.Snowball.Types.SnowballCapacity
import Amazonka.Snowball.Types.SnowballType
import Amazonka.Snowball.Types.SnowconeDeviceConfiguration
import Amazonka.Snowball.Types.StorageUnit
import Amazonka.Snowball.Types.TGWOnDeviceServiceConfiguration
import Amazonka.Snowball.Types.TargetOnDeviceService
import Amazonka.Snowball.Types.TaxDocuments
import Amazonka.Snowball.Types.TransferOption
import Amazonka.Snowball.Types.WirelessConnection

-- | API version @2016-06-30@ of the Amazon Import/Export Snowball SDK configuration.
defaultService :: Core.Service
defaultService =
  Core.Service
    { Core.abbrev = "Snowball",
      Core.signer = Sign.v4,
      Core.endpointPrefix = "snowball",
      Core.signingName = "snowball",
      Core.version = "2016-06-30",
      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
      Core.endpoint = Core.defaultEndpoint defaultService,
      Core.timeout = Prelude.Just 70,
      Core.check = Core.statusSuccess,
      Core.error = Core.parseJSONError "Snowball",
      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

-- | Job creation failed. Currently, clusters support five nodes. If you have
-- fewer than five nodes for your cluster and you have more nodes to create
-- for this cluster, try again and create jobs until your cluster has
-- exactly five nodes.
_ClusterLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ClusterLimitExceededException =
  Core._MatchServiceError
    defaultService
    "ClusterLimitExceededException"

-- | You get this exception when you call @CreateReturnShippingLabel@ more
-- than once when other requests are not completed.
_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConflictException =
  Core._MatchServiceError
    defaultService
    "ConflictException"

-- | Your IAM user lacks the necessary Amazon EC2 permissions to perform the
-- attempted action.
_Ec2RequestFailedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_Ec2RequestFailedException =
  Core._MatchServiceError
    defaultService
    "Ec2RequestFailedException"

-- | The address provided was invalid. Check the address with your region\'s
-- carrier, and try again.
_InvalidAddressException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidAddressException =
  Core._MatchServiceError
    defaultService
    "InvalidAddressException"

-- | Job or cluster creation failed. One or more inputs were invalid. Confirm
-- that the CreateClusterRequest$SnowballType value supports your
-- CreateJobRequest$JobType, and try again.
_InvalidInputCombinationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidInputCombinationException =
  Core._MatchServiceError
    defaultService
    "InvalidInputCombinationException"

-- | The action can\'t be performed because the job\'s current state doesn\'t
-- allow that action to be performed.
_InvalidJobStateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidJobStateException =
  Core._MatchServiceError
    defaultService
    "InvalidJobStateException"

-- | The @NextToken@ string was altered unexpectedly, and the operation has
-- stopped. Run the operation without changing the @NextToken@ string, and
-- try again.
_InvalidNextTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidNextTokenException =
  Core._MatchServiceError
    defaultService
    "InvalidNextTokenException"

-- | The specified resource can\'t be found. Check the information you
-- provided in your last request, and try again.
_InvalidResourceException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidResourceException =
  Core._MatchServiceError
    defaultService
    "InvalidResourceException"

-- | The provided Key Management Service key lacks the permissions to perform
-- the specified CreateJob or UpdateJob action.
_KMSRequestFailedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_KMSRequestFailedException =
  Core._MatchServiceError
    defaultService
    "KMSRequestFailedException"

-- | You get this exception if you call @CreateReturnShippingLabel@ and a
-- valid return shipping label already exists. In this case, use
-- @DescribeReturnShippingLabel@ to get the URL.
_ReturnShippingLabelAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ReturnShippingLabelAlreadyExistsException =
  Core._MatchServiceError
    defaultService
    "ReturnShippingLabelAlreadyExistsException"

-- | The address is either outside the serviceable area for your region, or
-- an error occurred. Check the address with your region\'s carrier and try
-- again. If the issue persists, contact Amazon Web Services Support.
_UnsupportedAddressException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_UnsupportedAddressException =
  Core._MatchServiceError
    defaultService
    "UnsupportedAddressException"