{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.AlexaBusiness.Types.Product -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.AWS.AlexaBusiness.Types.Product where import Network.AWS.AlexaBusiness.Types.Sum import Network.AWS.Lens import Network.AWS.Prelude -- | An address book with attributes. -- -- -- -- /See:/ 'addressBook' smart constructor. data AddressBook = AddressBook' { _abAddressBookARN :: !(Maybe Text) , _abName :: !(Maybe Text) , _abDescription :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'AddressBook' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'abAddressBookARN' - The ARN of the address book. -- -- * 'abName' - The name of the address book. -- -- * 'abDescription' - The description of the address book. addressBook :: AddressBook addressBook = AddressBook' {_abAddressBookARN = Nothing, _abName = Nothing, _abDescription = Nothing} -- | The ARN of the address book. abAddressBookARN :: Lens' AddressBook (Maybe Text) abAddressBookARN = lens _abAddressBookARN (\ s a -> s{_abAddressBookARN = a}) -- | The name of the address book. abName :: Lens' AddressBook (Maybe Text) abName = lens _abName (\ s a -> s{_abName = a}) -- | The description of the address book. abDescription :: Lens' AddressBook (Maybe Text) abDescription = lens _abDescription (\ s a -> s{_abDescription = a}) instance FromJSON AddressBook where parseJSON = withObject "AddressBook" (\ x -> AddressBook' <$> (x .:? "AddressBookArn") <*> (x .:? "Name") <*> (x .:? "Description")) instance Hashable AddressBook where instance NFData AddressBook where -- | Information related to an address book. -- -- -- -- /See:/ 'addressBookData' smart constructor. data AddressBookData = AddressBookData' { _abdAddressBookARN :: !(Maybe Text) , _abdName :: !(Maybe Text) , _abdDescription :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'AddressBookData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'abdAddressBookARN' - The ARN of the address book. -- -- * 'abdName' - The name of the address book. -- -- * 'abdDescription' - The description of the address book. addressBookData :: AddressBookData addressBookData = AddressBookData' { _abdAddressBookARN = Nothing , _abdName = Nothing , _abdDescription = Nothing } -- | The ARN of the address book. abdAddressBookARN :: Lens' AddressBookData (Maybe Text) abdAddressBookARN = lens _abdAddressBookARN (\ s a -> s{_abdAddressBookARN = a}) -- | The name of the address book. abdName :: Lens' AddressBookData (Maybe Text) abdName = lens _abdName (\ s a -> s{_abdName = a}) -- | The description of the address book. abdDescription :: Lens' AddressBookData (Maybe Text) abdDescription = lens _abdDescription (\ s a -> s{_abdDescription = a}) instance FromJSON AddressBookData where parseJSON = withObject "AddressBookData" (\ x -> AddressBookData' <$> (x .:? "AddressBookArn") <*> (x .:? "Name") <*> (x .:? "Description")) instance Hashable AddressBookData where instance NFData AddressBookData where -- | A contact with attributes. -- -- -- -- /See:/ 'contact' smart constructor. data Contact = Contact' { _cLastName :: !(Maybe Text) , _cContactARN :: !(Maybe Text) , _cPhoneNumber :: !(Maybe Text) , _cFirstName :: !(Maybe Text) , _cDisplayName :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Contact' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cLastName' - The last name of the contact, used to call the contact on the device. -- -- * 'cContactARN' - The ARN of the contact. -- -- * 'cPhoneNumber' - The phone number of the contact. -- -- * 'cFirstName' - The first name of the contact, used to call the contact on the device. -- -- * 'cDisplayName' - The name of the contact to display on the console. contact :: Contact contact = Contact' { _cLastName = Nothing , _cContactARN = Nothing , _cPhoneNumber = Nothing , _cFirstName = Nothing , _cDisplayName = Nothing } -- | The last name of the contact, used to call the contact on the device. cLastName :: Lens' Contact (Maybe Text) cLastName = lens _cLastName (\ s a -> s{_cLastName = a}) -- | The ARN of the contact. cContactARN :: Lens' Contact (Maybe Text) cContactARN = lens _cContactARN (\ s a -> s{_cContactARN = a}) -- | The phone number of the contact. cPhoneNumber :: Lens' Contact (Maybe Text) cPhoneNumber = lens _cPhoneNumber (\ s a -> s{_cPhoneNumber = a}) -- | The first name of the contact, used to call the contact on the device. cFirstName :: Lens' Contact (Maybe Text) cFirstName = lens _cFirstName (\ s a -> s{_cFirstName = a}) -- | The name of the contact to display on the console. cDisplayName :: Lens' Contact (Maybe Text) cDisplayName = lens _cDisplayName (\ s a -> s{_cDisplayName = a}) instance FromJSON Contact where parseJSON = withObject "Contact" (\ x -> Contact' <$> (x .:? "LastName") <*> (x .:? "ContactArn") <*> (x .:? "PhoneNumber") <*> (x .:? "FirstName") <*> (x .:? "DisplayName")) instance Hashable Contact where instance NFData Contact where -- | Information related to a contact. -- -- -- -- /See:/ 'contactData' smart constructor. data ContactData = ContactData' { _cdLastName :: !(Maybe Text) , _cdContactARN :: !(Maybe Text) , _cdPhoneNumber :: !(Maybe Text) , _cdFirstName :: !(Maybe Text) , _cdDisplayName :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'ContactData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cdLastName' - The last name of the contact, used to call the contact on the device. -- -- * 'cdContactARN' - The ARN of the contact. -- -- * 'cdPhoneNumber' - The phone number of the contact. -- -- * 'cdFirstName' - The first name of the contact, used to call the contact on the device. -- -- * 'cdDisplayName' - The name of the contact to display on the console. contactData :: ContactData contactData = ContactData' { _cdLastName = Nothing , _cdContactARN = Nothing , _cdPhoneNumber = Nothing , _cdFirstName = Nothing , _cdDisplayName = Nothing } -- | The last name of the contact, used to call the contact on the device. cdLastName :: Lens' ContactData (Maybe Text) cdLastName = lens _cdLastName (\ s a -> s{_cdLastName = a}) -- | The ARN of the contact. cdContactARN :: Lens' ContactData (Maybe Text) cdContactARN = lens _cdContactARN (\ s a -> s{_cdContactARN = a}) -- | The phone number of the contact. cdPhoneNumber :: Lens' ContactData (Maybe Text) cdPhoneNumber = lens _cdPhoneNumber (\ s a -> s{_cdPhoneNumber = a}) -- | The first name of the contact, used to call the contact on the device. cdFirstName :: Lens' ContactData (Maybe Text) cdFirstName = lens _cdFirstName (\ s a -> s{_cdFirstName = a}) -- | The name of the contact to display on the console. cdDisplayName :: Lens' ContactData (Maybe Text) cdDisplayName = lens _cdDisplayName (\ s a -> s{_cdDisplayName = a}) instance FromJSON ContactData where parseJSON = withObject "ContactData" (\ x -> ContactData' <$> (x .:? "LastName") <*> (x .:? "ContactArn") <*> (x .:? "PhoneNumber") <*> (x .:? "FirstName") <*> (x .:? "DisplayName")) instance Hashable ContactData where instance NFData ContactData where -- | A device with attributes. -- -- -- -- /See:/ 'device' smart constructor. data Device = Device' { _dDeviceStatus :: !(Maybe DeviceStatus) , _dDeviceStatusInfo :: !(Maybe DeviceStatusInfo) , _dDeviceARN :: !(Maybe Text) , _dMACAddress :: !(Maybe Text) , _dDeviceName :: !(Maybe Text) , _dRoomARN :: !(Maybe Text) , _dSoftwareVersion :: !(Maybe Text) , _dDeviceType :: !(Maybe Text) , _dDeviceSerialNumber :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Device' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dDeviceStatus' - The status of a device. If the status is not READY, check the DeviceStatusInfo value for details. -- -- * 'dDeviceStatusInfo' - Detailed information about a device's status. -- -- * 'dDeviceARN' - The ARN of a device. -- -- * 'dMACAddress' - The MAC address of a device. -- -- * 'dDeviceName' - The name of a device. -- -- * 'dRoomARN' - The room ARN of a device. -- -- * 'dSoftwareVersion' - The software version of a device. -- -- * 'dDeviceType' - The type of a device. -- -- * 'dDeviceSerialNumber' - The serial number of a device. device :: Device device = Device' { _dDeviceStatus = Nothing , _dDeviceStatusInfo = Nothing , _dDeviceARN = Nothing , _dMACAddress = Nothing , _dDeviceName = Nothing , _dRoomARN = Nothing , _dSoftwareVersion = Nothing , _dDeviceType = Nothing , _dDeviceSerialNumber = Nothing } -- | The status of a device. If the status is not READY, check the DeviceStatusInfo value for details. dDeviceStatus :: Lens' Device (Maybe DeviceStatus) dDeviceStatus = lens _dDeviceStatus (\ s a -> s{_dDeviceStatus = a}) -- | Detailed information about a device's status. dDeviceStatusInfo :: Lens' Device (Maybe DeviceStatusInfo) dDeviceStatusInfo = lens _dDeviceStatusInfo (\ s a -> s{_dDeviceStatusInfo = a}) -- | The ARN of a device. dDeviceARN :: Lens' Device (Maybe Text) dDeviceARN = lens _dDeviceARN (\ s a -> s{_dDeviceARN = a}) -- | The MAC address of a device. dMACAddress :: Lens' Device (Maybe Text) dMACAddress = lens _dMACAddress (\ s a -> s{_dMACAddress = a}) -- | The name of a device. dDeviceName :: Lens' Device (Maybe Text) dDeviceName = lens _dDeviceName (\ s a -> s{_dDeviceName = a}) -- | The room ARN of a device. dRoomARN :: Lens' Device (Maybe Text) dRoomARN = lens _dRoomARN (\ s a -> s{_dRoomARN = a}) -- | The software version of a device. dSoftwareVersion :: Lens' Device (Maybe Text) dSoftwareVersion = lens _dSoftwareVersion (\ s a -> s{_dSoftwareVersion = a}) -- | The type of a device. dDeviceType :: Lens' Device (Maybe Text) dDeviceType = lens _dDeviceType (\ s a -> s{_dDeviceType = a}) -- | The serial number of a device. dDeviceSerialNumber :: Lens' Device (Maybe Text) dDeviceSerialNumber = lens _dDeviceSerialNumber (\ s a -> s{_dDeviceSerialNumber = a}) instance FromJSON Device where parseJSON = withObject "Device" (\ x -> Device' <$> (x .:? "DeviceStatus") <*> (x .:? "DeviceStatusInfo") <*> (x .:? "DeviceArn") <*> (x .:? "MacAddress") <*> (x .:? "DeviceName") <*> (x .:? "RoomArn") <*> (x .:? "SoftwareVersion") <*> (x .:? "DeviceType") <*> (x .:? "DeviceSerialNumber")) instance Hashable Device where instance NFData Device where -- | Device attributes. -- -- -- -- /See:/ 'deviceData' smart constructor. data DeviceData = DeviceData' { _ddDeviceStatus :: !(Maybe DeviceStatus) , _ddDeviceStatusInfo :: !(Maybe DeviceStatusInfo) , _ddDeviceARN :: !(Maybe Text) , _ddMACAddress :: !(Maybe Text) , _ddDeviceName :: !(Maybe Text) , _ddRoomARN :: !(Maybe Text) , _ddSoftwareVersion :: !(Maybe Text) , _ddDeviceType :: !(Maybe Text) , _ddRoomName :: !(Maybe Text) , _ddDeviceSerialNumber :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DeviceData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ddDeviceStatus' - The status of a device. -- -- * 'ddDeviceStatusInfo' - Detailed information about a device's status. -- -- * 'ddDeviceARN' - The ARN of a device. -- -- * 'ddMACAddress' - The MAC address of a device. -- -- * 'ddDeviceName' - The name of a device. -- -- * 'ddRoomARN' - The room ARN associated with a device. -- -- * 'ddSoftwareVersion' - The software version of a device. -- -- * 'ddDeviceType' - The type of a device. -- -- * 'ddRoomName' - The name of the room associated with a device. -- -- * 'ddDeviceSerialNumber' - The serial number of a device. deviceData :: DeviceData deviceData = DeviceData' { _ddDeviceStatus = Nothing , _ddDeviceStatusInfo = Nothing , _ddDeviceARN = Nothing , _ddMACAddress = Nothing , _ddDeviceName = Nothing , _ddRoomARN = Nothing , _ddSoftwareVersion = Nothing , _ddDeviceType = Nothing , _ddRoomName = Nothing , _ddDeviceSerialNumber = Nothing } -- | The status of a device. ddDeviceStatus :: Lens' DeviceData (Maybe DeviceStatus) ddDeviceStatus = lens _ddDeviceStatus (\ s a -> s{_ddDeviceStatus = a}) -- | Detailed information about a device's status. ddDeviceStatusInfo :: Lens' DeviceData (Maybe DeviceStatusInfo) ddDeviceStatusInfo = lens _ddDeviceStatusInfo (\ s a -> s{_ddDeviceStatusInfo = a}) -- | The ARN of a device. ddDeviceARN :: Lens' DeviceData (Maybe Text) ddDeviceARN = lens _ddDeviceARN (\ s a -> s{_ddDeviceARN = a}) -- | The MAC address of a device. ddMACAddress :: Lens' DeviceData (Maybe Text) ddMACAddress = lens _ddMACAddress (\ s a -> s{_ddMACAddress = a}) -- | The name of a device. ddDeviceName :: Lens' DeviceData (Maybe Text) ddDeviceName = lens _ddDeviceName (\ s a -> s{_ddDeviceName = a}) -- | The room ARN associated with a device. ddRoomARN :: Lens' DeviceData (Maybe Text) ddRoomARN = lens _ddRoomARN (\ s a -> s{_ddRoomARN = a}) -- | The software version of a device. ddSoftwareVersion :: Lens' DeviceData (Maybe Text) ddSoftwareVersion = lens _ddSoftwareVersion (\ s a -> s{_ddSoftwareVersion = a}) -- | The type of a device. ddDeviceType :: Lens' DeviceData (Maybe Text) ddDeviceType = lens _ddDeviceType (\ s a -> s{_ddDeviceType = a}) -- | The name of the room associated with a device. ddRoomName :: Lens' DeviceData (Maybe Text) ddRoomName = lens _ddRoomName (\ s a -> s{_ddRoomName = a}) -- | The serial number of a device. ddDeviceSerialNumber :: Lens' DeviceData (Maybe Text) ddDeviceSerialNumber = lens _ddDeviceSerialNumber (\ s a -> s{_ddDeviceSerialNumber = a}) instance FromJSON DeviceData where parseJSON = withObject "DeviceData" (\ x -> DeviceData' <$> (x .:? "DeviceStatus") <*> (x .:? "DeviceStatusInfo") <*> (x .:? "DeviceArn") <*> (x .:? "MacAddress") <*> (x .:? "DeviceName") <*> (x .:? "RoomArn") <*> (x .:? "SoftwareVersion") <*> (x .:? "DeviceType") <*> (x .:? "RoomName") <*> (x .:? "DeviceSerialNumber")) instance Hashable DeviceData where instance NFData DeviceData where -- | The list of device events. -- -- -- -- /See:/ 'deviceEvent' smart constructor. data DeviceEvent = DeviceEvent' { _deValue :: !(Maybe Text) , _deType :: !(Maybe DeviceEventType) , _deTimestamp :: !(Maybe POSIX) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DeviceEvent' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'deValue' - The value of the event. -- -- * 'deType' - The type of device event. -- -- * 'deTimestamp' - The time (in epoch) when the event occurred. deviceEvent :: DeviceEvent deviceEvent = DeviceEvent' {_deValue = Nothing, _deType = Nothing, _deTimestamp = Nothing} -- | The value of the event. deValue :: Lens' DeviceEvent (Maybe Text) deValue = lens _deValue (\ s a -> s{_deValue = a}) -- | The type of device event. deType :: Lens' DeviceEvent (Maybe DeviceEventType) deType = lens _deType (\ s a -> s{_deType = a}) -- | The time (in epoch) when the event occurred. deTimestamp :: Lens' DeviceEvent (Maybe UTCTime) deTimestamp = lens _deTimestamp (\ s a -> s{_deTimestamp = a}) . mapping _Time instance FromJSON DeviceEvent where parseJSON = withObject "DeviceEvent" (\ x -> DeviceEvent' <$> (x .:? "Value") <*> (x .:? "Type") <*> (x .:? "Timestamp")) instance Hashable DeviceEvent where instance NFData DeviceEvent where -- | Details of a device’s status. -- -- -- -- /See:/ 'deviceStatusDetail' smart constructor. newtype DeviceStatusDetail = DeviceStatusDetail' { _dsdCode :: Maybe DeviceStatusDetailCode } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DeviceStatusDetail' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dsdCode' - The device status detail code. deviceStatusDetail :: DeviceStatusDetail deviceStatusDetail = DeviceStatusDetail' {_dsdCode = Nothing} -- | The device status detail code. dsdCode :: Lens' DeviceStatusDetail (Maybe DeviceStatusDetailCode) dsdCode = lens _dsdCode (\ s a -> s{_dsdCode = a}) instance FromJSON DeviceStatusDetail where parseJSON = withObject "DeviceStatusDetail" (\ x -> DeviceStatusDetail' <$> (x .:? "Code")) instance Hashable DeviceStatusDetail where instance NFData DeviceStatusDetail where -- | Detailed information about a device's status. -- -- -- -- /See:/ 'deviceStatusInfo' smart constructor. data DeviceStatusInfo = DeviceStatusInfo' { _dsiDeviceStatusDetails :: !(Maybe [DeviceStatusDetail]) , _dsiConnectionStatus :: !(Maybe ConnectionStatus) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DeviceStatusInfo' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dsiDeviceStatusDetails' - One or more device status detail descriptions. -- -- * 'dsiConnectionStatus' - The latest available information about the connection status of a device. deviceStatusInfo :: DeviceStatusInfo deviceStatusInfo = DeviceStatusInfo' {_dsiDeviceStatusDetails = Nothing, _dsiConnectionStatus = Nothing} -- | One or more device status detail descriptions. dsiDeviceStatusDetails :: Lens' DeviceStatusInfo [DeviceStatusDetail] dsiDeviceStatusDetails = lens _dsiDeviceStatusDetails (\ s a -> s{_dsiDeviceStatusDetails = a}) . _Default . _Coerce -- | The latest available information about the connection status of a device. dsiConnectionStatus :: Lens' DeviceStatusInfo (Maybe ConnectionStatus) dsiConnectionStatus = lens _dsiConnectionStatus (\ s a -> s{_dsiConnectionStatus = a}) instance FromJSON DeviceStatusInfo where parseJSON = withObject "DeviceStatusInfo" (\ x -> DeviceStatusInfo' <$> (x .:? "DeviceStatusDetails" .!= mempty) <*> (x .:? "ConnectionStatus")) instance Hashable DeviceStatusInfo where instance NFData DeviceStatusInfo where -- | A filter name and value pair that is used to return a more specific list of results. Filters can be used to match a set of resources by various criteria. -- -- -- -- /See:/ 'filter'' smart constructor. data Filter = Filter' { _fKey :: !Text , _fValues :: ![Text] } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Filter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'fKey' - The key of a filter. -- -- * 'fValues' - The values of a filter. filter' :: Text -- ^ 'fKey' -> Filter filter' pKey_ = Filter' {_fKey = pKey_, _fValues = mempty} -- | The key of a filter. fKey :: Lens' Filter Text fKey = lens _fKey (\ s a -> s{_fKey = a}) -- | The values of a filter. fValues :: Lens' Filter [Text] fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Coerce instance Hashable Filter where instance NFData Filter where instance ToJSON Filter where toJSON Filter'{..} = object (catMaybes [Just ("Key" .= _fKey), Just ("Values" .= _fValues)]) -- | A room profile with attributes. -- -- -- -- /See:/ 'profile' smart constructor. data Profile = Profile' { _pSetupModeDisabled :: !(Maybe Bool) , _pPSTNEnabled :: !(Maybe Bool) , _pDistanceUnit :: !(Maybe DistanceUnit) , _pAddress :: !(Maybe Text) , _pProfileARN :: !(Maybe Text) , _pWakeWord :: !(Maybe WakeWord) , _pProfileName :: !(Maybe Text) , _pTemperatureUnit :: !(Maybe TemperatureUnit) , _pTimezone :: !(Maybe Text) , _pMaxVolumeLimit :: !(Maybe Int) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Profile' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pSetupModeDisabled' - The setup mode of a room profile. -- -- * 'pPSTNEnabled' - The PSTN setting of a room profile. -- -- * 'pDistanceUnit' - The distance unit of a room profile. -- -- * 'pAddress' - The address of a room profile. -- -- * 'pProfileARN' - The ARN of a room profile. -- -- * 'pWakeWord' - The wake word of a room profile. -- -- * 'pProfileName' - The name of a room profile. -- -- * 'pTemperatureUnit' - The temperature unit of a room profile. -- -- * 'pTimezone' - The time zone of a room profile. -- -- * 'pMaxVolumeLimit' - The max volume limit of a room profile. profile :: Profile profile = Profile' { _pSetupModeDisabled = Nothing , _pPSTNEnabled = Nothing , _pDistanceUnit = Nothing , _pAddress = Nothing , _pProfileARN = Nothing , _pWakeWord = Nothing , _pProfileName = Nothing , _pTemperatureUnit = Nothing , _pTimezone = Nothing , _pMaxVolumeLimit = Nothing } -- | The setup mode of a room profile. pSetupModeDisabled :: Lens' Profile (Maybe Bool) pSetupModeDisabled = lens _pSetupModeDisabled (\ s a -> s{_pSetupModeDisabled = a}) -- | The PSTN setting of a room profile. pPSTNEnabled :: Lens' Profile (Maybe Bool) pPSTNEnabled = lens _pPSTNEnabled (\ s a -> s{_pPSTNEnabled = a}) -- | The distance unit of a room profile. pDistanceUnit :: Lens' Profile (Maybe DistanceUnit) pDistanceUnit = lens _pDistanceUnit (\ s a -> s{_pDistanceUnit = a}) -- | The address of a room profile. pAddress :: Lens' Profile (Maybe Text) pAddress = lens _pAddress (\ s a -> s{_pAddress = a}) -- | The ARN of a room profile. pProfileARN :: Lens' Profile (Maybe Text) pProfileARN = lens _pProfileARN (\ s a -> s{_pProfileARN = a}) -- | The wake word of a room profile. pWakeWord :: Lens' Profile (Maybe WakeWord) pWakeWord = lens _pWakeWord (\ s a -> s{_pWakeWord = a}) -- | The name of a room profile. pProfileName :: Lens' Profile (Maybe Text) pProfileName = lens _pProfileName (\ s a -> s{_pProfileName = a}) -- | The temperature unit of a room profile. pTemperatureUnit :: Lens' Profile (Maybe TemperatureUnit) pTemperatureUnit = lens _pTemperatureUnit (\ s a -> s{_pTemperatureUnit = a}) -- | The time zone of a room profile. pTimezone :: Lens' Profile (Maybe Text) pTimezone = lens _pTimezone (\ s a -> s{_pTimezone = a}) -- | The max volume limit of a room profile. pMaxVolumeLimit :: Lens' Profile (Maybe Int) pMaxVolumeLimit = lens _pMaxVolumeLimit (\ s a -> s{_pMaxVolumeLimit = a}) instance FromJSON Profile where parseJSON = withObject "Profile" (\ x -> Profile' <$> (x .:? "SetupModeDisabled") <*> (x .:? "PSTNEnabled") <*> (x .:? "DistanceUnit") <*> (x .:? "Address") <*> (x .:? "ProfileArn") <*> (x .:? "WakeWord") <*> (x .:? "ProfileName") <*> (x .:? "TemperatureUnit") <*> (x .:? "Timezone") <*> (x .:? "MaxVolumeLimit")) instance Hashable Profile where instance NFData Profile where -- | The data of a room profile. -- -- -- -- /See:/ 'profileData' smart constructor. data ProfileData = ProfileData' { _pdDistanceUnit :: !(Maybe DistanceUnit) , _pdAddress :: !(Maybe Text) , _pdProfileARN :: !(Maybe Text) , _pdWakeWord :: !(Maybe WakeWord) , _pdProfileName :: !(Maybe Text) , _pdTemperatureUnit :: !(Maybe TemperatureUnit) , _pdTimezone :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'ProfileData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pdDistanceUnit' - The distance unit of a room profile. -- -- * 'pdAddress' - The address of a room profile. -- -- * 'pdProfileARN' - The ARN of a room profile. -- -- * 'pdWakeWord' - The wake word of a room profile. -- -- * 'pdProfileName' - The name of a room profile. -- -- * 'pdTemperatureUnit' - The temperature unit of a room profile. -- -- * 'pdTimezone' - The timezone of a room profile. profileData :: ProfileData profileData = ProfileData' { _pdDistanceUnit = Nothing , _pdAddress = Nothing , _pdProfileARN = Nothing , _pdWakeWord = Nothing , _pdProfileName = Nothing , _pdTemperatureUnit = Nothing , _pdTimezone = Nothing } -- | The distance unit of a room profile. pdDistanceUnit :: Lens' ProfileData (Maybe DistanceUnit) pdDistanceUnit = lens _pdDistanceUnit (\ s a -> s{_pdDistanceUnit = a}) -- | The address of a room profile. pdAddress :: Lens' ProfileData (Maybe Text) pdAddress = lens _pdAddress (\ s a -> s{_pdAddress = a}) -- | The ARN of a room profile. pdProfileARN :: Lens' ProfileData (Maybe Text) pdProfileARN = lens _pdProfileARN (\ s a -> s{_pdProfileARN = a}) -- | The wake word of a room profile. pdWakeWord :: Lens' ProfileData (Maybe WakeWord) pdWakeWord = lens _pdWakeWord (\ s a -> s{_pdWakeWord = a}) -- | The name of a room profile. pdProfileName :: Lens' ProfileData (Maybe Text) pdProfileName = lens _pdProfileName (\ s a -> s{_pdProfileName = a}) -- | The temperature unit of a room profile. pdTemperatureUnit :: Lens' ProfileData (Maybe TemperatureUnit) pdTemperatureUnit = lens _pdTemperatureUnit (\ s a -> s{_pdTemperatureUnit = a}) -- | The timezone of a room profile. pdTimezone :: Lens' ProfileData (Maybe Text) pdTimezone = lens _pdTimezone (\ s a -> s{_pdTimezone = a}) instance FromJSON ProfileData where parseJSON = withObject "ProfileData" (\ x -> ProfileData' <$> (x .:? "DistanceUnit") <*> (x .:? "Address") <*> (x .:? "ProfileArn") <*> (x .:? "WakeWord") <*> (x .:? "ProfileName") <*> (x .:? "TemperatureUnit") <*> (x .:? "Timezone")) instance Hashable ProfileData where instance NFData ProfileData where -- | A room with attributes. -- -- -- -- /See:/ 'room' smart constructor. data Room = Room' { _rProfileARN :: !(Maybe Text) , _rProviderCalendarId :: !(Maybe Text) , _rRoomARN :: !(Maybe Text) , _rRoomName :: !(Maybe Text) , _rDescription :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Room' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rProfileARN' - The profile ARN of a room. -- -- * 'rProviderCalendarId' - The provider calendar ARN of a room. -- -- * 'rRoomARN' - The ARN of a room. -- -- * 'rRoomName' - The name of a room. -- -- * 'rDescription' - The description of a room. room :: Room room = Room' { _rProfileARN = Nothing , _rProviderCalendarId = Nothing , _rRoomARN = Nothing , _rRoomName = Nothing , _rDescription = Nothing } -- | The profile ARN of a room. rProfileARN :: Lens' Room (Maybe Text) rProfileARN = lens _rProfileARN (\ s a -> s{_rProfileARN = a}) -- | The provider calendar ARN of a room. rProviderCalendarId :: Lens' Room (Maybe Text) rProviderCalendarId = lens _rProviderCalendarId (\ s a -> s{_rProviderCalendarId = a}) -- | The ARN of a room. rRoomARN :: Lens' Room (Maybe Text) rRoomARN = lens _rRoomARN (\ s a -> s{_rRoomARN = a}) -- | The name of a room. rRoomName :: Lens' Room (Maybe Text) rRoomName = lens _rRoomName (\ s a -> s{_rRoomName = a}) -- | The description of a room. rDescription :: Lens' Room (Maybe Text) rDescription = lens _rDescription (\ s a -> s{_rDescription = a}) instance FromJSON Room where parseJSON = withObject "Room" (\ x -> Room' <$> (x .:? "ProfileArn") <*> (x .:? "ProviderCalendarId") <*> (x .:? "RoomArn") <*> (x .:? "RoomName") <*> (x .:? "Description")) instance Hashable Room where instance NFData Room where -- | The data of a room. -- -- -- -- /See:/ 'roomData' smart constructor. data RoomData = RoomData' { _rdProfileARN :: !(Maybe Text) , _rdProviderCalendarId :: !(Maybe Text) , _rdProfileName :: !(Maybe Text) , _rdRoomARN :: !(Maybe Text) , _rdRoomName :: !(Maybe Text) , _rdDescription :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'RoomData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rdProfileARN' - The profile ARN of a room. -- -- * 'rdProviderCalendarId' - The provider calendar ARN of a room. -- -- * 'rdProfileName' - The profile name of a room. -- -- * 'rdRoomARN' - The ARN of a room. -- -- * 'rdRoomName' - The name of a room. -- -- * 'rdDescription' - The description of a room. roomData :: RoomData roomData = RoomData' { _rdProfileARN = Nothing , _rdProviderCalendarId = Nothing , _rdProfileName = Nothing , _rdRoomARN = Nothing , _rdRoomName = Nothing , _rdDescription = Nothing } -- | The profile ARN of a room. rdProfileARN :: Lens' RoomData (Maybe Text) rdProfileARN = lens _rdProfileARN (\ s a -> s{_rdProfileARN = a}) -- | The provider calendar ARN of a room. rdProviderCalendarId :: Lens' RoomData (Maybe Text) rdProviderCalendarId = lens _rdProviderCalendarId (\ s a -> s{_rdProviderCalendarId = a}) -- | The profile name of a room. rdProfileName :: Lens' RoomData (Maybe Text) rdProfileName = lens _rdProfileName (\ s a -> s{_rdProfileName = a}) -- | The ARN of a room. rdRoomARN :: Lens' RoomData (Maybe Text) rdRoomARN = lens _rdRoomARN (\ s a -> s{_rdRoomARN = a}) -- | The name of a room. rdRoomName :: Lens' RoomData (Maybe Text) rdRoomName = lens _rdRoomName (\ s a -> s{_rdRoomName = a}) -- | The description of a room. rdDescription :: Lens' RoomData (Maybe Text) rdDescription = lens _rdDescription (\ s a -> s{_rdDescription = a}) instance FromJSON RoomData where parseJSON = withObject "RoomData" (\ x -> RoomData' <$> (x .:? "ProfileArn") <*> (x .:? "ProviderCalendarId") <*> (x .:? "ProfileName") <*> (x .:? "RoomArn") <*> (x .:? "RoomName") <*> (x .:? "Description")) instance Hashable RoomData where instance NFData RoomData where -- | A skill parameter associated with a room. -- -- -- -- /See:/ 'roomSkillParameter' smart constructor. data RoomSkillParameter = RoomSkillParameter' { _rspParameterKey :: !Text , _rspParameterValue :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'RoomSkillParameter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rspParameterKey' - The parameter key of a room skill parameter. ParameterKey is an enumerated type that only takes “DEFAULT” or “SCOPE” as valid values. -- -- * 'rspParameterValue' - The parameter value of a room skill parameter. roomSkillParameter :: Text -- ^ 'rspParameterKey' -> Text -- ^ 'rspParameterValue' -> RoomSkillParameter roomSkillParameter pParameterKey_ pParameterValue_ = RoomSkillParameter' {_rspParameterKey = pParameterKey_, _rspParameterValue = pParameterValue_} -- | The parameter key of a room skill parameter. ParameterKey is an enumerated type that only takes “DEFAULT” or “SCOPE” as valid values. rspParameterKey :: Lens' RoomSkillParameter Text rspParameterKey = lens _rspParameterKey (\ s a -> s{_rspParameterKey = a}) -- | The parameter value of a room skill parameter. rspParameterValue :: Lens' RoomSkillParameter Text rspParameterValue = lens _rspParameterValue (\ s a -> s{_rspParameterValue = a}) instance FromJSON RoomSkillParameter where parseJSON = withObject "RoomSkillParameter" (\ x -> RoomSkillParameter' <$> (x .: "ParameterKey") <*> (x .: "ParameterValue")) instance Hashable RoomSkillParameter where instance NFData RoomSkillParameter where instance ToJSON RoomSkillParameter where toJSON RoomSkillParameter'{..} = object (catMaybes [Just ("ParameterKey" .= _rspParameterKey), Just ("ParameterValue" .= _rspParameterValue)]) -- | A skill group with attributes. -- -- -- -- /See:/ 'skillGroup' smart constructor. data SkillGroup = SkillGroup' { _sgSkillGroupARN :: !(Maybe Text) , _sgDescription :: !(Maybe Text) , _sgSkillGroupName :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'SkillGroup' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sgSkillGroupARN' - The ARN of a skill group. -- -- * 'sgDescription' - The description of a skill group. -- -- * 'sgSkillGroupName' - The name of a skill group. skillGroup :: SkillGroup skillGroup = SkillGroup' { _sgSkillGroupARN = Nothing , _sgDescription = Nothing , _sgSkillGroupName = Nothing } -- | The ARN of a skill group. sgSkillGroupARN :: Lens' SkillGroup (Maybe Text) sgSkillGroupARN = lens _sgSkillGroupARN (\ s a -> s{_sgSkillGroupARN = a}) -- | The description of a skill group. sgDescription :: Lens' SkillGroup (Maybe Text) sgDescription = lens _sgDescription (\ s a -> s{_sgDescription = a}) -- | The name of a skill group. sgSkillGroupName :: Lens' SkillGroup (Maybe Text) sgSkillGroupName = lens _sgSkillGroupName (\ s a -> s{_sgSkillGroupName = a}) instance FromJSON SkillGroup where parseJSON = withObject "SkillGroup" (\ x -> SkillGroup' <$> (x .:? "SkillGroupArn") <*> (x .:? "Description") <*> (x .:? "SkillGroupName")) instance Hashable SkillGroup where instance NFData SkillGroup where -- | The attributes of a skill group. -- -- -- -- /See:/ 'skillGroupData' smart constructor. data SkillGroupData = SkillGroupData' { _sgdSkillGroupARN :: !(Maybe Text) , _sgdDescription :: !(Maybe Text) , _sgdSkillGroupName :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'SkillGroupData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sgdSkillGroupARN' - The skill group ARN of a skill group. -- -- * 'sgdDescription' - The description of a skill group. -- -- * 'sgdSkillGroupName' - The skill group name of a skill group. skillGroupData :: SkillGroupData skillGroupData = SkillGroupData' { _sgdSkillGroupARN = Nothing , _sgdDescription = Nothing , _sgdSkillGroupName = Nothing } -- | The skill group ARN of a skill group. sgdSkillGroupARN :: Lens' SkillGroupData (Maybe Text) sgdSkillGroupARN = lens _sgdSkillGroupARN (\ s a -> s{_sgdSkillGroupARN = a}) -- | The description of a skill group. sgdDescription :: Lens' SkillGroupData (Maybe Text) sgdDescription = lens _sgdDescription (\ s a -> s{_sgdDescription = a}) -- | The skill group name of a skill group. sgdSkillGroupName :: Lens' SkillGroupData (Maybe Text) sgdSkillGroupName = lens _sgdSkillGroupName (\ s a -> s{_sgdSkillGroupName = a}) instance FromJSON SkillGroupData where parseJSON = withObject "SkillGroupData" (\ x -> SkillGroupData' <$> (x .:? "SkillGroupArn") <*> (x .:? "Description") <*> (x .:? "SkillGroupName")) instance Hashable SkillGroupData where instance NFData SkillGroupData where -- | The summary of skills. -- -- -- -- /See:/ 'skillSummary' smart constructor. data SkillSummary = SkillSummary' { _ssSkillId :: !(Maybe Text) , _ssSupportsLinking :: !(Maybe Bool) , _ssSkillName :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'SkillSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ssSkillId' - The ARN of the skill summary. -- -- * 'ssSupportsLinking' - Linking support for a skill. -- -- * 'ssSkillName' - The name of the skill. skillSummary :: SkillSummary skillSummary = SkillSummary' {_ssSkillId = Nothing, _ssSupportsLinking = Nothing, _ssSkillName = Nothing} -- | The ARN of the skill summary. ssSkillId :: Lens' SkillSummary (Maybe Text) ssSkillId = lens _ssSkillId (\ s a -> s{_ssSkillId = a}) -- | Linking support for a skill. ssSupportsLinking :: Lens' SkillSummary (Maybe Bool) ssSupportsLinking = lens _ssSupportsLinking (\ s a -> s{_ssSupportsLinking = a}) -- | The name of the skill. ssSkillName :: Lens' SkillSummary (Maybe Text) ssSkillName = lens _ssSkillName (\ s a -> s{_ssSkillName = a}) instance FromJSON SkillSummary where parseJSON = withObject "SkillSummary" (\ x -> SkillSummary' <$> (x .:? "SkillId") <*> (x .:? "SupportsLinking") <*> (x .:? "SkillName")) instance Hashable SkillSummary where instance NFData SkillSummary where -- | An object representing a sort criteria. -- -- -- -- /See:/ 'sort' smart constructor. data Sort = Sort' { _sKey :: !Text , _sValue :: !SortValue } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Sort' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sKey' - The sort key of a sort object. -- -- * 'sValue' - The sort value of a sort object. sort :: Text -- ^ 'sKey' -> SortValue -- ^ 'sValue' -> Sort sort pKey_ pValue_ = Sort' {_sKey = pKey_, _sValue = pValue_} -- | The sort key of a sort object. sKey :: Lens' Sort Text sKey = lens _sKey (\ s a -> s{_sKey = a}) -- | The sort value of a sort object. sValue :: Lens' Sort SortValue sValue = lens _sValue (\ s a -> s{_sValue = a}) instance Hashable Sort where instance NFData Sort where instance ToJSON Sort where toJSON Sort'{..} = object (catMaybes [Just ("Key" .= _sKey), Just ("Value" .= _sValue)]) -- | A key-value pair that can be associated with a resource. -- -- -- -- /See:/ 'tag' smart constructor. data Tag = Tag' { _tagValue :: !(Maybe Text) , _tagKey :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'Tag' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tagValue' - The value of a tag. Tag values are case-sensitive and can be null. -- -- * 'tagKey' - The key of a tag. Tag keys are case-sensitive. tag :: Tag tag = Tag' {_tagValue = Nothing, _tagKey = Nothing} -- | The value of a tag. Tag values are case-sensitive and can be null. tagValue :: Lens' Tag (Maybe Text) tagValue = lens _tagValue (\ s a -> s{_tagValue = a}) -- | The key of a tag. Tag keys are case-sensitive. tagKey :: Lens' Tag (Maybe Text) tagKey = lens _tagKey (\ s a -> s{_tagKey = a}) instance FromJSON Tag where parseJSON = withObject "Tag" (\ x -> Tag' <$> (x .:? "Value") <*> (x .:? "Key")) instance Hashable Tag where instance NFData Tag where instance ToJSON Tag where toJSON Tag'{..} = object (catMaybes [("Value" .=) <$> _tagValue, ("Key" .=) <$> _tagKey]) -- | Information related to a user. -- -- -- -- /See:/ 'userData' smart constructor. data UserData = UserData' { _udEmail :: !(Maybe Text) , _udLastName :: !(Maybe Text) , _udEnrollmentId :: !(Maybe Text) , _udUserARN :: !(Maybe Text) , _udFirstName :: !(Maybe Text) , _udEnrollmentStatus :: !(Maybe EnrollmentStatus) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'UserData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'udEmail' - The email of a user. -- -- * 'udLastName' - The last name of a user. -- -- * 'udEnrollmentId' - The enrollment ARN of a user. -- -- * 'udUserARN' - The ARN of a user. -- -- * 'udFirstName' - The first name of a user. -- -- * 'udEnrollmentStatus' - The enrollment status of a user. userData :: UserData userData = UserData' { _udEmail = Nothing , _udLastName = Nothing , _udEnrollmentId = Nothing , _udUserARN = Nothing , _udFirstName = Nothing , _udEnrollmentStatus = Nothing } -- | The email of a user. udEmail :: Lens' UserData (Maybe Text) udEmail = lens _udEmail (\ s a -> s{_udEmail = a}) -- | The last name of a user. udLastName :: Lens' UserData (Maybe Text) udLastName = lens _udLastName (\ s a -> s{_udLastName = a}) -- | The enrollment ARN of a user. udEnrollmentId :: Lens' UserData (Maybe Text) udEnrollmentId = lens _udEnrollmentId (\ s a -> s{_udEnrollmentId = a}) -- | The ARN of a user. udUserARN :: Lens' UserData (Maybe Text) udUserARN = lens _udUserARN (\ s a -> s{_udUserARN = a}) -- | The first name of a user. udFirstName :: Lens' UserData (Maybe Text) udFirstName = lens _udFirstName (\ s a -> s{_udFirstName = a}) -- | The enrollment status of a user. udEnrollmentStatus :: Lens' UserData (Maybe EnrollmentStatus) udEnrollmentStatus = lens _udEnrollmentStatus (\ s a -> s{_udEnrollmentStatus = a}) instance FromJSON UserData where parseJSON = withObject "UserData" (\ x -> UserData' <$> (x .:? "Email") <*> (x .:? "LastName") <*> (x .:? "EnrollmentId") <*> (x .:? "UserArn") <*> (x .:? "FirstName") <*> (x .:? "EnrollmentStatus")) instance Hashable UserData where instance NFData UserData where