{-# 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.MediaConvert.Types.Job
-- 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.MediaConvert.Types.Job where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaConvert.Types.AccelerationSettings
import Amazonka.MediaConvert.Types.AccelerationStatus
import Amazonka.MediaConvert.Types.BillingTagsSource
import Amazonka.MediaConvert.Types.HopDestination
import Amazonka.MediaConvert.Types.JobMessages
import Amazonka.MediaConvert.Types.JobPhase
import Amazonka.MediaConvert.Types.JobSettings
import Amazonka.MediaConvert.Types.JobStatus
import Amazonka.MediaConvert.Types.OutputGroupDetail
import Amazonka.MediaConvert.Types.QueueTransition
import Amazonka.MediaConvert.Types.SimulateReservedQueue
import Amazonka.MediaConvert.Types.StatusUpdateInterval
import Amazonka.MediaConvert.Types.Timing
import qualified Amazonka.Prelude as Prelude

-- | Each job converts an input file into an output file or files. For more
-- information, see the User Guide at
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
--
-- /See:/ 'newJob' smart constructor.
data Job = Job'
  { -- | Accelerated transcoding can significantly speed up jobs with long,
    -- visually complex content.
    Job -> Maybe AccelerationSettings
accelerationSettings :: Prelude.Maybe AccelerationSettings,
    -- | Describes whether the current job is running with accelerated
    -- transcoding. For jobs that have Acceleration (AccelerationMode) set to
    -- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
    -- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
    -- AccelerationStatus is one of the other states. AccelerationStatus is
    -- IN_PROGRESS initially, while the service determines whether the input
    -- files and job settings are compatible with accelerated transcoding. If
    -- they are, AcclerationStatus is ACCELERATED. If your input files and job
    -- settings aren\'t compatible with accelerated transcoding, the service
    -- either fails your job or runs it without accelerated transcoding,
    -- depending on how you set Acceleration (AccelerationMode). When the
    -- service runs your job without accelerated transcoding,
    -- AccelerationStatus is NOT_ACCELERATED.
    Job -> Maybe AccelerationStatus
accelerationStatus :: Prelude.Maybe AccelerationStatus,
    -- | An identifier for this resource that is unique within all of AWS.
    Job -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The tag type that AWS Billing and Cost Management will use to sort your
    -- AWS Elemental MediaConvert costs on any billing report that you set up.
    Job -> Maybe BillingTagsSource
billingTagsSource :: Prelude.Maybe BillingTagsSource,
    -- | The time, in Unix epoch format in seconds, when the job got created.
    Job -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
    Job -> Maybe JobPhase
currentPhase :: Prelude.Maybe JobPhase,
    -- | Error code for the job
    Job -> Maybe Int
errorCode :: Prelude.Maybe Prelude.Int,
    -- | Error message of Job
    Job -> Maybe Text
errorMessage :: Prelude.Maybe Prelude.Text,
    -- | Optional list of hop destinations.
    Job -> Maybe [HopDestination]
hopDestinations :: Prelude.Maybe [HopDestination],
    -- | A portion of the job\'s ARN, unique within your AWS Elemental
    -- MediaConvert resources
    Job -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | An estimate of how far your job has progressed. This estimate is shown
    -- as a percentage of the total time from when your job leaves its queue to
    -- when your output files appear in your output Amazon S3 bucket. AWS
    -- Elemental MediaConvert provides jobPercentComplete in CloudWatch
    -- STATUS_UPDATE events and in the response to GetJob and ListJobs
    -- requests. The jobPercentComplete estimate is reliable for the following
    -- input containers: Quicktime, Transport Stream, MP4, and MXF. For some
    -- jobs, the service can\'t provide information about job progress. In
    -- those cases, jobPercentComplete returns a null value.
    Job -> Maybe Int
jobPercentComplete :: Prelude.Maybe Prelude.Int,
    -- | The job template that the job is created from, if it is created from a
    -- job template.
    Job -> Maybe Text
jobTemplate :: Prelude.Maybe Prelude.Text,
    -- | Provides messages from the service about jobs that you have already
    -- successfully submitted.
    Job -> Maybe JobMessages
messages :: Prelude.Maybe JobMessages,
    -- | List of output group details
    Job -> Maybe [OutputGroupDetail]
outputGroupDetails :: Prelude.Maybe [OutputGroupDetail],
    -- | Relative priority on the job.
    Job -> Maybe Int
priority :: Prelude.Maybe Prelude.Int,
    -- | When you create a job, you can specify a queue to send it to. If you
    -- don\'t specify, the job will go to the default queue. For more about
    -- queues, see the User Guide topic at
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
    Job -> Maybe Text
queue :: Prelude.Maybe Prelude.Text,
    -- | The job\'s queue hopping history.
    Job -> Maybe [QueueTransition]
queueTransitions :: Prelude.Maybe [QueueTransition],
    -- | The number of times that the service automatically attempted to process
    -- your job after encountering an error.
    Job -> Maybe Int
retryCount :: Prelude.Maybe Prelude.Int,
    -- | Enable this setting when you run a test job to estimate how many
    -- reserved transcoding slots (RTS) you need. When this is enabled,
    -- MediaConvert runs your job from an on-demand queue with similar
    -- performance to what you will see with one RTS in a reserved queue. This
    -- setting is disabled by default.
    Job -> Maybe SimulateReservedQueue
simulateReservedQueue :: Prelude.Maybe SimulateReservedQueue,
    -- | A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
    -- ERROR.
    Job -> Maybe JobStatus
status :: Prelude.Maybe JobStatus,
    -- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
    -- CloudWatch Events. Set the interval, in seconds, between status updates.
    -- MediaConvert sends an update at this interval from the time the service
    -- begins processing your job to the time it completes the transcode or
    -- encounters an error.
    Job -> Maybe StatusUpdateInterval
statusUpdateInterval :: Prelude.Maybe StatusUpdateInterval,
    -- | Information about when jobs are submitted, started, and finished is
    -- specified in Unix epoch format in seconds.
    Job -> Maybe Timing
timing :: Prelude.Maybe Timing,
    -- | User-defined metadata that you want to associate with an MediaConvert
    -- job. You specify metadata in key\/value pairs.
    Job -> Maybe (HashMap Text Text)
userMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The IAM role you use for creating this job. For details about
    -- permissions, see the User Guide topic at the User Guide at
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
    Job -> Text
role' :: Prelude.Text,
    -- | JobSettings contains all the transcode settings for a job.
    Job -> JobSettings
settings :: JobSettings
  }
  deriving (Job -> Job -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Job -> Job -> Bool
$c/= :: Job -> Job -> Bool
== :: Job -> Job -> Bool
$c== :: Job -> Job -> Bool
Prelude.Eq, ReadPrec [Job]
ReadPrec Job
Int -> ReadS Job
ReadS [Job]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Job]
$creadListPrec :: ReadPrec [Job]
readPrec :: ReadPrec Job
$creadPrec :: ReadPrec Job
readList :: ReadS [Job]
$creadList :: ReadS [Job]
readsPrec :: Int -> ReadS Job
$creadsPrec :: Int -> ReadS Job
Prelude.Read, Int -> Job -> ShowS
[Job] -> ShowS
Job -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Job] -> ShowS
$cshowList :: [Job] -> ShowS
show :: Job -> String
$cshow :: Job -> String
showsPrec :: Int -> Job -> ShowS
$cshowsPrec :: Int -> Job -> ShowS
Prelude.Show, forall x. Rep Job x -> Job
forall x. Job -> Rep Job x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Job x -> Job
$cfrom :: forall x. Job -> Rep Job x
Prelude.Generic)

-- |
-- Create a value of 'Job' 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:
--
-- 'accelerationSettings', 'job_accelerationSettings' - Accelerated transcoding can significantly speed up jobs with long,
-- visually complex content.
--
-- 'accelerationStatus', 'job_accelerationStatus' - Describes whether the current job is running with accelerated
-- transcoding. For jobs that have Acceleration (AccelerationMode) set to
-- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
-- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
-- AccelerationStatus is one of the other states. AccelerationStatus is
-- IN_PROGRESS initially, while the service determines whether the input
-- files and job settings are compatible with accelerated transcoding. If
-- they are, AcclerationStatus is ACCELERATED. If your input files and job
-- settings aren\'t compatible with accelerated transcoding, the service
-- either fails your job or runs it without accelerated transcoding,
-- depending on how you set Acceleration (AccelerationMode). When the
-- service runs your job without accelerated transcoding,
-- AccelerationStatus is NOT_ACCELERATED.
--
-- 'arn', 'job_arn' - An identifier for this resource that is unique within all of AWS.
--
-- 'billingTagsSource', 'job_billingTagsSource' - The tag type that AWS Billing and Cost Management will use to sort your
-- AWS Elemental MediaConvert costs on any billing report that you set up.
--
-- 'createdAt', 'job_createdAt' - The time, in Unix epoch format in seconds, when the job got created.
--
-- 'currentPhase', 'job_currentPhase' - A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
--
-- 'errorCode', 'job_errorCode' - Error code for the job
--
-- 'errorMessage', 'job_errorMessage' - Error message of Job
--
-- 'hopDestinations', 'job_hopDestinations' - Optional list of hop destinations.
--
-- 'id', 'job_id' - A portion of the job\'s ARN, unique within your AWS Elemental
-- MediaConvert resources
--
-- 'jobPercentComplete', 'job_jobPercentComplete' - An estimate of how far your job has progressed. This estimate is shown
-- as a percentage of the total time from when your job leaves its queue to
-- when your output files appear in your output Amazon S3 bucket. AWS
-- Elemental MediaConvert provides jobPercentComplete in CloudWatch
-- STATUS_UPDATE events and in the response to GetJob and ListJobs
-- requests. The jobPercentComplete estimate is reliable for the following
-- input containers: Quicktime, Transport Stream, MP4, and MXF. For some
-- jobs, the service can\'t provide information about job progress. In
-- those cases, jobPercentComplete returns a null value.
--
-- 'jobTemplate', 'job_jobTemplate' - The job template that the job is created from, if it is created from a
-- job template.
--
-- 'messages', 'job_messages' - Provides messages from the service about jobs that you have already
-- successfully submitted.
--
-- 'outputGroupDetails', 'job_outputGroupDetails' - List of output group details
--
-- 'priority', 'job_priority' - Relative priority on the job.
--
-- 'queue', 'job_queue' - When you create a job, you can specify a queue to send it to. If you
-- don\'t specify, the job will go to the default queue. For more about
-- queues, see the User Guide topic at
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
--
-- 'queueTransitions', 'job_queueTransitions' - The job\'s queue hopping history.
--
-- 'retryCount', 'job_retryCount' - The number of times that the service automatically attempted to process
-- your job after encountering an error.
--
-- 'simulateReservedQueue', 'job_simulateReservedQueue' - Enable this setting when you run a test job to estimate how many
-- reserved transcoding slots (RTS) you need. When this is enabled,
-- MediaConvert runs your job from an on-demand queue with similar
-- performance to what you will see with one RTS in a reserved queue. This
-- setting is disabled by default.
--
-- 'status', 'job_status' - A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
-- ERROR.
--
-- 'statusUpdateInterval', 'job_statusUpdateInterval' - Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
-- CloudWatch Events. Set the interval, in seconds, between status updates.
-- MediaConvert sends an update at this interval from the time the service
-- begins processing your job to the time it completes the transcode or
-- encounters an error.
--
-- 'timing', 'job_timing' - Information about when jobs are submitted, started, and finished is
-- specified in Unix epoch format in seconds.
--
-- 'userMetadata', 'job_userMetadata' - User-defined metadata that you want to associate with an MediaConvert
-- job. You specify metadata in key\/value pairs.
--
-- 'role'', 'job_role' - The IAM role you use for creating this job. For details about
-- permissions, see the User Guide topic at the User Guide at
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
--
-- 'settings', 'job_settings' - JobSettings contains all the transcode settings for a job.
newJob ::
  -- | 'role''
  Prelude.Text ->
  -- | 'settings'
  JobSettings ->
  Job
newJob :: Text -> JobSettings -> Job
newJob Text
pRole_ JobSettings
pSettings_ =
  Job'
    { $sel:accelerationSettings:Job' :: Maybe AccelerationSettings
accelerationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:accelerationStatus:Job' :: Maybe AccelerationStatus
accelerationStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Job' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:billingTagsSource:Job' :: Maybe BillingTagsSource
billingTagsSource = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Job' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:currentPhase:Job' :: Maybe JobPhase
currentPhase = forall a. Maybe a
Prelude.Nothing,
      $sel:errorCode:Job' :: Maybe Int
errorCode = forall a. Maybe a
Prelude.Nothing,
      $sel:errorMessage:Job' :: Maybe Text
errorMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:hopDestinations:Job' :: Maybe [HopDestination]
hopDestinations = forall a. Maybe a
Prelude.Nothing,
      $sel:id:Job' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:jobPercentComplete:Job' :: Maybe Int
jobPercentComplete = forall a. Maybe a
Prelude.Nothing,
      $sel:jobTemplate:Job' :: Maybe Text
jobTemplate = forall a. Maybe a
Prelude.Nothing,
      $sel:messages:Job' :: Maybe JobMessages
messages = forall a. Maybe a
Prelude.Nothing,
      $sel:outputGroupDetails:Job' :: Maybe [OutputGroupDetail]
outputGroupDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:priority:Job' :: Maybe Int
priority = forall a. Maybe a
Prelude.Nothing,
      $sel:queue:Job' :: Maybe Text
queue = forall a. Maybe a
Prelude.Nothing,
      $sel:queueTransitions:Job' :: Maybe [QueueTransition]
queueTransitions = forall a. Maybe a
Prelude.Nothing,
      $sel:retryCount:Job' :: Maybe Int
retryCount = forall a. Maybe a
Prelude.Nothing,
      $sel:simulateReservedQueue:Job' :: Maybe SimulateReservedQueue
simulateReservedQueue = forall a. Maybe a
Prelude.Nothing,
      $sel:status:Job' :: Maybe JobStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:statusUpdateInterval:Job' :: Maybe StatusUpdateInterval
statusUpdateInterval = forall a. Maybe a
Prelude.Nothing,
      $sel:timing:Job' :: Maybe Timing
timing = forall a. Maybe a
Prelude.Nothing,
      $sel:userMetadata:Job' :: Maybe (HashMap Text Text)
userMetadata = forall a. Maybe a
Prelude.Nothing,
      $sel:role':Job' :: Text
role' = Text
pRole_,
      $sel:settings:Job' :: JobSettings
settings = JobSettings
pSettings_
    }

-- | Accelerated transcoding can significantly speed up jobs with long,
-- visually complex content.
job_accelerationSettings :: Lens.Lens' Job (Prelude.Maybe AccelerationSettings)
job_accelerationSettings :: Lens' Job (Maybe AccelerationSettings)
job_accelerationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe AccelerationSettings
accelerationSettings :: Maybe AccelerationSettings
$sel:accelerationSettings:Job' :: Job -> Maybe AccelerationSettings
accelerationSettings} -> Maybe AccelerationSettings
accelerationSettings) (\s :: Job
s@Job' {} Maybe AccelerationSettings
a -> Job
s {$sel:accelerationSettings:Job' :: Maybe AccelerationSettings
accelerationSettings = Maybe AccelerationSettings
a} :: Job)

-- | Describes whether the current job is running with accelerated
-- transcoding. For jobs that have Acceleration (AccelerationMode) set to
-- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
-- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
-- AccelerationStatus is one of the other states. AccelerationStatus is
-- IN_PROGRESS initially, while the service determines whether the input
-- files and job settings are compatible with accelerated transcoding. If
-- they are, AcclerationStatus is ACCELERATED. If your input files and job
-- settings aren\'t compatible with accelerated transcoding, the service
-- either fails your job or runs it without accelerated transcoding,
-- depending on how you set Acceleration (AccelerationMode). When the
-- service runs your job without accelerated transcoding,
-- AccelerationStatus is NOT_ACCELERATED.
job_accelerationStatus :: Lens.Lens' Job (Prelude.Maybe AccelerationStatus)
job_accelerationStatus :: Lens' Job (Maybe AccelerationStatus)
job_accelerationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe AccelerationStatus
accelerationStatus :: Maybe AccelerationStatus
$sel:accelerationStatus:Job' :: Job -> Maybe AccelerationStatus
accelerationStatus} -> Maybe AccelerationStatus
accelerationStatus) (\s :: Job
s@Job' {} Maybe AccelerationStatus
a -> Job
s {$sel:accelerationStatus:Job' :: Maybe AccelerationStatus
accelerationStatus = Maybe AccelerationStatus
a} :: Job)

-- | An identifier for this resource that is unique within all of AWS.
job_arn :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
job_arn :: Lens' Job (Maybe Text)
job_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Text
arn :: Maybe Text
$sel:arn:Job' :: Job -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Job
s@Job' {} Maybe Text
a -> Job
s {$sel:arn:Job' :: Maybe Text
arn = Maybe Text
a} :: Job)

-- | The tag type that AWS Billing and Cost Management will use to sort your
-- AWS Elemental MediaConvert costs on any billing report that you set up.
job_billingTagsSource :: Lens.Lens' Job (Prelude.Maybe BillingTagsSource)
job_billingTagsSource :: Lens' Job (Maybe BillingTagsSource)
job_billingTagsSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe BillingTagsSource
billingTagsSource :: Maybe BillingTagsSource
$sel:billingTagsSource:Job' :: Job -> Maybe BillingTagsSource
billingTagsSource} -> Maybe BillingTagsSource
billingTagsSource) (\s :: Job
s@Job' {} Maybe BillingTagsSource
a -> Job
s {$sel:billingTagsSource:Job' :: Maybe BillingTagsSource
billingTagsSource = Maybe BillingTagsSource
a} :: Job)

-- | The time, in Unix epoch format in seconds, when the job got created.
job_createdAt :: Lens.Lens' Job (Prelude.Maybe Prelude.UTCTime)
job_createdAt :: Lens' Job (Maybe UTCTime)
job_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:Job' :: Job -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: Job
s@Job' {} Maybe POSIX
a -> Job
s {$sel:createdAt:Job' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: Job) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
job_currentPhase :: Lens.Lens' Job (Prelude.Maybe JobPhase)
job_currentPhase :: Lens' Job (Maybe JobPhase)
job_currentPhase = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe JobPhase
currentPhase :: Maybe JobPhase
$sel:currentPhase:Job' :: Job -> Maybe JobPhase
currentPhase} -> Maybe JobPhase
currentPhase) (\s :: Job
s@Job' {} Maybe JobPhase
a -> Job
s {$sel:currentPhase:Job' :: Maybe JobPhase
currentPhase = Maybe JobPhase
a} :: Job)

-- | Error code for the job
job_errorCode :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
job_errorCode :: Lens' Job (Maybe Int)
job_errorCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Int
errorCode :: Maybe Int
$sel:errorCode:Job' :: Job -> Maybe Int
errorCode} -> Maybe Int
errorCode) (\s :: Job
s@Job' {} Maybe Int
a -> Job
s {$sel:errorCode:Job' :: Maybe Int
errorCode = Maybe Int
a} :: Job)

-- | Error message of Job
job_errorMessage :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
job_errorMessage :: Lens' Job (Maybe Text)
job_errorMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Text
errorMessage :: Maybe Text
$sel:errorMessage:Job' :: Job -> Maybe Text
errorMessage} -> Maybe Text
errorMessage) (\s :: Job
s@Job' {} Maybe Text
a -> Job
s {$sel:errorMessage:Job' :: Maybe Text
errorMessage = Maybe Text
a} :: Job)

-- | Optional list of hop destinations.
job_hopDestinations :: Lens.Lens' Job (Prelude.Maybe [HopDestination])
job_hopDestinations :: Lens' Job (Maybe [HopDestination])
job_hopDestinations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe [HopDestination]
hopDestinations :: Maybe [HopDestination]
$sel:hopDestinations:Job' :: Job -> Maybe [HopDestination]
hopDestinations} -> Maybe [HopDestination]
hopDestinations) (\s :: Job
s@Job' {} Maybe [HopDestination]
a -> Job
s {$sel:hopDestinations:Job' :: Maybe [HopDestination]
hopDestinations = Maybe [HopDestination]
a} :: Job) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A portion of the job\'s ARN, unique within your AWS Elemental
-- MediaConvert resources
job_id :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
job_id :: Lens' Job (Maybe Text)
job_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Text
id :: Maybe Text
$sel:id:Job' :: Job -> Maybe Text
id} -> Maybe Text
id) (\s :: Job
s@Job' {} Maybe Text
a -> Job
s {$sel:id:Job' :: Maybe Text
id = Maybe Text
a} :: Job)

-- | An estimate of how far your job has progressed. This estimate is shown
-- as a percentage of the total time from when your job leaves its queue to
-- when your output files appear in your output Amazon S3 bucket. AWS
-- Elemental MediaConvert provides jobPercentComplete in CloudWatch
-- STATUS_UPDATE events and in the response to GetJob and ListJobs
-- requests. The jobPercentComplete estimate is reliable for the following
-- input containers: Quicktime, Transport Stream, MP4, and MXF. For some
-- jobs, the service can\'t provide information about job progress. In
-- those cases, jobPercentComplete returns a null value.
job_jobPercentComplete :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
job_jobPercentComplete :: Lens' Job (Maybe Int)
job_jobPercentComplete = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Int
jobPercentComplete :: Maybe Int
$sel:jobPercentComplete:Job' :: Job -> Maybe Int
jobPercentComplete} -> Maybe Int
jobPercentComplete) (\s :: Job
s@Job' {} Maybe Int
a -> Job
s {$sel:jobPercentComplete:Job' :: Maybe Int
jobPercentComplete = Maybe Int
a} :: Job)

-- | The job template that the job is created from, if it is created from a
-- job template.
job_jobTemplate :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
job_jobTemplate :: Lens' Job (Maybe Text)
job_jobTemplate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Text
jobTemplate :: Maybe Text
$sel:jobTemplate:Job' :: Job -> Maybe Text
jobTemplate} -> Maybe Text
jobTemplate) (\s :: Job
s@Job' {} Maybe Text
a -> Job
s {$sel:jobTemplate:Job' :: Maybe Text
jobTemplate = Maybe Text
a} :: Job)

-- | Provides messages from the service about jobs that you have already
-- successfully submitted.
job_messages :: Lens.Lens' Job (Prelude.Maybe JobMessages)
job_messages :: Lens' Job (Maybe JobMessages)
job_messages = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe JobMessages
messages :: Maybe JobMessages
$sel:messages:Job' :: Job -> Maybe JobMessages
messages} -> Maybe JobMessages
messages) (\s :: Job
s@Job' {} Maybe JobMessages
a -> Job
s {$sel:messages:Job' :: Maybe JobMessages
messages = Maybe JobMessages
a} :: Job)

-- | List of output group details
job_outputGroupDetails :: Lens.Lens' Job (Prelude.Maybe [OutputGroupDetail])
job_outputGroupDetails :: Lens' Job (Maybe [OutputGroupDetail])
job_outputGroupDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe [OutputGroupDetail]
outputGroupDetails :: Maybe [OutputGroupDetail]
$sel:outputGroupDetails:Job' :: Job -> Maybe [OutputGroupDetail]
outputGroupDetails} -> Maybe [OutputGroupDetail]
outputGroupDetails) (\s :: Job
s@Job' {} Maybe [OutputGroupDetail]
a -> Job
s {$sel:outputGroupDetails:Job' :: Maybe [OutputGroupDetail]
outputGroupDetails = Maybe [OutputGroupDetail]
a} :: Job) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Relative priority on the job.
job_priority :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
job_priority :: Lens' Job (Maybe Int)
job_priority = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Int
priority :: Maybe Int
$sel:priority:Job' :: Job -> Maybe Int
priority} -> Maybe Int
priority) (\s :: Job
s@Job' {} Maybe Int
a -> Job
s {$sel:priority:Job' :: Maybe Int
priority = Maybe Int
a} :: Job)

-- | When you create a job, you can specify a queue to send it to. If you
-- don\'t specify, the job will go to the default queue. For more about
-- queues, see the User Guide topic at
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
job_queue :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
job_queue :: Lens' Job (Maybe Text)
job_queue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Text
queue :: Maybe Text
$sel:queue:Job' :: Job -> Maybe Text
queue} -> Maybe Text
queue) (\s :: Job
s@Job' {} Maybe Text
a -> Job
s {$sel:queue:Job' :: Maybe Text
queue = Maybe Text
a} :: Job)

-- | The job\'s queue hopping history.
job_queueTransitions :: Lens.Lens' Job (Prelude.Maybe [QueueTransition])
job_queueTransitions :: Lens' Job (Maybe [QueueTransition])
job_queueTransitions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe [QueueTransition]
queueTransitions :: Maybe [QueueTransition]
$sel:queueTransitions:Job' :: Job -> Maybe [QueueTransition]
queueTransitions} -> Maybe [QueueTransition]
queueTransitions) (\s :: Job
s@Job' {} Maybe [QueueTransition]
a -> Job
s {$sel:queueTransitions:Job' :: Maybe [QueueTransition]
queueTransitions = Maybe [QueueTransition]
a} :: Job) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of times that the service automatically attempted to process
-- your job after encountering an error.
job_retryCount :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
job_retryCount :: Lens' Job (Maybe Int)
job_retryCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Int
retryCount :: Maybe Int
$sel:retryCount:Job' :: Job -> Maybe Int
retryCount} -> Maybe Int
retryCount) (\s :: Job
s@Job' {} Maybe Int
a -> Job
s {$sel:retryCount:Job' :: Maybe Int
retryCount = Maybe Int
a} :: Job)

-- | Enable this setting when you run a test job to estimate how many
-- reserved transcoding slots (RTS) you need. When this is enabled,
-- MediaConvert runs your job from an on-demand queue with similar
-- performance to what you will see with one RTS in a reserved queue. This
-- setting is disabled by default.
job_simulateReservedQueue :: Lens.Lens' Job (Prelude.Maybe SimulateReservedQueue)
job_simulateReservedQueue :: Lens' Job (Maybe SimulateReservedQueue)
job_simulateReservedQueue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe SimulateReservedQueue
simulateReservedQueue :: Maybe SimulateReservedQueue
$sel:simulateReservedQueue:Job' :: Job -> Maybe SimulateReservedQueue
simulateReservedQueue} -> Maybe SimulateReservedQueue
simulateReservedQueue) (\s :: Job
s@Job' {} Maybe SimulateReservedQueue
a -> Job
s {$sel:simulateReservedQueue:Job' :: Maybe SimulateReservedQueue
simulateReservedQueue = Maybe SimulateReservedQueue
a} :: Job)

-- | A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
-- ERROR.
job_status :: Lens.Lens' Job (Prelude.Maybe JobStatus)
job_status :: Lens' Job (Maybe JobStatus)
job_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe JobStatus
status :: Maybe JobStatus
$sel:status:Job' :: Job -> Maybe JobStatus
status} -> Maybe JobStatus
status) (\s :: Job
s@Job' {} Maybe JobStatus
a -> Job
s {$sel:status:Job' :: Maybe JobStatus
status = Maybe JobStatus
a} :: Job)

-- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
-- CloudWatch Events. Set the interval, in seconds, between status updates.
-- MediaConvert sends an update at this interval from the time the service
-- begins processing your job to the time it completes the transcode or
-- encounters an error.
job_statusUpdateInterval :: Lens.Lens' Job (Prelude.Maybe StatusUpdateInterval)
job_statusUpdateInterval :: Lens' Job (Maybe StatusUpdateInterval)
job_statusUpdateInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe StatusUpdateInterval
statusUpdateInterval :: Maybe StatusUpdateInterval
$sel:statusUpdateInterval:Job' :: Job -> Maybe StatusUpdateInterval
statusUpdateInterval} -> Maybe StatusUpdateInterval
statusUpdateInterval) (\s :: Job
s@Job' {} Maybe StatusUpdateInterval
a -> Job
s {$sel:statusUpdateInterval:Job' :: Maybe StatusUpdateInterval
statusUpdateInterval = Maybe StatusUpdateInterval
a} :: Job)

-- | Information about when jobs are submitted, started, and finished is
-- specified in Unix epoch format in seconds.
job_timing :: Lens.Lens' Job (Prelude.Maybe Timing)
job_timing :: Lens' Job (Maybe Timing)
job_timing = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe Timing
timing :: Maybe Timing
$sel:timing:Job' :: Job -> Maybe Timing
timing} -> Maybe Timing
timing) (\s :: Job
s@Job' {} Maybe Timing
a -> Job
s {$sel:timing:Job' :: Maybe Timing
timing = Maybe Timing
a} :: Job)

-- | User-defined metadata that you want to associate with an MediaConvert
-- job. You specify metadata in key\/value pairs.
job_userMetadata :: Lens.Lens' Job (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
job_userMetadata :: Lens' Job (Maybe (HashMap Text Text))
job_userMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Maybe (HashMap Text Text)
userMetadata :: Maybe (HashMap Text Text)
$sel:userMetadata:Job' :: Job -> Maybe (HashMap Text Text)
userMetadata} -> Maybe (HashMap Text Text)
userMetadata) (\s :: Job
s@Job' {} Maybe (HashMap Text Text)
a -> Job
s {$sel:userMetadata:Job' :: Maybe (HashMap Text Text)
userMetadata = Maybe (HashMap Text Text)
a} :: Job) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The IAM role you use for creating this job. For details about
-- permissions, see the User Guide topic at the User Guide at
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
job_role :: Lens.Lens' Job Prelude.Text
job_role :: Lens' Job Text
job_role = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {Text
role' :: Text
$sel:role':Job' :: Job -> Text
role'} -> Text
role') (\s :: Job
s@Job' {} Text
a -> Job
s {$sel:role':Job' :: Text
role' = Text
a} :: Job)

-- | JobSettings contains all the transcode settings for a job.
job_settings :: Lens.Lens' Job JobSettings
job_settings :: Lens' Job JobSettings
job_settings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Job' {JobSettings
settings :: JobSettings
$sel:settings:Job' :: Job -> JobSettings
settings} -> JobSettings
settings) (\s :: Job
s@Job' {} JobSettings
a -> Job
s {$sel:settings:Job' :: JobSettings
settings = JobSettings
a} :: Job)

instance Data.FromJSON Job where
  parseJSON :: Value -> Parser Job
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Job"
      ( \Object
x ->
          Maybe AccelerationSettings
-> Maybe AccelerationStatus
-> Maybe Text
-> Maybe BillingTagsSource
-> Maybe POSIX
-> Maybe JobPhase
-> Maybe Int
-> Maybe Text
-> Maybe [HopDestination]
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe JobMessages
-> Maybe [OutputGroupDetail]
-> Maybe Int
-> Maybe Text
-> Maybe [QueueTransition]
-> Maybe Int
-> Maybe SimulateReservedQueue
-> Maybe JobStatus
-> Maybe StatusUpdateInterval
-> Maybe Timing
-> Maybe (HashMap Text Text)
-> Text
-> JobSettings
-> Job
Job'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"accelerationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"accelerationStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"billingTagsSource")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"createdAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"currentPhase")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"errorCode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"errorMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hopDestinations"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"id")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"jobPercentComplete")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"jobTemplate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"messages")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"outputGroupDetails"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"priority")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"queue")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"queueTransitions"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"retryCount")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"simulateReservedQueue")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"statusUpdateInterval")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"timing")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"userMetadata" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"role")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"settings")
      )

instance Prelude.Hashable Job where
  hashWithSalt :: Int -> Job -> Int
hashWithSalt Int
_salt Job' {Maybe Int
Maybe [HopDestination]
Maybe [QueueTransition]
Maybe [OutputGroupDetail]
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe AccelerationSettings
Maybe AccelerationStatus
Maybe BillingTagsSource
Maybe JobMessages
Maybe JobPhase
Maybe JobStatus
Maybe SimulateReservedQueue
Maybe StatusUpdateInterval
Maybe Timing
Text
JobSettings
settings :: JobSettings
role' :: Text
userMetadata :: Maybe (HashMap Text Text)
timing :: Maybe Timing
statusUpdateInterval :: Maybe StatusUpdateInterval
status :: Maybe JobStatus
simulateReservedQueue :: Maybe SimulateReservedQueue
retryCount :: Maybe Int
queueTransitions :: Maybe [QueueTransition]
queue :: Maybe Text
priority :: Maybe Int
outputGroupDetails :: Maybe [OutputGroupDetail]
messages :: Maybe JobMessages
jobTemplate :: Maybe Text
jobPercentComplete :: Maybe Int
id :: Maybe Text
hopDestinations :: Maybe [HopDestination]
errorMessage :: Maybe Text
errorCode :: Maybe Int
currentPhase :: Maybe JobPhase
createdAt :: Maybe POSIX
billingTagsSource :: Maybe BillingTagsSource
arn :: Maybe Text
accelerationStatus :: Maybe AccelerationStatus
accelerationSettings :: Maybe AccelerationSettings
$sel:settings:Job' :: Job -> JobSettings
$sel:role':Job' :: Job -> Text
$sel:userMetadata:Job' :: Job -> Maybe (HashMap Text Text)
$sel:timing:Job' :: Job -> Maybe Timing
$sel:statusUpdateInterval:Job' :: Job -> Maybe StatusUpdateInterval
$sel:status:Job' :: Job -> Maybe JobStatus
$sel:simulateReservedQueue:Job' :: Job -> Maybe SimulateReservedQueue
$sel:retryCount:Job' :: Job -> Maybe Int
$sel:queueTransitions:Job' :: Job -> Maybe [QueueTransition]
$sel:queue:Job' :: Job -> Maybe Text
$sel:priority:Job' :: Job -> Maybe Int
$sel:outputGroupDetails:Job' :: Job -> Maybe [OutputGroupDetail]
$sel:messages:Job' :: Job -> Maybe JobMessages
$sel:jobTemplate:Job' :: Job -> Maybe Text
$sel:jobPercentComplete:Job' :: Job -> Maybe Int
$sel:id:Job' :: Job -> Maybe Text
$sel:hopDestinations:Job' :: Job -> Maybe [HopDestination]
$sel:errorMessage:Job' :: Job -> Maybe Text
$sel:errorCode:Job' :: Job -> Maybe Int
$sel:currentPhase:Job' :: Job -> Maybe JobPhase
$sel:createdAt:Job' :: Job -> Maybe POSIX
$sel:billingTagsSource:Job' :: Job -> Maybe BillingTagsSource
$sel:arn:Job' :: Job -> Maybe Text
$sel:accelerationStatus:Job' :: Job -> Maybe AccelerationStatus
$sel:accelerationSettings:Job' :: Job -> Maybe AccelerationSettings
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccelerationSettings
accelerationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccelerationStatus
accelerationStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BillingTagsSource
billingTagsSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobPhase
currentPhase
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
errorCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
errorMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HopDestination]
hopDestinations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
jobPercentComplete
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobTemplate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobMessages
messages
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [OutputGroupDetail]
outputGroupDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
priority
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
queue
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [QueueTransition]
queueTransitions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
retryCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SimulateReservedQueue
simulateReservedQueue
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StatusUpdateInterval
statusUpdateInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Timing
timing
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
userMetadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
role'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` JobSettings
settings

instance Prelude.NFData Job where
  rnf :: Job -> ()
rnf Job' {Maybe Int
Maybe [HopDestination]
Maybe [QueueTransition]
Maybe [OutputGroupDetail]
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe AccelerationSettings
Maybe AccelerationStatus
Maybe BillingTagsSource
Maybe JobMessages
Maybe JobPhase
Maybe JobStatus
Maybe SimulateReservedQueue
Maybe StatusUpdateInterval
Maybe Timing
Text
JobSettings
settings :: JobSettings
role' :: Text
userMetadata :: Maybe (HashMap Text Text)
timing :: Maybe Timing
statusUpdateInterval :: Maybe StatusUpdateInterval
status :: Maybe JobStatus
simulateReservedQueue :: Maybe SimulateReservedQueue
retryCount :: Maybe Int
queueTransitions :: Maybe [QueueTransition]
queue :: Maybe Text
priority :: Maybe Int
outputGroupDetails :: Maybe [OutputGroupDetail]
messages :: Maybe JobMessages
jobTemplate :: Maybe Text
jobPercentComplete :: Maybe Int
id :: Maybe Text
hopDestinations :: Maybe [HopDestination]
errorMessage :: Maybe Text
errorCode :: Maybe Int
currentPhase :: Maybe JobPhase
createdAt :: Maybe POSIX
billingTagsSource :: Maybe BillingTagsSource
arn :: Maybe Text
accelerationStatus :: Maybe AccelerationStatus
accelerationSettings :: Maybe AccelerationSettings
$sel:settings:Job' :: Job -> JobSettings
$sel:role':Job' :: Job -> Text
$sel:userMetadata:Job' :: Job -> Maybe (HashMap Text Text)
$sel:timing:Job' :: Job -> Maybe Timing
$sel:statusUpdateInterval:Job' :: Job -> Maybe StatusUpdateInterval
$sel:status:Job' :: Job -> Maybe JobStatus
$sel:simulateReservedQueue:Job' :: Job -> Maybe SimulateReservedQueue
$sel:retryCount:Job' :: Job -> Maybe Int
$sel:queueTransitions:Job' :: Job -> Maybe [QueueTransition]
$sel:queue:Job' :: Job -> Maybe Text
$sel:priority:Job' :: Job -> Maybe Int
$sel:outputGroupDetails:Job' :: Job -> Maybe [OutputGroupDetail]
$sel:messages:Job' :: Job -> Maybe JobMessages
$sel:jobTemplate:Job' :: Job -> Maybe Text
$sel:jobPercentComplete:Job' :: Job -> Maybe Int
$sel:id:Job' :: Job -> Maybe Text
$sel:hopDestinations:Job' :: Job -> Maybe [HopDestination]
$sel:errorMessage:Job' :: Job -> Maybe Text
$sel:errorCode:Job' :: Job -> Maybe Int
$sel:currentPhase:Job' :: Job -> Maybe JobPhase
$sel:createdAt:Job' :: Job -> Maybe POSIX
$sel:billingTagsSource:Job' :: Job -> Maybe BillingTagsSource
$sel:arn:Job' :: Job -> Maybe Text
$sel:accelerationStatus:Job' :: Job -> Maybe AccelerationStatus
$sel:accelerationSettings:Job' :: Job -> Maybe AccelerationSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccelerationSettings
accelerationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccelerationStatus
accelerationStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BillingTagsSource
billingTagsSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobPhase
currentPhase
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
errorCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
errorMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HopDestination]
hopDestinations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
jobPercentComplete
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobTemplate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobMessages
messages
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [OutputGroupDetail]
outputGroupDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
priority
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [QueueTransition]
queueTransitions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
retryCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe SimulateReservedQueue
simulateReservedQueue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe StatusUpdateInterval
statusUpdateInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Timing
timing
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
userMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
role'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf JobSettings
settings