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

    -- * Request Lenses
    updateMobileDeviceAccessRule_description,
    updateMobileDeviceAccessRule_deviceModels,
    updateMobileDeviceAccessRule_deviceOperatingSystems,
    updateMobileDeviceAccessRule_deviceTypes,
    updateMobileDeviceAccessRule_deviceUserAgents,
    updateMobileDeviceAccessRule_notDeviceModels,
    updateMobileDeviceAccessRule_notDeviceOperatingSystems,
    updateMobileDeviceAccessRule_notDeviceTypes,
    updateMobileDeviceAccessRule_notDeviceUserAgents,
    updateMobileDeviceAccessRule_organizationId,
    updateMobileDeviceAccessRule_mobileDeviceAccessRuleId,
    updateMobileDeviceAccessRule_name,
    updateMobileDeviceAccessRule_effect,

    -- * Destructuring the Response
    UpdateMobileDeviceAccessRuleResponse (..),
    newUpdateMobileDeviceAccessRuleResponse,

    -- * Response Lenses
    updateMobileDeviceAccessRuleResponse_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:/ 'newUpdateMobileDeviceAccessRule' smart constructor.
data UpdateMobileDeviceAccessRule = UpdateMobileDeviceAccessRule'
  { -- | The updated rule description.
    UpdateMobileDeviceAccessRule -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Device models that the updated rule will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceModels :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Device operating systems that the updated rule will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceOperatingSystems :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Device types that the updated rule will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceTypes :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | User agents that the updated rule will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceUserAgents :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Device models that the updated rule __will not__ match. All other device
    -- models will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceModels :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Device operating systems that the updated rule __will not__ match. All
    -- other device operating systems will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceOperatingSystems :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Device types that the updated rule __will not__ match. All other device
    -- types will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceTypes :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | User agents that the updated rule __will not__ match. All other user
    -- agents will match.
    UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceUserAgents :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The WorkMail organization under which the rule will be updated.
    UpdateMobileDeviceAccessRule -> Text
organizationId :: Prelude.Text,
    -- | The identifier of the rule to be updated.
    UpdateMobileDeviceAccessRule -> Text
mobileDeviceAccessRuleId :: Prelude.Text,
    -- | The updated rule name.
    UpdateMobileDeviceAccessRule -> Text
name :: Prelude.Text,
    -- | The effect of the rule when it matches. Allowed values are @ALLOW@ or
    -- @DENY@.
    UpdateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
  }
  deriving (UpdateMobileDeviceAccessRule
-> UpdateMobileDeviceAccessRule -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateMobileDeviceAccessRule
-> UpdateMobileDeviceAccessRule -> Bool
$c/= :: UpdateMobileDeviceAccessRule
-> UpdateMobileDeviceAccessRule -> Bool
== :: UpdateMobileDeviceAccessRule
-> UpdateMobileDeviceAccessRule -> Bool
$c== :: UpdateMobileDeviceAccessRule
-> UpdateMobileDeviceAccessRule -> Bool
Prelude.Eq, ReadPrec [UpdateMobileDeviceAccessRule]
ReadPrec UpdateMobileDeviceAccessRule
Int -> ReadS UpdateMobileDeviceAccessRule
ReadS [UpdateMobileDeviceAccessRule]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateMobileDeviceAccessRule]
$creadListPrec :: ReadPrec [UpdateMobileDeviceAccessRule]
readPrec :: ReadPrec UpdateMobileDeviceAccessRule
$creadPrec :: ReadPrec UpdateMobileDeviceAccessRule
readList :: ReadS [UpdateMobileDeviceAccessRule]
$creadList :: ReadS [UpdateMobileDeviceAccessRule]
readsPrec :: Int -> ReadS UpdateMobileDeviceAccessRule
$creadsPrec :: Int -> ReadS UpdateMobileDeviceAccessRule
Prelude.Read, Int -> UpdateMobileDeviceAccessRule -> ShowS
[UpdateMobileDeviceAccessRule] -> ShowS
UpdateMobileDeviceAccessRule -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateMobileDeviceAccessRule] -> ShowS
$cshowList :: [UpdateMobileDeviceAccessRule] -> ShowS
show :: UpdateMobileDeviceAccessRule -> String
$cshow :: UpdateMobileDeviceAccessRule -> String
showsPrec :: Int -> UpdateMobileDeviceAccessRule -> ShowS
$cshowsPrec :: Int -> UpdateMobileDeviceAccessRule -> ShowS
Prelude.Show, forall x.
Rep UpdateMobileDeviceAccessRule x -> UpdateMobileDeviceAccessRule
forall x.
UpdateMobileDeviceAccessRule -> Rep UpdateMobileDeviceAccessRule x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateMobileDeviceAccessRule x -> UpdateMobileDeviceAccessRule
$cfrom :: forall x.
UpdateMobileDeviceAccessRule -> Rep UpdateMobileDeviceAccessRule x
Prelude.Generic)

-- |
-- Create a value of 'UpdateMobileDeviceAccessRule' 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', 'updateMobileDeviceAccessRule_description' - The updated rule description.
--
-- 'deviceModels', 'updateMobileDeviceAccessRule_deviceModels' - Device models that the updated rule will match.
--
-- 'deviceOperatingSystems', 'updateMobileDeviceAccessRule_deviceOperatingSystems' - Device operating systems that the updated rule will match.
--
-- 'deviceTypes', 'updateMobileDeviceAccessRule_deviceTypes' - Device types that the updated rule will match.
--
-- 'deviceUserAgents', 'updateMobileDeviceAccessRule_deviceUserAgents' - User agents that the updated rule will match.
--
-- 'notDeviceModels', 'updateMobileDeviceAccessRule_notDeviceModels' - Device models that the updated rule __will not__ match. All other device
-- models will match.
--
-- 'notDeviceOperatingSystems', 'updateMobileDeviceAccessRule_notDeviceOperatingSystems' - Device operating systems that the updated rule __will not__ match. All
-- other device operating systems will match.
--
-- 'notDeviceTypes', 'updateMobileDeviceAccessRule_notDeviceTypes' - Device types that the updated rule __will not__ match. All other device
-- types will match.
--
-- 'notDeviceUserAgents', 'updateMobileDeviceAccessRule_notDeviceUserAgents' - User agents that the updated rule __will not__ match. All other user
-- agents will match.
--
-- 'organizationId', 'updateMobileDeviceAccessRule_organizationId' - The WorkMail organization under which the rule will be updated.
--
-- 'mobileDeviceAccessRuleId', 'updateMobileDeviceAccessRule_mobileDeviceAccessRuleId' - The identifier of the rule to be updated.
--
-- 'name', 'updateMobileDeviceAccessRule_name' - The updated rule name.
--
-- 'effect', 'updateMobileDeviceAccessRule_effect' - The effect of the rule when it matches. Allowed values are @ALLOW@ or
-- @DENY@.
newUpdateMobileDeviceAccessRule ::
  -- | 'organizationId'
  Prelude.Text ->
  -- | 'mobileDeviceAccessRuleId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'effect'
  MobileDeviceAccessRuleEffect ->
  UpdateMobileDeviceAccessRule
newUpdateMobileDeviceAccessRule :: Text
-> Text
-> Text
-> MobileDeviceAccessRuleEffect
-> UpdateMobileDeviceAccessRule
newUpdateMobileDeviceAccessRule
  Text
pOrganizationId_
  Text
pMobileDeviceAccessRuleId_
  Text
pName_
  MobileDeviceAccessRuleEffect
pEffect_ =
    UpdateMobileDeviceAccessRule'
      { $sel:description:UpdateMobileDeviceAccessRule' :: Maybe Text
description =
          forall a. Maybe a
Prelude.Nothing,
        $sel:deviceModels:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceModels = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceOperatingSystems:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceOperatingSystems = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceTypes:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceTypes = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceUserAgents:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceUserAgents = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceModels:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceModels = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceOperatingSystems:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceOperatingSystems = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceTypes:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceTypes = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceUserAgents:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceUserAgents = forall a. Maybe a
Prelude.Nothing,
        $sel:organizationId:UpdateMobileDeviceAccessRule' :: Text
organizationId = Text
pOrganizationId_,
        $sel:mobileDeviceAccessRuleId:UpdateMobileDeviceAccessRule' :: Text
mobileDeviceAccessRuleId =
          Text
pMobileDeviceAccessRuleId_,
        $sel:name:UpdateMobileDeviceAccessRule' :: Text
name = Text
pName_,
        $sel:effect:UpdateMobileDeviceAccessRule' :: MobileDeviceAccessRuleEffect
effect = MobileDeviceAccessRuleEffect
pEffect_
      }

-- | The updated rule description.
updateMobileDeviceAccessRule_description :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe Prelude.Text)
updateMobileDeviceAccessRule_description :: Lens' UpdateMobileDeviceAccessRule (Maybe Text)
updateMobileDeviceAccessRule_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe Text
description :: Maybe Text
$sel:description:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe Text
a -> UpdateMobileDeviceAccessRule
s {$sel:description:UpdateMobileDeviceAccessRule' :: Maybe Text
description = Maybe Text
a} :: UpdateMobileDeviceAccessRule)

-- | Device models that the updated rule will match.
updateMobileDeviceAccessRule_deviceModels :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_deviceModels :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_deviceModels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceModels :: Maybe (NonEmpty Text)
$sel:deviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceModels} -> Maybe (NonEmpty Text)
deviceModels) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:deviceModels:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceModels = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Device operating systems that the updated rule will match.
updateMobileDeviceAccessRule_deviceOperatingSystems :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_deviceOperatingSystems :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_deviceOperatingSystems = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceOperatingSystems :: Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceOperatingSystems} -> Maybe (NonEmpty Text)
deviceOperatingSystems) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:deviceOperatingSystems:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceOperatingSystems = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Device types that the updated rule will match.
updateMobileDeviceAccessRule_deviceTypes :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_deviceTypes :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_deviceTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceTypes :: Maybe (NonEmpty Text)
$sel:deviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceTypes} -> Maybe (NonEmpty Text)
deviceTypes) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:deviceTypes:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceTypes = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | User agents that the updated rule will match.
updateMobileDeviceAccessRule_deviceUserAgents :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_deviceUserAgents :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_deviceUserAgents = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceUserAgents :: Maybe (NonEmpty Text)
$sel:deviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceUserAgents} -> Maybe (NonEmpty Text)
deviceUserAgents) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:deviceUserAgents:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceUserAgents = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Device models that the updated rule __will not__ match. All other device
-- models will match.
updateMobileDeviceAccessRule_notDeviceModels :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_notDeviceModels :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_notDeviceModels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceModels :: Maybe (NonEmpty Text)
$sel:notDeviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceModels} -> Maybe (NonEmpty Text)
notDeviceModels) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:notDeviceModels:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceModels = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Device operating systems that the updated rule __will not__ match. All
-- other device operating systems will match.
updateMobileDeviceAccessRule_notDeviceOperatingSystems :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_notDeviceOperatingSystems :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_notDeviceOperatingSystems = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceOperatingSystems :: Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceOperatingSystems} -> Maybe (NonEmpty Text)
notDeviceOperatingSystems) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:notDeviceOperatingSystems:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceOperatingSystems = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Device types that the updated rule __will not__ match. All other device
-- types will match.
updateMobileDeviceAccessRule_notDeviceTypes :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_notDeviceTypes :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_notDeviceTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceTypes :: Maybe (NonEmpty Text)
$sel:notDeviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceTypes} -> Maybe (NonEmpty Text)
notDeviceTypes) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:notDeviceTypes:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceTypes = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | User agents that the updated rule __will not__ match. All other user
-- agents will match.
updateMobileDeviceAccessRule_notDeviceUserAgents :: Lens.Lens' UpdateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMobileDeviceAccessRule_notDeviceUserAgents :: Lens' UpdateMobileDeviceAccessRule (Maybe (NonEmpty Text))
updateMobileDeviceAccessRule_notDeviceUserAgents = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceUserAgents :: Maybe (NonEmpty Text)
$sel:notDeviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceUserAgents} -> Maybe (NonEmpty Text)
notDeviceUserAgents) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> UpdateMobileDeviceAccessRule
s {$sel:notDeviceUserAgents:UpdateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceUserAgents = Maybe (NonEmpty Text)
a} :: UpdateMobileDeviceAccessRule) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The WorkMail organization under which the rule will be updated.
updateMobileDeviceAccessRule_organizationId :: Lens.Lens' UpdateMobileDeviceAccessRule Prelude.Text
updateMobileDeviceAccessRule_organizationId :: Lens' UpdateMobileDeviceAccessRule Text
updateMobileDeviceAccessRule_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Text
organizationId :: Text
$sel:organizationId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
organizationId} -> Text
organizationId) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Text
a -> UpdateMobileDeviceAccessRule
s {$sel:organizationId:UpdateMobileDeviceAccessRule' :: Text
organizationId = Text
a} :: UpdateMobileDeviceAccessRule)

-- | The identifier of the rule to be updated.
updateMobileDeviceAccessRule_mobileDeviceAccessRuleId :: Lens.Lens' UpdateMobileDeviceAccessRule Prelude.Text
updateMobileDeviceAccessRule_mobileDeviceAccessRuleId :: Lens' UpdateMobileDeviceAccessRule Text
updateMobileDeviceAccessRule_mobileDeviceAccessRuleId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Text
mobileDeviceAccessRuleId :: Text
$sel:mobileDeviceAccessRuleId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
mobileDeviceAccessRuleId} -> Text
mobileDeviceAccessRuleId) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Text
a -> UpdateMobileDeviceAccessRule
s {$sel:mobileDeviceAccessRuleId:UpdateMobileDeviceAccessRule' :: Text
mobileDeviceAccessRuleId = Text
a} :: UpdateMobileDeviceAccessRule)

-- | The updated rule name.
updateMobileDeviceAccessRule_name :: Lens.Lens' UpdateMobileDeviceAccessRule Prelude.Text
updateMobileDeviceAccessRule_name :: Lens' UpdateMobileDeviceAccessRule Text
updateMobileDeviceAccessRule_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {Text
name :: Text
$sel:name:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
name} -> Text
name) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} Text
a -> UpdateMobileDeviceAccessRule
s {$sel:name:UpdateMobileDeviceAccessRule' :: Text
name = Text
a} :: UpdateMobileDeviceAccessRule)

-- | The effect of the rule when it matches. Allowed values are @ALLOW@ or
-- @DENY@.
updateMobileDeviceAccessRule_effect :: Lens.Lens' UpdateMobileDeviceAccessRule MobileDeviceAccessRuleEffect
updateMobileDeviceAccessRule_effect :: Lens' UpdateMobileDeviceAccessRule MobileDeviceAccessRuleEffect
updateMobileDeviceAccessRule_effect = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMobileDeviceAccessRule' {MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
$sel:effect:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
effect} -> MobileDeviceAccessRuleEffect
effect) (\s :: UpdateMobileDeviceAccessRule
s@UpdateMobileDeviceAccessRule' {} MobileDeviceAccessRuleEffect
a -> UpdateMobileDeviceAccessRule
s {$sel:effect:UpdateMobileDeviceAccessRule' :: MobileDeviceAccessRuleEffect
effect = MobileDeviceAccessRuleEffect
a} :: UpdateMobileDeviceAccessRule)

instance Core.AWSRequest UpdateMobileDeviceAccessRule where
  type
    AWSResponse UpdateMobileDeviceAccessRule =
      UpdateMobileDeviceAccessRuleResponse
  request :: (Service -> Service)
-> UpdateMobileDeviceAccessRule
-> Request UpdateMobileDeviceAccessRule
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 UpdateMobileDeviceAccessRule
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateMobileDeviceAccessRule)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> UpdateMobileDeviceAccessRuleResponse
UpdateMobileDeviceAccessRuleResponse'
            forall (f :: * -> *) a b. Functor 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
    UpdateMobileDeviceAccessRule
  where
  hashWithSalt :: Int -> UpdateMobileDeviceAccessRule -> Int
hashWithSalt Int
_salt UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
Maybe Text
Text
MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
name :: Text
mobileDeviceAccessRuleId :: Text
organizationId :: Text
notDeviceUserAgents :: Maybe (NonEmpty Text)
notDeviceTypes :: Maybe (NonEmpty Text)
notDeviceOperatingSystems :: Maybe (NonEmpty Text)
notDeviceModels :: Maybe (NonEmpty Text)
deviceUserAgents :: Maybe (NonEmpty Text)
deviceTypes :: Maybe (NonEmpty Text)
deviceOperatingSystems :: Maybe (NonEmpty Text)
deviceModels :: Maybe (NonEmpty Text)
description :: Maybe Text
$sel:effect:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
$sel:name:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:mobileDeviceAccessRuleId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:organizationId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:notDeviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:description:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
deviceModels
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
deviceOperatingSystems
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
deviceTypes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
deviceUserAgents
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
notDeviceModels
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
notDeviceOperatingSystems
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
notDeviceTypes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
notDeviceUserAgents
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
organizationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
mobileDeviceAccessRuleId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MobileDeviceAccessRuleEffect
effect

instance Prelude.NFData UpdateMobileDeviceAccessRule where
  rnf :: UpdateMobileDeviceAccessRule -> ()
rnf UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
Maybe Text
Text
MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
name :: Text
mobileDeviceAccessRuleId :: Text
organizationId :: Text
notDeviceUserAgents :: Maybe (NonEmpty Text)
notDeviceTypes :: Maybe (NonEmpty Text)
notDeviceOperatingSystems :: Maybe (NonEmpty Text)
notDeviceModels :: Maybe (NonEmpty Text)
deviceUserAgents :: Maybe (NonEmpty Text)
deviceTypes :: Maybe (NonEmpty Text)
deviceOperatingSystems :: Maybe (NonEmpty Text)
deviceModels :: Maybe (NonEmpty Text)
description :: Maybe Text
$sel:effect:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
$sel:name:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:mobileDeviceAccessRuleId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:organizationId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:notDeviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:description:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> 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 (NonEmpty Text)
deviceModels
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
deviceOperatingSystems
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
deviceTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
deviceUserAgents
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
notDeviceModels
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
notDeviceOperatingSystems
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
notDeviceTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
notDeviceUserAgents
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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
mobileDeviceAccessRuleId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MobileDeviceAccessRuleEffect
effect

instance Data.ToHeaders UpdateMobileDeviceAccessRule where
  toHeaders :: UpdateMobileDeviceAccessRule -> 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.UpdateMobileDeviceAccessRule" ::
                          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 UpdateMobileDeviceAccessRule where
  toJSON :: UpdateMobileDeviceAccessRule -> Value
toJSON UpdateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
Maybe Text
Text
MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
name :: Text
mobileDeviceAccessRuleId :: Text
organizationId :: Text
notDeviceUserAgents :: Maybe (NonEmpty Text)
notDeviceTypes :: Maybe (NonEmpty Text)
notDeviceOperatingSystems :: Maybe (NonEmpty Text)
notDeviceModels :: Maybe (NonEmpty Text)
deviceUserAgents :: Maybe (NonEmpty Text)
deviceTypes :: Maybe (NonEmpty Text)
deviceOperatingSystems :: Maybe (NonEmpty Text)
deviceModels :: Maybe (NonEmpty Text)
description :: Maybe Text
$sel:effect:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
$sel:name:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:mobileDeviceAccessRuleId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:organizationId:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Text
$sel:notDeviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceUserAgents:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceTypes:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceModels:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:description:UpdateMobileDeviceAccessRule' :: UpdateMobileDeviceAccessRule -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"DeviceModels" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
deviceModels,
            (Key
"DeviceOperatingSystems" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
deviceOperatingSystems,
            (Key
"DeviceTypes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
deviceTypes,
            (Key
"DeviceUserAgents" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
deviceUserAgents,
            (Key
"NotDeviceModels" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
notDeviceModels,
            (Key
"NotDeviceOperatingSystems" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
notDeviceOperatingSystems,
            (Key
"NotDeviceTypes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
notDeviceTypes,
            (Key
"NotDeviceUserAgents" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
notDeviceUserAgents,
            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
"MobileDeviceAccessRuleId"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
mobileDeviceAccessRuleId
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            forall a. a -> Maybe a
Prelude.Just (Key
"Effect" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MobileDeviceAccessRuleEffect
effect)
          ]
      )

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

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

-- | /See:/ 'newUpdateMobileDeviceAccessRuleResponse' smart constructor.
data UpdateMobileDeviceAccessRuleResponse = UpdateMobileDeviceAccessRuleResponse'
  { -- | The response's http status code.
    UpdateMobileDeviceAccessRuleResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateMobileDeviceAccessRuleResponse
-> UpdateMobileDeviceAccessRuleResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateMobileDeviceAccessRuleResponse
-> UpdateMobileDeviceAccessRuleResponse -> Bool
$c/= :: UpdateMobileDeviceAccessRuleResponse
-> UpdateMobileDeviceAccessRuleResponse -> Bool
== :: UpdateMobileDeviceAccessRuleResponse
-> UpdateMobileDeviceAccessRuleResponse -> Bool
$c== :: UpdateMobileDeviceAccessRuleResponse
-> UpdateMobileDeviceAccessRuleResponse -> Bool
Prelude.Eq, ReadPrec [UpdateMobileDeviceAccessRuleResponse]
ReadPrec UpdateMobileDeviceAccessRuleResponse
Int -> ReadS UpdateMobileDeviceAccessRuleResponse
ReadS [UpdateMobileDeviceAccessRuleResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateMobileDeviceAccessRuleResponse]
$creadListPrec :: ReadPrec [UpdateMobileDeviceAccessRuleResponse]
readPrec :: ReadPrec UpdateMobileDeviceAccessRuleResponse
$creadPrec :: ReadPrec UpdateMobileDeviceAccessRuleResponse
readList :: ReadS [UpdateMobileDeviceAccessRuleResponse]
$creadList :: ReadS [UpdateMobileDeviceAccessRuleResponse]
readsPrec :: Int -> ReadS UpdateMobileDeviceAccessRuleResponse
$creadsPrec :: Int -> ReadS UpdateMobileDeviceAccessRuleResponse
Prelude.Read, Int -> UpdateMobileDeviceAccessRuleResponse -> ShowS
[UpdateMobileDeviceAccessRuleResponse] -> ShowS
UpdateMobileDeviceAccessRuleResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateMobileDeviceAccessRuleResponse] -> ShowS
$cshowList :: [UpdateMobileDeviceAccessRuleResponse] -> ShowS
show :: UpdateMobileDeviceAccessRuleResponse -> String
$cshow :: UpdateMobileDeviceAccessRuleResponse -> String
showsPrec :: Int -> UpdateMobileDeviceAccessRuleResponse -> ShowS
$cshowsPrec :: Int -> UpdateMobileDeviceAccessRuleResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateMobileDeviceAccessRuleResponse x
-> UpdateMobileDeviceAccessRuleResponse
forall x.
UpdateMobileDeviceAccessRuleResponse
-> Rep UpdateMobileDeviceAccessRuleResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateMobileDeviceAccessRuleResponse x
-> UpdateMobileDeviceAccessRuleResponse
$cfrom :: forall x.
UpdateMobileDeviceAccessRuleResponse
-> Rep UpdateMobileDeviceAccessRuleResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateMobileDeviceAccessRuleResponse' 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:
--
-- 'httpStatus', 'updateMobileDeviceAccessRuleResponse_httpStatus' - The response's http status code.
newUpdateMobileDeviceAccessRuleResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateMobileDeviceAccessRuleResponse
newUpdateMobileDeviceAccessRuleResponse :: Int -> UpdateMobileDeviceAccessRuleResponse
newUpdateMobileDeviceAccessRuleResponse Int
pHttpStatus_ =
  UpdateMobileDeviceAccessRuleResponse'
    { $sel:httpStatus:UpdateMobileDeviceAccessRuleResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    UpdateMobileDeviceAccessRuleResponse
  where
  rnf :: UpdateMobileDeviceAccessRuleResponse -> ()
rnf UpdateMobileDeviceAccessRuleResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateMobileDeviceAccessRuleResponse' :: UpdateMobileDeviceAccessRuleResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus