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

    -- * Request Lenses
    createMobileDeviceAccessRule_clientToken,
    createMobileDeviceAccessRule_description,
    createMobileDeviceAccessRule_deviceModels,
    createMobileDeviceAccessRule_deviceOperatingSystems,
    createMobileDeviceAccessRule_deviceTypes,
    createMobileDeviceAccessRule_deviceUserAgents,
    createMobileDeviceAccessRule_notDeviceModels,
    createMobileDeviceAccessRule_notDeviceOperatingSystems,
    createMobileDeviceAccessRule_notDeviceTypes,
    createMobileDeviceAccessRule_notDeviceUserAgents,
    createMobileDeviceAccessRule_organizationId,
    createMobileDeviceAccessRule_name,
    createMobileDeviceAccessRule_effect,

    -- * Destructuring the Response
    CreateMobileDeviceAccessRuleResponse (..),
    newCreateMobileDeviceAccessRuleResponse,

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

-- |
-- Create a value of 'CreateMobileDeviceAccessRule' 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:
--
-- 'clientToken', 'createMobileDeviceAccessRule_clientToken' - The idempotency token for the client request.
--
-- 'description', 'createMobileDeviceAccessRule_description' - The rule description.
--
-- 'deviceModels', 'createMobileDeviceAccessRule_deviceModels' - Device models that the rule will match.
--
-- 'deviceOperatingSystems', 'createMobileDeviceAccessRule_deviceOperatingSystems' - Device operating systems that the rule will match.
--
-- 'deviceTypes', 'createMobileDeviceAccessRule_deviceTypes' - Device types that the rule will match.
--
-- 'deviceUserAgents', 'createMobileDeviceAccessRule_deviceUserAgents' - Device user agents that the rule will match.
--
-- 'notDeviceModels', 'createMobileDeviceAccessRule_notDeviceModels' - Device models that the rule __will not__ match. All other device models
-- will match.
--
-- 'notDeviceOperatingSystems', 'createMobileDeviceAccessRule_notDeviceOperatingSystems' - Device operating systems that the rule __will not__ match. All other
-- device operating systems will match.
--
-- 'notDeviceTypes', 'createMobileDeviceAccessRule_notDeviceTypes' - Device types that the rule __will not__ match. All other device types
-- will match.
--
-- 'notDeviceUserAgents', 'createMobileDeviceAccessRule_notDeviceUserAgents' - Device user agents that the rule __will not__ match. All other device
-- user agents will match.
--
-- 'organizationId', 'createMobileDeviceAccessRule_organizationId' - The WorkMail organization under which the rule will be created.
--
-- 'name', 'createMobileDeviceAccessRule_name' - The rule name.
--
-- 'effect', 'createMobileDeviceAccessRule_effect' - The effect of the rule when it matches. Allowed values are @ALLOW@ or
-- @DENY@.
newCreateMobileDeviceAccessRule ::
  -- | 'organizationId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'effect'
  MobileDeviceAccessRuleEffect ->
  CreateMobileDeviceAccessRule
newCreateMobileDeviceAccessRule :: Text
-> Text
-> MobileDeviceAccessRuleEffect
-> CreateMobileDeviceAccessRule
newCreateMobileDeviceAccessRule
  Text
pOrganizationId_
  Text
pName_
  MobileDeviceAccessRuleEffect
pEffect_ =
    CreateMobileDeviceAccessRule'
      { $sel:clientToken:CreateMobileDeviceAccessRule' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:description:CreateMobileDeviceAccessRule' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceModels:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceModels = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceOperatingSystems:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceOperatingSystems = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceTypes:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceTypes = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceUserAgents:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceUserAgents = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceModels:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceModels = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceOperatingSystems:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceOperatingSystems = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceTypes:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceTypes = forall a. Maybe a
Prelude.Nothing,
        $sel:notDeviceUserAgents:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceUserAgents = forall a. Maybe a
Prelude.Nothing,
        $sel:organizationId:CreateMobileDeviceAccessRule' :: Text
organizationId = Text
pOrganizationId_,
        $sel:name:CreateMobileDeviceAccessRule' :: Text
name = Text
pName_,
        $sel:effect:CreateMobileDeviceAccessRule' :: MobileDeviceAccessRuleEffect
effect = MobileDeviceAccessRuleEffect
pEffect_
      }

-- | The idempotency token for the client request.
createMobileDeviceAccessRule_clientToken :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe Prelude.Text)
createMobileDeviceAccessRule_clientToken :: Lens' CreateMobileDeviceAccessRule (Maybe Text)
createMobileDeviceAccessRule_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe Text
a -> CreateMobileDeviceAccessRule
s {$sel:clientToken:CreateMobileDeviceAccessRule' :: Maybe Text
clientToken = Maybe Text
a} :: CreateMobileDeviceAccessRule)

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

-- | Device models that the rule will match.
createMobileDeviceAccessRule_deviceModels :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_deviceModels :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_deviceModels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceModels :: Maybe (NonEmpty Text)
$sel:deviceModels:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceModels} -> Maybe (NonEmpty Text)
deviceModels) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:deviceModels:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceModels = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 rule will match.
createMobileDeviceAccessRule_deviceOperatingSystems :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_deviceOperatingSystems :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_deviceOperatingSystems = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceOperatingSystems :: Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceOperatingSystems} -> Maybe (NonEmpty Text)
deviceOperatingSystems) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:deviceOperatingSystems:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceOperatingSystems = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 rule will match.
createMobileDeviceAccessRule_deviceTypes :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_deviceTypes :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_deviceTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceTypes :: Maybe (NonEmpty Text)
$sel:deviceTypes:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceTypes} -> Maybe (NonEmpty Text)
deviceTypes) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:deviceTypes:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceTypes = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 user agents that the rule will match.
createMobileDeviceAccessRule_deviceUserAgents :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_deviceUserAgents :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_deviceUserAgents = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
deviceUserAgents :: Maybe (NonEmpty Text)
$sel:deviceUserAgents:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
deviceUserAgents} -> Maybe (NonEmpty Text)
deviceUserAgents) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:deviceUserAgents:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
deviceUserAgents = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 rule __will not__ match. All other device models
-- will match.
createMobileDeviceAccessRule_notDeviceModels :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_notDeviceModels :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_notDeviceModels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceModels :: Maybe (NonEmpty Text)
$sel:notDeviceModels:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceModels} -> Maybe (NonEmpty Text)
notDeviceModels) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:notDeviceModels:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceModels = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 rule __will not__ match. All other
-- device operating systems will match.
createMobileDeviceAccessRule_notDeviceOperatingSystems :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_notDeviceOperatingSystems :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_notDeviceOperatingSystems = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceOperatingSystems :: Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceOperatingSystems} -> Maybe (NonEmpty Text)
notDeviceOperatingSystems) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:notDeviceOperatingSystems:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceOperatingSystems = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 rule __will not__ match. All other device types
-- will match.
createMobileDeviceAccessRule_notDeviceTypes :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_notDeviceTypes :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_notDeviceTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceTypes :: Maybe (NonEmpty Text)
$sel:notDeviceTypes:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceTypes} -> Maybe (NonEmpty Text)
notDeviceTypes) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:notDeviceTypes:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceTypes = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 user agents that the rule __will not__ match. All other device
-- user agents will match.
createMobileDeviceAccessRule_notDeviceUserAgents :: Lens.Lens' CreateMobileDeviceAccessRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
createMobileDeviceAccessRule_notDeviceUserAgents :: Lens' CreateMobileDeviceAccessRule (Maybe (NonEmpty Text))
createMobileDeviceAccessRule_notDeviceUserAgents = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
notDeviceUserAgents :: Maybe (NonEmpty Text)
$sel:notDeviceUserAgents:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
notDeviceUserAgents} -> Maybe (NonEmpty Text)
notDeviceUserAgents) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Maybe (NonEmpty Text)
a -> CreateMobileDeviceAccessRule
s {$sel:notDeviceUserAgents:CreateMobileDeviceAccessRule' :: Maybe (NonEmpty Text)
notDeviceUserAgents = Maybe (NonEmpty Text)
a} :: CreateMobileDeviceAccessRule) 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 created.
createMobileDeviceAccessRule_organizationId :: Lens.Lens' CreateMobileDeviceAccessRule Prelude.Text
createMobileDeviceAccessRule_organizationId :: Lens' CreateMobileDeviceAccessRule Text
createMobileDeviceAccessRule_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRule' {Text
organizationId :: Text
$sel:organizationId:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Text
organizationId} -> Text
organizationId) (\s :: CreateMobileDeviceAccessRule
s@CreateMobileDeviceAccessRule' {} Text
a -> CreateMobileDeviceAccessRule
s {$sel:organizationId:CreateMobileDeviceAccessRule' :: Text
organizationId = Text
a} :: CreateMobileDeviceAccessRule)

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

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

instance Core.AWSRequest CreateMobileDeviceAccessRule where
  type
    AWSResponse CreateMobileDeviceAccessRule =
      CreateMobileDeviceAccessRuleResponse
  request :: (Service -> Service)
-> CreateMobileDeviceAccessRule
-> Request CreateMobileDeviceAccessRule
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 CreateMobileDeviceAccessRule
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateMobileDeviceAccessRule)))
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 -> Int -> CreateMobileDeviceAccessRuleResponse
CreateMobileDeviceAccessRuleResponse'
            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
"MobileDeviceAccessRuleId")
            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
    CreateMobileDeviceAccessRule
  where
  hashWithSalt :: Int -> CreateMobileDeviceAccessRule -> Int
hashWithSalt Int
_salt CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
Maybe Text
Text
MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
name :: 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
clientToken :: Maybe Text
$sel:effect:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
$sel:name:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Text
$sel:organizationId:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Text
$sel:notDeviceUserAgents:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceTypes:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceModels:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceUserAgents:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceTypes:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceModels:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:description:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe Text
$sel:clientToken:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      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
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MobileDeviceAccessRuleEffect
effect

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

instance Data.ToHeaders CreateMobileDeviceAccessRule where
  toHeaders :: CreateMobileDeviceAccessRule -> 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.CreateMobileDeviceAccessRule" ::
                          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 CreateMobileDeviceAccessRule where
  toJSON :: CreateMobileDeviceAccessRule -> Value
toJSON CreateMobileDeviceAccessRule' {Maybe (NonEmpty Text)
Maybe Text
Text
MobileDeviceAccessRuleEffect
effect :: MobileDeviceAccessRuleEffect
name :: 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
clientToken :: Maybe Text
$sel:effect:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> MobileDeviceAccessRuleEffect
$sel:name:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Text
$sel:organizationId:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Text
$sel:notDeviceUserAgents:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceTypes:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceOperatingSystems:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:notDeviceModels:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceUserAgents:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceTypes:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceOperatingSystems:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:deviceModels:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe (NonEmpty Text)
$sel:description:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe Text
$sel:clientToken:CreateMobileDeviceAccessRule' :: CreateMobileDeviceAccessRule -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientToken" 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
clientToken,
            (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
"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 CreateMobileDeviceAccessRule where
  toPath :: CreateMobileDeviceAccessRule -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newCreateMobileDeviceAccessRuleResponse' smart constructor.
data CreateMobileDeviceAccessRuleResponse = CreateMobileDeviceAccessRuleResponse'
  { -- | The identifier for the newly created mobile device access rule.
    CreateMobileDeviceAccessRuleResponse -> Maybe Text
mobileDeviceAccessRuleId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateMobileDeviceAccessRuleResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateMobileDeviceAccessRuleResponse
-> CreateMobileDeviceAccessRuleResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateMobileDeviceAccessRuleResponse
-> CreateMobileDeviceAccessRuleResponse -> Bool
$c/= :: CreateMobileDeviceAccessRuleResponse
-> CreateMobileDeviceAccessRuleResponse -> Bool
== :: CreateMobileDeviceAccessRuleResponse
-> CreateMobileDeviceAccessRuleResponse -> Bool
$c== :: CreateMobileDeviceAccessRuleResponse
-> CreateMobileDeviceAccessRuleResponse -> Bool
Prelude.Eq, ReadPrec [CreateMobileDeviceAccessRuleResponse]
ReadPrec CreateMobileDeviceAccessRuleResponse
Int -> ReadS CreateMobileDeviceAccessRuleResponse
ReadS [CreateMobileDeviceAccessRuleResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateMobileDeviceAccessRuleResponse]
$creadListPrec :: ReadPrec [CreateMobileDeviceAccessRuleResponse]
readPrec :: ReadPrec CreateMobileDeviceAccessRuleResponse
$creadPrec :: ReadPrec CreateMobileDeviceAccessRuleResponse
readList :: ReadS [CreateMobileDeviceAccessRuleResponse]
$creadList :: ReadS [CreateMobileDeviceAccessRuleResponse]
readsPrec :: Int -> ReadS CreateMobileDeviceAccessRuleResponse
$creadsPrec :: Int -> ReadS CreateMobileDeviceAccessRuleResponse
Prelude.Read, Int -> CreateMobileDeviceAccessRuleResponse -> ShowS
[CreateMobileDeviceAccessRuleResponse] -> ShowS
CreateMobileDeviceAccessRuleResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateMobileDeviceAccessRuleResponse] -> ShowS
$cshowList :: [CreateMobileDeviceAccessRuleResponse] -> ShowS
show :: CreateMobileDeviceAccessRuleResponse -> String
$cshow :: CreateMobileDeviceAccessRuleResponse -> String
showsPrec :: Int -> CreateMobileDeviceAccessRuleResponse -> ShowS
$cshowsPrec :: Int -> CreateMobileDeviceAccessRuleResponse -> ShowS
Prelude.Show, forall x.
Rep CreateMobileDeviceAccessRuleResponse x
-> CreateMobileDeviceAccessRuleResponse
forall x.
CreateMobileDeviceAccessRuleResponse
-> Rep CreateMobileDeviceAccessRuleResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateMobileDeviceAccessRuleResponse x
-> CreateMobileDeviceAccessRuleResponse
$cfrom :: forall x.
CreateMobileDeviceAccessRuleResponse
-> Rep CreateMobileDeviceAccessRuleResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateMobileDeviceAccessRuleResponse' 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:
--
-- 'mobileDeviceAccessRuleId', 'createMobileDeviceAccessRuleResponse_mobileDeviceAccessRuleId' - The identifier for the newly created mobile device access rule.
--
-- 'httpStatus', 'createMobileDeviceAccessRuleResponse_httpStatus' - The response's http status code.
newCreateMobileDeviceAccessRuleResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateMobileDeviceAccessRuleResponse
newCreateMobileDeviceAccessRuleResponse :: Int -> CreateMobileDeviceAccessRuleResponse
newCreateMobileDeviceAccessRuleResponse Int
pHttpStatus_ =
  CreateMobileDeviceAccessRuleResponse'
    { $sel:mobileDeviceAccessRuleId:CreateMobileDeviceAccessRuleResponse' :: Maybe Text
mobileDeviceAccessRuleId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateMobileDeviceAccessRuleResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The identifier for the newly created mobile device access rule.
createMobileDeviceAccessRuleResponse_mobileDeviceAccessRuleId :: Lens.Lens' CreateMobileDeviceAccessRuleResponse (Prelude.Maybe Prelude.Text)
createMobileDeviceAccessRuleResponse_mobileDeviceAccessRuleId :: Lens' CreateMobileDeviceAccessRuleResponse (Maybe Text)
createMobileDeviceAccessRuleResponse_mobileDeviceAccessRuleId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMobileDeviceAccessRuleResponse' {Maybe Text
mobileDeviceAccessRuleId :: Maybe Text
$sel:mobileDeviceAccessRuleId:CreateMobileDeviceAccessRuleResponse' :: CreateMobileDeviceAccessRuleResponse -> Maybe Text
mobileDeviceAccessRuleId} -> Maybe Text
mobileDeviceAccessRuleId) (\s :: CreateMobileDeviceAccessRuleResponse
s@CreateMobileDeviceAccessRuleResponse' {} Maybe Text
a -> CreateMobileDeviceAccessRuleResponse
s {$sel:mobileDeviceAccessRuleId:CreateMobileDeviceAccessRuleResponse' :: Maybe Text
mobileDeviceAccessRuleId = Maybe Text
a} :: CreateMobileDeviceAccessRuleResponse)

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

instance
  Prelude.NFData
    CreateMobileDeviceAccessRuleResponse
  where
  rnf :: CreateMobileDeviceAccessRuleResponse -> ()
rnf CreateMobileDeviceAccessRuleResponse' {Int
Maybe Text
httpStatus :: Int
mobileDeviceAccessRuleId :: Maybe Text
$sel:httpStatus:CreateMobileDeviceAccessRuleResponse' :: CreateMobileDeviceAccessRuleResponse -> Int
$sel:mobileDeviceAccessRuleId:CreateMobileDeviceAccessRuleResponse' :: CreateMobileDeviceAccessRuleResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
mobileDeviceAccessRuleId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus