{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

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

-- |
-- Module      : Amazonka.Snowball.Types.JobMetadata
-- 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.Snowball.Types.JobMetadata where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.Snowball.Types.DataTransfer
import Amazonka.Snowball.Types.DeviceConfiguration
import Amazonka.Snowball.Types.JobLogs
import Amazonka.Snowball.Types.JobResource
import Amazonka.Snowball.Types.JobState
import Amazonka.Snowball.Types.JobType
import Amazonka.Snowball.Types.Notification
import Amazonka.Snowball.Types.OnDeviceServiceConfiguration
import Amazonka.Snowball.Types.RemoteManagement
import Amazonka.Snowball.Types.ShippingDetails
import Amazonka.Snowball.Types.SnowballCapacity
import Amazonka.Snowball.Types.SnowballType
import Amazonka.Snowball.Types.TaxDocuments

-- | Contains information about a specific job including shipping
-- information, job status, and other important metadata. This information
-- is returned as a part of the response syntax of the @DescribeJob@
-- action.
--
-- /See:/ 'newJobMetadata' smart constructor.
data JobMetadata = JobMetadata'
  { -- | The type of job.
    JobMetadata -> Maybe JobType
jobType :: Prelude.Maybe JobType,
    -- | The Amazon Resource Name (ARN) for the AWS Key Management Service (AWS
    -- KMS) key associated with this job. This ARN was created using the
    -- <https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html CreateKey>
    -- API action in AWS KMS.
    JobMetadata -> Maybe Text
kmsKeyARN :: Prelude.Maybe Prelude.Text,
    -- | Allows you to securely operate and manage Snowcone devices remotely from
    -- outside of your internal network. When set to @INSTALLED_AUTOSTART@,
    -- remote management will automatically be available when the device
    -- arrives at your location. Otherwise, you need to use the Snowball Client
    -- to manage the device.
    JobMetadata -> Maybe RemoteManagement
remoteManagement :: Prelude.Maybe RemoteManagement,
    -- | The automatically generated ID for a job, for example
    -- @JID123e4567-e89b-12d3-a456-426655440000@.
    JobMetadata -> Maybe Text
jobId :: Prelude.Maybe Prelude.Text,
    -- | Links to Amazon S3 presigned URLs for the job report and logs. For
    -- import jobs, the PDF job report becomes available at the end of the
    -- import process. For export jobs, your job report typically becomes
    -- available while the Snow device for your job part is being delivered to
    -- you.
    JobMetadata -> Maybe JobLogs
jobLogInfo :: Prelude.Maybe JobLogs,
    -- | The Amazon Simple Notification Service (Amazon SNS) notification
    -- settings associated with a specific job. The @Notification@ object is
    -- returned as a part of the response syntax of the @DescribeJob@ action in
    -- the @JobMetadata@ data type.
    JobMetadata -> Maybe Notification
notification :: Prelude.Maybe Notification,
    -- | The current status of the jobs.
    JobMetadata -> Maybe JobState
jobState :: Prelude.Maybe JobState,
    -- | The ID of the address that you want a job shipped to, after it will be
    -- shipped to its primary address. This field is not supported in most
    -- regions.
    JobMetadata -> Maybe Text
forwardingAddressId :: Prelude.Maybe Prelude.Text,
    -- | A job\'s shipping information, including inbound and outbound tracking
    -- numbers and shipping speed options.
    JobMetadata -> Maybe ShippingDetails
shippingDetails :: Prelude.Maybe ShippingDetails,
    -- | The ID for the address that you want the Snow device shipped to.
    JobMetadata -> Maybe Text
addressId :: Prelude.Maybe Prelude.Text,
    -- | The type of device used with this job.
    JobMetadata -> Maybe SnowballType
snowballType :: Prelude.Maybe SnowballType,
    -- | A value that defines the real-time status of a Snow device\'s data
    -- transfer while the device is at AWS. This data is only available while a
    -- job has a @JobState@ value of @InProgress@, for both import and export
    -- jobs.
    JobMetadata -> Maybe DataTransfer
dataTransferProgress :: Prelude.Maybe DataTransfer,
    -- | The ID of the long-term pricing type for the device.
    JobMetadata -> Maybe Text
longTermPricingId :: Prelude.Maybe Prelude.Text,
    -- | An array of @S3Resource@ objects. Each @S3Resource@ object represents an
    -- Amazon S3 bucket that your transferred data will be exported from or
    -- imported into.
    JobMetadata -> Maybe JobResource
resources :: Prelude.Maybe JobResource,
    -- | Represents metadata and configuration settings for services on an AWS
    -- Snow Family device.
    JobMetadata -> Maybe OnDeviceServiceConfiguration
onDeviceServiceConfiguration :: Prelude.Maybe OnDeviceServiceConfiguration,
    -- | The 39-character ID for the cluster, for example
    -- @CID123e4567-e89b-12d3-a456-426655440000@.
    JobMetadata -> Maybe Text
clusterId :: Prelude.Maybe Prelude.Text,
    -- | The creation date for this job.
    JobMetadata -> Maybe POSIX
creationDate :: Prelude.Maybe Core.POSIX,
    JobMetadata -> Maybe DeviceConfiguration
deviceConfiguration :: Prelude.Maybe DeviceConfiguration,
    -- | The description of the job, provided at job creation.
    JobMetadata -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The metadata associated with the tax documents required in your AWS
    -- Region.
    JobMetadata -> Maybe TaxDocuments
taxDocuments :: Prelude.Maybe TaxDocuments,
    -- | The role ARN associated with this job. This ARN was created using the
    -- <https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html CreateRole>
    -- API action in AWS Identity and Access Management (IAM).
    JobMetadata -> Maybe Text
roleARN :: Prelude.Maybe Prelude.Text,
    -- | The Snow device capacity preference for this job, specified at job
    -- creation. In US regions, you can choose between 50 TB and 80 TB
    -- Snowballs. All other regions use 80 TB capacity Snowballs.
    --
    -- For more information, see
    -- \"https:\/\/docs.aws.amazon.com\/snowball\/latest\/snowcone-guide\/snow-device-types.html\"
    -- (Snow Family Devices and Capacity) in the /Snowcone User Guide/ or
    -- \"https:\/\/docs.aws.amazon.com\/snowball\/latest\/developer-guide\/snow-device-types.html\"
    -- (Snow Family Devices and Capacity) in the /Snowcone User Guide/.
    JobMetadata -> Maybe SnowballCapacity
snowballCapacityPreference :: Prelude.Maybe SnowballCapacity
  }
  deriving (JobMetadata -> JobMetadata -> Bool
(JobMetadata -> JobMetadata -> Bool)
-> (JobMetadata -> JobMetadata -> Bool) -> Eq JobMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JobMetadata -> JobMetadata -> Bool
$c/= :: JobMetadata -> JobMetadata -> Bool
== :: JobMetadata -> JobMetadata -> Bool
$c== :: JobMetadata -> JobMetadata -> Bool
Prelude.Eq, ReadPrec [JobMetadata]
ReadPrec JobMetadata
Int -> ReadS JobMetadata
ReadS [JobMetadata]
(Int -> ReadS JobMetadata)
-> ReadS [JobMetadata]
-> ReadPrec JobMetadata
-> ReadPrec [JobMetadata]
-> Read JobMetadata
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [JobMetadata]
$creadListPrec :: ReadPrec [JobMetadata]
readPrec :: ReadPrec JobMetadata
$creadPrec :: ReadPrec JobMetadata
readList :: ReadS [JobMetadata]
$creadList :: ReadS [JobMetadata]
readsPrec :: Int -> ReadS JobMetadata
$creadsPrec :: Int -> ReadS JobMetadata
Prelude.Read, Int -> JobMetadata -> ShowS
[JobMetadata] -> ShowS
JobMetadata -> String
(Int -> JobMetadata -> ShowS)
-> (JobMetadata -> String)
-> ([JobMetadata] -> ShowS)
-> Show JobMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JobMetadata] -> ShowS
$cshowList :: [JobMetadata] -> ShowS
show :: JobMetadata -> String
$cshow :: JobMetadata -> String
showsPrec :: Int -> JobMetadata -> ShowS
$cshowsPrec :: Int -> JobMetadata -> ShowS
Prelude.Show, (forall x. JobMetadata -> Rep JobMetadata x)
-> (forall x. Rep JobMetadata x -> JobMetadata)
-> Generic JobMetadata
forall x. Rep JobMetadata x -> JobMetadata
forall x. JobMetadata -> Rep JobMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep JobMetadata x -> JobMetadata
$cfrom :: forall x. JobMetadata -> Rep JobMetadata x
Prelude.Generic)

-- |
-- Create a value of 'JobMetadata' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'jobType', 'jobMetadata_jobType' - The type of job.
--
-- 'kmsKeyARN', 'jobMetadata_kmsKeyARN' - The Amazon Resource Name (ARN) for the AWS Key Management Service (AWS
-- KMS) key associated with this job. This ARN was created using the
-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html CreateKey>
-- API action in AWS KMS.
--
-- 'remoteManagement', 'jobMetadata_remoteManagement' - Allows you to securely operate and manage Snowcone devices remotely from
-- outside of your internal network. When set to @INSTALLED_AUTOSTART@,
-- remote management will automatically be available when the device
-- arrives at your location. Otherwise, you need to use the Snowball Client
-- to manage the device.
--
-- 'jobId', 'jobMetadata_jobId' - The automatically generated ID for a job, for example
-- @JID123e4567-e89b-12d3-a456-426655440000@.
--
-- 'jobLogInfo', 'jobMetadata_jobLogInfo' - Links to Amazon S3 presigned URLs for the job report and logs. For
-- import jobs, the PDF job report becomes available at the end of the
-- import process. For export jobs, your job report typically becomes
-- available while the Snow device for your job part is being delivered to
-- you.
--
-- 'notification', 'jobMetadata_notification' - The Amazon Simple Notification Service (Amazon SNS) notification
-- settings associated with a specific job. The @Notification@ object is
-- returned as a part of the response syntax of the @DescribeJob@ action in
-- the @JobMetadata@ data type.
--
-- 'jobState', 'jobMetadata_jobState' - The current status of the jobs.
--
-- 'forwardingAddressId', 'jobMetadata_forwardingAddressId' - The ID of the address that you want a job shipped to, after it will be
-- shipped to its primary address. This field is not supported in most
-- regions.
--
-- 'shippingDetails', 'jobMetadata_shippingDetails' - A job\'s shipping information, including inbound and outbound tracking
-- numbers and shipping speed options.
--
-- 'addressId', 'jobMetadata_addressId' - The ID for the address that you want the Snow device shipped to.
--
-- 'snowballType', 'jobMetadata_snowballType' - The type of device used with this job.
--
-- 'dataTransferProgress', 'jobMetadata_dataTransferProgress' - A value that defines the real-time status of a Snow device\'s data
-- transfer while the device is at AWS. This data is only available while a
-- job has a @JobState@ value of @InProgress@, for both import and export
-- jobs.
--
-- 'longTermPricingId', 'jobMetadata_longTermPricingId' - The ID of the long-term pricing type for the device.
--
-- 'resources', 'jobMetadata_resources' - An array of @S3Resource@ objects. Each @S3Resource@ object represents an
-- Amazon S3 bucket that your transferred data will be exported from or
-- imported into.
--
-- 'onDeviceServiceConfiguration', 'jobMetadata_onDeviceServiceConfiguration' - Represents metadata and configuration settings for services on an AWS
-- Snow Family device.
--
-- 'clusterId', 'jobMetadata_clusterId' - The 39-character ID for the cluster, for example
-- @CID123e4567-e89b-12d3-a456-426655440000@.
--
-- 'creationDate', 'jobMetadata_creationDate' - The creation date for this job.
--
-- 'deviceConfiguration', 'jobMetadata_deviceConfiguration' - Undocumented member.
--
-- 'description', 'jobMetadata_description' - The description of the job, provided at job creation.
--
-- 'taxDocuments', 'jobMetadata_taxDocuments' - The metadata associated with the tax documents required in your AWS
-- Region.
--
-- 'roleARN', 'jobMetadata_roleARN' - The role ARN associated with this job. This ARN was created using the
-- <https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html CreateRole>
-- API action in AWS Identity and Access Management (IAM).
--
-- 'snowballCapacityPreference', 'jobMetadata_snowballCapacityPreference' - The Snow device capacity preference for this job, specified at job
-- creation. In US regions, you can choose between 50 TB and 80 TB
-- Snowballs. All other regions use 80 TB capacity Snowballs.
--
-- For more information, see
-- \"https:\/\/docs.aws.amazon.com\/snowball\/latest\/snowcone-guide\/snow-device-types.html\"
-- (Snow Family Devices and Capacity) in the /Snowcone User Guide/ or
-- \"https:\/\/docs.aws.amazon.com\/snowball\/latest\/developer-guide\/snow-device-types.html\"
-- (Snow Family Devices and Capacity) in the /Snowcone User Guide/.
newJobMetadata ::
  JobMetadata
newJobMetadata :: JobMetadata
newJobMetadata =
  JobMetadata' :: Maybe JobType
-> Maybe Text
-> Maybe RemoteManagement
-> Maybe Text
-> Maybe JobLogs
-> Maybe Notification
-> Maybe JobState
-> Maybe Text
-> Maybe ShippingDetails
-> Maybe Text
-> Maybe SnowballType
-> Maybe DataTransfer
-> Maybe Text
-> Maybe JobResource
-> Maybe OnDeviceServiceConfiguration
-> Maybe Text
-> Maybe POSIX
-> Maybe DeviceConfiguration
-> Maybe Text
-> Maybe TaxDocuments
-> Maybe Text
-> Maybe SnowballCapacity
-> JobMetadata
JobMetadata'
    { $sel:jobType:JobMetadata' :: Maybe JobType
jobType = Maybe JobType
forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyARN:JobMetadata' :: Maybe Text
kmsKeyARN = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:remoteManagement:JobMetadata' :: Maybe RemoteManagement
remoteManagement = Maybe RemoteManagement
forall a. Maybe a
Prelude.Nothing,
      $sel:jobId:JobMetadata' :: Maybe Text
jobId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:jobLogInfo:JobMetadata' :: Maybe JobLogs
jobLogInfo = Maybe JobLogs
forall a. Maybe a
Prelude.Nothing,
      $sel:notification:JobMetadata' :: Maybe Notification
notification = Maybe Notification
forall a. Maybe a
Prelude.Nothing,
      $sel:jobState:JobMetadata' :: Maybe JobState
jobState = Maybe JobState
forall a. Maybe a
Prelude.Nothing,
      $sel:forwardingAddressId:JobMetadata' :: Maybe Text
forwardingAddressId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:shippingDetails:JobMetadata' :: Maybe ShippingDetails
shippingDetails = Maybe ShippingDetails
forall a. Maybe a
Prelude.Nothing,
      $sel:addressId:JobMetadata' :: Maybe Text
addressId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:snowballType:JobMetadata' :: Maybe SnowballType
snowballType = Maybe SnowballType
forall a. Maybe a
Prelude.Nothing,
      $sel:dataTransferProgress:JobMetadata' :: Maybe DataTransfer
dataTransferProgress = Maybe DataTransfer
forall a. Maybe a
Prelude.Nothing,
      $sel:longTermPricingId:JobMetadata' :: Maybe Text
longTermPricingId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resources:JobMetadata' :: Maybe JobResource
resources = Maybe JobResource
forall a. Maybe a
Prelude.Nothing,
      $sel:onDeviceServiceConfiguration:JobMetadata' :: Maybe OnDeviceServiceConfiguration
onDeviceServiceConfiguration = Maybe OnDeviceServiceConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterId:JobMetadata' :: Maybe Text
clusterId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:JobMetadata' :: Maybe POSIX
creationDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:deviceConfiguration:JobMetadata' :: Maybe DeviceConfiguration
deviceConfiguration = Maybe DeviceConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:description:JobMetadata' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:taxDocuments:JobMetadata' :: Maybe TaxDocuments
taxDocuments = Maybe TaxDocuments
forall a. Maybe a
Prelude.Nothing,
      $sel:roleARN:JobMetadata' :: Maybe Text
roleARN = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:snowballCapacityPreference:JobMetadata' :: Maybe SnowballCapacity
snowballCapacityPreference = Maybe SnowballCapacity
forall a. Maybe a
Prelude.Nothing
    }

-- | The type of job.
jobMetadata_jobType :: Lens.Lens' JobMetadata (Prelude.Maybe JobType)
jobMetadata_jobType :: (Maybe JobType -> f (Maybe JobType))
-> JobMetadata -> f JobMetadata
jobMetadata_jobType = (JobMetadata -> Maybe JobType)
-> (JobMetadata -> Maybe JobType -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe JobType) (Maybe JobType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe JobType
jobType :: Maybe JobType
$sel:jobType:JobMetadata' :: JobMetadata -> Maybe JobType
jobType} -> Maybe JobType
jobType) (\s :: JobMetadata
s@JobMetadata' {} Maybe JobType
a -> JobMetadata
s {$sel:jobType:JobMetadata' :: Maybe JobType
jobType = Maybe JobType
a} :: JobMetadata)

-- | The Amazon Resource Name (ARN) for the AWS Key Management Service (AWS
-- KMS) key associated with this job. This ARN was created using the
-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html CreateKey>
-- API action in AWS KMS.
jobMetadata_kmsKeyARN :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_kmsKeyARN :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_kmsKeyARN = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
kmsKeyARN :: Maybe Text
$sel:kmsKeyARN:JobMetadata' :: JobMetadata -> Maybe Text
kmsKeyARN} -> Maybe Text
kmsKeyARN) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:kmsKeyARN:JobMetadata' :: Maybe Text
kmsKeyARN = Maybe Text
a} :: JobMetadata)

-- | Allows you to securely operate and manage Snowcone devices remotely from
-- outside of your internal network. When set to @INSTALLED_AUTOSTART@,
-- remote management will automatically be available when the device
-- arrives at your location. Otherwise, you need to use the Snowball Client
-- to manage the device.
jobMetadata_remoteManagement :: Lens.Lens' JobMetadata (Prelude.Maybe RemoteManagement)
jobMetadata_remoteManagement :: (Maybe RemoteManagement -> f (Maybe RemoteManagement))
-> JobMetadata -> f JobMetadata
jobMetadata_remoteManagement = (JobMetadata -> Maybe RemoteManagement)
-> (JobMetadata -> Maybe RemoteManagement -> JobMetadata)
-> Lens
     JobMetadata
     JobMetadata
     (Maybe RemoteManagement)
     (Maybe RemoteManagement)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe RemoteManagement
remoteManagement :: Maybe RemoteManagement
$sel:remoteManagement:JobMetadata' :: JobMetadata -> Maybe RemoteManagement
remoteManagement} -> Maybe RemoteManagement
remoteManagement) (\s :: JobMetadata
s@JobMetadata' {} Maybe RemoteManagement
a -> JobMetadata
s {$sel:remoteManagement:JobMetadata' :: Maybe RemoteManagement
remoteManagement = Maybe RemoteManagement
a} :: JobMetadata)

-- | The automatically generated ID for a job, for example
-- @JID123e4567-e89b-12d3-a456-426655440000@.
jobMetadata_jobId :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_jobId :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_jobId = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
jobId :: Maybe Text
$sel:jobId:JobMetadata' :: JobMetadata -> Maybe Text
jobId} -> Maybe Text
jobId) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:jobId:JobMetadata' :: Maybe Text
jobId = Maybe Text
a} :: JobMetadata)

-- | Links to Amazon S3 presigned URLs for the job report and logs. For
-- import jobs, the PDF job report becomes available at the end of the
-- import process. For export jobs, your job report typically becomes
-- available while the Snow device for your job part is being delivered to
-- you.
jobMetadata_jobLogInfo :: Lens.Lens' JobMetadata (Prelude.Maybe JobLogs)
jobMetadata_jobLogInfo :: (Maybe JobLogs -> f (Maybe JobLogs))
-> JobMetadata -> f JobMetadata
jobMetadata_jobLogInfo = (JobMetadata -> Maybe JobLogs)
-> (JobMetadata -> Maybe JobLogs -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe JobLogs) (Maybe JobLogs)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe JobLogs
jobLogInfo :: Maybe JobLogs
$sel:jobLogInfo:JobMetadata' :: JobMetadata -> Maybe JobLogs
jobLogInfo} -> Maybe JobLogs
jobLogInfo) (\s :: JobMetadata
s@JobMetadata' {} Maybe JobLogs
a -> JobMetadata
s {$sel:jobLogInfo:JobMetadata' :: Maybe JobLogs
jobLogInfo = Maybe JobLogs
a} :: JobMetadata)

-- | The Amazon Simple Notification Service (Amazon SNS) notification
-- settings associated with a specific job. The @Notification@ object is
-- returned as a part of the response syntax of the @DescribeJob@ action in
-- the @JobMetadata@ data type.
jobMetadata_notification :: Lens.Lens' JobMetadata (Prelude.Maybe Notification)
jobMetadata_notification :: (Maybe Notification -> f (Maybe Notification))
-> JobMetadata -> f JobMetadata
jobMetadata_notification = (JobMetadata -> Maybe Notification)
-> (JobMetadata -> Maybe Notification -> JobMetadata)
-> Lens
     JobMetadata JobMetadata (Maybe Notification) (Maybe Notification)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Notification
notification :: Maybe Notification
$sel:notification:JobMetadata' :: JobMetadata -> Maybe Notification
notification} -> Maybe Notification
notification) (\s :: JobMetadata
s@JobMetadata' {} Maybe Notification
a -> JobMetadata
s {$sel:notification:JobMetadata' :: Maybe Notification
notification = Maybe Notification
a} :: JobMetadata)

-- | The current status of the jobs.
jobMetadata_jobState :: Lens.Lens' JobMetadata (Prelude.Maybe JobState)
jobMetadata_jobState :: (Maybe JobState -> f (Maybe JobState))
-> JobMetadata -> f JobMetadata
jobMetadata_jobState = (JobMetadata -> Maybe JobState)
-> (JobMetadata -> Maybe JobState -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe JobState) (Maybe JobState)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe JobState
jobState :: Maybe JobState
$sel:jobState:JobMetadata' :: JobMetadata -> Maybe JobState
jobState} -> Maybe JobState
jobState) (\s :: JobMetadata
s@JobMetadata' {} Maybe JobState
a -> JobMetadata
s {$sel:jobState:JobMetadata' :: Maybe JobState
jobState = Maybe JobState
a} :: JobMetadata)

-- | The ID of the address that you want a job shipped to, after it will be
-- shipped to its primary address. This field is not supported in most
-- regions.
jobMetadata_forwardingAddressId :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_forwardingAddressId :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_forwardingAddressId = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
forwardingAddressId :: Maybe Text
$sel:forwardingAddressId:JobMetadata' :: JobMetadata -> Maybe Text
forwardingAddressId} -> Maybe Text
forwardingAddressId) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:forwardingAddressId:JobMetadata' :: Maybe Text
forwardingAddressId = Maybe Text
a} :: JobMetadata)

-- | A job\'s shipping information, including inbound and outbound tracking
-- numbers and shipping speed options.
jobMetadata_shippingDetails :: Lens.Lens' JobMetadata (Prelude.Maybe ShippingDetails)
jobMetadata_shippingDetails :: (Maybe ShippingDetails -> f (Maybe ShippingDetails))
-> JobMetadata -> f JobMetadata
jobMetadata_shippingDetails = (JobMetadata -> Maybe ShippingDetails)
-> (JobMetadata -> Maybe ShippingDetails -> JobMetadata)
-> Lens
     JobMetadata
     JobMetadata
     (Maybe ShippingDetails)
     (Maybe ShippingDetails)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe ShippingDetails
shippingDetails :: Maybe ShippingDetails
$sel:shippingDetails:JobMetadata' :: JobMetadata -> Maybe ShippingDetails
shippingDetails} -> Maybe ShippingDetails
shippingDetails) (\s :: JobMetadata
s@JobMetadata' {} Maybe ShippingDetails
a -> JobMetadata
s {$sel:shippingDetails:JobMetadata' :: Maybe ShippingDetails
shippingDetails = Maybe ShippingDetails
a} :: JobMetadata)

-- | The ID for the address that you want the Snow device shipped to.
jobMetadata_addressId :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_addressId :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_addressId = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
addressId :: Maybe Text
$sel:addressId:JobMetadata' :: JobMetadata -> Maybe Text
addressId} -> Maybe Text
addressId) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:addressId:JobMetadata' :: Maybe Text
addressId = Maybe Text
a} :: JobMetadata)

-- | The type of device used with this job.
jobMetadata_snowballType :: Lens.Lens' JobMetadata (Prelude.Maybe SnowballType)
jobMetadata_snowballType :: (Maybe SnowballType -> f (Maybe SnowballType))
-> JobMetadata -> f JobMetadata
jobMetadata_snowballType = (JobMetadata -> Maybe SnowballType)
-> (JobMetadata -> Maybe SnowballType -> JobMetadata)
-> Lens
     JobMetadata JobMetadata (Maybe SnowballType) (Maybe SnowballType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe SnowballType
snowballType :: Maybe SnowballType
$sel:snowballType:JobMetadata' :: JobMetadata -> Maybe SnowballType
snowballType} -> Maybe SnowballType
snowballType) (\s :: JobMetadata
s@JobMetadata' {} Maybe SnowballType
a -> JobMetadata
s {$sel:snowballType:JobMetadata' :: Maybe SnowballType
snowballType = Maybe SnowballType
a} :: JobMetadata)

-- | A value that defines the real-time status of a Snow device\'s data
-- transfer while the device is at AWS. This data is only available while a
-- job has a @JobState@ value of @InProgress@, for both import and export
-- jobs.
jobMetadata_dataTransferProgress :: Lens.Lens' JobMetadata (Prelude.Maybe DataTransfer)
jobMetadata_dataTransferProgress :: (Maybe DataTransfer -> f (Maybe DataTransfer))
-> JobMetadata -> f JobMetadata
jobMetadata_dataTransferProgress = (JobMetadata -> Maybe DataTransfer)
-> (JobMetadata -> Maybe DataTransfer -> JobMetadata)
-> Lens
     JobMetadata JobMetadata (Maybe DataTransfer) (Maybe DataTransfer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe DataTransfer
dataTransferProgress :: Maybe DataTransfer
$sel:dataTransferProgress:JobMetadata' :: JobMetadata -> Maybe DataTransfer
dataTransferProgress} -> Maybe DataTransfer
dataTransferProgress) (\s :: JobMetadata
s@JobMetadata' {} Maybe DataTransfer
a -> JobMetadata
s {$sel:dataTransferProgress:JobMetadata' :: Maybe DataTransfer
dataTransferProgress = Maybe DataTransfer
a} :: JobMetadata)

-- | The ID of the long-term pricing type for the device.
jobMetadata_longTermPricingId :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_longTermPricingId :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_longTermPricingId = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
longTermPricingId :: Maybe Text
$sel:longTermPricingId:JobMetadata' :: JobMetadata -> Maybe Text
longTermPricingId} -> Maybe Text
longTermPricingId) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:longTermPricingId:JobMetadata' :: Maybe Text
longTermPricingId = Maybe Text
a} :: JobMetadata)

-- | An array of @S3Resource@ objects. Each @S3Resource@ object represents an
-- Amazon S3 bucket that your transferred data will be exported from or
-- imported into.
jobMetadata_resources :: Lens.Lens' JobMetadata (Prelude.Maybe JobResource)
jobMetadata_resources :: (Maybe JobResource -> f (Maybe JobResource))
-> JobMetadata -> f JobMetadata
jobMetadata_resources = (JobMetadata -> Maybe JobResource)
-> (JobMetadata -> Maybe JobResource -> JobMetadata)
-> Lens
     JobMetadata JobMetadata (Maybe JobResource) (Maybe JobResource)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe JobResource
resources :: Maybe JobResource
$sel:resources:JobMetadata' :: JobMetadata -> Maybe JobResource
resources} -> Maybe JobResource
resources) (\s :: JobMetadata
s@JobMetadata' {} Maybe JobResource
a -> JobMetadata
s {$sel:resources:JobMetadata' :: Maybe JobResource
resources = Maybe JobResource
a} :: JobMetadata)

-- | Represents metadata and configuration settings for services on an AWS
-- Snow Family device.
jobMetadata_onDeviceServiceConfiguration :: Lens.Lens' JobMetadata (Prelude.Maybe OnDeviceServiceConfiguration)
jobMetadata_onDeviceServiceConfiguration :: (Maybe OnDeviceServiceConfiguration
 -> f (Maybe OnDeviceServiceConfiguration))
-> JobMetadata -> f JobMetadata
jobMetadata_onDeviceServiceConfiguration = (JobMetadata -> Maybe OnDeviceServiceConfiguration)
-> (JobMetadata
    -> Maybe OnDeviceServiceConfiguration -> JobMetadata)
-> Lens
     JobMetadata
     JobMetadata
     (Maybe OnDeviceServiceConfiguration)
     (Maybe OnDeviceServiceConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe OnDeviceServiceConfiguration
onDeviceServiceConfiguration :: Maybe OnDeviceServiceConfiguration
$sel:onDeviceServiceConfiguration:JobMetadata' :: JobMetadata -> Maybe OnDeviceServiceConfiguration
onDeviceServiceConfiguration} -> Maybe OnDeviceServiceConfiguration
onDeviceServiceConfiguration) (\s :: JobMetadata
s@JobMetadata' {} Maybe OnDeviceServiceConfiguration
a -> JobMetadata
s {$sel:onDeviceServiceConfiguration:JobMetadata' :: Maybe OnDeviceServiceConfiguration
onDeviceServiceConfiguration = Maybe OnDeviceServiceConfiguration
a} :: JobMetadata)

-- | The 39-character ID for the cluster, for example
-- @CID123e4567-e89b-12d3-a456-426655440000@.
jobMetadata_clusterId :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_clusterId :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_clusterId = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
clusterId :: Maybe Text
$sel:clusterId:JobMetadata' :: JobMetadata -> Maybe Text
clusterId} -> Maybe Text
clusterId) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:clusterId:JobMetadata' :: Maybe Text
clusterId = Maybe Text
a} :: JobMetadata)

-- | The creation date for this job.
jobMetadata_creationDate :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.UTCTime)
jobMetadata_creationDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> JobMetadata -> f JobMetadata
jobMetadata_creationDate = (JobMetadata -> Maybe POSIX)
-> (JobMetadata -> Maybe POSIX -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:JobMetadata' :: JobMetadata -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: JobMetadata
s@JobMetadata' {} Maybe POSIX
a -> JobMetadata
s {$sel:creationDate:JobMetadata' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: JobMetadata) ((Maybe POSIX -> f (Maybe POSIX)) -> JobMetadata -> f JobMetadata)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> JobMetadata
-> f JobMetadata
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Undocumented member.
jobMetadata_deviceConfiguration :: Lens.Lens' JobMetadata (Prelude.Maybe DeviceConfiguration)
jobMetadata_deviceConfiguration :: (Maybe DeviceConfiguration -> f (Maybe DeviceConfiguration))
-> JobMetadata -> f JobMetadata
jobMetadata_deviceConfiguration = (JobMetadata -> Maybe DeviceConfiguration)
-> (JobMetadata -> Maybe DeviceConfiguration -> JobMetadata)
-> Lens
     JobMetadata
     JobMetadata
     (Maybe DeviceConfiguration)
     (Maybe DeviceConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe DeviceConfiguration
deviceConfiguration :: Maybe DeviceConfiguration
$sel:deviceConfiguration:JobMetadata' :: JobMetadata -> Maybe DeviceConfiguration
deviceConfiguration} -> Maybe DeviceConfiguration
deviceConfiguration) (\s :: JobMetadata
s@JobMetadata' {} Maybe DeviceConfiguration
a -> JobMetadata
s {$sel:deviceConfiguration:JobMetadata' :: Maybe DeviceConfiguration
deviceConfiguration = Maybe DeviceConfiguration
a} :: JobMetadata)

-- | The description of the job, provided at job creation.
jobMetadata_description :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_description :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_description = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
description :: Maybe Text
$sel:description:JobMetadata' :: JobMetadata -> Maybe Text
description} -> Maybe Text
description) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:description:JobMetadata' :: Maybe Text
description = Maybe Text
a} :: JobMetadata)

-- | The metadata associated with the tax documents required in your AWS
-- Region.
jobMetadata_taxDocuments :: Lens.Lens' JobMetadata (Prelude.Maybe TaxDocuments)
jobMetadata_taxDocuments :: (Maybe TaxDocuments -> f (Maybe TaxDocuments))
-> JobMetadata -> f JobMetadata
jobMetadata_taxDocuments = (JobMetadata -> Maybe TaxDocuments)
-> (JobMetadata -> Maybe TaxDocuments -> JobMetadata)
-> Lens
     JobMetadata JobMetadata (Maybe TaxDocuments) (Maybe TaxDocuments)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe TaxDocuments
taxDocuments :: Maybe TaxDocuments
$sel:taxDocuments:JobMetadata' :: JobMetadata -> Maybe TaxDocuments
taxDocuments} -> Maybe TaxDocuments
taxDocuments) (\s :: JobMetadata
s@JobMetadata' {} Maybe TaxDocuments
a -> JobMetadata
s {$sel:taxDocuments:JobMetadata' :: Maybe TaxDocuments
taxDocuments = Maybe TaxDocuments
a} :: JobMetadata)

-- | The role ARN associated with this job. This ARN was created using the
-- <https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html CreateRole>
-- API action in AWS Identity and Access Management (IAM).
jobMetadata_roleARN :: Lens.Lens' JobMetadata (Prelude.Maybe Prelude.Text)
jobMetadata_roleARN :: (Maybe Text -> f (Maybe Text)) -> JobMetadata -> f JobMetadata
jobMetadata_roleARN = (JobMetadata -> Maybe Text)
-> (JobMetadata -> Maybe Text -> JobMetadata)
-> Lens JobMetadata JobMetadata (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe Text
roleARN :: Maybe Text
$sel:roleARN:JobMetadata' :: JobMetadata -> Maybe Text
roleARN} -> Maybe Text
roleARN) (\s :: JobMetadata
s@JobMetadata' {} Maybe Text
a -> JobMetadata
s {$sel:roleARN:JobMetadata' :: Maybe Text
roleARN = Maybe Text
a} :: JobMetadata)

-- | The Snow device capacity preference for this job, specified at job
-- creation. In US regions, you can choose between 50 TB and 80 TB
-- Snowballs. All other regions use 80 TB capacity Snowballs.
--
-- For more information, see
-- \"https:\/\/docs.aws.amazon.com\/snowball\/latest\/snowcone-guide\/snow-device-types.html\"
-- (Snow Family Devices and Capacity) in the /Snowcone User Guide/ or
-- \"https:\/\/docs.aws.amazon.com\/snowball\/latest\/developer-guide\/snow-device-types.html\"
-- (Snow Family Devices and Capacity) in the /Snowcone User Guide/.
jobMetadata_snowballCapacityPreference :: Lens.Lens' JobMetadata (Prelude.Maybe SnowballCapacity)
jobMetadata_snowballCapacityPreference :: (Maybe SnowballCapacity -> f (Maybe SnowballCapacity))
-> JobMetadata -> f JobMetadata
jobMetadata_snowballCapacityPreference = (JobMetadata -> Maybe SnowballCapacity)
-> (JobMetadata -> Maybe SnowballCapacity -> JobMetadata)
-> Lens
     JobMetadata
     JobMetadata
     (Maybe SnowballCapacity)
     (Maybe SnowballCapacity)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobMetadata' {Maybe SnowballCapacity
snowballCapacityPreference :: Maybe SnowballCapacity
$sel:snowballCapacityPreference:JobMetadata' :: JobMetadata -> Maybe SnowballCapacity
snowballCapacityPreference} -> Maybe SnowballCapacity
snowballCapacityPreference) (\s :: JobMetadata
s@JobMetadata' {} Maybe SnowballCapacity
a -> JobMetadata
s {$sel:snowballCapacityPreference:JobMetadata' :: Maybe SnowballCapacity
snowballCapacityPreference = Maybe SnowballCapacity
a} :: JobMetadata)

instance Core.FromJSON JobMetadata where
  parseJSON :: Value -> Parser JobMetadata
parseJSON =
    String
-> (Object -> Parser JobMetadata) -> Value -> Parser JobMetadata
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"JobMetadata"
      ( \Object
x ->
          Maybe JobType
-> Maybe Text
-> Maybe RemoteManagement
-> Maybe Text
-> Maybe JobLogs
-> Maybe Notification
-> Maybe JobState
-> Maybe Text
-> Maybe ShippingDetails
-> Maybe Text
-> Maybe SnowballType
-> Maybe DataTransfer
-> Maybe Text
-> Maybe JobResource
-> Maybe OnDeviceServiceConfiguration
-> Maybe Text
-> Maybe POSIX
-> Maybe DeviceConfiguration
-> Maybe Text
-> Maybe TaxDocuments
-> Maybe Text
-> Maybe SnowballCapacity
-> JobMetadata
JobMetadata'
            (Maybe JobType
 -> Maybe Text
 -> Maybe RemoteManagement
 -> Maybe Text
 -> Maybe JobLogs
 -> Maybe Notification
 -> Maybe JobState
 -> Maybe Text
 -> Maybe ShippingDetails
 -> Maybe Text
 -> Maybe SnowballType
 -> Maybe DataTransfer
 -> Maybe Text
 -> Maybe JobResource
 -> Maybe OnDeviceServiceConfiguration
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe DeviceConfiguration
 -> Maybe Text
 -> Maybe TaxDocuments
 -> Maybe Text
 -> Maybe SnowballCapacity
 -> JobMetadata)
-> Parser (Maybe JobType)
-> Parser
     (Maybe Text
      -> Maybe RemoteManagement
      -> Maybe Text
      -> Maybe JobLogs
      -> Maybe Notification
      -> Maybe JobState
      -> Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe JobType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"JobType")
            Parser
  (Maybe Text
   -> Maybe RemoteManagement
   -> Maybe Text
   -> Maybe JobLogs
   -> Maybe Notification
   -> Maybe JobState
   -> Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe RemoteManagement
      -> Maybe Text
      -> Maybe JobLogs
      -> Maybe Notification
      -> Maybe JobState
      -> Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"KmsKeyARN")
            Parser
  (Maybe RemoteManagement
   -> Maybe Text
   -> Maybe JobLogs
   -> Maybe Notification
   -> Maybe JobState
   -> Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe RemoteManagement)
-> Parser
     (Maybe Text
      -> Maybe JobLogs
      -> Maybe Notification
      -> Maybe JobState
      -> Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RemoteManagement)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RemoteManagement")
            Parser
  (Maybe Text
   -> Maybe JobLogs
   -> Maybe Notification
   -> Maybe JobState
   -> Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe JobLogs
      -> Maybe Notification
      -> Maybe JobState
      -> Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"JobId")
            Parser
  (Maybe JobLogs
   -> Maybe Notification
   -> Maybe JobState
   -> Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe JobLogs)
-> Parser
     (Maybe Notification
      -> Maybe JobState
      -> Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe JobLogs)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"JobLogInfo")
            Parser
  (Maybe Notification
   -> Maybe JobState
   -> Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Notification)
-> Parser
     (Maybe JobState
      -> Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Notification)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Notification")
            Parser
  (Maybe JobState
   -> Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe JobState)
-> Parser
     (Maybe Text
      -> Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe JobState)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"JobState")
            Parser
  (Maybe Text
   -> Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe ShippingDetails
      -> Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ForwardingAddressId")
            Parser
  (Maybe ShippingDetails
   -> Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe ShippingDetails)
-> Parser
     (Maybe Text
      -> Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ShippingDetails)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ShippingDetails")
            Parser
  (Maybe Text
   -> Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe SnowballType
      -> Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AddressId")
            Parser
  (Maybe SnowballType
   -> Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe SnowballType)
-> Parser
     (Maybe DataTransfer
      -> Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SnowballType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SnowballType")
            Parser
  (Maybe DataTransfer
   -> Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe DataTransfer)
-> Parser
     (Maybe Text
      -> Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DataTransfer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DataTransferProgress")
            Parser
  (Maybe Text
   -> Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe JobResource
      -> Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LongTermPricingId")
            Parser
  (Maybe JobResource
   -> Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe JobResource)
-> Parser
     (Maybe OnDeviceServiceConfiguration
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe JobResource)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Resources")
            Parser
  (Maybe OnDeviceServiceConfiguration
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe OnDeviceServiceConfiguration)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OnDeviceServiceConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OnDeviceServiceConfiguration")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterId")
            Parser
  (Maybe POSIX
   -> Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe DeviceConfiguration
      -> Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreationDate")
            Parser
  (Maybe DeviceConfiguration
   -> Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe DeviceConfiguration)
-> Parser
     (Maybe Text
      -> Maybe TaxDocuments
      -> Maybe Text
      -> Maybe SnowballCapacity
      -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DeviceConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DeviceConfiguration")
            Parser
  (Maybe Text
   -> Maybe TaxDocuments
   -> Maybe Text
   -> Maybe SnowballCapacity
   -> JobMetadata)
-> Parser (Maybe Text)
-> Parser
     (Maybe TaxDocuments
      -> Maybe Text -> Maybe SnowballCapacity -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Description")
            Parser
  (Maybe TaxDocuments
   -> Maybe Text -> Maybe SnowballCapacity -> JobMetadata)
-> Parser (Maybe TaxDocuments)
-> Parser (Maybe Text -> Maybe SnowballCapacity -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TaxDocuments)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TaxDocuments")
            Parser (Maybe Text -> Maybe SnowballCapacity -> JobMetadata)
-> Parser (Maybe Text)
-> Parser (Maybe SnowballCapacity -> JobMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RoleARN")
            Parser (Maybe SnowballCapacity -> JobMetadata)
-> Parser (Maybe SnowballCapacity) -> Parser JobMetadata
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SnowballCapacity)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SnowballCapacityPreference")
      )

instance Prelude.Hashable JobMetadata

instance Prelude.NFData JobMetadata