{-# 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.WorkMail.DescribeMailboxExportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the current status of a mailbox export job.
module Amazonka.WorkMail.DescribeMailboxExportJob
  ( -- * Creating a Request
    DescribeMailboxExportJob (..),
    newDescribeMailboxExportJob,

    -- * Request Lenses
    describeMailboxExportJob_jobId,
    describeMailboxExportJob_organizationId,

    -- * Destructuring the Response
    DescribeMailboxExportJobResponse (..),
    newDescribeMailboxExportJobResponse,

    -- * Response Lenses
    describeMailboxExportJobResponse_description,
    describeMailboxExportJobResponse_endTime,
    describeMailboxExportJobResponse_entityId,
    describeMailboxExportJobResponse_errorInfo,
    describeMailboxExportJobResponse_estimatedProgress,
    describeMailboxExportJobResponse_kmsKeyArn,
    describeMailboxExportJobResponse_roleArn,
    describeMailboxExportJobResponse_s3BucketName,
    describeMailboxExportJobResponse_s3Path,
    describeMailboxExportJobResponse_s3Prefix,
    describeMailboxExportJobResponse_startTime,
    describeMailboxExportJobResponse_state,
    describeMailboxExportJobResponse_httpStatus,
  )
where

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
import Amazonka.WorkMail.Types

-- | /See:/ 'newDescribeMailboxExportJob' smart constructor.
data DescribeMailboxExportJob = DescribeMailboxExportJob'
  { -- | The mailbox export job ID.
    DescribeMailboxExportJob -> Text
jobId :: Prelude.Text,
    -- | The organization ID.
    DescribeMailboxExportJob -> Text
organizationId :: Prelude.Text
  }
  deriving (DescribeMailboxExportJob -> DescribeMailboxExportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeMailboxExportJob -> DescribeMailboxExportJob -> Bool
$c/= :: DescribeMailboxExportJob -> DescribeMailboxExportJob -> Bool
== :: DescribeMailboxExportJob -> DescribeMailboxExportJob -> Bool
$c== :: DescribeMailboxExportJob -> DescribeMailboxExportJob -> Bool
Prelude.Eq, ReadPrec [DescribeMailboxExportJob]
ReadPrec DescribeMailboxExportJob
Int -> ReadS DescribeMailboxExportJob
ReadS [DescribeMailboxExportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeMailboxExportJob]
$creadListPrec :: ReadPrec [DescribeMailboxExportJob]
readPrec :: ReadPrec DescribeMailboxExportJob
$creadPrec :: ReadPrec DescribeMailboxExportJob
readList :: ReadS [DescribeMailboxExportJob]
$creadList :: ReadS [DescribeMailboxExportJob]
readsPrec :: Int -> ReadS DescribeMailboxExportJob
$creadsPrec :: Int -> ReadS DescribeMailboxExportJob
Prelude.Read, Int -> DescribeMailboxExportJob -> ShowS
[DescribeMailboxExportJob] -> ShowS
DescribeMailboxExportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeMailboxExportJob] -> ShowS
$cshowList :: [DescribeMailboxExportJob] -> ShowS
show :: DescribeMailboxExportJob -> String
$cshow :: DescribeMailboxExportJob -> String
showsPrec :: Int -> DescribeMailboxExportJob -> ShowS
$cshowsPrec :: Int -> DescribeMailboxExportJob -> ShowS
Prelude.Show, forall x.
Rep DescribeMailboxExportJob x -> DescribeMailboxExportJob
forall x.
DescribeMailboxExportJob -> Rep DescribeMailboxExportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeMailboxExportJob x -> DescribeMailboxExportJob
$cfrom :: forall x.
DescribeMailboxExportJob -> Rep DescribeMailboxExportJob x
Prelude.Generic)

-- |
-- Create a value of 'DescribeMailboxExportJob' 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:
--
-- 'jobId', 'describeMailboxExportJob_jobId' - The mailbox export job ID.
--
-- 'organizationId', 'describeMailboxExportJob_organizationId' - The organization ID.
newDescribeMailboxExportJob ::
  -- | 'jobId'
  Prelude.Text ->
  -- | 'organizationId'
  Prelude.Text ->
  DescribeMailboxExportJob
newDescribeMailboxExportJob :: Text -> Text -> DescribeMailboxExportJob
newDescribeMailboxExportJob Text
pJobId_ Text
pOrganizationId_ =
  DescribeMailboxExportJob'
    { $sel:jobId:DescribeMailboxExportJob' :: Text
jobId = Text
pJobId_,
      $sel:organizationId:DescribeMailboxExportJob' :: Text
organizationId = Text
pOrganizationId_
    }

-- | The mailbox export job ID.
describeMailboxExportJob_jobId :: Lens.Lens' DescribeMailboxExportJob Prelude.Text
describeMailboxExportJob_jobId :: Lens' DescribeMailboxExportJob Text
describeMailboxExportJob_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJob' {Text
jobId :: Text
$sel:jobId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
jobId} -> Text
jobId) (\s :: DescribeMailboxExportJob
s@DescribeMailboxExportJob' {} Text
a -> DescribeMailboxExportJob
s {$sel:jobId:DescribeMailboxExportJob' :: Text
jobId = Text
a} :: DescribeMailboxExportJob)

-- | The organization ID.
describeMailboxExportJob_organizationId :: Lens.Lens' DescribeMailboxExportJob Prelude.Text
describeMailboxExportJob_organizationId :: Lens' DescribeMailboxExportJob Text
describeMailboxExportJob_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJob' {Text
organizationId :: Text
$sel:organizationId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
organizationId} -> Text
organizationId) (\s :: DescribeMailboxExportJob
s@DescribeMailboxExportJob' {} Text
a -> DescribeMailboxExportJob
s {$sel:organizationId:DescribeMailboxExportJob' :: Text
organizationId = Text
a} :: DescribeMailboxExportJob)

instance Core.AWSRequest DescribeMailboxExportJob where
  type
    AWSResponse DescribeMailboxExportJob =
      DescribeMailboxExportJobResponse
  request :: (Service -> Service)
-> DescribeMailboxExportJob -> Request DescribeMailboxExportJob
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeMailboxExportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeMailboxExportJob)))
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 POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Natural
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe MailboxExportJobState
-> Int
-> DescribeMailboxExportJobResponse
DescribeMailboxExportJobResponse'
            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
"Description")
            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
"EndTime")
            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
"EntityId")
            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
"ErrorInfo")
            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
"EstimatedProgress")
            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
"KmsKeyArn")
            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
"RoleArn")
            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
"S3BucketName")
            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
"S3Path")
            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
"S3Prefix")
            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
"StartTime")
            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
"State")
            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 DescribeMailboxExportJob where
  hashWithSalt :: Int -> DescribeMailboxExportJob -> Int
hashWithSalt Int
_salt DescribeMailboxExportJob' {Text
organizationId :: Text
jobId :: Text
$sel:organizationId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
$sel:jobId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
organizationId

instance Prelude.NFData DescribeMailboxExportJob where
  rnf :: DescribeMailboxExportJob -> ()
rnf DescribeMailboxExportJob' {Text
organizationId :: Text
jobId :: Text
$sel:organizationId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
$sel:jobId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
jobId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
organizationId

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

instance Data.ToJSON DescribeMailboxExportJob where
  toJSON :: DescribeMailboxExportJob -> Value
toJSON DescribeMailboxExportJob' {Text
organizationId :: Text
jobId :: Text
$sel:organizationId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
$sel:jobId:DescribeMailboxExportJob' :: DescribeMailboxExportJob -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"JobId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
jobId),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OrganizationId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
organizationId)
          ]
      )

instance Data.ToPath DescribeMailboxExportJob where
  toPath :: DescribeMailboxExportJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newDescribeMailboxExportJobResponse' smart constructor.
data DescribeMailboxExportJobResponse = DescribeMailboxExportJobResponse'
  { -- | The mailbox export job description.
    DescribeMailboxExportJobResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The mailbox export job end timestamp.
    DescribeMailboxExportJobResponse -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | The identifier of the user or resource associated with the mailbox.
    DescribeMailboxExportJobResponse -> Maybe Text
entityId :: Prelude.Maybe Prelude.Text,
    -- | Error information for failed mailbox export jobs.
    DescribeMailboxExportJobResponse -> Maybe Text
errorInfo :: Prelude.Maybe Prelude.Text,
    -- | The estimated progress of the mailbox export job, in percentage points.
    DescribeMailboxExportJobResponse -> Maybe Natural
estimatedProgress :: Prelude.Maybe Prelude.Natural,
    -- | The Amazon Resource Name (ARN) of the symmetric AWS Key Management
    -- Service (AWS KMS) key that encrypts the exported mailbox content.
    DescribeMailboxExportJobResponse -> Maybe Text
kmsKeyArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the AWS Identity and Access Management (IAM) role that grants
    -- write permission to the Amazon Simple Storage Service (Amazon S3)
    -- bucket.
    DescribeMailboxExportJobResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the S3 bucket.
    DescribeMailboxExportJobResponse -> Maybe Text
s3BucketName :: Prelude.Maybe Prelude.Text,
    -- | The path to the S3 bucket and file that the mailbox export job is
    -- exporting to.
    DescribeMailboxExportJobResponse -> Maybe Text
s3Path :: Prelude.Maybe Prelude.Text,
    -- | The S3 bucket prefix.
    DescribeMailboxExportJobResponse -> Maybe Text
s3Prefix :: Prelude.Maybe Prelude.Text,
    -- | The mailbox export job start timestamp.
    DescribeMailboxExportJobResponse -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The state of the mailbox export job.
    DescribeMailboxExportJobResponse -> Maybe MailboxExportJobState
state :: Prelude.Maybe MailboxExportJobState,
    -- | The response's http status code.
    DescribeMailboxExportJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeMailboxExportJobResponse
-> DescribeMailboxExportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeMailboxExportJobResponse
-> DescribeMailboxExportJobResponse -> Bool
$c/= :: DescribeMailboxExportJobResponse
-> DescribeMailboxExportJobResponse -> Bool
== :: DescribeMailboxExportJobResponse
-> DescribeMailboxExportJobResponse -> Bool
$c== :: DescribeMailboxExportJobResponse
-> DescribeMailboxExportJobResponse -> Bool
Prelude.Eq, ReadPrec [DescribeMailboxExportJobResponse]
ReadPrec DescribeMailboxExportJobResponse
Int -> ReadS DescribeMailboxExportJobResponse
ReadS [DescribeMailboxExportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeMailboxExportJobResponse]
$creadListPrec :: ReadPrec [DescribeMailboxExportJobResponse]
readPrec :: ReadPrec DescribeMailboxExportJobResponse
$creadPrec :: ReadPrec DescribeMailboxExportJobResponse
readList :: ReadS [DescribeMailboxExportJobResponse]
$creadList :: ReadS [DescribeMailboxExportJobResponse]
readsPrec :: Int -> ReadS DescribeMailboxExportJobResponse
$creadsPrec :: Int -> ReadS DescribeMailboxExportJobResponse
Prelude.Read, Int -> DescribeMailboxExportJobResponse -> ShowS
[DescribeMailboxExportJobResponse] -> ShowS
DescribeMailboxExportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeMailboxExportJobResponse] -> ShowS
$cshowList :: [DescribeMailboxExportJobResponse] -> ShowS
show :: DescribeMailboxExportJobResponse -> String
$cshow :: DescribeMailboxExportJobResponse -> String
showsPrec :: Int -> DescribeMailboxExportJobResponse -> ShowS
$cshowsPrec :: Int -> DescribeMailboxExportJobResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeMailboxExportJobResponse x
-> DescribeMailboxExportJobResponse
forall x.
DescribeMailboxExportJobResponse
-> Rep DescribeMailboxExportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeMailboxExportJobResponse x
-> DescribeMailboxExportJobResponse
$cfrom :: forall x.
DescribeMailboxExportJobResponse
-> Rep DescribeMailboxExportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeMailboxExportJobResponse' 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:
--
-- 'description', 'describeMailboxExportJobResponse_description' - The mailbox export job description.
--
-- 'endTime', 'describeMailboxExportJobResponse_endTime' - The mailbox export job end timestamp.
--
-- 'entityId', 'describeMailboxExportJobResponse_entityId' - The identifier of the user or resource associated with the mailbox.
--
-- 'errorInfo', 'describeMailboxExportJobResponse_errorInfo' - Error information for failed mailbox export jobs.
--
-- 'estimatedProgress', 'describeMailboxExportJobResponse_estimatedProgress' - The estimated progress of the mailbox export job, in percentage points.
--
-- 'kmsKeyArn', 'describeMailboxExportJobResponse_kmsKeyArn' - The Amazon Resource Name (ARN) of the symmetric AWS Key Management
-- Service (AWS KMS) key that encrypts the exported mailbox content.
--
-- 'roleArn', 'describeMailboxExportJobResponse_roleArn' - The ARN of the AWS Identity and Access Management (IAM) role that grants
-- write permission to the Amazon Simple Storage Service (Amazon S3)
-- bucket.
--
-- 's3BucketName', 'describeMailboxExportJobResponse_s3BucketName' - The name of the S3 bucket.
--
-- 's3Path', 'describeMailboxExportJobResponse_s3Path' - The path to the S3 bucket and file that the mailbox export job is
-- exporting to.
--
-- 's3Prefix', 'describeMailboxExportJobResponse_s3Prefix' - The S3 bucket prefix.
--
-- 'startTime', 'describeMailboxExportJobResponse_startTime' - The mailbox export job start timestamp.
--
-- 'state', 'describeMailboxExportJobResponse_state' - The state of the mailbox export job.
--
-- 'httpStatus', 'describeMailboxExportJobResponse_httpStatus' - The response's http status code.
newDescribeMailboxExportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeMailboxExportJobResponse
newDescribeMailboxExportJobResponse :: Int -> DescribeMailboxExportJobResponse
newDescribeMailboxExportJobResponse Int
pHttpStatus_ =
  DescribeMailboxExportJobResponse'
    { $sel:description:DescribeMailboxExportJobResponse' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:DescribeMailboxExportJobResponse' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:entityId:DescribeMailboxExportJobResponse' :: Maybe Text
entityId = forall a. Maybe a
Prelude.Nothing,
      $sel:errorInfo:DescribeMailboxExportJobResponse' :: Maybe Text
errorInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:estimatedProgress:DescribeMailboxExportJobResponse' :: Maybe Natural
estimatedProgress = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyArn:DescribeMailboxExportJobResponse' :: Maybe Text
kmsKeyArn = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DescribeMailboxExportJobResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:s3BucketName:DescribeMailboxExportJobResponse' :: Maybe Text
s3BucketName = forall a. Maybe a
Prelude.Nothing,
      $sel:s3Path:DescribeMailboxExportJobResponse' :: Maybe Text
s3Path = forall a. Maybe a
Prelude.Nothing,
      $sel:s3Prefix:DescribeMailboxExportJobResponse' :: Maybe Text
s3Prefix = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:DescribeMailboxExportJobResponse' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:state:DescribeMailboxExportJobResponse' :: Maybe MailboxExportJobState
state = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeMailboxExportJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The mailbox export job description.
describeMailboxExportJobResponse_description :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_description :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:description:DescribeMailboxExportJobResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The mailbox export job end timestamp.
describeMailboxExportJobResponse_endTime :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.UTCTime)
describeMailboxExportJobResponse_endTime :: Lens' DescribeMailboxExportJobResponse (Maybe UTCTime)
describeMailboxExportJobResponse_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe POSIX
a -> DescribeMailboxExportJobResponse
s {$sel:endTime:DescribeMailboxExportJobResponse' :: Maybe POSIX
endTime = Maybe POSIX
a} :: DescribeMailboxExportJobResponse) 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 identifier of the user or resource associated with the mailbox.
describeMailboxExportJobResponse_entityId :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_entityId :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_entityId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
entityId :: Maybe Text
$sel:entityId:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
entityId} -> Maybe Text
entityId) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:entityId:DescribeMailboxExportJobResponse' :: Maybe Text
entityId = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | Error information for failed mailbox export jobs.
describeMailboxExportJobResponse_errorInfo :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_errorInfo :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_errorInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
errorInfo :: Maybe Text
$sel:errorInfo:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
errorInfo} -> Maybe Text
errorInfo) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:errorInfo:DescribeMailboxExportJobResponse' :: Maybe Text
errorInfo = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The estimated progress of the mailbox export job, in percentage points.
describeMailboxExportJobResponse_estimatedProgress :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Natural)
describeMailboxExportJobResponse_estimatedProgress :: Lens' DescribeMailboxExportJobResponse (Maybe Natural)
describeMailboxExportJobResponse_estimatedProgress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Natural
estimatedProgress :: Maybe Natural
$sel:estimatedProgress:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Natural
estimatedProgress} -> Maybe Natural
estimatedProgress) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Natural
a -> DescribeMailboxExportJobResponse
s {$sel:estimatedProgress:DescribeMailboxExportJobResponse' :: Maybe Natural
estimatedProgress = Maybe Natural
a} :: DescribeMailboxExportJobResponse)

-- | The Amazon Resource Name (ARN) of the symmetric AWS Key Management
-- Service (AWS KMS) key that encrypts the exported mailbox content.
describeMailboxExportJobResponse_kmsKeyArn :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_kmsKeyArn :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_kmsKeyArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
kmsKeyArn :: Maybe Text
$sel:kmsKeyArn:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
kmsKeyArn} -> Maybe Text
kmsKeyArn) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:kmsKeyArn:DescribeMailboxExportJobResponse' :: Maybe Text
kmsKeyArn = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The ARN of the AWS Identity and Access Management (IAM) role that grants
-- write permission to the Amazon Simple Storage Service (Amazon S3)
-- bucket.
describeMailboxExportJobResponse_roleArn :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_roleArn :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:roleArn:DescribeMailboxExportJobResponse' :: Maybe Text
roleArn = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The name of the S3 bucket.
describeMailboxExportJobResponse_s3BucketName :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_s3BucketName :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_s3BucketName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
s3BucketName :: Maybe Text
$sel:s3BucketName:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
s3BucketName} -> Maybe Text
s3BucketName) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:s3BucketName:DescribeMailboxExportJobResponse' :: Maybe Text
s3BucketName = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The path to the S3 bucket and file that the mailbox export job is
-- exporting to.
describeMailboxExportJobResponse_s3Path :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_s3Path :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_s3Path = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
s3Path :: Maybe Text
$sel:s3Path:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
s3Path} -> Maybe Text
s3Path) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:s3Path:DescribeMailboxExportJobResponse' :: Maybe Text
s3Path = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The S3 bucket prefix.
describeMailboxExportJobResponse_s3Prefix :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.Text)
describeMailboxExportJobResponse_s3Prefix :: Lens' DescribeMailboxExportJobResponse (Maybe Text)
describeMailboxExportJobResponse_s3Prefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe Text
s3Prefix :: Maybe Text
$sel:s3Prefix:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
s3Prefix} -> Maybe Text
s3Prefix) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe Text
a -> DescribeMailboxExportJobResponse
s {$sel:s3Prefix:DescribeMailboxExportJobResponse' :: Maybe Text
s3Prefix = Maybe Text
a} :: DescribeMailboxExportJobResponse)

-- | The mailbox export job start timestamp.
describeMailboxExportJobResponse_startTime :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe Prelude.UTCTime)
describeMailboxExportJobResponse_startTime :: Lens' DescribeMailboxExportJobResponse (Maybe UTCTime)
describeMailboxExportJobResponse_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe POSIX
a -> DescribeMailboxExportJobResponse
s {$sel:startTime:DescribeMailboxExportJobResponse' :: Maybe POSIX
startTime = Maybe POSIX
a} :: DescribeMailboxExportJobResponse) 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 state of the mailbox export job.
describeMailboxExportJobResponse_state :: Lens.Lens' DescribeMailboxExportJobResponse (Prelude.Maybe MailboxExportJobState)
describeMailboxExportJobResponse_state :: Lens'
  DescribeMailboxExportJobResponse (Maybe MailboxExportJobState)
describeMailboxExportJobResponse_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMailboxExportJobResponse' {Maybe MailboxExportJobState
state :: Maybe MailboxExportJobState
$sel:state:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe MailboxExportJobState
state} -> Maybe MailboxExportJobState
state) (\s :: DescribeMailboxExportJobResponse
s@DescribeMailboxExportJobResponse' {} Maybe MailboxExportJobState
a -> DescribeMailboxExportJobResponse
s {$sel:state:DescribeMailboxExportJobResponse' :: Maybe MailboxExportJobState
state = Maybe MailboxExportJobState
a} :: DescribeMailboxExportJobResponse)

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

instance
  Prelude.NFData
    DescribeMailboxExportJobResponse
  where
  rnf :: DescribeMailboxExportJobResponse -> ()
rnf DescribeMailboxExportJobResponse' {Int
Maybe Natural
Maybe Text
Maybe POSIX
Maybe MailboxExportJobState
httpStatus :: Int
state :: Maybe MailboxExportJobState
startTime :: Maybe POSIX
s3Prefix :: Maybe Text
s3Path :: Maybe Text
s3BucketName :: Maybe Text
roleArn :: Maybe Text
kmsKeyArn :: Maybe Text
estimatedProgress :: Maybe Natural
errorInfo :: Maybe Text
entityId :: Maybe Text
endTime :: Maybe POSIX
description :: Maybe Text
$sel:httpStatus:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Int
$sel:state:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe MailboxExportJobState
$sel:startTime:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe POSIX
$sel:s3Prefix:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:s3Path:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:s3BucketName:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:roleArn:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:kmsKeyArn:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:estimatedProgress:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Natural
$sel:errorInfo:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:entityId:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
$sel:endTime:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe POSIX
$sel:description:DescribeMailboxExportJobResponse' :: DescribeMailboxExportJobResponse -> Maybe Text
..} =
    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 POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
entityId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
errorInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
estimatedProgress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
s3BucketName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
s3Path
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
s3Prefix
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MailboxExportJobState
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus