{-# 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.AlexaBusiness.Types.Profile
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AlexaBusiness.Types.Profile where

import Amazonka.AlexaBusiness.Types.DistanceUnit
import Amazonka.AlexaBusiness.Types.MeetingRoomConfiguration
import Amazonka.AlexaBusiness.Types.TemperatureUnit
import Amazonka.AlexaBusiness.Types.WakeWord
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | A room profile with attributes.
--
-- /See:/ 'newProfile' smart constructor.
data Profile = Profile'
  { -- | The setup mode of a room profile.
    Profile -> Maybe Bool
setupModeDisabled :: Prelude.Maybe Prelude.Bool,
    -- | The PSTN setting of a room profile.
    Profile -> Maybe Bool
pSTNEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The ARN of the address book.
    Profile -> Maybe Text
addressBookArn :: Prelude.Maybe Prelude.Text,
    -- | The distance unit of a room profile.
    Profile -> Maybe DistanceUnit
distanceUnit :: Prelude.Maybe DistanceUnit,
    -- | The locale of a room profile. (This is currently available only to a
    -- limited preview audience.)
    Profile -> Maybe Text
locale :: Prelude.Maybe Prelude.Text,
    -- | The address of a room profile.
    Profile -> Maybe Text
address :: Prelude.Maybe Prelude.Text,
    -- | The ARN of a room profile.
    Profile -> Maybe Text
profileArn :: Prelude.Maybe Prelude.Text,
    -- | The wake word of a room profile.
    Profile -> Maybe WakeWord
wakeWord :: Prelude.Maybe WakeWord,
    -- | Meeting room settings of a room profile.
    Profile -> Maybe MeetingRoomConfiguration
meetingRoomConfiguration :: Prelude.Maybe MeetingRoomConfiguration,
    -- | The name of a room profile.
    Profile -> Maybe Text
profileName :: Prelude.Maybe Prelude.Text,
    -- | The temperature unit of a room profile.
    Profile -> Maybe TemperatureUnit
temperatureUnit :: Prelude.Maybe TemperatureUnit,
    -- | Whether data retention of the profile is enabled.
    Profile -> Maybe Bool
dataRetentionOptIn :: Prelude.Maybe Prelude.Bool,
    -- | The time zone of a room profile.
    Profile -> Maybe Text
timezone :: Prelude.Maybe Prelude.Text,
    -- | The max volume limit of a room profile.
    Profile -> Maybe Int
maxVolumeLimit :: Prelude.Maybe Prelude.Int,
    -- | Retrieves if the profile is default or not.
    Profile -> Maybe Bool
isDefault :: Prelude.Maybe Prelude.Bool
  }
  deriving (Profile -> Profile -> Bool
(Profile -> Profile -> Bool)
-> (Profile -> Profile -> Bool) -> Eq Profile
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Profile -> Profile -> Bool
$c/= :: Profile -> Profile -> Bool
== :: Profile -> Profile -> Bool
$c== :: Profile -> Profile -> Bool
Prelude.Eq, ReadPrec [Profile]
ReadPrec Profile
Int -> ReadS Profile
ReadS [Profile]
(Int -> ReadS Profile)
-> ReadS [Profile]
-> ReadPrec Profile
-> ReadPrec [Profile]
-> Read Profile
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Profile]
$creadListPrec :: ReadPrec [Profile]
readPrec :: ReadPrec Profile
$creadPrec :: ReadPrec Profile
readList :: ReadS [Profile]
$creadList :: ReadS [Profile]
readsPrec :: Int -> ReadS Profile
$creadsPrec :: Int -> ReadS Profile
Prelude.Read, Int -> Profile -> ShowS
[Profile] -> ShowS
Profile -> String
(Int -> Profile -> ShowS)
-> (Profile -> String) -> ([Profile] -> ShowS) -> Show Profile
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Profile] -> ShowS
$cshowList :: [Profile] -> ShowS
show :: Profile -> String
$cshow :: Profile -> String
showsPrec :: Int -> Profile -> ShowS
$cshowsPrec :: Int -> Profile -> ShowS
Prelude.Show, (forall x. Profile -> Rep Profile x)
-> (forall x. Rep Profile x -> Profile) -> Generic Profile
forall x. Rep Profile x -> Profile
forall x. Profile -> Rep Profile x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Profile x -> Profile
$cfrom :: forall x. Profile -> Rep Profile x
Prelude.Generic)

-- |
-- Create a value of 'Profile' 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:
--
-- 'setupModeDisabled', 'profile_setupModeDisabled' - The setup mode of a room profile.
--
-- 'pSTNEnabled', 'profile_pSTNEnabled' - The PSTN setting of a room profile.
--
-- 'addressBookArn', 'profile_addressBookArn' - The ARN of the address book.
--
-- 'distanceUnit', 'profile_distanceUnit' - The distance unit of a room profile.
--
-- 'locale', 'profile_locale' - The locale of a room profile. (This is currently available only to a
-- limited preview audience.)
--
-- 'address', 'profile_address' - The address of a room profile.
--
-- 'profileArn', 'profile_profileArn' - The ARN of a room profile.
--
-- 'wakeWord', 'profile_wakeWord' - The wake word of a room profile.
--
-- 'meetingRoomConfiguration', 'profile_meetingRoomConfiguration' - Meeting room settings of a room profile.
--
-- 'profileName', 'profile_profileName' - The name of a room profile.
--
-- 'temperatureUnit', 'profile_temperatureUnit' - The temperature unit of a room profile.
--
-- 'dataRetentionOptIn', 'profile_dataRetentionOptIn' - Whether data retention of the profile is enabled.
--
-- 'timezone', 'profile_timezone' - The time zone of a room profile.
--
-- 'maxVolumeLimit', 'profile_maxVolumeLimit' - The max volume limit of a room profile.
--
-- 'isDefault', 'profile_isDefault' - Retrieves if the profile is default or not.
newProfile ::
  Profile
newProfile :: Profile
newProfile =
  Profile' :: Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe DistanceUnit
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe WakeWord
-> Maybe MeetingRoomConfiguration
-> Maybe Text
-> Maybe TemperatureUnit
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Profile
Profile'
    { $sel:setupModeDisabled:Profile' :: Maybe Bool
setupModeDisabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:pSTNEnabled:Profile' :: Maybe Bool
pSTNEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:addressBookArn:Profile' :: Maybe Text
addressBookArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:distanceUnit:Profile' :: Maybe DistanceUnit
distanceUnit = Maybe DistanceUnit
forall a. Maybe a
Prelude.Nothing,
      $sel:locale:Profile' :: Maybe Text
locale = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:address:Profile' :: Maybe Text
address = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:profileArn:Profile' :: Maybe Text
profileArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:wakeWord:Profile' :: Maybe WakeWord
wakeWord = Maybe WakeWord
forall a. Maybe a
Prelude.Nothing,
      $sel:meetingRoomConfiguration:Profile' :: Maybe MeetingRoomConfiguration
meetingRoomConfiguration = Maybe MeetingRoomConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:profileName:Profile' :: Maybe Text
profileName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:temperatureUnit:Profile' :: Maybe TemperatureUnit
temperatureUnit = Maybe TemperatureUnit
forall a. Maybe a
Prelude.Nothing,
      $sel:dataRetentionOptIn:Profile' :: Maybe Bool
dataRetentionOptIn = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:timezone:Profile' :: Maybe Text
timezone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:maxVolumeLimit:Profile' :: Maybe Int
maxVolumeLimit = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:isDefault:Profile' :: Maybe Bool
isDefault = Maybe Bool
forall a. Maybe a
Prelude.Nothing
    }

-- | The setup mode of a room profile.
profile_setupModeDisabled :: Lens.Lens' Profile (Prelude.Maybe Prelude.Bool)
profile_setupModeDisabled :: (Maybe Bool -> f (Maybe Bool)) -> Profile -> f Profile
profile_setupModeDisabled = (Profile -> Maybe Bool)
-> (Profile -> Maybe Bool -> Profile)
-> Lens Profile Profile (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Bool
setupModeDisabled :: Maybe Bool
$sel:setupModeDisabled:Profile' :: Profile -> Maybe Bool
setupModeDisabled} -> Maybe Bool
setupModeDisabled) (\s :: Profile
s@Profile' {} Maybe Bool
a -> Profile
s {$sel:setupModeDisabled:Profile' :: Maybe Bool
setupModeDisabled = Maybe Bool
a} :: Profile)

-- | The PSTN setting of a room profile.
profile_pSTNEnabled :: Lens.Lens' Profile (Prelude.Maybe Prelude.Bool)
profile_pSTNEnabled :: (Maybe Bool -> f (Maybe Bool)) -> Profile -> f Profile
profile_pSTNEnabled = (Profile -> Maybe Bool)
-> (Profile -> Maybe Bool -> Profile)
-> Lens Profile Profile (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Bool
pSTNEnabled :: Maybe Bool
$sel:pSTNEnabled:Profile' :: Profile -> Maybe Bool
pSTNEnabled} -> Maybe Bool
pSTNEnabled) (\s :: Profile
s@Profile' {} Maybe Bool
a -> Profile
s {$sel:pSTNEnabled:Profile' :: Maybe Bool
pSTNEnabled = Maybe Bool
a} :: Profile)

-- | The ARN of the address book.
profile_addressBookArn :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)
profile_addressBookArn :: (Maybe Text -> f (Maybe Text)) -> Profile -> f Profile
profile_addressBookArn = (Profile -> Maybe Text)
-> (Profile -> Maybe Text -> Profile)
-> Lens Profile Profile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Text
addressBookArn :: Maybe Text
$sel:addressBookArn:Profile' :: Profile -> Maybe Text
addressBookArn} -> Maybe Text
addressBookArn) (\s :: Profile
s@Profile' {} Maybe Text
a -> Profile
s {$sel:addressBookArn:Profile' :: Maybe Text
addressBookArn = Maybe Text
a} :: Profile)

-- | The distance unit of a room profile.
profile_distanceUnit :: Lens.Lens' Profile (Prelude.Maybe DistanceUnit)
profile_distanceUnit :: (Maybe DistanceUnit -> f (Maybe DistanceUnit))
-> Profile -> f Profile
profile_distanceUnit = (Profile -> Maybe DistanceUnit)
-> (Profile -> Maybe DistanceUnit -> Profile)
-> Lens Profile Profile (Maybe DistanceUnit) (Maybe DistanceUnit)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe DistanceUnit
distanceUnit :: Maybe DistanceUnit
$sel:distanceUnit:Profile' :: Profile -> Maybe DistanceUnit
distanceUnit} -> Maybe DistanceUnit
distanceUnit) (\s :: Profile
s@Profile' {} Maybe DistanceUnit
a -> Profile
s {$sel:distanceUnit:Profile' :: Maybe DistanceUnit
distanceUnit = Maybe DistanceUnit
a} :: Profile)

-- | The locale of a room profile. (This is currently available only to a
-- limited preview audience.)
profile_locale :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)
profile_locale :: (Maybe Text -> f (Maybe Text)) -> Profile -> f Profile
profile_locale = (Profile -> Maybe Text)
-> (Profile -> Maybe Text -> Profile)
-> Lens Profile Profile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Text
locale :: Maybe Text
$sel:locale:Profile' :: Profile -> Maybe Text
locale} -> Maybe Text
locale) (\s :: Profile
s@Profile' {} Maybe Text
a -> Profile
s {$sel:locale:Profile' :: Maybe Text
locale = Maybe Text
a} :: Profile)

-- | The address of a room profile.
profile_address :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)
profile_address :: (Maybe Text -> f (Maybe Text)) -> Profile -> f Profile
profile_address = (Profile -> Maybe Text)
-> (Profile -> Maybe Text -> Profile)
-> Lens Profile Profile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Text
address :: Maybe Text
$sel:address:Profile' :: Profile -> Maybe Text
address} -> Maybe Text
address) (\s :: Profile
s@Profile' {} Maybe Text
a -> Profile
s {$sel:address:Profile' :: Maybe Text
address = Maybe Text
a} :: Profile)

-- | The ARN of a room profile.
profile_profileArn :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)
profile_profileArn :: (Maybe Text -> f (Maybe Text)) -> Profile -> f Profile
profile_profileArn = (Profile -> Maybe Text)
-> (Profile -> Maybe Text -> Profile)
-> Lens Profile Profile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Text
profileArn :: Maybe Text
$sel:profileArn:Profile' :: Profile -> Maybe Text
profileArn} -> Maybe Text
profileArn) (\s :: Profile
s@Profile' {} Maybe Text
a -> Profile
s {$sel:profileArn:Profile' :: Maybe Text
profileArn = Maybe Text
a} :: Profile)

-- | The wake word of a room profile.
profile_wakeWord :: Lens.Lens' Profile (Prelude.Maybe WakeWord)
profile_wakeWord :: (Maybe WakeWord -> f (Maybe WakeWord)) -> Profile -> f Profile
profile_wakeWord = (Profile -> Maybe WakeWord)
-> (Profile -> Maybe WakeWord -> Profile)
-> Lens Profile Profile (Maybe WakeWord) (Maybe WakeWord)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe WakeWord
wakeWord :: Maybe WakeWord
$sel:wakeWord:Profile' :: Profile -> Maybe WakeWord
wakeWord} -> Maybe WakeWord
wakeWord) (\s :: Profile
s@Profile' {} Maybe WakeWord
a -> Profile
s {$sel:wakeWord:Profile' :: Maybe WakeWord
wakeWord = Maybe WakeWord
a} :: Profile)

-- | Meeting room settings of a room profile.
profile_meetingRoomConfiguration :: Lens.Lens' Profile (Prelude.Maybe MeetingRoomConfiguration)
profile_meetingRoomConfiguration :: (Maybe MeetingRoomConfiguration
 -> f (Maybe MeetingRoomConfiguration))
-> Profile -> f Profile
profile_meetingRoomConfiguration = (Profile -> Maybe MeetingRoomConfiguration)
-> (Profile -> Maybe MeetingRoomConfiguration -> Profile)
-> Lens
     Profile
     Profile
     (Maybe MeetingRoomConfiguration)
     (Maybe MeetingRoomConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe MeetingRoomConfiguration
meetingRoomConfiguration :: Maybe MeetingRoomConfiguration
$sel:meetingRoomConfiguration:Profile' :: Profile -> Maybe MeetingRoomConfiguration
meetingRoomConfiguration} -> Maybe MeetingRoomConfiguration
meetingRoomConfiguration) (\s :: Profile
s@Profile' {} Maybe MeetingRoomConfiguration
a -> Profile
s {$sel:meetingRoomConfiguration:Profile' :: Maybe MeetingRoomConfiguration
meetingRoomConfiguration = Maybe MeetingRoomConfiguration
a} :: Profile)

-- | The name of a room profile.
profile_profileName :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)
profile_profileName :: (Maybe Text -> f (Maybe Text)) -> Profile -> f Profile
profile_profileName = (Profile -> Maybe Text)
-> (Profile -> Maybe Text -> Profile)
-> Lens Profile Profile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Text
profileName :: Maybe Text
$sel:profileName:Profile' :: Profile -> Maybe Text
profileName} -> Maybe Text
profileName) (\s :: Profile
s@Profile' {} Maybe Text
a -> Profile
s {$sel:profileName:Profile' :: Maybe Text
profileName = Maybe Text
a} :: Profile)

-- | The temperature unit of a room profile.
profile_temperatureUnit :: Lens.Lens' Profile (Prelude.Maybe TemperatureUnit)
profile_temperatureUnit :: (Maybe TemperatureUnit -> f (Maybe TemperatureUnit))
-> Profile -> f Profile
profile_temperatureUnit = (Profile -> Maybe TemperatureUnit)
-> (Profile -> Maybe TemperatureUnit -> Profile)
-> Lens
     Profile Profile (Maybe TemperatureUnit) (Maybe TemperatureUnit)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe TemperatureUnit
temperatureUnit :: Maybe TemperatureUnit
$sel:temperatureUnit:Profile' :: Profile -> Maybe TemperatureUnit
temperatureUnit} -> Maybe TemperatureUnit
temperatureUnit) (\s :: Profile
s@Profile' {} Maybe TemperatureUnit
a -> Profile
s {$sel:temperatureUnit:Profile' :: Maybe TemperatureUnit
temperatureUnit = Maybe TemperatureUnit
a} :: Profile)

-- | Whether data retention of the profile is enabled.
profile_dataRetentionOptIn :: Lens.Lens' Profile (Prelude.Maybe Prelude.Bool)
profile_dataRetentionOptIn :: (Maybe Bool -> f (Maybe Bool)) -> Profile -> f Profile
profile_dataRetentionOptIn = (Profile -> Maybe Bool)
-> (Profile -> Maybe Bool -> Profile)
-> Lens Profile Profile (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Bool
dataRetentionOptIn :: Maybe Bool
$sel:dataRetentionOptIn:Profile' :: Profile -> Maybe Bool
dataRetentionOptIn} -> Maybe Bool
dataRetentionOptIn) (\s :: Profile
s@Profile' {} Maybe Bool
a -> Profile
s {$sel:dataRetentionOptIn:Profile' :: Maybe Bool
dataRetentionOptIn = Maybe Bool
a} :: Profile)

-- | The time zone of a room profile.
profile_timezone :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)
profile_timezone :: (Maybe Text -> f (Maybe Text)) -> Profile -> f Profile
profile_timezone = (Profile -> Maybe Text)
-> (Profile -> Maybe Text -> Profile)
-> Lens Profile Profile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Text
timezone :: Maybe Text
$sel:timezone:Profile' :: Profile -> Maybe Text
timezone} -> Maybe Text
timezone) (\s :: Profile
s@Profile' {} Maybe Text
a -> Profile
s {$sel:timezone:Profile' :: Maybe Text
timezone = Maybe Text
a} :: Profile)

-- | The max volume limit of a room profile.
profile_maxVolumeLimit :: Lens.Lens' Profile (Prelude.Maybe Prelude.Int)
profile_maxVolumeLimit :: (Maybe Int -> f (Maybe Int)) -> Profile -> f Profile
profile_maxVolumeLimit = (Profile -> Maybe Int)
-> (Profile -> Maybe Int -> Profile)
-> Lens Profile Profile (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Int
maxVolumeLimit :: Maybe Int
$sel:maxVolumeLimit:Profile' :: Profile -> Maybe Int
maxVolumeLimit} -> Maybe Int
maxVolumeLimit) (\s :: Profile
s@Profile' {} Maybe Int
a -> Profile
s {$sel:maxVolumeLimit:Profile' :: Maybe Int
maxVolumeLimit = Maybe Int
a} :: Profile)

-- | Retrieves if the profile is default or not.
profile_isDefault :: Lens.Lens' Profile (Prelude.Maybe Prelude.Bool)
profile_isDefault :: (Maybe Bool -> f (Maybe Bool)) -> Profile -> f Profile
profile_isDefault = (Profile -> Maybe Bool)
-> (Profile -> Maybe Bool -> Profile)
-> Lens Profile Profile (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Profile' {Maybe Bool
isDefault :: Maybe Bool
$sel:isDefault:Profile' :: Profile -> Maybe Bool
isDefault} -> Maybe Bool
isDefault) (\s :: Profile
s@Profile' {} Maybe Bool
a -> Profile
s {$sel:isDefault:Profile' :: Maybe Bool
isDefault = Maybe Bool
a} :: Profile)

instance Core.FromJSON Profile where
  parseJSON :: Value -> Parser Profile
parseJSON =
    String -> (Object -> Parser Profile) -> Value -> Parser Profile
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Profile"
      ( \Object
x ->
          Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe DistanceUnit
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe WakeWord
-> Maybe MeetingRoomConfiguration
-> Maybe Text
-> Maybe TemperatureUnit
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Profile
Profile'
            (Maybe Bool
 -> Maybe Bool
 -> Maybe Text
 -> Maybe DistanceUnit
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe WakeWord
 -> Maybe MeetingRoomConfiguration
 -> Maybe Text
 -> Maybe TemperatureUnit
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Int
 -> Maybe Bool
 -> Profile)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe DistanceUnit
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SetupModeDisabled")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe DistanceUnit
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe DistanceUnit
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PSTNEnabled")
            Parser
  (Maybe Text
   -> Maybe DistanceUnit
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe Text)
-> Parser
     (Maybe DistanceUnit
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AddressBookArn")
            Parser
  (Maybe DistanceUnit
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe DistanceUnit)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DistanceUnit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DistanceUnit")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Locale")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Address")
            Parser
  (Maybe Text
   -> Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe Text)
-> Parser
     (Maybe WakeWord
      -> Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProfileArn")
            Parser
  (Maybe WakeWord
   -> Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe WakeWord)
-> Parser
     (Maybe MeetingRoomConfiguration
      -> Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe WakeWord)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"WakeWord")
            Parser
  (Maybe MeetingRoomConfiguration
   -> Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe MeetingRoomConfiguration)
-> Parser
     (Maybe Text
      -> Maybe TemperatureUnit
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MeetingRoomConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MeetingRoomConfiguration")
            Parser
  (Maybe Text
   -> Maybe TemperatureUnit
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Profile)
-> Parser (Maybe Text)
-> Parser
     (Maybe TemperatureUnit
      -> Maybe Bool -> Maybe Text -> Maybe Int -> Maybe Bool -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProfileName")
            Parser
  (Maybe TemperatureUnit
   -> Maybe Bool -> Maybe Text -> Maybe Int -> Maybe Bool -> Profile)
-> Parser (Maybe TemperatureUnit)
-> Parser
     (Maybe Bool -> Maybe Text -> Maybe Int -> Maybe Bool -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TemperatureUnit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TemperatureUnit")
            Parser
  (Maybe Bool -> Maybe Text -> Maybe Int -> Maybe Bool -> Profile)
-> Parser (Maybe Bool)
-> Parser (Maybe Text -> Maybe Int -> Maybe Bool -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DataRetentionOptIn")
            Parser (Maybe Text -> Maybe Int -> Maybe Bool -> Profile)
-> Parser (Maybe Text)
-> Parser (Maybe Int -> Maybe Bool -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Timezone")
            Parser (Maybe Int -> Maybe Bool -> Profile)
-> Parser (Maybe Int) -> Parser (Maybe Bool -> Profile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MaxVolumeLimit")
            Parser (Maybe Bool -> Profile)
-> Parser (Maybe Bool) -> Parser Profile
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"IsDefault")
      )

instance Prelude.Hashable Profile

instance Prelude.NFData Profile