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

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

-- |
-- Module      : Amazonka.Backup.DescribeRestoreJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns metadata associated with a restore job that is specified by a
-- job ID.
module Amazonka.Backup.DescribeRestoreJob
  ( -- * Creating a Request
    DescribeRestoreJob (..),
    newDescribeRestoreJob,

    -- * Request Lenses
    describeRestoreJob_restoreJobId,

    -- * Destructuring the Response
    DescribeRestoreJobResponse (..),
    newDescribeRestoreJobResponse,

    -- * Response Lenses
    describeRestoreJobResponse_accountId,
    describeRestoreJobResponse_backupSizeInBytes,
    describeRestoreJobResponse_completionDate,
    describeRestoreJobResponse_createdResourceArn,
    describeRestoreJobResponse_creationDate,
    describeRestoreJobResponse_expectedCompletionTimeMinutes,
    describeRestoreJobResponse_iamRoleArn,
    describeRestoreJobResponse_percentDone,
    describeRestoreJobResponse_recoveryPointArn,
    describeRestoreJobResponse_resourceType,
    describeRestoreJobResponse_restoreJobId,
    describeRestoreJobResponse_status,
    describeRestoreJobResponse_statusMessage,
    describeRestoreJobResponse_httpStatus,
  )
where

import Amazonka.Backup.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeRestoreJob' smart constructor.
data DescribeRestoreJob = DescribeRestoreJob'
  { -- | Uniquely identifies the job that restores a recovery point.
    DescribeRestoreJob -> Text
restoreJobId :: Prelude.Text
  }
  deriving (DescribeRestoreJob -> DescribeRestoreJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRestoreJob -> DescribeRestoreJob -> Bool
$c/= :: DescribeRestoreJob -> DescribeRestoreJob -> Bool
== :: DescribeRestoreJob -> DescribeRestoreJob -> Bool
$c== :: DescribeRestoreJob -> DescribeRestoreJob -> Bool
Prelude.Eq, ReadPrec [DescribeRestoreJob]
ReadPrec DescribeRestoreJob
Int -> ReadS DescribeRestoreJob
ReadS [DescribeRestoreJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRestoreJob]
$creadListPrec :: ReadPrec [DescribeRestoreJob]
readPrec :: ReadPrec DescribeRestoreJob
$creadPrec :: ReadPrec DescribeRestoreJob
readList :: ReadS [DescribeRestoreJob]
$creadList :: ReadS [DescribeRestoreJob]
readsPrec :: Int -> ReadS DescribeRestoreJob
$creadsPrec :: Int -> ReadS DescribeRestoreJob
Prelude.Read, Int -> DescribeRestoreJob -> ShowS
[DescribeRestoreJob] -> ShowS
DescribeRestoreJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRestoreJob] -> ShowS
$cshowList :: [DescribeRestoreJob] -> ShowS
show :: DescribeRestoreJob -> String
$cshow :: DescribeRestoreJob -> String
showsPrec :: Int -> DescribeRestoreJob -> ShowS
$cshowsPrec :: Int -> DescribeRestoreJob -> ShowS
Prelude.Show, forall x. Rep DescribeRestoreJob x -> DescribeRestoreJob
forall x. DescribeRestoreJob -> Rep DescribeRestoreJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeRestoreJob x -> DescribeRestoreJob
$cfrom :: forall x. DescribeRestoreJob -> Rep DescribeRestoreJob x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRestoreJob' 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:
--
-- 'restoreJobId', 'describeRestoreJob_restoreJobId' - Uniquely identifies the job that restores a recovery point.
newDescribeRestoreJob ::
  -- | 'restoreJobId'
  Prelude.Text ->
  DescribeRestoreJob
newDescribeRestoreJob :: Text -> DescribeRestoreJob
newDescribeRestoreJob Text
pRestoreJobId_ =
  DescribeRestoreJob' {$sel:restoreJobId:DescribeRestoreJob' :: Text
restoreJobId = Text
pRestoreJobId_}

-- | Uniquely identifies the job that restores a recovery point.
describeRestoreJob_restoreJobId :: Lens.Lens' DescribeRestoreJob Prelude.Text
describeRestoreJob_restoreJobId :: Lens' DescribeRestoreJob Text
describeRestoreJob_restoreJobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJob' {Text
restoreJobId :: Text
$sel:restoreJobId:DescribeRestoreJob' :: DescribeRestoreJob -> Text
restoreJobId} -> Text
restoreJobId) (\s :: DescribeRestoreJob
s@DescribeRestoreJob' {} Text
a -> DescribeRestoreJob
s {$sel:restoreJobId:DescribeRestoreJob' :: Text
restoreJobId = Text
a} :: DescribeRestoreJob)

instance Core.AWSRequest DescribeRestoreJob where
  type
    AWSResponse DescribeRestoreJob =
      DescribeRestoreJobResponse
  request :: (Service -> Service)
-> DescribeRestoreJob -> Request DescribeRestoreJob
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeRestoreJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeRestoreJob)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe Integer
-> Maybe POSIX
-> Maybe Text
-> Maybe POSIX
-> Maybe Integer
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RestoreJobStatus
-> Maybe Text
-> Int
-> DescribeRestoreJobResponse
DescribeRestoreJobResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"AccountId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"BackupSizeInBytes")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"CompletionDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"CreatedResourceArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"CreationDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ExpectedCompletionTimeMinutes")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"IamRoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"PercentDone")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RecoveryPointArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ResourceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RestoreJobId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"StatusMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeRestoreJob where
  hashWithSalt :: Int -> DescribeRestoreJob -> Int
hashWithSalt Int
_salt DescribeRestoreJob' {Text
restoreJobId :: Text
$sel:restoreJobId:DescribeRestoreJob' :: DescribeRestoreJob -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
restoreJobId

instance Prelude.NFData DescribeRestoreJob where
  rnf :: DescribeRestoreJob -> ()
rnf DescribeRestoreJob' {Text
restoreJobId :: Text
$sel:restoreJobId:DescribeRestoreJob' :: DescribeRestoreJob -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
restoreJobId

instance Data.ToHeaders DescribeRestoreJob where
  toHeaders :: DescribeRestoreJob -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DescribeRestoreJob where
  toPath :: DescribeRestoreJob -> ByteString
toPath DescribeRestoreJob' {Text
restoreJobId :: Text
$sel:restoreJobId:DescribeRestoreJob' :: DescribeRestoreJob -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/restore-jobs/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
restoreJobId]

instance Data.ToQuery DescribeRestoreJob where
  toQuery :: DescribeRestoreJob -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeRestoreJobResponse' smart constructor.
data DescribeRestoreJobResponse = DescribeRestoreJobResponse'
  { -- | Returns the account ID that owns the restore job.
    DescribeRestoreJobResponse -> Maybe Text
accountId :: Prelude.Maybe Prelude.Text,
    -- | The size, in bytes, of the restored resource.
    DescribeRestoreJobResponse -> Maybe Integer
backupSizeInBytes :: Prelude.Maybe Prelude.Integer,
    -- | The date and time that a job to restore a recovery point is completed,
    -- in Unix format and Coordinated Universal Time (UTC). The value of
    -- @CompletionDate@ is accurate to milliseconds. For example, the value
    -- 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.
    DescribeRestoreJobResponse -> Maybe POSIX
completionDate :: Prelude.Maybe Data.POSIX,
    -- | An Amazon Resource Name (ARN) that uniquely identifies a resource whose
    -- recovery point is being restored. The format of the ARN depends on the
    -- resource type of the backed-up resource.
    DescribeRestoreJobResponse -> Maybe Text
createdResourceArn :: Prelude.Maybe Prelude.Text,
    -- | The date and time that a restore job is created, in Unix format and
    -- Coordinated Universal Time (UTC). The value of @CreationDate@ is
    -- accurate to milliseconds. For example, the value 1516925490.087
    -- represents Friday, January 26, 2018 12:11:30.087 AM.
    DescribeRestoreJobResponse -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | The amount of time in minutes that a job restoring a recovery point is
    -- expected to take.
    DescribeRestoreJobResponse -> Maybe Integer
expectedCompletionTimeMinutes :: Prelude.Maybe Prelude.Integer,
    -- | Specifies the IAM role ARN used to create the target recovery point; for
    -- example, @arn:aws:iam::123456789012:role\/S3Access@.
    DescribeRestoreJobResponse -> Maybe Text
iamRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Contains an estimated percentage that is complete of a job at the time
    -- the job status was queried.
    DescribeRestoreJobResponse -> Maybe Text
percentDone :: Prelude.Maybe Prelude.Text,
    -- | An ARN that uniquely identifies a recovery point; for example,
    -- @arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45@.
    DescribeRestoreJobResponse -> Maybe Text
recoveryPointArn :: Prelude.Maybe Prelude.Text,
    -- | Returns metadata associated with a restore job listed by resource type.
    DescribeRestoreJobResponse -> Maybe Text
resourceType :: Prelude.Maybe Prelude.Text,
    -- | Uniquely identifies the job that restores a recovery point.
    DescribeRestoreJobResponse -> Maybe Text
restoreJobId :: Prelude.Maybe Prelude.Text,
    -- | Status code specifying the state of the job that is initiated by Backup
    -- to restore a recovery point.
    DescribeRestoreJobResponse -> Maybe RestoreJobStatus
status :: Prelude.Maybe RestoreJobStatus,
    -- | A message showing the status of a job to restore a recovery point.
    DescribeRestoreJobResponse -> Maybe Text
statusMessage :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeRestoreJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeRestoreJobResponse -> DescribeRestoreJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRestoreJobResponse -> DescribeRestoreJobResponse -> Bool
$c/= :: DescribeRestoreJobResponse -> DescribeRestoreJobResponse -> Bool
== :: DescribeRestoreJobResponse -> DescribeRestoreJobResponse -> Bool
$c== :: DescribeRestoreJobResponse -> DescribeRestoreJobResponse -> Bool
Prelude.Eq, ReadPrec [DescribeRestoreJobResponse]
ReadPrec DescribeRestoreJobResponse
Int -> ReadS DescribeRestoreJobResponse
ReadS [DescribeRestoreJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRestoreJobResponse]
$creadListPrec :: ReadPrec [DescribeRestoreJobResponse]
readPrec :: ReadPrec DescribeRestoreJobResponse
$creadPrec :: ReadPrec DescribeRestoreJobResponse
readList :: ReadS [DescribeRestoreJobResponse]
$creadList :: ReadS [DescribeRestoreJobResponse]
readsPrec :: Int -> ReadS DescribeRestoreJobResponse
$creadsPrec :: Int -> ReadS DescribeRestoreJobResponse
Prelude.Read, Int -> DescribeRestoreJobResponse -> ShowS
[DescribeRestoreJobResponse] -> ShowS
DescribeRestoreJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRestoreJobResponse] -> ShowS
$cshowList :: [DescribeRestoreJobResponse] -> ShowS
show :: DescribeRestoreJobResponse -> String
$cshow :: DescribeRestoreJobResponse -> String
showsPrec :: Int -> DescribeRestoreJobResponse -> ShowS
$cshowsPrec :: Int -> DescribeRestoreJobResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeRestoreJobResponse x -> DescribeRestoreJobResponse
forall x.
DescribeRestoreJobResponse -> Rep DescribeRestoreJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeRestoreJobResponse x -> DescribeRestoreJobResponse
$cfrom :: forall x.
DescribeRestoreJobResponse -> Rep DescribeRestoreJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRestoreJobResponse' 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:
--
-- 'accountId', 'describeRestoreJobResponse_accountId' - Returns the account ID that owns the restore job.
--
-- 'backupSizeInBytes', 'describeRestoreJobResponse_backupSizeInBytes' - The size, in bytes, of the restored resource.
--
-- 'completionDate', 'describeRestoreJobResponse_completionDate' - The date and time that a job to restore a recovery point is completed,
-- in Unix format and Coordinated Universal Time (UTC). The value of
-- @CompletionDate@ is accurate to milliseconds. For example, the value
-- 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.
--
-- 'createdResourceArn', 'describeRestoreJobResponse_createdResourceArn' - An Amazon Resource Name (ARN) that uniquely identifies a resource whose
-- recovery point is being restored. The format of the ARN depends on the
-- resource type of the backed-up resource.
--
-- 'creationDate', 'describeRestoreJobResponse_creationDate' - The date and time that a restore job is created, in Unix format and
-- Coordinated Universal Time (UTC). The value of @CreationDate@ is
-- accurate to milliseconds. For example, the value 1516925490.087
-- represents Friday, January 26, 2018 12:11:30.087 AM.
--
-- 'expectedCompletionTimeMinutes', 'describeRestoreJobResponse_expectedCompletionTimeMinutes' - The amount of time in minutes that a job restoring a recovery point is
-- expected to take.
--
-- 'iamRoleArn', 'describeRestoreJobResponse_iamRoleArn' - Specifies the IAM role ARN used to create the target recovery point; for
-- example, @arn:aws:iam::123456789012:role\/S3Access@.
--
-- 'percentDone', 'describeRestoreJobResponse_percentDone' - Contains an estimated percentage that is complete of a job at the time
-- the job status was queried.
--
-- 'recoveryPointArn', 'describeRestoreJobResponse_recoveryPointArn' - An ARN that uniquely identifies a recovery point; for example,
-- @arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45@.
--
-- 'resourceType', 'describeRestoreJobResponse_resourceType' - Returns metadata associated with a restore job listed by resource type.
--
-- 'restoreJobId', 'describeRestoreJobResponse_restoreJobId' - Uniquely identifies the job that restores a recovery point.
--
-- 'status', 'describeRestoreJobResponse_status' - Status code specifying the state of the job that is initiated by Backup
-- to restore a recovery point.
--
-- 'statusMessage', 'describeRestoreJobResponse_statusMessage' - A message showing the status of a job to restore a recovery point.
--
-- 'httpStatus', 'describeRestoreJobResponse_httpStatus' - The response's http status code.
newDescribeRestoreJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeRestoreJobResponse
newDescribeRestoreJobResponse :: Int -> DescribeRestoreJobResponse
newDescribeRestoreJobResponse Int
pHttpStatus_ =
  DescribeRestoreJobResponse'
    { $sel:accountId:DescribeRestoreJobResponse' :: Maybe Text
accountId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:backupSizeInBytes:DescribeRestoreJobResponse' :: Maybe Integer
backupSizeInBytes = forall a. Maybe a
Prelude.Nothing,
      $sel:completionDate:DescribeRestoreJobResponse' :: Maybe POSIX
completionDate = forall a. Maybe a
Prelude.Nothing,
      $sel:createdResourceArn:DescribeRestoreJobResponse' :: Maybe Text
createdResourceArn = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:DescribeRestoreJobResponse' :: Maybe POSIX
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:expectedCompletionTimeMinutes:DescribeRestoreJobResponse' :: Maybe Integer
expectedCompletionTimeMinutes = forall a. Maybe a
Prelude.Nothing,
      $sel:iamRoleArn:DescribeRestoreJobResponse' :: Maybe Text
iamRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:percentDone:DescribeRestoreJobResponse' :: Maybe Text
percentDone = forall a. Maybe a
Prelude.Nothing,
      $sel:recoveryPointArn:DescribeRestoreJobResponse' :: Maybe Text
recoveryPointArn = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:DescribeRestoreJobResponse' :: Maybe Text
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:restoreJobId:DescribeRestoreJobResponse' :: Maybe Text
restoreJobId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeRestoreJobResponse' :: Maybe RestoreJobStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:statusMessage:DescribeRestoreJobResponse' :: Maybe Text
statusMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeRestoreJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Returns the account ID that owns the restore job.
describeRestoreJobResponse_accountId :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_accountId :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_accountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
accountId :: Maybe Text
$sel:accountId:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
accountId} -> Maybe Text
accountId) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:accountId:DescribeRestoreJobResponse' :: Maybe Text
accountId = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | The size, in bytes, of the restored resource.
describeRestoreJobResponse_backupSizeInBytes :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Integer)
describeRestoreJobResponse_backupSizeInBytes :: Lens' DescribeRestoreJobResponse (Maybe Integer)
describeRestoreJobResponse_backupSizeInBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Integer
backupSizeInBytes :: Maybe Integer
$sel:backupSizeInBytes:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Integer
backupSizeInBytes} -> Maybe Integer
backupSizeInBytes) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Integer
a -> DescribeRestoreJobResponse
s {$sel:backupSizeInBytes:DescribeRestoreJobResponse' :: Maybe Integer
backupSizeInBytes = Maybe Integer
a} :: DescribeRestoreJobResponse)

-- | The date and time that a job to restore a recovery point is completed,
-- in Unix format and Coordinated Universal Time (UTC). The value of
-- @CompletionDate@ is accurate to milliseconds. For example, the value
-- 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.
describeRestoreJobResponse_completionDate :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.UTCTime)
describeRestoreJobResponse_completionDate :: Lens' DescribeRestoreJobResponse (Maybe UTCTime)
describeRestoreJobResponse_completionDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe POSIX
completionDate :: Maybe POSIX
$sel:completionDate:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe POSIX
completionDate} -> Maybe POSIX
completionDate) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe POSIX
a -> DescribeRestoreJobResponse
s {$sel:completionDate:DescribeRestoreJobResponse' :: Maybe POSIX
completionDate = Maybe POSIX
a} :: DescribeRestoreJobResponse) 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

-- | An Amazon Resource Name (ARN) that uniquely identifies a resource whose
-- recovery point is being restored. The format of the ARN depends on the
-- resource type of the backed-up resource.
describeRestoreJobResponse_createdResourceArn :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_createdResourceArn :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_createdResourceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
createdResourceArn :: Maybe Text
$sel:createdResourceArn:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
createdResourceArn} -> Maybe Text
createdResourceArn) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:createdResourceArn:DescribeRestoreJobResponse' :: Maybe Text
createdResourceArn = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | The date and time that a restore job is created, in Unix format and
-- Coordinated Universal Time (UTC). The value of @CreationDate@ is
-- accurate to milliseconds. For example, the value 1516925490.087
-- represents Friday, January 26, 2018 12:11:30.087 AM.
describeRestoreJobResponse_creationDate :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.UTCTime)
describeRestoreJobResponse_creationDate :: Lens' DescribeRestoreJobResponse (Maybe UTCTime)
describeRestoreJobResponse_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe POSIX
a -> DescribeRestoreJobResponse
s {$sel:creationDate:DescribeRestoreJobResponse' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: DescribeRestoreJobResponse) 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

-- | The amount of time in minutes that a job restoring a recovery point is
-- expected to take.
describeRestoreJobResponse_expectedCompletionTimeMinutes :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Integer)
describeRestoreJobResponse_expectedCompletionTimeMinutes :: Lens' DescribeRestoreJobResponse (Maybe Integer)
describeRestoreJobResponse_expectedCompletionTimeMinutes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Integer
expectedCompletionTimeMinutes :: Maybe Integer
$sel:expectedCompletionTimeMinutes:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Integer
expectedCompletionTimeMinutes} -> Maybe Integer
expectedCompletionTimeMinutes) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Integer
a -> DescribeRestoreJobResponse
s {$sel:expectedCompletionTimeMinutes:DescribeRestoreJobResponse' :: Maybe Integer
expectedCompletionTimeMinutes = Maybe Integer
a} :: DescribeRestoreJobResponse)

-- | Specifies the IAM role ARN used to create the target recovery point; for
-- example, @arn:aws:iam::123456789012:role\/S3Access@.
describeRestoreJobResponse_iamRoleArn :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_iamRoleArn :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_iamRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
iamRoleArn :: Maybe Text
$sel:iamRoleArn:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
iamRoleArn} -> Maybe Text
iamRoleArn) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:iamRoleArn:DescribeRestoreJobResponse' :: Maybe Text
iamRoleArn = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | Contains an estimated percentage that is complete of a job at the time
-- the job status was queried.
describeRestoreJobResponse_percentDone :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_percentDone :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_percentDone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
percentDone :: Maybe Text
$sel:percentDone:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
percentDone} -> Maybe Text
percentDone) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:percentDone:DescribeRestoreJobResponse' :: Maybe Text
percentDone = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | An ARN that uniquely identifies a recovery point; for example,
-- @arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45@.
describeRestoreJobResponse_recoveryPointArn :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_recoveryPointArn :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_recoveryPointArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
recoveryPointArn :: Maybe Text
$sel:recoveryPointArn:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
recoveryPointArn} -> Maybe Text
recoveryPointArn) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:recoveryPointArn:DescribeRestoreJobResponse' :: Maybe Text
recoveryPointArn = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | Returns metadata associated with a restore job listed by resource type.
describeRestoreJobResponse_resourceType :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_resourceType :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
resourceType :: Maybe Text
$sel:resourceType:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
resourceType} -> Maybe Text
resourceType) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:resourceType:DescribeRestoreJobResponse' :: Maybe Text
resourceType = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | Uniquely identifies the job that restores a recovery point.
describeRestoreJobResponse_restoreJobId :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_restoreJobId :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_restoreJobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
restoreJobId :: Maybe Text
$sel:restoreJobId:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
restoreJobId} -> Maybe Text
restoreJobId) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:restoreJobId:DescribeRestoreJobResponse' :: Maybe Text
restoreJobId = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | Status code specifying the state of the job that is initiated by Backup
-- to restore a recovery point.
describeRestoreJobResponse_status :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe RestoreJobStatus)
describeRestoreJobResponse_status :: Lens' DescribeRestoreJobResponse (Maybe RestoreJobStatus)
describeRestoreJobResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe RestoreJobStatus
status :: Maybe RestoreJobStatus
$sel:status:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe RestoreJobStatus
status} -> Maybe RestoreJobStatus
status) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe RestoreJobStatus
a -> DescribeRestoreJobResponse
s {$sel:status:DescribeRestoreJobResponse' :: Maybe RestoreJobStatus
status = Maybe RestoreJobStatus
a} :: DescribeRestoreJobResponse)

-- | A message showing the status of a job to restore a recovery point.
describeRestoreJobResponse_statusMessage :: Lens.Lens' DescribeRestoreJobResponse (Prelude.Maybe Prelude.Text)
describeRestoreJobResponse_statusMessage :: Lens' DescribeRestoreJobResponse (Maybe Text)
describeRestoreJobResponse_statusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Maybe Text
statusMessage :: Maybe Text
$sel:statusMessage:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
statusMessage} -> Maybe Text
statusMessage) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Maybe Text
a -> DescribeRestoreJobResponse
s {$sel:statusMessage:DescribeRestoreJobResponse' :: Maybe Text
statusMessage = Maybe Text
a} :: DescribeRestoreJobResponse)

-- | The response's http status code.
describeRestoreJobResponse_httpStatus :: Lens.Lens' DescribeRestoreJobResponse Prelude.Int
describeRestoreJobResponse_httpStatus :: Lens' DescribeRestoreJobResponse Int
describeRestoreJobResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRestoreJobResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeRestoreJobResponse
s@DescribeRestoreJobResponse' {} Int
a -> DescribeRestoreJobResponse
s {$sel:httpStatus:DescribeRestoreJobResponse' :: Int
httpStatus = Int
a} :: DescribeRestoreJobResponse)

instance Prelude.NFData DescribeRestoreJobResponse where
  rnf :: DescribeRestoreJobResponse -> ()
rnf DescribeRestoreJobResponse' {Int
Maybe Integer
Maybe Text
Maybe POSIX
Maybe RestoreJobStatus
httpStatus :: Int
statusMessage :: Maybe Text
status :: Maybe RestoreJobStatus
restoreJobId :: Maybe Text
resourceType :: Maybe Text
recoveryPointArn :: Maybe Text
percentDone :: Maybe Text
iamRoleArn :: Maybe Text
expectedCompletionTimeMinutes :: Maybe Integer
creationDate :: Maybe POSIX
createdResourceArn :: Maybe Text
completionDate :: Maybe POSIX
backupSizeInBytes :: Maybe Integer
accountId :: Maybe Text
$sel:httpStatus:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Int
$sel:statusMessage:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:status:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe RestoreJobStatus
$sel:restoreJobId:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:resourceType:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:recoveryPointArn:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:percentDone:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:iamRoleArn:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:expectedCompletionTimeMinutes:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Integer
$sel:creationDate:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe POSIX
$sel:createdResourceArn:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
$sel:completionDate:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe POSIX
$sel:backupSizeInBytes:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Integer
$sel:accountId:DescribeRestoreJobResponse' :: DescribeRestoreJobResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
backupSizeInBytes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
completionDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
createdResourceArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
expectedCompletionTimeMinutes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
iamRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
percentDone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
recoveryPointArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
restoreJobId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RestoreJobStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
statusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus