{-# 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.JobParameters
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Glacier.Types.JobParameters where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Glacier.Types.InventoryRetrievalJobInput
import Amazonka.Glacier.Types.OutputLocation
import Amazonka.Glacier.Types.SelectParameters
import qualified Amazonka.Prelude as Prelude

-- | Provides options for defining a job.
--
-- /See:/ 'newJobParameters' smart constructor.
data JobParameters = JobParameters'
  { -- | The ID of the archive that you want to retrieve. This field is required
    -- only if @Type@ is set to @select@ or @archive-retrieval@code>. An error
    -- occurs if you specify this request parameter for an inventory retrieval
    -- job request.
    JobParameters -> Maybe Text
archiveId :: Prelude.Maybe Prelude.Text,
    -- | The optional description for the job. The description must be less than
    -- or equal to 1,024 bytes. The allowable characters are 7-bit ASCII
    -- without control codes-specifically, ASCII values 32-126 decimal or
    -- 0x20-0x7E hexadecimal.
    JobParameters -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | When initiating a job to retrieve a vault inventory, you can optionally
    -- add this parameter to your request to specify the output format. If you
    -- are initiating an inventory job and do not specify a Format field, JSON
    -- is the default format. Valid values are \"CSV\" and \"JSON\".
    JobParameters -> Maybe Text
format :: Prelude.Maybe Prelude.Text,
    -- | Input parameters used for range inventory retrieval.
    JobParameters -> Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters :: Prelude.Maybe InventoryRetrievalJobInput,
    -- | Contains information about the location where the select job results are
    -- stored.
    JobParameters -> Maybe OutputLocation
outputLocation :: Prelude.Maybe OutputLocation,
    -- | The byte range to retrieve for an archive retrieval. in the form
    -- \"/StartByteValue/-/EndByteValue/\" If not specified, the whole archive
    -- is retrieved. If specified, the byte range must be megabyte (1024*1024)
    -- aligned which means that /StartByteValue/ must be divisible by 1 MB and
    -- /EndByteValue/ plus 1 must be divisible by 1 MB or be the end of the
    -- archive specified as the archive byte size value minus 1. If
    -- RetrievalByteRange is not megabyte aligned, this operation returns a 400
    -- response.
    --
    -- An error occurs if you specify this field for an inventory retrieval job
    -- request.
    JobParameters -> Maybe Text
retrievalByteRange :: Prelude.Maybe Prelude.Text,
    -- | The Amazon SNS topic ARN to which Amazon S3 Glacier sends a notification
    -- when the job is completed and the output is ready for you to download.
    -- The specified topic publishes the notification to its subscribers. The
    -- SNS topic must exist.
    JobParameters -> Maybe Text
sNSTopic :: Prelude.Maybe Prelude.Text,
    -- | Contains the parameters that define a job.
    JobParameters -> Maybe SelectParameters
selectParameters :: Prelude.Maybe SelectParameters,
    -- | The tier to use for a select or an archive retrieval job. Valid values
    -- are @Expedited@, @Standard@, or @Bulk@. @Standard@ is the default.
    JobParameters -> Maybe Text
tier :: Prelude.Maybe Prelude.Text,
    -- | The job type. You can initiate a job to perform a select query on an
    -- archive, retrieve an archive, or get an inventory of a vault. Valid
    -- values are \"select\", \"archive-retrieval\" and
    -- \"inventory-retrieval\".
    JobParameters -> Maybe Text
type' :: Prelude.Maybe Prelude.Text
  }
  deriving (JobParameters -> JobParameters -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JobParameters -> JobParameters -> Bool
$c/= :: JobParameters -> JobParameters -> Bool
== :: JobParameters -> JobParameters -> Bool
$c== :: JobParameters -> JobParameters -> Bool
Prelude.Eq, ReadPrec [JobParameters]
ReadPrec JobParameters
Int -> ReadS JobParameters
ReadS [JobParameters]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [JobParameters]
$creadListPrec :: ReadPrec [JobParameters]
readPrec :: ReadPrec JobParameters
$creadPrec :: ReadPrec JobParameters
readList :: ReadS [JobParameters]
$creadList :: ReadS [JobParameters]
readsPrec :: Int -> ReadS JobParameters
$creadsPrec :: Int -> ReadS JobParameters
Prelude.Read, Int -> JobParameters -> ShowS
[JobParameters] -> ShowS
JobParameters -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JobParameters] -> ShowS
$cshowList :: [JobParameters] -> ShowS
show :: JobParameters -> String
$cshow :: JobParameters -> String
showsPrec :: Int -> JobParameters -> ShowS
$cshowsPrec :: Int -> JobParameters -> ShowS
Prelude.Show, forall x. Rep JobParameters x -> JobParameters
forall x. JobParameters -> Rep JobParameters x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep JobParameters x -> JobParameters
$cfrom :: forall x. JobParameters -> Rep JobParameters x
Prelude.Generic)

-- |
-- Create a value of 'JobParameters' 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:
--
-- 'archiveId', 'jobParameters_archiveId' - The ID of the archive that you want to retrieve. This field is required
-- only if @Type@ is set to @select@ or @archive-retrieval@code>. An error
-- occurs if you specify this request parameter for an inventory retrieval
-- job request.
--
-- 'description', 'jobParameters_description' - The optional description for the job. The description must be less than
-- or equal to 1,024 bytes. The allowable characters are 7-bit ASCII
-- without control codes-specifically, ASCII values 32-126 decimal or
-- 0x20-0x7E hexadecimal.
--
-- 'format', 'jobParameters_format' - When initiating a job to retrieve a vault inventory, you can optionally
-- add this parameter to your request to specify the output format. If you
-- are initiating an inventory job and do not specify a Format field, JSON
-- is the default format. Valid values are \"CSV\" and \"JSON\".
--
-- 'inventoryRetrievalParameters', 'jobParameters_inventoryRetrievalParameters' - Input parameters used for range inventory retrieval.
--
-- 'outputLocation', 'jobParameters_outputLocation' - Contains information about the location where the select job results are
-- stored.
--
-- 'retrievalByteRange', 'jobParameters_retrievalByteRange' - The byte range to retrieve for an archive retrieval. in the form
-- \"/StartByteValue/-/EndByteValue/\" If not specified, the whole archive
-- is retrieved. If specified, the byte range must be megabyte (1024*1024)
-- aligned which means that /StartByteValue/ must be divisible by 1 MB and
-- /EndByteValue/ plus 1 must be divisible by 1 MB or be the end of the
-- archive specified as the archive byte size value minus 1. If
-- RetrievalByteRange is not megabyte aligned, this operation returns a 400
-- response.
--
-- An error occurs if you specify this field for an inventory retrieval job
-- request.
--
-- 'sNSTopic', 'jobParameters_sNSTopic' - The Amazon SNS topic ARN to which Amazon S3 Glacier sends a notification
-- when the job is completed and the output is ready for you to download.
-- The specified topic publishes the notification to its subscribers. The
-- SNS topic must exist.
--
-- 'selectParameters', 'jobParameters_selectParameters' - Contains the parameters that define a job.
--
-- 'tier', 'jobParameters_tier' - The tier to use for a select or an archive retrieval job. Valid values
-- are @Expedited@, @Standard@, or @Bulk@. @Standard@ is the default.
--
-- 'type'', 'jobParameters_type' - The job type. You can initiate a job to perform a select query on an
-- archive, retrieve an archive, or get an inventory of a vault. Valid
-- values are \"select\", \"archive-retrieval\" and
-- \"inventory-retrieval\".
newJobParameters ::
  JobParameters
newJobParameters :: JobParameters
newJobParameters =
  JobParameters'
    { $sel:archiveId:JobParameters' :: Maybe Text
archiveId = forall a. Maybe a
Prelude.Nothing,
      $sel:description:JobParameters' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:format:JobParameters' :: Maybe Text
format = forall a. Maybe a
Prelude.Nothing,
      $sel:inventoryRetrievalParameters:JobParameters' :: Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:JobParameters' :: Maybe OutputLocation
outputLocation = forall a. Maybe a
Prelude.Nothing,
      $sel:retrievalByteRange:JobParameters' :: Maybe Text
retrievalByteRange = forall a. Maybe a
Prelude.Nothing,
      $sel:sNSTopic:JobParameters' :: Maybe Text
sNSTopic = forall a. Maybe a
Prelude.Nothing,
      $sel:selectParameters:JobParameters' :: Maybe SelectParameters
selectParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:tier:JobParameters' :: Maybe Text
tier = forall a. Maybe a
Prelude.Nothing,
      $sel:type':JobParameters' :: Maybe Text
type' = forall a. Maybe a
Prelude.Nothing
    }

-- | The ID of the archive that you want to retrieve. This field is required
-- only if @Type@ is set to @select@ or @archive-retrieval@code>. An error
-- occurs if you specify this request parameter for an inventory retrieval
-- job request.
jobParameters_archiveId :: Lens.Lens' JobParameters (Prelude.Maybe Prelude.Text)
jobParameters_archiveId :: Lens' JobParameters (Maybe Text)
jobParameters_archiveId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe Text
archiveId :: Maybe Text
$sel:archiveId:JobParameters' :: JobParameters -> Maybe Text
archiveId} -> Maybe Text
archiveId) (\s :: JobParameters
s@JobParameters' {} Maybe Text
a -> JobParameters
s {$sel:archiveId:JobParameters' :: Maybe Text
archiveId = Maybe Text
a} :: JobParameters)

-- | The optional description for the job. The description must be less than
-- or equal to 1,024 bytes. The allowable characters are 7-bit ASCII
-- without control codes-specifically, ASCII values 32-126 decimal or
-- 0x20-0x7E hexadecimal.
jobParameters_description :: Lens.Lens' JobParameters (Prelude.Maybe Prelude.Text)
jobParameters_description :: Lens' JobParameters (Maybe Text)
jobParameters_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe Text
description :: Maybe Text
$sel:description:JobParameters' :: JobParameters -> Maybe Text
description} -> Maybe Text
description) (\s :: JobParameters
s@JobParameters' {} Maybe Text
a -> JobParameters
s {$sel:description:JobParameters' :: Maybe Text
description = Maybe Text
a} :: JobParameters)

-- | When initiating a job to retrieve a vault inventory, you can optionally
-- add this parameter to your request to specify the output format. If you
-- are initiating an inventory job and do not specify a Format field, JSON
-- is the default format. Valid values are \"CSV\" and \"JSON\".
jobParameters_format :: Lens.Lens' JobParameters (Prelude.Maybe Prelude.Text)
jobParameters_format :: Lens' JobParameters (Maybe Text)
jobParameters_format = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe Text
format :: Maybe Text
$sel:format:JobParameters' :: JobParameters -> Maybe Text
format} -> Maybe Text
format) (\s :: JobParameters
s@JobParameters' {} Maybe Text
a -> JobParameters
s {$sel:format:JobParameters' :: Maybe Text
format = Maybe Text
a} :: JobParameters)

-- | Input parameters used for range inventory retrieval.
jobParameters_inventoryRetrievalParameters :: Lens.Lens' JobParameters (Prelude.Maybe InventoryRetrievalJobInput)
jobParameters_inventoryRetrievalParameters :: Lens' JobParameters (Maybe InventoryRetrievalJobInput)
jobParameters_inventoryRetrievalParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters :: Maybe InventoryRetrievalJobInput
$sel:inventoryRetrievalParameters:JobParameters' :: JobParameters -> Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters} -> Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters) (\s :: JobParameters
s@JobParameters' {} Maybe InventoryRetrievalJobInput
a -> JobParameters
s {$sel:inventoryRetrievalParameters:JobParameters' :: Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters = Maybe InventoryRetrievalJobInput
a} :: JobParameters)

-- | Contains information about the location where the select job results are
-- stored.
jobParameters_outputLocation :: Lens.Lens' JobParameters (Prelude.Maybe OutputLocation)
jobParameters_outputLocation :: Lens' JobParameters (Maybe OutputLocation)
jobParameters_outputLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe OutputLocation
outputLocation :: Maybe OutputLocation
$sel:outputLocation:JobParameters' :: JobParameters -> Maybe OutputLocation
outputLocation} -> Maybe OutputLocation
outputLocation) (\s :: JobParameters
s@JobParameters' {} Maybe OutputLocation
a -> JobParameters
s {$sel:outputLocation:JobParameters' :: Maybe OutputLocation
outputLocation = Maybe OutputLocation
a} :: JobParameters)

-- | The byte range to retrieve for an archive retrieval. in the form
-- \"/StartByteValue/-/EndByteValue/\" If not specified, the whole archive
-- is retrieved. If specified, the byte range must be megabyte (1024*1024)
-- aligned which means that /StartByteValue/ must be divisible by 1 MB and
-- /EndByteValue/ plus 1 must be divisible by 1 MB or be the end of the
-- archive specified as the archive byte size value minus 1. If
-- RetrievalByteRange is not megabyte aligned, this operation returns a 400
-- response.
--
-- An error occurs if you specify this field for an inventory retrieval job
-- request.
jobParameters_retrievalByteRange :: Lens.Lens' JobParameters (Prelude.Maybe Prelude.Text)
jobParameters_retrievalByteRange :: Lens' JobParameters (Maybe Text)
jobParameters_retrievalByteRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe Text
retrievalByteRange :: Maybe Text
$sel:retrievalByteRange:JobParameters' :: JobParameters -> Maybe Text
retrievalByteRange} -> Maybe Text
retrievalByteRange) (\s :: JobParameters
s@JobParameters' {} Maybe Text
a -> JobParameters
s {$sel:retrievalByteRange:JobParameters' :: Maybe Text
retrievalByteRange = Maybe Text
a} :: JobParameters)

-- | The Amazon SNS topic ARN to which Amazon S3 Glacier sends a notification
-- when the job is completed and the output is ready for you to download.
-- The specified topic publishes the notification to its subscribers. The
-- SNS topic must exist.
jobParameters_sNSTopic :: Lens.Lens' JobParameters (Prelude.Maybe Prelude.Text)
jobParameters_sNSTopic :: Lens' JobParameters (Maybe Text)
jobParameters_sNSTopic = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe Text
sNSTopic :: Maybe Text
$sel:sNSTopic:JobParameters' :: JobParameters -> Maybe Text
sNSTopic} -> Maybe Text
sNSTopic) (\s :: JobParameters
s@JobParameters' {} Maybe Text
a -> JobParameters
s {$sel:sNSTopic:JobParameters' :: Maybe Text
sNSTopic = Maybe Text
a} :: JobParameters)

-- | Contains the parameters that define a job.
jobParameters_selectParameters :: Lens.Lens' JobParameters (Prelude.Maybe SelectParameters)
jobParameters_selectParameters :: Lens' JobParameters (Maybe SelectParameters)
jobParameters_selectParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe SelectParameters
selectParameters :: Maybe SelectParameters
$sel:selectParameters:JobParameters' :: JobParameters -> Maybe SelectParameters
selectParameters} -> Maybe SelectParameters
selectParameters) (\s :: JobParameters
s@JobParameters' {} Maybe SelectParameters
a -> JobParameters
s {$sel:selectParameters:JobParameters' :: Maybe SelectParameters
selectParameters = Maybe SelectParameters
a} :: JobParameters)

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

-- | The job type. You can initiate a job to perform a select query on an
-- archive, retrieve an archive, or get an inventory of a vault. Valid
-- values are \"select\", \"archive-retrieval\" and
-- \"inventory-retrieval\".
jobParameters_type :: Lens.Lens' JobParameters (Prelude.Maybe Prelude.Text)
jobParameters_type :: Lens' JobParameters (Maybe Text)
jobParameters_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobParameters' {Maybe Text
type' :: Maybe Text
$sel:type':JobParameters' :: JobParameters -> Maybe Text
type'} -> Maybe Text
type') (\s :: JobParameters
s@JobParameters' {} Maybe Text
a -> JobParameters
s {$sel:type':JobParameters' :: Maybe Text
type' = Maybe Text
a} :: JobParameters)

instance Prelude.Hashable JobParameters where
  hashWithSalt :: Int -> JobParameters -> Int
hashWithSalt Int
_salt JobParameters' {Maybe Text
Maybe InventoryRetrievalJobInput
Maybe SelectParameters
Maybe OutputLocation
type' :: Maybe Text
tier :: Maybe Text
selectParameters :: Maybe SelectParameters
sNSTopic :: Maybe Text
retrievalByteRange :: Maybe Text
outputLocation :: Maybe OutputLocation
inventoryRetrievalParameters :: Maybe InventoryRetrievalJobInput
format :: Maybe Text
description :: Maybe Text
archiveId :: Maybe Text
$sel:type':JobParameters' :: JobParameters -> Maybe Text
$sel:tier:JobParameters' :: JobParameters -> Maybe Text
$sel:selectParameters:JobParameters' :: JobParameters -> Maybe SelectParameters
$sel:sNSTopic:JobParameters' :: JobParameters -> Maybe Text
$sel:retrievalByteRange:JobParameters' :: JobParameters -> Maybe Text
$sel:outputLocation:JobParameters' :: JobParameters -> Maybe OutputLocation
$sel:inventoryRetrievalParameters:JobParameters' :: JobParameters -> Maybe InventoryRetrievalJobInput
$sel:format:JobParameters' :: JobParameters -> Maybe Text
$sel:description:JobParameters' :: JobParameters -> Maybe Text
$sel:archiveId:JobParameters' :: JobParameters -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
archiveId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
format
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OutputLocation
outputLocation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
retrievalByteRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sNSTopic
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SelectParameters
selectParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
type'

instance Prelude.NFData JobParameters where
  rnf :: JobParameters -> ()
rnf JobParameters' {Maybe Text
Maybe InventoryRetrievalJobInput
Maybe SelectParameters
Maybe OutputLocation
type' :: Maybe Text
tier :: Maybe Text
selectParameters :: Maybe SelectParameters
sNSTopic :: Maybe Text
retrievalByteRange :: Maybe Text
outputLocation :: Maybe OutputLocation
inventoryRetrievalParameters :: Maybe InventoryRetrievalJobInput
format :: Maybe Text
description :: Maybe Text
archiveId :: Maybe Text
$sel:type':JobParameters' :: JobParameters -> Maybe Text
$sel:tier:JobParameters' :: JobParameters -> Maybe Text
$sel:selectParameters:JobParameters' :: JobParameters -> Maybe SelectParameters
$sel:sNSTopic:JobParameters' :: JobParameters -> Maybe Text
$sel:retrievalByteRange:JobParameters' :: JobParameters -> Maybe Text
$sel:outputLocation:JobParameters' :: JobParameters -> Maybe OutputLocation
$sel:inventoryRetrievalParameters:JobParameters' :: JobParameters -> Maybe InventoryRetrievalJobInput
$sel:format:JobParameters' :: JobParameters -> Maybe Text
$sel:description:JobParameters' :: JobParameters -> Maybe Text
$sel:archiveId:JobParameters' :: JobParameters -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
archiveId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
format
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OutputLocation
outputLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
retrievalByteRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sNSTopic
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SelectParameters
selectParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
tier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
type'

instance Data.ToJSON JobParameters where
  toJSON :: JobParameters -> Value
toJSON JobParameters' {Maybe Text
Maybe InventoryRetrievalJobInput
Maybe SelectParameters
Maybe OutputLocation
type' :: Maybe Text
tier :: Maybe Text
selectParameters :: Maybe SelectParameters
sNSTopic :: Maybe Text
retrievalByteRange :: Maybe Text
outputLocation :: Maybe OutputLocation
inventoryRetrievalParameters :: Maybe InventoryRetrievalJobInput
format :: Maybe Text
description :: Maybe Text
archiveId :: Maybe Text
$sel:type':JobParameters' :: JobParameters -> Maybe Text
$sel:tier:JobParameters' :: JobParameters -> Maybe Text
$sel:selectParameters:JobParameters' :: JobParameters -> Maybe SelectParameters
$sel:sNSTopic:JobParameters' :: JobParameters -> Maybe Text
$sel:retrievalByteRange:JobParameters' :: JobParameters -> Maybe Text
$sel:outputLocation:JobParameters' :: JobParameters -> Maybe OutputLocation
$sel:inventoryRetrievalParameters:JobParameters' :: JobParameters -> Maybe InventoryRetrievalJobInput
$sel:format:JobParameters' :: JobParameters -> Maybe Text
$sel:description:JobParameters' :: JobParameters -> Maybe Text
$sel:archiveId:JobParameters' :: JobParameters -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ArchiveId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
archiveId,
            (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"Format" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
format,
            (Key
"InventoryRetrievalParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InventoryRetrievalJobInput
inventoryRetrievalParameters,
            (Key
"OutputLocation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OutputLocation
outputLocation,
            (Key
"RetrievalByteRange" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
retrievalByteRange,
            (Key
"SNSTopic" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
sNSTopic,
            (Key
"SelectParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SelectParameters
selectParameters,
            (Key
"Tier" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
tier,
            (Key
"Type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
type'
          ]
      )