module Stratosphere.Connect.Queue ( module Exports, Queue(..), mkQueue ) where import qualified Data.Aeson as JSON import qualified Stratosphere.Prelude as Prelude import Stratosphere.Property import {-# SOURCE #-} Stratosphere.Connect.Queue.OutboundCallerConfigProperty as Exports import {-# SOURCE #-} Stratosphere.Connect.Queue.OutboundEmailConfigProperty as Exports import Stratosphere.ResourceProperties import Stratosphere.Tag import Stratosphere.Value data Queue = -- | See: Queue {haddock_workaround_ :: (), -- | See: description :: (Prelude.Maybe (Value Prelude.Text)), -- | See: hoursOfOperationArn :: (Value Prelude.Text), -- | See: instanceArn :: (Value Prelude.Text), -- | See: maxContacts :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: name :: (Value Prelude.Text), -- | See: outboundCallerConfig :: (Prelude.Maybe OutboundCallerConfigProperty), -- | See: outboundEmailConfig :: (Prelude.Maybe OutboundEmailConfigProperty), -- | See: quickConnectArns :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: status :: (Prelude.Maybe (Value Prelude.Text)), -- | See: tags :: (Prelude.Maybe [Tag])} deriving stock (Prelude.Eq, Prelude.Show) mkQueue :: Value Prelude.Text -> Value Prelude.Text -> Value Prelude.Text -> Queue mkQueue hoursOfOperationArn instanceArn name = Queue {haddock_workaround_ = (), hoursOfOperationArn = hoursOfOperationArn, instanceArn = instanceArn, name = name, description = Prelude.Nothing, maxContacts = Prelude.Nothing, outboundCallerConfig = Prelude.Nothing, outboundEmailConfig = Prelude.Nothing, quickConnectArns = Prelude.Nothing, status = Prelude.Nothing, tags = Prelude.Nothing} instance ToResourceProperties Queue where toResourceProperties Queue {..} = ResourceProperties {awsType = "AWS::Connect::Queue", supportsTags = Prelude.True, properties = Prelude.fromList ((Prelude.<>) ["HoursOfOperationArn" JSON..= hoursOfOperationArn, "InstanceArn" JSON..= instanceArn, "Name" JSON..= name] (Prelude.catMaybes [(JSON..=) "Description" Prelude.<$> description, (JSON..=) "MaxContacts" Prelude.<$> maxContacts, (JSON..=) "OutboundCallerConfig" Prelude.<$> outboundCallerConfig, (JSON..=) "OutboundEmailConfig" Prelude.<$> outboundEmailConfig, (JSON..=) "QuickConnectArns" Prelude.<$> quickConnectArns, (JSON..=) "Status" Prelude.<$> status, (JSON..=) "Tags" Prelude.<$> tags]))} instance JSON.ToJSON Queue where toJSON Queue {..} = JSON.object (Prelude.fromList ((Prelude.<>) ["HoursOfOperationArn" JSON..= hoursOfOperationArn, "InstanceArn" JSON..= instanceArn, "Name" JSON..= name] (Prelude.catMaybes [(JSON..=) "Description" Prelude.<$> description, (JSON..=) "MaxContacts" Prelude.<$> maxContacts, (JSON..=) "OutboundCallerConfig" Prelude.<$> outboundCallerConfig, (JSON..=) "OutboundEmailConfig" Prelude.<$> outboundEmailConfig, (JSON..=) "QuickConnectArns" Prelude.<$> quickConnectArns, (JSON..=) "Status" Prelude.<$> status, (JSON..=) "Tags" Prelude.<$> tags]))) instance Property "Description" Queue where type PropertyType "Description" Queue = Value Prelude.Text set newValue Queue {..} = Queue {description = Prelude.pure newValue, ..} instance Property "HoursOfOperationArn" Queue where type PropertyType "HoursOfOperationArn" Queue = Value Prelude.Text set newValue Queue {..} = Queue {hoursOfOperationArn = newValue, ..} instance Property "InstanceArn" Queue where type PropertyType "InstanceArn" Queue = Value Prelude.Text set newValue Queue {..} = Queue {instanceArn = newValue, ..} instance Property "MaxContacts" Queue where type PropertyType "MaxContacts" Queue = Value Prelude.Integer set newValue Queue {..} = Queue {maxContacts = Prelude.pure newValue, ..} instance Property "Name" Queue where type PropertyType "Name" Queue = Value Prelude.Text set newValue Queue {..} = Queue {name = newValue, ..} instance Property "OutboundCallerConfig" Queue where type PropertyType "OutboundCallerConfig" Queue = OutboundCallerConfigProperty set newValue Queue {..} = Queue {outboundCallerConfig = Prelude.pure newValue, ..} instance Property "OutboundEmailConfig" Queue where type PropertyType "OutboundEmailConfig" Queue = OutboundEmailConfigProperty set newValue Queue {..} = Queue {outboundEmailConfig = Prelude.pure newValue, ..} instance Property "QuickConnectArns" Queue where type PropertyType "QuickConnectArns" Queue = ValueList Prelude.Text set newValue Queue {..} = Queue {quickConnectArns = Prelude.pure newValue, ..} instance Property "Status" Queue where type PropertyType "Status" Queue = Value Prelude.Text set newValue Queue {..} = Queue {status = Prelude.pure newValue, ..} instance Property "Tags" Queue where type PropertyType "Tags" Queue = [Tag] set newValue Queue {..} = Queue {tags = Prelude.pure newValue, ..}