{-# 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.Glacier.Types.GlacierJobDescription
-- 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.Glacier.Types.GlacierJobDescription where

import qualified Amazonka.Core as Core
import Amazonka.Glacier.Types.ActionCode
import Amazonka.Glacier.Types.InventoryRetrievalJobDescription
import Amazonka.Glacier.Types.OutputLocation
import Amazonka.Glacier.Types.SelectParameters
import Amazonka.Glacier.Types.StatusCode
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Contains the description of an Amazon S3 Glacier job.
--
-- /See:/ 'newGlacierJobDescription' smart constructor.
data GlacierJobDescription = GlacierJobDescription'
  { -- | For an archive retrieval job, this value is the checksum of the archive.
    -- Otherwise, this value is null.
    --
    -- The SHA256 tree hash value for the requested range of an archive. If the
    -- __InitiateJob__ request for an archive specified a tree-hash aligned
    -- range, then this field returns a value.
    --
    -- If the whole archive is retrieved, this value is the same as the
    -- ArchiveSHA256TreeHash value.
    --
    -- This field is null for the following:
    --
    -- -   Archive retrieval jobs that specify a range that is not tree-hash
    --     aligned
    --
    -- -   Archival jobs that specify a range that is equal to the whole
    --     archive, when the job status is @InProgress@
    --
    -- -   Inventory jobs
    --
    -- -   Select jobs
    GlacierJobDescription -> Maybe Text
sHA256TreeHash :: Prelude.Maybe Prelude.Text,
    -- | The archive ID requested for a select job or archive retrieval.
    -- Otherwise, this field is null.
    GlacierJobDescription -> Maybe Text
archiveId :: Prelude.Maybe Prelude.Text,
    -- | Contains the parameters used for a select.
    GlacierJobDescription -> Maybe SelectParameters
selectParameters :: Prelude.Maybe SelectParameters,
    -- | An opaque string that identifies an Amazon S3 Glacier job.
    GlacierJobDescription -> Maybe Text
jobId :: Prelude.Maybe Prelude.Text,
    -- | Contains the job output location.
    GlacierJobDescription -> Maybe Text
jobOutputPath :: Prelude.Maybe Prelude.Text,
    -- | The retrieved byte range for archive retrieval jobs in the form
    -- /StartByteValue/-/EndByteValue/. If no range was specified in the
    -- archive retrieval, then the whole archive is retrieved. In this case,
    -- /StartByteValue/ equals 0 and /EndByteValue/ equals the size of the
    -- archive minus 1. For inventory retrieval or select jobs, this field is
    -- null.
    GlacierJobDescription -> Maybe Text
retrievalByteRange :: Prelude.Maybe Prelude.Text,
    -- | Parameters used for range inventory retrieval.
    GlacierJobDescription -> Maybe InventoryRetrievalJobDescription
inventoryRetrievalParameters :: Prelude.Maybe InventoryRetrievalJobDescription,
    -- | The job type. This value is either @ArchiveRetrieval@,
    -- @InventoryRetrieval@, or @Select@.
    GlacierJobDescription -> Maybe ActionCode
action :: Prelude.Maybe ActionCode,
    -- | The job description provided when initiating the job.
    GlacierJobDescription -> Maybe Text
jobDescription :: Prelude.Maybe Prelude.Text,
    -- | An Amazon SNS topic that receives notification.
    GlacierJobDescription -> Maybe Text
sNSTopic :: Prelude.Maybe Prelude.Text,
    -- | A friendly message that describes the job status.
    GlacierJobDescription -> Maybe Text
statusMessage :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the vault from which an archive
    -- retrieval was requested.
    GlacierJobDescription -> Maybe Text
vaultARN :: Prelude.Maybe Prelude.Text,
    -- | Contains the location where the data from the select job is stored.
    GlacierJobDescription -> Maybe OutputLocation
outputLocation :: Prelude.Maybe OutputLocation,
    -- | The tier to use for a select or an archive retrieval. Valid values are
    -- @Expedited@, @Standard@, or @Bulk@. @Standard@ is the default.
    GlacierJobDescription -> Maybe Text
tier :: Prelude.Maybe Prelude.Text,
    -- | The SHA256 tree hash of the entire archive for an archive retrieval. For
    -- inventory retrieval or select jobs, this field is null.
    GlacierJobDescription -> Maybe Text
archiveSHA256TreeHash :: Prelude.Maybe Prelude.Text,
    -- | The UTC date when the job was created. This value is a string
    -- representation of ISO 8601 date format, for example
    -- @\"2012-03-20T17:03:43.221Z\"@.
    GlacierJobDescription -> Maybe Text
creationDate :: Prelude.Maybe Prelude.Text,
    -- | The job status. When a job is completed, you get the job\'s output using
    -- Get Job Output (GET output).
    GlacierJobDescription -> Maybe Bool
completed :: Prelude.Maybe Prelude.Bool,
    -- | The UTC time that the job request completed. While the job is in
    -- progress, the value is null.
    GlacierJobDescription -> Maybe Text
completionDate :: Prelude.Maybe Prelude.Text,
    -- | For an inventory retrieval job, this value is the size in bytes of the
    -- inventory requested for download. For an archive retrieval or select
    -- job, this value is null.
    GlacierJobDescription -> Maybe Integer
inventorySizeInBytes :: Prelude.Maybe Prelude.Integer,
    -- | For an archive retrieval job, this value is the size in bytes of the
    -- archive being requested for download. For an inventory retrieval or
    -- select job, this value is null.
    GlacierJobDescription -> Maybe Integer
archiveSizeInBytes :: Prelude.Maybe Prelude.Integer,
    -- | The status code can be @InProgress@, @Succeeded@, or @Failed@, and
    -- indicates the status of the job.
    GlacierJobDescription -> Maybe StatusCode
statusCode :: Prelude.Maybe StatusCode
  }
  deriving (GlacierJobDescription -> GlacierJobDescription -> Bool
(GlacierJobDescription -> GlacierJobDescription -> Bool)
-> (GlacierJobDescription -> GlacierJobDescription -> Bool)
-> Eq GlacierJobDescription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GlacierJobDescription -> GlacierJobDescription -> Bool
$c/= :: GlacierJobDescription -> GlacierJobDescription -> Bool
== :: GlacierJobDescription -> GlacierJobDescription -> Bool
$c== :: GlacierJobDescription -> GlacierJobDescription -> Bool
Prelude.Eq, ReadPrec [GlacierJobDescription]
ReadPrec GlacierJobDescription
Int -> ReadS GlacierJobDescription
ReadS [GlacierJobDescription]
(Int -> ReadS GlacierJobDescription)
-> ReadS [GlacierJobDescription]
-> ReadPrec GlacierJobDescription
-> ReadPrec [GlacierJobDescription]
-> Read GlacierJobDescription
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GlacierJobDescription]
$creadListPrec :: ReadPrec [GlacierJobDescription]
readPrec :: ReadPrec GlacierJobDescription
$creadPrec :: ReadPrec GlacierJobDescription
readList :: ReadS [GlacierJobDescription]
$creadList :: ReadS [GlacierJobDescription]
readsPrec :: Int -> ReadS GlacierJobDescription
$creadsPrec :: Int -> ReadS GlacierJobDescription
Prelude.Read, Int -> GlacierJobDescription -> ShowS
[GlacierJobDescription] -> ShowS
GlacierJobDescription -> String
(Int -> GlacierJobDescription -> ShowS)
-> (GlacierJobDescription -> String)
-> ([GlacierJobDescription] -> ShowS)
-> Show GlacierJobDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GlacierJobDescription] -> ShowS
$cshowList :: [GlacierJobDescription] -> ShowS
show :: GlacierJobDescription -> String
$cshow :: GlacierJobDescription -> String
showsPrec :: Int -> GlacierJobDescription -> ShowS
$cshowsPrec :: Int -> GlacierJobDescription -> ShowS
Prelude.Show, (forall x. GlacierJobDescription -> Rep GlacierJobDescription x)
-> (forall x. Rep GlacierJobDescription x -> GlacierJobDescription)
-> Generic GlacierJobDescription
forall x. Rep GlacierJobDescription x -> GlacierJobDescription
forall x. GlacierJobDescription -> Rep GlacierJobDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GlacierJobDescription x -> GlacierJobDescription
$cfrom :: forall x. GlacierJobDescription -> Rep GlacierJobDescription x
Prelude.Generic)

-- |
-- Create a value of 'GlacierJobDescription' 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:
--
-- 'sHA256TreeHash', 'glacierJobDescription_sHA256TreeHash' - For an archive retrieval job, this value is the checksum of the archive.
-- Otherwise, this value is null.
--
-- The SHA256 tree hash value for the requested range of an archive. If the
-- __InitiateJob__ request for an archive specified a tree-hash aligned
-- range, then this field returns a value.
--
-- If the whole archive is retrieved, this value is the same as the
-- ArchiveSHA256TreeHash value.
--
-- This field is null for the following:
--
-- -   Archive retrieval jobs that specify a range that is not tree-hash
--     aligned
--
-- -   Archival jobs that specify a range that is equal to the whole
--     archive, when the job status is @InProgress@
--
-- -   Inventory jobs
--
-- -   Select jobs
--
-- 'archiveId', 'glacierJobDescription_archiveId' - The archive ID requested for a select job or archive retrieval.
-- Otherwise, this field is null.
--
-- 'selectParameters', 'glacierJobDescription_selectParameters' - Contains the parameters used for a select.
--
-- 'jobId', 'glacierJobDescription_jobId' - An opaque string that identifies an Amazon S3 Glacier job.
--
-- 'jobOutputPath', 'glacierJobDescription_jobOutputPath' - Contains the job output location.
--
-- 'retrievalByteRange', 'glacierJobDescription_retrievalByteRange' - The retrieved byte range for archive retrieval jobs in the form
-- /StartByteValue/-/EndByteValue/. If no range was specified in the
-- archive retrieval, then the whole archive is retrieved. In this case,
-- /StartByteValue/ equals 0 and /EndByteValue/ equals the size of the
-- archive minus 1. For inventory retrieval or select jobs, this field is
-- null.
--
-- 'inventoryRetrievalParameters', 'glacierJobDescription_inventoryRetrievalParameters' - Parameters used for range inventory retrieval.
--
-- 'action', 'glacierJobDescription_action' - The job type. This value is either @ArchiveRetrieval@,
-- @InventoryRetrieval@, or @Select@.
--
-- 'jobDescription', 'glacierJobDescription_jobDescription' - The job description provided when initiating the job.
--
-- 'sNSTopic', 'glacierJobDescription_sNSTopic' - An Amazon SNS topic that receives notification.
--
-- 'statusMessage', 'glacierJobDescription_statusMessage' - A friendly message that describes the job status.
--
-- 'vaultARN', 'glacierJobDescription_vaultARN' - The Amazon Resource Name (ARN) of the vault from which an archive
-- retrieval was requested.
--
-- 'outputLocation', 'glacierJobDescription_outputLocation' - Contains the location where the data from the select job is stored.
--
-- 'tier', 'glacierJobDescription_tier' - The tier to use for a select or an archive retrieval. Valid values are
-- @Expedited@, @Standard@, or @Bulk@. @Standard@ is the default.
--
-- 'archiveSHA256TreeHash', 'glacierJobDescription_archiveSHA256TreeHash' - The SHA256 tree hash of the entire archive for an archive retrieval. For
-- inventory retrieval or select jobs, this field is null.
--
-- 'creationDate', 'glacierJobDescription_creationDate' - The UTC date when the job was created. This value is a string
-- representation of ISO 8601 date format, for example
-- @\"2012-03-20T17:03:43.221Z\"@.
--
-- 'completed', 'glacierJobDescription_completed' - The job status. When a job is completed, you get the job\'s output using
-- Get Job Output (GET output).
--
-- 'completionDate', 'glacierJobDescription_completionDate' - The UTC time that the job request completed. While the job is in
-- progress, the value is null.
--
-- 'inventorySizeInBytes', 'glacierJobDescription_inventorySizeInBytes' - For an inventory retrieval job, this value is the size in bytes of the
-- inventory requested for download. For an archive retrieval or select
-- job, this value is null.
--
-- 'archiveSizeInBytes', 'glacierJobDescription_archiveSizeInBytes' - For an archive retrieval job, this value is the size in bytes of the
-- archive being requested for download. For an inventory retrieval or
-- select job, this value is null.
--
-- 'statusCode', 'glacierJobDescription_statusCode' - The status code can be @InProgress@, @Succeeded@, or @Failed@, and
-- indicates the status of the job.
newGlacierJobDescription ::
  GlacierJobDescription
newGlacierJobDescription :: GlacierJobDescription
newGlacierJobDescription =
  GlacierJobDescription' :: Maybe Text
-> Maybe Text
-> Maybe SelectParameters
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InventoryRetrievalJobDescription
-> Maybe ActionCode
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe OutputLocation
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe StatusCode
-> GlacierJobDescription
GlacierJobDescription'
    { $sel:sHA256TreeHash:GlacierJobDescription' :: Maybe Text
sHA256TreeHash =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:archiveId:GlacierJobDescription' :: Maybe Text
archiveId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:selectParameters:GlacierJobDescription' :: Maybe SelectParameters
selectParameters = Maybe SelectParameters
forall a. Maybe a
Prelude.Nothing,
      $sel:jobId:GlacierJobDescription' :: Maybe Text
jobId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:jobOutputPath:GlacierJobDescription' :: Maybe Text
jobOutputPath = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:retrievalByteRange:GlacierJobDescription' :: Maybe Text
retrievalByteRange = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:inventoryRetrievalParameters:GlacierJobDescription' :: Maybe InventoryRetrievalJobDescription
inventoryRetrievalParameters = Maybe InventoryRetrievalJobDescription
forall a. Maybe a
Prelude.Nothing,
      $sel:action:GlacierJobDescription' :: Maybe ActionCode
action = Maybe ActionCode
forall a. Maybe a
Prelude.Nothing,
      $sel:jobDescription:GlacierJobDescription' :: Maybe Text
jobDescription = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sNSTopic:GlacierJobDescription' :: Maybe Text
sNSTopic = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:statusMessage:GlacierJobDescription' :: Maybe Text
statusMessage = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vaultARN:GlacierJobDescription' :: Maybe Text
vaultARN = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:GlacierJobDescription' :: Maybe OutputLocation
outputLocation = Maybe OutputLocation
forall a. Maybe a
Prelude.Nothing,
      $sel:tier:GlacierJobDescription' :: Maybe Text
tier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:archiveSHA256TreeHash:GlacierJobDescription' :: Maybe Text
archiveSHA256TreeHash = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:GlacierJobDescription' :: Maybe Text
creationDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:completed:GlacierJobDescription' :: Maybe Bool
completed = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:completionDate:GlacierJobDescription' :: Maybe Text
completionDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:inventorySizeInBytes:GlacierJobDescription' :: Maybe Integer
inventorySizeInBytes = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:archiveSizeInBytes:GlacierJobDescription' :: Maybe Integer
archiveSizeInBytes = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:statusCode:GlacierJobDescription' :: Maybe StatusCode
statusCode = Maybe StatusCode
forall a. Maybe a
Prelude.Nothing
    }

-- | For an archive retrieval job, this value is the checksum of the archive.
-- Otherwise, this value is null.
--
-- The SHA256 tree hash value for the requested range of an archive. If the
-- __InitiateJob__ request for an archive specified a tree-hash aligned
-- range, then this field returns a value.
--
-- If the whole archive is retrieved, this value is the same as the
-- ArchiveSHA256TreeHash value.
--
-- This field is null for the following:
--
-- -   Archive retrieval jobs that specify a range that is not tree-hash
--     aligned
--
-- -   Archival jobs that specify a range that is equal to the whole
--     archive, when the job status is @InProgress@
--
-- -   Inventory jobs
--
-- -   Select jobs
glacierJobDescription_sHA256TreeHash :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_sHA256TreeHash :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_sHA256TreeHash = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
sHA256TreeHash :: Maybe Text
$sel:sHA256TreeHash:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
sHA256TreeHash} -> Maybe Text
sHA256TreeHash) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:sHA256TreeHash:GlacierJobDescription' :: Maybe Text
sHA256TreeHash = Maybe Text
a} :: GlacierJobDescription)

-- | The archive ID requested for a select job or archive retrieval.
-- Otherwise, this field is null.
glacierJobDescription_archiveId :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_archiveId :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_archiveId = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
archiveId :: Maybe Text
$sel:archiveId:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
archiveId} -> Maybe Text
archiveId) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:archiveId:GlacierJobDescription' :: Maybe Text
archiveId = Maybe Text
a} :: GlacierJobDescription)

-- | Contains the parameters used for a select.
glacierJobDescription_selectParameters :: Lens.Lens' GlacierJobDescription (Prelude.Maybe SelectParameters)
glacierJobDescription_selectParameters :: (Maybe SelectParameters -> f (Maybe SelectParameters))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_selectParameters = (GlacierJobDescription -> Maybe SelectParameters)
-> (GlacierJobDescription
    -> Maybe SelectParameters -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe SelectParameters)
     (Maybe SelectParameters)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe SelectParameters
selectParameters :: Maybe SelectParameters
$sel:selectParameters:GlacierJobDescription' :: GlacierJobDescription -> Maybe SelectParameters
selectParameters} -> Maybe SelectParameters
selectParameters) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe SelectParameters
a -> GlacierJobDescription
s {$sel:selectParameters:GlacierJobDescription' :: Maybe SelectParameters
selectParameters = Maybe SelectParameters
a} :: GlacierJobDescription)

-- | An opaque string that identifies an Amazon S3 Glacier job.
glacierJobDescription_jobId :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_jobId :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_jobId = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
jobId :: Maybe Text
$sel:jobId:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
jobId} -> Maybe Text
jobId) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:jobId:GlacierJobDescription' :: Maybe Text
jobId = Maybe Text
a} :: GlacierJobDescription)

-- | Contains the job output location.
glacierJobDescription_jobOutputPath :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_jobOutputPath :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_jobOutputPath = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
jobOutputPath :: Maybe Text
$sel:jobOutputPath:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
jobOutputPath} -> Maybe Text
jobOutputPath) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:jobOutputPath:GlacierJobDescription' :: Maybe Text
jobOutputPath = Maybe Text
a} :: GlacierJobDescription)

-- | The retrieved byte range for archive retrieval jobs in the form
-- /StartByteValue/-/EndByteValue/. If no range was specified in the
-- archive retrieval, then the whole archive is retrieved. In this case,
-- /StartByteValue/ equals 0 and /EndByteValue/ equals the size of the
-- archive minus 1. For inventory retrieval or select jobs, this field is
-- null.
glacierJobDescription_retrievalByteRange :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_retrievalByteRange :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_retrievalByteRange = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
retrievalByteRange :: Maybe Text
$sel:retrievalByteRange:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
retrievalByteRange} -> Maybe Text
retrievalByteRange) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:retrievalByteRange:GlacierJobDescription' :: Maybe Text
retrievalByteRange = Maybe Text
a} :: GlacierJobDescription)

-- | Parameters used for range inventory retrieval.
glacierJobDescription_inventoryRetrievalParameters :: Lens.Lens' GlacierJobDescription (Prelude.Maybe InventoryRetrievalJobDescription)
glacierJobDescription_inventoryRetrievalParameters :: (Maybe InventoryRetrievalJobDescription
 -> f (Maybe InventoryRetrievalJobDescription))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_inventoryRetrievalParameters = (GlacierJobDescription -> Maybe InventoryRetrievalJobDescription)
-> (GlacierJobDescription
    -> Maybe InventoryRetrievalJobDescription -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe InventoryRetrievalJobDescription)
     (Maybe InventoryRetrievalJobDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe InventoryRetrievalJobDescription
inventoryRetrievalParameters :: Maybe InventoryRetrievalJobDescription
$sel:inventoryRetrievalParameters:GlacierJobDescription' :: GlacierJobDescription -> Maybe InventoryRetrievalJobDescription
inventoryRetrievalParameters} -> Maybe InventoryRetrievalJobDescription
inventoryRetrievalParameters) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe InventoryRetrievalJobDescription
a -> GlacierJobDescription
s {$sel:inventoryRetrievalParameters:GlacierJobDescription' :: Maybe InventoryRetrievalJobDescription
inventoryRetrievalParameters = Maybe InventoryRetrievalJobDescription
a} :: GlacierJobDescription)

-- | The job type. This value is either @ArchiveRetrieval@,
-- @InventoryRetrieval@, or @Select@.
glacierJobDescription_action :: Lens.Lens' GlacierJobDescription (Prelude.Maybe ActionCode)
glacierJobDescription_action :: (Maybe ActionCode -> f (Maybe ActionCode))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_action = (GlacierJobDescription -> Maybe ActionCode)
-> (GlacierJobDescription
    -> Maybe ActionCode -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe ActionCode)
     (Maybe ActionCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe ActionCode
action :: Maybe ActionCode
$sel:action:GlacierJobDescription' :: GlacierJobDescription -> Maybe ActionCode
action} -> Maybe ActionCode
action) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe ActionCode
a -> GlacierJobDescription
s {$sel:action:GlacierJobDescription' :: Maybe ActionCode
action = Maybe ActionCode
a} :: GlacierJobDescription)

-- | The job description provided when initiating the job.
glacierJobDescription_jobDescription :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_jobDescription :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_jobDescription = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
jobDescription :: Maybe Text
$sel:jobDescription:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
jobDescription} -> Maybe Text
jobDescription) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:jobDescription:GlacierJobDescription' :: Maybe Text
jobDescription = Maybe Text
a} :: GlacierJobDescription)

-- | An Amazon SNS topic that receives notification.
glacierJobDescription_sNSTopic :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_sNSTopic :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_sNSTopic = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
sNSTopic :: Maybe Text
$sel:sNSTopic:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
sNSTopic} -> Maybe Text
sNSTopic) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:sNSTopic:GlacierJobDescription' :: Maybe Text
sNSTopic = Maybe Text
a} :: GlacierJobDescription)

-- | A friendly message that describes the job status.
glacierJobDescription_statusMessage :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_statusMessage :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_statusMessage = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
statusMessage :: Maybe Text
$sel:statusMessage:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
statusMessage} -> Maybe Text
statusMessage) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:statusMessage:GlacierJobDescription' :: Maybe Text
statusMessage = Maybe Text
a} :: GlacierJobDescription)

-- | The Amazon Resource Name (ARN) of the vault from which an archive
-- retrieval was requested.
glacierJobDescription_vaultARN :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_vaultARN :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_vaultARN = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
vaultARN :: Maybe Text
$sel:vaultARN:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
vaultARN} -> Maybe Text
vaultARN) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:vaultARN:GlacierJobDescription' :: Maybe Text
vaultARN = Maybe Text
a} :: GlacierJobDescription)

-- | Contains the location where the data from the select job is stored.
glacierJobDescription_outputLocation :: Lens.Lens' GlacierJobDescription (Prelude.Maybe OutputLocation)
glacierJobDescription_outputLocation :: (Maybe OutputLocation -> f (Maybe OutputLocation))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_outputLocation = (GlacierJobDescription -> Maybe OutputLocation)
-> (GlacierJobDescription
    -> Maybe OutputLocation -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe OutputLocation)
     (Maybe OutputLocation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe OutputLocation
outputLocation :: Maybe OutputLocation
$sel:outputLocation:GlacierJobDescription' :: GlacierJobDescription -> Maybe OutputLocation
outputLocation} -> Maybe OutputLocation
outputLocation) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe OutputLocation
a -> GlacierJobDescription
s {$sel:outputLocation:GlacierJobDescription' :: Maybe OutputLocation
outputLocation = Maybe OutputLocation
a} :: GlacierJobDescription)

-- | The tier to use for a select or an archive retrieval. Valid values are
-- @Expedited@, @Standard@, or @Bulk@. @Standard@ is the default.
glacierJobDescription_tier :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_tier :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_tier = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
tier :: Maybe Text
$sel:tier:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
tier} -> Maybe Text
tier) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:tier:GlacierJobDescription' :: Maybe Text
tier = Maybe Text
a} :: GlacierJobDescription)

-- | The SHA256 tree hash of the entire archive for an archive retrieval. For
-- inventory retrieval or select jobs, this field is null.
glacierJobDescription_archiveSHA256TreeHash :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_archiveSHA256TreeHash :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_archiveSHA256TreeHash = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
archiveSHA256TreeHash :: Maybe Text
$sel:archiveSHA256TreeHash:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
archiveSHA256TreeHash} -> Maybe Text
archiveSHA256TreeHash) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:archiveSHA256TreeHash:GlacierJobDescription' :: Maybe Text
archiveSHA256TreeHash = Maybe Text
a} :: GlacierJobDescription)

-- | The UTC date when the job was created. This value is a string
-- representation of ISO 8601 date format, for example
-- @\"2012-03-20T17:03:43.221Z\"@.
glacierJobDescription_creationDate :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_creationDate :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_creationDate = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
creationDate :: Maybe Text
$sel:creationDate:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
creationDate} -> Maybe Text
creationDate) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:creationDate:GlacierJobDescription' :: Maybe Text
creationDate = Maybe Text
a} :: GlacierJobDescription)

-- | The job status. When a job is completed, you get the job\'s output using
-- Get Job Output (GET output).
glacierJobDescription_completed :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Bool)
glacierJobDescription_completed :: (Maybe Bool -> f (Maybe Bool))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_completed = (GlacierJobDescription -> Maybe Bool)
-> (GlacierJobDescription -> Maybe Bool -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Bool
completed :: Maybe Bool
$sel:completed:GlacierJobDescription' :: GlacierJobDescription -> Maybe Bool
completed} -> Maybe Bool
completed) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Bool
a -> GlacierJobDescription
s {$sel:completed:GlacierJobDescription' :: Maybe Bool
completed = Maybe Bool
a} :: GlacierJobDescription)

-- | The UTC time that the job request completed. While the job is in
-- progress, the value is null.
glacierJobDescription_completionDate :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Text)
glacierJobDescription_completionDate :: (Maybe Text -> f (Maybe Text))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_completionDate = (GlacierJobDescription -> Maybe Text)
-> (GlacierJobDescription -> Maybe Text -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Text
completionDate :: Maybe Text
$sel:completionDate:GlacierJobDescription' :: GlacierJobDescription -> Maybe Text
completionDate} -> Maybe Text
completionDate) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Text
a -> GlacierJobDescription
s {$sel:completionDate:GlacierJobDescription' :: Maybe Text
completionDate = Maybe Text
a} :: GlacierJobDescription)

-- | For an inventory retrieval job, this value is the size in bytes of the
-- inventory requested for download. For an archive retrieval or select
-- job, this value is null.
glacierJobDescription_inventorySizeInBytes :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Integer)
glacierJobDescription_inventorySizeInBytes :: (Maybe Integer -> f (Maybe Integer))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_inventorySizeInBytes = (GlacierJobDescription -> Maybe Integer)
-> (GlacierJobDescription
    -> Maybe Integer -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Integer)
     (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Integer
inventorySizeInBytes :: Maybe Integer
$sel:inventorySizeInBytes:GlacierJobDescription' :: GlacierJobDescription -> Maybe Integer
inventorySizeInBytes} -> Maybe Integer
inventorySizeInBytes) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Integer
a -> GlacierJobDescription
s {$sel:inventorySizeInBytes:GlacierJobDescription' :: Maybe Integer
inventorySizeInBytes = Maybe Integer
a} :: GlacierJobDescription)

-- | For an archive retrieval job, this value is the size in bytes of the
-- archive being requested for download. For an inventory retrieval or
-- select job, this value is null.
glacierJobDescription_archiveSizeInBytes :: Lens.Lens' GlacierJobDescription (Prelude.Maybe Prelude.Integer)
glacierJobDescription_archiveSizeInBytes :: (Maybe Integer -> f (Maybe Integer))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_archiveSizeInBytes = (GlacierJobDescription -> Maybe Integer)
-> (GlacierJobDescription
    -> Maybe Integer -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe Integer)
     (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe Integer
archiveSizeInBytes :: Maybe Integer
$sel:archiveSizeInBytes:GlacierJobDescription' :: GlacierJobDescription -> Maybe Integer
archiveSizeInBytes} -> Maybe Integer
archiveSizeInBytes) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe Integer
a -> GlacierJobDescription
s {$sel:archiveSizeInBytes:GlacierJobDescription' :: Maybe Integer
archiveSizeInBytes = Maybe Integer
a} :: GlacierJobDescription)

-- | The status code can be @InProgress@, @Succeeded@, or @Failed@, and
-- indicates the status of the job.
glacierJobDescription_statusCode :: Lens.Lens' GlacierJobDescription (Prelude.Maybe StatusCode)
glacierJobDescription_statusCode :: (Maybe StatusCode -> f (Maybe StatusCode))
-> GlacierJobDescription -> f GlacierJobDescription
glacierJobDescription_statusCode = (GlacierJobDescription -> Maybe StatusCode)
-> (GlacierJobDescription
    -> Maybe StatusCode -> GlacierJobDescription)
-> Lens
     GlacierJobDescription
     GlacierJobDescription
     (Maybe StatusCode)
     (Maybe StatusCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GlacierJobDescription' {Maybe StatusCode
statusCode :: Maybe StatusCode
$sel:statusCode:GlacierJobDescription' :: GlacierJobDescription -> Maybe StatusCode
statusCode} -> Maybe StatusCode
statusCode) (\s :: GlacierJobDescription
s@GlacierJobDescription' {} Maybe StatusCode
a -> GlacierJobDescription
s {$sel:statusCode:GlacierJobDescription' :: Maybe StatusCode
statusCode = Maybe StatusCode
a} :: GlacierJobDescription)

instance Core.FromJSON GlacierJobDescription where
  parseJSON :: Value -> Parser GlacierJobDescription
parseJSON =
    String
-> (Object -> Parser GlacierJobDescription)
-> Value
-> Parser GlacierJobDescription
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"GlacierJobDescription"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe SelectParameters
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InventoryRetrievalJobDescription
-> Maybe ActionCode
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe OutputLocation
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe StatusCode
-> GlacierJobDescription
GlacierJobDescription'
            (Maybe Text
 -> Maybe Text
 -> Maybe SelectParameters
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe InventoryRetrievalJobDescription
 -> Maybe ActionCode
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe OutputLocation
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Integer
 -> Maybe Integer
 -> Maybe StatusCode
 -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe SelectParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InventoryRetrievalJobDescription
      -> Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
forall (f :: * -> *) a b. Functor 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
"SHA256TreeHash")
            Parser
  (Maybe Text
   -> Maybe SelectParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InventoryRetrievalJobDescription
   -> Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe SelectParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InventoryRetrievalJobDescription
      -> Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"ArchiveId")
            Parser
  (Maybe SelectParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InventoryRetrievalJobDescription
   -> Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe SelectParameters)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InventoryRetrievalJobDescription
      -> Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SelectParameters)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SelectParameters")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InventoryRetrievalJobDescription
   -> Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe InventoryRetrievalJobDescription
      -> Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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 Text
   -> Maybe Text
   -> Maybe InventoryRetrievalJobDescription
   -> Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe InventoryRetrievalJobDescription
      -> Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"JobOutputPath")
            Parser
  (Maybe Text
   -> Maybe InventoryRetrievalJobDescription
   -> Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe InventoryRetrievalJobDescription
      -> Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"RetrievalByteRange")
            Parser
  (Maybe InventoryRetrievalJobDescription
   -> Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe InventoryRetrievalJobDescription)
-> Parser
     (Maybe ActionCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InventoryRetrievalJobDescription)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InventoryRetrievalParameters")
            Parser
  (Maybe ActionCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe ActionCode)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ActionCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Action")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"JobDescription")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"SNSTopic")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"StatusMessage")
            Parser
  (Maybe Text
   -> Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe OutputLocation
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"VaultARN")
            Parser
  (Maybe OutputLocation
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe OutputLocation)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OutputLocation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OutputLocation")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"Tier")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"ArchiveSHA256TreeHash")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
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
"CreationDate")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe StatusCode
      -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Completed")
            Parser
  (Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe StatusCode
   -> GlacierJobDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Integer
      -> Maybe Integer -> Maybe StatusCode -> GlacierJobDescription)
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
"CompletionDate")
            Parser
  (Maybe Integer
   -> Maybe Integer -> Maybe StatusCode -> GlacierJobDescription)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Integer -> Maybe StatusCode -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InventorySizeInBytes")
            Parser (Maybe Integer -> Maybe StatusCode -> GlacierJobDescription)
-> Parser (Maybe Integer)
-> Parser (Maybe StatusCode -> GlacierJobDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ArchiveSizeInBytes")
            Parser (Maybe StatusCode -> GlacierJobDescription)
-> Parser (Maybe StatusCode) -> Parser GlacierJobDescription
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StatusCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StatusCode")
      )

instance Prelude.Hashable GlacierJobDescription

instance Prelude.NFData GlacierJobDescription