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

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

-- |
-- Module      : Amazonka.WorkSpaces.Types.WorkspaceAccessProperties
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.WorkSpaces.Types.WorkspaceAccessProperties 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 Amazonka.WorkSpaces.Types.AccessPropertyValue

-- | The device types and operating systems that can be used to access a
-- WorkSpace. For more information, see
-- <https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-network-requirements.html Amazon WorkSpaces Client Network Requirements>.
--
-- /See:/ 'newWorkspaceAccessProperties' smart constructor.
data WorkspaceAccessProperties = WorkspaceAccessProperties'
  { -- | Indicates whether users can use Android and Android-compatible Chrome OS
    -- devices to access their WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeAndroid :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can use Chromebooks to access their WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeChromeOs :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can use iOS devices to access their WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeIos :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can use Linux clients to access their
    -- WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeLinux :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can use macOS clients to access their
    -- WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeOsx :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can access their WorkSpaces through a web
    -- browser.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeWeb :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can use Windows clients to access their
    -- WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeWindows :: Prelude.Maybe AccessPropertyValue,
    -- | Indicates whether users can use zero client devices to access their
    -- WorkSpaces.
    WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeZeroClient :: Prelude.Maybe AccessPropertyValue
  }
  deriving (WorkspaceAccessProperties -> WorkspaceAccessProperties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WorkspaceAccessProperties -> WorkspaceAccessProperties -> Bool
$c/= :: WorkspaceAccessProperties -> WorkspaceAccessProperties -> Bool
== :: WorkspaceAccessProperties -> WorkspaceAccessProperties -> Bool
$c== :: WorkspaceAccessProperties -> WorkspaceAccessProperties -> Bool
Prelude.Eq, ReadPrec [WorkspaceAccessProperties]
ReadPrec WorkspaceAccessProperties
Int -> ReadS WorkspaceAccessProperties
ReadS [WorkspaceAccessProperties]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [WorkspaceAccessProperties]
$creadListPrec :: ReadPrec [WorkspaceAccessProperties]
readPrec :: ReadPrec WorkspaceAccessProperties
$creadPrec :: ReadPrec WorkspaceAccessProperties
readList :: ReadS [WorkspaceAccessProperties]
$creadList :: ReadS [WorkspaceAccessProperties]
readsPrec :: Int -> ReadS WorkspaceAccessProperties
$creadsPrec :: Int -> ReadS WorkspaceAccessProperties
Prelude.Read, Int -> WorkspaceAccessProperties -> ShowS
[WorkspaceAccessProperties] -> ShowS
WorkspaceAccessProperties -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WorkspaceAccessProperties] -> ShowS
$cshowList :: [WorkspaceAccessProperties] -> ShowS
show :: WorkspaceAccessProperties -> String
$cshow :: WorkspaceAccessProperties -> String
showsPrec :: Int -> WorkspaceAccessProperties -> ShowS
$cshowsPrec :: Int -> WorkspaceAccessProperties -> ShowS
Prelude.Show, forall x.
Rep WorkspaceAccessProperties x -> WorkspaceAccessProperties
forall x.
WorkspaceAccessProperties -> Rep WorkspaceAccessProperties x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep WorkspaceAccessProperties x -> WorkspaceAccessProperties
$cfrom :: forall x.
WorkspaceAccessProperties -> Rep WorkspaceAccessProperties x
Prelude.Generic)

-- |
-- Create a value of 'WorkspaceAccessProperties' 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:
--
-- 'deviceTypeAndroid', 'workspaceAccessProperties_deviceTypeAndroid' - Indicates whether users can use Android and Android-compatible Chrome OS
-- devices to access their WorkSpaces.
--
-- 'deviceTypeChromeOs', 'workspaceAccessProperties_deviceTypeChromeOs' - Indicates whether users can use Chromebooks to access their WorkSpaces.
--
-- 'deviceTypeIos', 'workspaceAccessProperties_deviceTypeIos' - Indicates whether users can use iOS devices to access their WorkSpaces.
--
-- 'deviceTypeLinux', 'workspaceAccessProperties_deviceTypeLinux' - Indicates whether users can use Linux clients to access their
-- WorkSpaces.
--
-- 'deviceTypeOsx', 'workspaceAccessProperties_deviceTypeOsx' - Indicates whether users can use macOS clients to access their
-- WorkSpaces.
--
-- 'deviceTypeWeb', 'workspaceAccessProperties_deviceTypeWeb' - Indicates whether users can access their WorkSpaces through a web
-- browser.
--
-- 'deviceTypeWindows', 'workspaceAccessProperties_deviceTypeWindows' - Indicates whether users can use Windows clients to access their
-- WorkSpaces.
--
-- 'deviceTypeZeroClient', 'workspaceAccessProperties_deviceTypeZeroClient' - Indicates whether users can use zero client devices to access their
-- WorkSpaces.
newWorkspaceAccessProperties ::
  WorkspaceAccessProperties
newWorkspaceAccessProperties :: WorkspaceAccessProperties
newWorkspaceAccessProperties =
  WorkspaceAccessProperties'
    { $sel:deviceTypeAndroid:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeAndroid =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeChromeOs:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeChromeOs = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeIos:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeIos = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeLinux:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeLinux = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeOsx:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeOsx = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeWeb:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeWeb = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeWindows:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeWindows = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTypeZeroClient:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeZeroClient = forall a. Maybe a
Prelude.Nothing
    }

-- | Indicates whether users can use Android and Android-compatible Chrome OS
-- devices to access their WorkSpaces.
workspaceAccessProperties_deviceTypeAndroid :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeAndroid :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeAndroid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeAndroid :: Maybe AccessPropertyValue
$sel:deviceTypeAndroid:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeAndroid} -> Maybe AccessPropertyValue
deviceTypeAndroid) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeAndroid:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeAndroid = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can use Chromebooks to access their WorkSpaces.
workspaceAccessProperties_deviceTypeChromeOs :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeChromeOs :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeChromeOs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeChromeOs :: Maybe AccessPropertyValue
$sel:deviceTypeChromeOs:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeChromeOs} -> Maybe AccessPropertyValue
deviceTypeChromeOs) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeChromeOs:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeChromeOs = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can use iOS devices to access their WorkSpaces.
workspaceAccessProperties_deviceTypeIos :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeIos :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeIos = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeIos :: Maybe AccessPropertyValue
$sel:deviceTypeIos:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeIos} -> Maybe AccessPropertyValue
deviceTypeIos) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeIos:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeIos = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can use Linux clients to access their
-- WorkSpaces.
workspaceAccessProperties_deviceTypeLinux :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeLinux :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeLinux = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeLinux :: Maybe AccessPropertyValue
$sel:deviceTypeLinux:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeLinux} -> Maybe AccessPropertyValue
deviceTypeLinux) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeLinux:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeLinux = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can use macOS clients to access their
-- WorkSpaces.
workspaceAccessProperties_deviceTypeOsx :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeOsx :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeOsx = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeOsx :: Maybe AccessPropertyValue
$sel:deviceTypeOsx:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeOsx} -> Maybe AccessPropertyValue
deviceTypeOsx) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeOsx:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeOsx = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can access their WorkSpaces through a web
-- browser.
workspaceAccessProperties_deviceTypeWeb :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeWeb :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeWeb = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeWeb :: Maybe AccessPropertyValue
$sel:deviceTypeWeb:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeWeb} -> Maybe AccessPropertyValue
deviceTypeWeb) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeWeb:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeWeb = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can use Windows clients to access their
-- WorkSpaces.
workspaceAccessProperties_deviceTypeWindows :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeWindows :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeWindows = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeWindows :: Maybe AccessPropertyValue
$sel:deviceTypeWindows:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeWindows} -> Maybe AccessPropertyValue
deviceTypeWindows) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeWindows:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeWindows = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

-- | Indicates whether users can use zero client devices to access their
-- WorkSpaces.
workspaceAccessProperties_deviceTypeZeroClient :: Lens.Lens' WorkspaceAccessProperties (Prelude.Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeZeroClient :: Lens' WorkspaceAccessProperties (Maybe AccessPropertyValue)
workspaceAccessProperties_deviceTypeZeroClient = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeZeroClient :: Maybe AccessPropertyValue
$sel:deviceTypeZeroClient:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
deviceTypeZeroClient} -> Maybe AccessPropertyValue
deviceTypeZeroClient) (\s :: WorkspaceAccessProperties
s@WorkspaceAccessProperties' {} Maybe AccessPropertyValue
a -> WorkspaceAccessProperties
s {$sel:deviceTypeZeroClient:WorkspaceAccessProperties' :: Maybe AccessPropertyValue
deviceTypeZeroClient = Maybe AccessPropertyValue
a} :: WorkspaceAccessProperties)

instance Data.FromJSON WorkspaceAccessProperties where
  parseJSON :: Value -> Parser WorkspaceAccessProperties
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"WorkspaceAccessProperties"
      ( \Object
x ->
          Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> Maybe AccessPropertyValue
-> WorkspaceAccessProperties
WorkspaceAccessProperties'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeAndroid")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeChromeOs")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeIos")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeLinux")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeOsx")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeWeb")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeWindows")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeviceTypeZeroClient")
      )

instance Prelude.Hashable WorkspaceAccessProperties where
  hashWithSalt :: Int -> WorkspaceAccessProperties -> Int
hashWithSalt Int
_salt WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeZeroClient :: Maybe AccessPropertyValue
deviceTypeWindows :: Maybe AccessPropertyValue
deviceTypeWeb :: Maybe AccessPropertyValue
deviceTypeOsx :: Maybe AccessPropertyValue
deviceTypeLinux :: Maybe AccessPropertyValue
deviceTypeIos :: Maybe AccessPropertyValue
deviceTypeChromeOs :: Maybe AccessPropertyValue
deviceTypeAndroid :: Maybe AccessPropertyValue
$sel:deviceTypeZeroClient:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeWindows:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeWeb:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeOsx:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeLinux:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeIos:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeChromeOs:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeAndroid:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeAndroid
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeChromeOs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeIos
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeLinux
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeOsx
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeWeb
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeWindows
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPropertyValue
deviceTypeZeroClient

instance Prelude.NFData WorkspaceAccessProperties where
  rnf :: WorkspaceAccessProperties -> ()
rnf WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeZeroClient :: Maybe AccessPropertyValue
deviceTypeWindows :: Maybe AccessPropertyValue
deviceTypeWeb :: Maybe AccessPropertyValue
deviceTypeOsx :: Maybe AccessPropertyValue
deviceTypeLinux :: Maybe AccessPropertyValue
deviceTypeIos :: Maybe AccessPropertyValue
deviceTypeChromeOs :: Maybe AccessPropertyValue
deviceTypeAndroid :: Maybe AccessPropertyValue
$sel:deviceTypeZeroClient:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeWindows:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeWeb:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeOsx:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeLinux:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeIos:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeChromeOs:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeAndroid:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeAndroid
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeChromeOs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeIos
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeLinux
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeOsx
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeWeb
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeWindows
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPropertyValue
deviceTypeZeroClient

instance Data.ToJSON WorkspaceAccessProperties where
  toJSON :: WorkspaceAccessProperties -> Value
toJSON WorkspaceAccessProperties' {Maybe AccessPropertyValue
deviceTypeZeroClient :: Maybe AccessPropertyValue
deviceTypeWindows :: Maybe AccessPropertyValue
deviceTypeWeb :: Maybe AccessPropertyValue
deviceTypeOsx :: Maybe AccessPropertyValue
deviceTypeLinux :: Maybe AccessPropertyValue
deviceTypeIos :: Maybe AccessPropertyValue
deviceTypeChromeOs :: Maybe AccessPropertyValue
deviceTypeAndroid :: Maybe AccessPropertyValue
$sel:deviceTypeZeroClient:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeWindows:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeWeb:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeOsx:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeLinux:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeIos:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeChromeOs:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
$sel:deviceTypeAndroid:WorkspaceAccessProperties' :: WorkspaceAccessProperties -> Maybe AccessPropertyValue
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DeviceTypeAndroid" 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 AccessPropertyValue
deviceTypeAndroid,
            (Key
"DeviceTypeChromeOs" 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 AccessPropertyValue
deviceTypeChromeOs,
            (Key
"DeviceTypeIos" 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 AccessPropertyValue
deviceTypeIos,
            (Key
"DeviceTypeLinux" 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 AccessPropertyValue
deviceTypeLinux,
            (Key
"DeviceTypeOsx" 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 AccessPropertyValue
deviceTypeOsx,
            (Key
"DeviceTypeWeb" 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 AccessPropertyValue
deviceTypeWeb,
            (Key
"DeviceTypeWindows" 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 AccessPropertyValue
deviceTypeWindows,
            (Key
"DeviceTypeZeroClient" 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 AccessPropertyValue
deviceTypeZeroClient
          ]
      )