{-# 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.GetMobileDeviceAccessOverride
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the mobile device access override for the given WorkMail
-- organization, user, and device.
module Amazonka.WorkMail.GetMobileDeviceAccessOverride
  ( -- * Creating a Request
    GetMobileDeviceAccessOverride (..),
    newGetMobileDeviceAccessOverride,

    -- * Request Lenses
    getMobileDeviceAccessOverride_organizationId,
    getMobileDeviceAccessOverride_userId,
    getMobileDeviceAccessOverride_deviceId,

    -- * Destructuring the Response
    GetMobileDeviceAccessOverrideResponse (..),
    newGetMobileDeviceAccessOverrideResponse,

    -- * Response Lenses
    getMobileDeviceAccessOverrideResponse_dateCreated,
    getMobileDeviceAccessOverrideResponse_dateModified,
    getMobileDeviceAccessOverrideResponse_description,
    getMobileDeviceAccessOverrideResponse_deviceId,
    getMobileDeviceAccessOverrideResponse_effect,
    getMobileDeviceAccessOverrideResponse_userId,
    getMobileDeviceAccessOverrideResponse_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:/ 'newGetMobileDeviceAccessOverride' smart constructor.
data GetMobileDeviceAccessOverride = GetMobileDeviceAccessOverride'
  { -- | The WorkMail organization to which you want to apply the override.
    GetMobileDeviceAccessOverride -> Text
organizationId :: Prelude.Text,
    -- | Identifies the WorkMail user for the override. Accepts the following
    -- types of user identities:
    --
    -- -   User ID: @12345678-1234-1234-1234-123456789012@ or
    --     @S-1-1-12-1234567890-123456789-123456789-1234@
    --
    -- -   Email address: @user\@domain.tld@
    --
    -- -   User name: @user@
    GetMobileDeviceAccessOverride -> Text
userId :: Prelude.Text,
    -- | The mobile device to which the override applies. @DeviceId@ is case
    -- insensitive.
    GetMobileDeviceAccessOverride -> Text
deviceId :: Prelude.Text
  }
  deriving (GetMobileDeviceAccessOverride
-> GetMobileDeviceAccessOverride -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetMobileDeviceAccessOverride
-> GetMobileDeviceAccessOverride -> Bool
$c/= :: GetMobileDeviceAccessOverride
-> GetMobileDeviceAccessOverride -> Bool
== :: GetMobileDeviceAccessOverride
-> GetMobileDeviceAccessOverride -> Bool
$c== :: GetMobileDeviceAccessOverride
-> GetMobileDeviceAccessOverride -> Bool
Prelude.Eq, ReadPrec [GetMobileDeviceAccessOverride]
ReadPrec GetMobileDeviceAccessOverride
Int -> ReadS GetMobileDeviceAccessOverride
ReadS [GetMobileDeviceAccessOverride]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetMobileDeviceAccessOverride]
$creadListPrec :: ReadPrec [GetMobileDeviceAccessOverride]
readPrec :: ReadPrec GetMobileDeviceAccessOverride
$creadPrec :: ReadPrec GetMobileDeviceAccessOverride
readList :: ReadS [GetMobileDeviceAccessOverride]
$creadList :: ReadS [GetMobileDeviceAccessOverride]
readsPrec :: Int -> ReadS GetMobileDeviceAccessOverride
$creadsPrec :: Int -> ReadS GetMobileDeviceAccessOverride
Prelude.Read, Int -> GetMobileDeviceAccessOverride -> ShowS
[GetMobileDeviceAccessOverride] -> ShowS
GetMobileDeviceAccessOverride -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetMobileDeviceAccessOverride] -> ShowS
$cshowList :: [GetMobileDeviceAccessOverride] -> ShowS
show :: GetMobileDeviceAccessOverride -> String
$cshow :: GetMobileDeviceAccessOverride -> String
showsPrec :: Int -> GetMobileDeviceAccessOverride -> ShowS
$cshowsPrec :: Int -> GetMobileDeviceAccessOverride -> ShowS
Prelude.Show, forall x.
Rep GetMobileDeviceAccessOverride x
-> GetMobileDeviceAccessOverride
forall x.
GetMobileDeviceAccessOverride
-> Rep GetMobileDeviceAccessOverride x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetMobileDeviceAccessOverride x
-> GetMobileDeviceAccessOverride
$cfrom :: forall x.
GetMobileDeviceAccessOverride
-> Rep GetMobileDeviceAccessOverride x
Prelude.Generic)

-- |
-- Create a value of 'GetMobileDeviceAccessOverride' 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:
--
-- 'organizationId', 'getMobileDeviceAccessOverride_organizationId' - The WorkMail organization to which you want to apply the override.
--
-- 'userId', 'getMobileDeviceAccessOverride_userId' - Identifies the WorkMail user for the override. Accepts the following
-- types of user identities:
--
-- -   User ID: @12345678-1234-1234-1234-123456789012@ or
--     @S-1-1-12-1234567890-123456789-123456789-1234@
--
-- -   Email address: @user\@domain.tld@
--
-- -   User name: @user@
--
-- 'deviceId', 'getMobileDeviceAccessOverride_deviceId' - The mobile device to which the override applies. @DeviceId@ is case
-- insensitive.
newGetMobileDeviceAccessOverride ::
  -- | 'organizationId'
  Prelude.Text ->
  -- | 'userId'
  Prelude.Text ->
  -- | 'deviceId'
  Prelude.Text ->
  GetMobileDeviceAccessOverride
newGetMobileDeviceAccessOverride :: Text -> Text -> Text -> GetMobileDeviceAccessOverride
newGetMobileDeviceAccessOverride
  Text
pOrganizationId_
  Text
pUserId_
  Text
pDeviceId_ =
    GetMobileDeviceAccessOverride'
      { $sel:organizationId:GetMobileDeviceAccessOverride' :: Text
organizationId =
          Text
pOrganizationId_,
        $sel:userId:GetMobileDeviceAccessOverride' :: Text
userId = Text
pUserId_,
        $sel:deviceId:GetMobileDeviceAccessOverride' :: Text
deviceId = Text
pDeviceId_
      }

-- | The WorkMail organization to which you want to apply the override.
getMobileDeviceAccessOverride_organizationId :: Lens.Lens' GetMobileDeviceAccessOverride Prelude.Text
getMobileDeviceAccessOverride_organizationId :: Lens' GetMobileDeviceAccessOverride Text
getMobileDeviceAccessOverride_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverride' {Text
organizationId :: Text
$sel:organizationId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
organizationId} -> Text
organizationId) (\s :: GetMobileDeviceAccessOverride
s@GetMobileDeviceAccessOverride' {} Text
a -> GetMobileDeviceAccessOverride
s {$sel:organizationId:GetMobileDeviceAccessOverride' :: Text
organizationId = Text
a} :: GetMobileDeviceAccessOverride)

-- | Identifies the WorkMail user for the override. Accepts the following
-- types of user identities:
--
-- -   User ID: @12345678-1234-1234-1234-123456789012@ or
--     @S-1-1-12-1234567890-123456789-123456789-1234@
--
-- -   Email address: @user\@domain.tld@
--
-- -   User name: @user@
getMobileDeviceAccessOverride_userId :: Lens.Lens' GetMobileDeviceAccessOverride Prelude.Text
getMobileDeviceAccessOverride_userId :: Lens' GetMobileDeviceAccessOverride Text
getMobileDeviceAccessOverride_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverride' {Text
userId :: Text
$sel:userId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
userId} -> Text
userId) (\s :: GetMobileDeviceAccessOverride
s@GetMobileDeviceAccessOverride' {} Text
a -> GetMobileDeviceAccessOverride
s {$sel:userId:GetMobileDeviceAccessOverride' :: Text
userId = Text
a} :: GetMobileDeviceAccessOverride)

-- | The mobile device to which the override applies. @DeviceId@ is case
-- insensitive.
getMobileDeviceAccessOverride_deviceId :: Lens.Lens' GetMobileDeviceAccessOverride Prelude.Text
getMobileDeviceAccessOverride_deviceId :: Lens' GetMobileDeviceAccessOverride Text
getMobileDeviceAccessOverride_deviceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverride' {Text
deviceId :: Text
$sel:deviceId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
deviceId} -> Text
deviceId) (\s :: GetMobileDeviceAccessOverride
s@GetMobileDeviceAccessOverride' {} Text
a -> GetMobileDeviceAccessOverride
s {$sel:deviceId:GetMobileDeviceAccessOverride' :: Text
deviceId = Text
a} :: GetMobileDeviceAccessOverride)

instance
  Core.AWSRequest
    GetMobileDeviceAccessOverride
  where
  type
    AWSResponse GetMobileDeviceAccessOverride =
      GetMobileDeviceAccessOverrideResponse
  request :: (Service -> Service)
-> GetMobileDeviceAccessOverride
-> Request GetMobileDeviceAccessOverride
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 GetMobileDeviceAccessOverride
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetMobileDeviceAccessOverride)))
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 POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe MobileDeviceAccessRuleEffect
-> Maybe Text
-> Int
-> GetMobileDeviceAccessOverrideResponse
GetMobileDeviceAccessOverrideResponse'
            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
"DateCreated")
            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
"DateModified")
            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
"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
"DeviceId")
            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
"Effect")
            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
"UserId")
            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
    GetMobileDeviceAccessOverride
  where
  hashWithSalt :: Int -> GetMobileDeviceAccessOverride -> Int
hashWithSalt Int
_salt GetMobileDeviceAccessOverride' {Text
deviceId :: Text
userId :: Text
organizationId :: Text
$sel:deviceId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
$sel:userId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
$sel:organizationId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
organizationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
userId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
deviceId

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

instance Data.ToHeaders GetMobileDeviceAccessOverride where
  toHeaders :: GetMobileDeviceAccessOverride -> 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.GetMobileDeviceAccessOverride" ::
                          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 GetMobileDeviceAccessOverride where
  toJSON :: GetMobileDeviceAccessOverride -> Value
toJSON GetMobileDeviceAccessOverride' {Text
deviceId :: Text
userId :: Text
organizationId :: Text
$sel:deviceId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
$sel:userId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
$sel:organizationId:GetMobileDeviceAccessOverride' :: GetMobileDeviceAccessOverride -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"OrganizationId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
organizationId),
            forall a. a -> Maybe a
Prelude.Just (Key
"UserId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
userId),
            forall a. a -> Maybe a
Prelude.Just (Key
"DeviceId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
deviceId)
          ]
      )

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

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

-- | /See:/ 'newGetMobileDeviceAccessOverrideResponse' smart constructor.
data GetMobileDeviceAccessOverrideResponse = GetMobileDeviceAccessOverrideResponse'
  { -- | The date the override was first created.
    GetMobileDeviceAccessOverrideResponse -> Maybe POSIX
dateCreated :: Prelude.Maybe Data.POSIX,
    -- | The date the description was last modified.
    GetMobileDeviceAccessOverrideResponse -> Maybe POSIX
dateModified :: Prelude.Maybe Data.POSIX,
    -- | A description of the override.
    GetMobileDeviceAccessOverrideResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The device to which the access override applies.
    GetMobileDeviceAccessOverrideResponse -> Maybe Text
deviceId :: Prelude.Maybe Prelude.Text,
    -- | The effect of the override, @ALLOW@ or @DENY@.
    GetMobileDeviceAccessOverrideResponse
-> Maybe MobileDeviceAccessRuleEffect
effect :: Prelude.Maybe MobileDeviceAccessRuleEffect,
    -- | The WorkMail user to which the access override applies.
    GetMobileDeviceAccessOverrideResponse -> Maybe Text
userId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetMobileDeviceAccessOverrideResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetMobileDeviceAccessOverrideResponse
-> GetMobileDeviceAccessOverrideResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetMobileDeviceAccessOverrideResponse
-> GetMobileDeviceAccessOverrideResponse -> Bool
$c/= :: GetMobileDeviceAccessOverrideResponse
-> GetMobileDeviceAccessOverrideResponse -> Bool
== :: GetMobileDeviceAccessOverrideResponse
-> GetMobileDeviceAccessOverrideResponse -> Bool
$c== :: GetMobileDeviceAccessOverrideResponse
-> GetMobileDeviceAccessOverrideResponse -> Bool
Prelude.Eq, ReadPrec [GetMobileDeviceAccessOverrideResponse]
ReadPrec GetMobileDeviceAccessOverrideResponse
Int -> ReadS GetMobileDeviceAccessOverrideResponse
ReadS [GetMobileDeviceAccessOverrideResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetMobileDeviceAccessOverrideResponse]
$creadListPrec :: ReadPrec [GetMobileDeviceAccessOverrideResponse]
readPrec :: ReadPrec GetMobileDeviceAccessOverrideResponse
$creadPrec :: ReadPrec GetMobileDeviceAccessOverrideResponse
readList :: ReadS [GetMobileDeviceAccessOverrideResponse]
$creadList :: ReadS [GetMobileDeviceAccessOverrideResponse]
readsPrec :: Int -> ReadS GetMobileDeviceAccessOverrideResponse
$creadsPrec :: Int -> ReadS GetMobileDeviceAccessOverrideResponse
Prelude.Read, Int -> GetMobileDeviceAccessOverrideResponse -> ShowS
[GetMobileDeviceAccessOverrideResponse] -> ShowS
GetMobileDeviceAccessOverrideResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetMobileDeviceAccessOverrideResponse] -> ShowS
$cshowList :: [GetMobileDeviceAccessOverrideResponse] -> ShowS
show :: GetMobileDeviceAccessOverrideResponse -> String
$cshow :: GetMobileDeviceAccessOverrideResponse -> String
showsPrec :: Int -> GetMobileDeviceAccessOverrideResponse -> ShowS
$cshowsPrec :: Int -> GetMobileDeviceAccessOverrideResponse -> ShowS
Prelude.Show, forall x.
Rep GetMobileDeviceAccessOverrideResponse x
-> GetMobileDeviceAccessOverrideResponse
forall x.
GetMobileDeviceAccessOverrideResponse
-> Rep GetMobileDeviceAccessOverrideResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetMobileDeviceAccessOverrideResponse x
-> GetMobileDeviceAccessOverrideResponse
$cfrom :: forall x.
GetMobileDeviceAccessOverrideResponse
-> Rep GetMobileDeviceAccessOverrideResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetMobileDeviceAccessOverrideResponse' 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:
--
-- 'dateCreated', 'getMobileDeviceAccessOverrideResponse_dateCreated' - The date the override was first created.
--
-- 'dateModified', 'getMobileDeviceAccessOverrideResponse_dateModified' - The date the description was last modified.
--
-- 'description', 'getMobileDeviceAccessOverrideResponse_description' - A description of the override.
--
-- 'deviceId', 'getMobileDeviceAccessOverrideResponse_deviceId' - The device to which the access override applies.
--
-- 'effect', 'getMobileDeviceAccessOverrideResponse_effect' - The effect of the override, @ALLOW@ or @DENY@.
--
-- 'userId', 'getMobileDeviceAccessOverrideResponse_userId' - The WorkMail user to which the access override applies.
--
-- 'httpStatus', 'getMobileDeviceAccessOverrideResponse_httpStatus' - The response's http status code.
newGetMobileDeviceAccessOverrideResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetMobileDeviceAccessOverrideResponse
newGetMobileDeviceAccessOverrideResponse :: Int -> GetMobileDeviceAccessOverrideResponse
newGetMobileDeviceAccessOverrideResponse Int
pHttpStatus_ =
  GetMobileDeviceAccessOverrideResponse'
    { $sel:dateCreated:GetMobileDeviceAccessOverrideResponse' :: Maybe POSIX
dateCreated =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dateModified:GetMobileDeviceAccessOverrideResponse' :: Maybe POSIX
dateModified = forall a. Maybe a
Prelude.Nothing,
      $sel:description:GetMobileDeviceAccessOverrideResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceId:GetMobileDeviceAccessOverrideResponse' :: Maybe Text
deviceId = forall a. Maybe a
Prelude.Nothing,
      $sel:effect:GetMobileDeviceAccessOverrideResponse' :: Maybe MobileDeviceAccessRuleEffect
effect = forall a. Maybe a
Prelude.Nothing,
      $sel:userId:GetMobileDeviceAccessOverrideResponse' :: Maybe Text
userId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetMobileDeviceAccessOverrideResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The date the override was first created.
getMobileDeviceAccessOverrideResponse_dateCreated :: Lens.Lens' GetMobileDeviceAccessOverrideResponse (Prelude.Maybe Prelude.UTCTime)
getMobileDeviceAccessOverrideResponse_dateCreated :: Lens' GetMobileDeviceAccessOverrideResponse (Maybe UTCTime)
getMobileDeviceAccessOverrideResponse_dateCreated = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverrideResponse' {Maybe POSIX
dateCreated :: Maybe POSIX
$sel:dateCreated:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe POSIX
dateCreated} -> Maybe POSIX
dateCreated) (\s :: GetMobileDeviceAccessOverrideResponse
s@GetMobileDeviceAccessOverrideResponse' {} Maybe POSIX
a -> GetMobileDeviceAccessOverrideResponse
s {$sel:dateCreated:GetMobileDeviceAccessOverrideResponse' :: Maybe POSIX
dateCreated = Maybe POSIX
a} :: GetMobileDeviceAccessOverrideResponse) 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 date the description was last modified.
getMobileDeviceAccessOverrideResponse_dateModified :: Lens.Lens' GetMobileDeviceAccessOverrideResponse (Prelude.Maybe Prelude.UTCTime)
getMobileDeviceAccessOverrideResponse_dateModified :: Lens' GetMobileDeviceAccessOverrideResponse (Maybe UTCTime)
getMobileDeviceAccessOverrideResponse_dateModified = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverrideResponse' {Maybe POSIX
dateModified :: Maybe POSIX
$sel:dateModified:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe POSIX
dateModified} -> Maybe POSIX
dateModified) (\s :: GetMobileDeviceAccessOverrideResponse
s@GetMobileDeviceAccessOverrideResponse' {} Maybe POSIX
a -> GetMobileDeviceAccessOverrideResponse
s {$sel:dateModified:GetMobileDeviceAccessOverrideResponse' :: Maybe POSIX
dateModified = Maybe POSIX
a} :: GetMobileDeviceAccessOverrideResponse) 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 description of the override.
getMobileDeviceAccessOverrideResponse_description :: Lens.Lens' GetMobileDeviceAccessOverrideResponse (Prelude.Maybe Prelude.Text)
getMobileDeviceAccessOverrideResponse_description :: Lens' GetMobileDeviceAccessOverrideResponse (Maybe Text)
getMobileDeviceAccessOverrideResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverrideResponse' {Maybe Text
description :: Maybe Text
$sel:description:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: GetMobileDeviceAccessOverrideResponse
s@GetMobileDeviceAccessOverrideResponse' {} Maybe Text
a -> GetMobileDeviceAccessOverrideResponse
s {$sel:description:GetMobileDeviceAccessOverrideResponse' :: Maybe Text
description = Maybe Text
a} :: GetMobileDeviceAccessOverrideResponse)

-- | The device to which the access override applies.
getMobileDeviceAccessOverrideResponse_deviceId :: Lens.Lens' GetMobileDeviceAccessOverrideResponse (Prelude.Maybe Prelude.Text)
getMobileDeviceAccessOverrideResponse_deviceId :: Lens' GetMobileDeviceAccessOverrideResponse (Maybe Text)
getMobileDeviceAccessOverrideResponse_deviceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverrideResponse' {Maybe Text
deviceId :: Maybe Text
$sel:deviceId:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe Text
deviceId} -> Maybe Text
deviceId) (\s :: GetMobileDeviceAccessOverrideResponse
s@GetMobileDeviceAccessOverrideResponse' {} Maybe Text
a -> GetMobileDeviceAccessOverrideResponse
s {$sel:deviceId:GetMobileDeviceAccessOverrideResponse' :: Maybe Text
deviceId = Maybe Text
a} :: GetMobileDeviceAccessOverrideResponse)

-- | The effect of the override, @ALLOW@ or @DENY@.
getMobileDeviceAccessOverrideResponse_effect :: Lens.Lens' GetMobileDeviceAccessOverrideResponse (Prelude.Maybe MobileDeviceAccessRuleEffect)
getMobileDeviceAccessOverrideResponse_effect :: Lens'
  GetMobileDeviceAccessOverrideResponse
  (Maybe MobileDeviceAccessRuleEffect)
getMobileDeviceAccessOverrideResponse_effect = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverrideResponse' {Maybe MobileDeviceAccessRuleEffect
effect :: Maybe MobileDeviceAccessRuleEffect
$sel:effect:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse
-> Maybe MobileDeviceAccessRuleEffect
effect} -> Maybe MobileDeviceAccessRuleEffect
effect) (\s :: GetMobileDeviceAccessOverrideResponse
s@GetMobileDeviceAccessOverrideResponse' {} Maybe MobileDeviceAccessRuleEffect
a -> GetMobileDeviceAccessOverrideResponse
s {$sel:effect:GetMobileDeviceAccessOverrideResponse' :: Maybe MobileDeviceAccessRuleEffect
effect = Maybe MobileDeviceAccessRuleEffect
a} :: GetMobileDeviceAccessOverrideResponse)

-- | The WorkMail user to which the access override applies.
getMobileDeviceAccessOverrideResponse_userId :: Lens.Lens' GetMobileDeviceAccessOverrideResponse (Prelude.Maybe Prelude.Text)
getMobileDeviceAccessOverrideResponse_userId :: Lens' GetMobileDeviceAccessOverrideResponse (Maybe Text)
getMobileDeviceAccessOverrideResponse_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMobileDeviceAccessOverrideResponse' {Maybe Text
userId :: Maybe Text
$sel:userId:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe Text
userId} -> Maybe Text
userId) (\s :: GetMobileDeviceAccessOverrideResponse
s@GetMobileDeviceAccessOverrideResponse' {} Maybe Text
a -> GetMobileDeviceAccessOverrideResponse
s {$sel:userId:GetMobileDeviceAccessOverrideResponse' :: Maybe Text
userId = Maybe Text
a} :: GetMobileDeviceAccessOverrideResponse)

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

instance
  Prelude.NFData
    GetMobileDeviceAccessOverrideResponse
  where
  rnf :: GetMobileDeviceAccessOverrideResponse -> ()
rnf GetMobileDeviceAccessOverrideResponse' {Int
Maybe Text
Maybe POSIX
Maybe MobileDeviceAccessRuleEffect
httpStatus :: Int
userId :: Maybe Text
effect :: Maybe MobileDeviceAccessRuleEffect
deviceId :: Maybe Text
description :: Maybe Text
dateModified :: Maybe POSIX
dateCreated :: Maybe POSIX
$sel:httpStatus:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Int
$sel:userId:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe Text
$sel:effect:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse
-> Maybe MobileDeviceAccessRuleEffect
$sel:deviceId:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe Text
$sel:description:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe Text
$sel:dateModified:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe POSIX
$sel:dateCreated:GetMobileDeviceAccessOverrideResponse' :: GetMobileDeviceAccessOverrideResponse -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
dateCreated
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
dateModified
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
deviceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MobileDeviceAccessRuleEffect
effect
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
userId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus