module Stratosphere.SSM.Parameter (
        Parameter(..), mkParameter
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import Stratosphere.ResourceProperties
import Stratosphere.Value
data Parameter
  = Parameter {allowedPattern :: (Prelude.Maybe (Value Prelude.Text)),
               dataType :: (Prelude.Maybe (Value Prelude.Text)),
               description :: (Prelude.Maybe (Value Prelude.Text)),
               name :: (Prelude.Maybe (Value Prelude.Text)),
               policies :: (Prelude.Maybe (Value Prelude.Text)),
               tags :: (Prelude.Maybe JSON.Object),
               tier :: (Prelude.Maybe (Value Prelude.Text)),
               type' :: (Value Prelude.Text),
               value :: (Value Prelude.Text)}
mkParameter ::
  Value Prelude.Text -> Value Prelude.Text -> Parameter
mkParameter type' value
  = Parameter
      {type' = type', value = value, allowedPattern = Prelude.Nothing,
       dataType = Prelude.Nothing, description = Prelude.Nothing,
       name = Prelude.Nothing, policies = Prelude.Nothing,
       tags = Prelude.Nothing, tier = Prelude.Nothing}
instance ToResourceProperties Parameter where
  toResourceProperties Parameter {..}
    = ResourceProperties
        {awsType = "AWS::SSM::Parameter", supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Type" JSON..= type', "Value" JSON..= value]
                           (Prelude.catMaybes
                              [(JSON..=) "AllowedPattern" Prelude.<$> allowedPattern,
                               (JSON..=) "DataType" Prelude.<$> dataType,
                               (JSON..=) "Description" Prelude.<$> description,
                               (JSON..=) "Name" Prelude.<$> name,
                               (JSON..=) "Policies" Prelude.<$> policies,
                               (JSON..=) "Tags" Prelude.<$> tags,
                               (JSON..=) "Tier" Prelude.<$> tier]))}
instance JSON.ToJSON Parameter where
  toJSON Parameter {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Type" JSON..= type', "Value" JSON..= value]
              (Prelude.catMaybes
                 [(JSON..=) "AllowedPattern" Prelude.<$> allowedPattern,
                  (JSON..=) "DataType" Prelude.<$> dataType,
                  (JSON..=) "Description" Prelude.<$> description,
                  (JSON..=) "Name" Prelude.<$> name,
                  (JSON..=) "Policies" Prelude.<$> policies,
                  (JSON..=) "Tags" Prelude.<$> tags,
                  (JSON..=) "Tier" Prelude.<$> tier])))
instance Property "AllowedPattern" Parameter where
  type PropertyType "AllowedPattern" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {allowedPattern = Prelude.pure newValue, ..}
instance Property "DataType" Parameter where
  type PropertyType "DataType" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {dataType = Prelude.pure newValue, ..}
instance Property "Description" Parameter where
  type PropertyType "Description" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {description = Prelude.pure newValue, ..}
instance Property "Name" Parameter where
  type PropertyType "Name" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {name = Prelude.pure newValue, ..}
instance Property "Policies" Parameter where
  type PropertyType "Policies" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {policies = Prelude.pure newValue, ..}
instance Property "Tags" Parameter where
  type PropertyType "Tags" Parameter = JSON.Object
  set newValue Parameter {..}
    = Parameter {tags = Prelude.pure newValue, ..}
instance Property "Tier" Parameter where
  type PropertyType "Tier" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {tier = Prelude.pure newValue, ..}
instance Property "Type" Parameter where
  type PropertyType "Type" Parameter = Value Prelude.Text
  set newValue Parameter {..} = Parameter {type' = newValue, ..}
instance Property "Value" Parameter where
  type PropertyType "Value" Parameter = Value Prelude.Text
  set newValue Parameter {..} = Parameter {value = newValue, ..}
module Stratosphere.SSM.Parameter (
        Parameter(..), mkParameter
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import Stratosphere.ResourceProperties
import Stratosphere.Value
data Parameter
  = Parameter {allowedPattern :: (Prelude.Maybe (Value Prelude.Text)),
               dataType :: (Prelude.Maybe (Value Prelude.Text)),
               description :: (Prelude.Maybe (Value Prelude.Text)),
               name :: (Prelude.Maybe (Value Prelude.Text)),
               policies :: (Prelude.Maybe (Value Prelude.Text)),
               tags :: (Prelude.Maybe JSON.Object),
               tier :: (Prelude.Maybe (Value Prelude.Text)),
               type' :: (Value Prelude.Text),
               value :: (Value Prelude.Text)}
mkParameter ::
  Value Prelude.Text -> Value Prelude.Text -> Parameter
mkParameter type' value
  = Parameter
      {type' = type', value = value, allowedPattern = Prelude.Nothing,
       dataType = Prelude.Nothing, description = Prelude.Nothing,
       name = Prelude.Nothing, policies = Prelude.Nothing,
       tags = Prelude.Nothing, tier = Prelude.Nothing}
instance ToResourceProperties Parameter where
  toResourceProperties Parameter {..}
    = ResourceProperties
        {awsType = "AWS::SSM::Parameter", supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Type" JSON..= type', "Value" JSON..= value]
                           (Prelude.catMaybes
                              [(JSON..=) "AllowedPattern" Prelude.<$> allowedPattern,
                               (JSON..=) "DataType" Prelude.<$> dataType,
                               (JSON..=) "Description" Prelude.<$> description,
                               (JSON..=) "Name" Prelude.<$> name,
                               (JSON..=) "Policies" Prelude.<$> policies,
                               (JSON..=) "Tags" Prelude.<$> tags,
                               (JSON..=) "Tier" Prelude.<$> tier]))}
instance JSON.ToJSON Parameter where
  toJSON Parameter {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Type" JSON..= type', "Value" JSON..= value]
              (Prelude.catMaybes
                 [(JSON..=) "AllowedPattern" Prelude.<$> allowedPattern,
                  (JSON..=) "DataType" Prelude.<$> dataType,
                  (JSON..=) "Description" Prelude.<$> description,
                  (JSON..=) "Name" Prelude.<$> name,
                  (JSON..=) "Policies" Prelude.<$> policies,
                  (JSON..=) "Tags" Prelude.<$> tags,
                  (JSON..=) "Tier" Prelude.<$> tier])))
instance Property "AllowedPattern" Parameter where
  type PropertyType "AllowedPattern" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {allowedPattern = Prelude.pure newValue, ..}
instance Property "DataType" Parameter where
  type PropertyType "DataType" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {dataType = Prelude.pure newValue, ..}
instance Property "Description" Parameter where
  type PropertyType "Description" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {description = Prelude.pure newValue, ..}
instance Property "Name" Parameter where
  type PropertyType "Name" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {name = Prelude.pure newValue, ..}
instance Property "Policies" Parameter where
  type PropertyType "Policies" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {policies = Prelude.pure newValue, ..}
instance Property "Tags" Parameter where
  type PropertyType "Tags" Parameter = JSON.Object
  set newValue Parameter {..}
    = Parameter {tags = Prelude.pure newValue, ..}
instance Property "Tier" Parameter where
  type PropertyType "Tier" Parameter = Value Prelude.Text
  set newValue Parameter {..}
    = Parameter {tier = Prelude.pure newValue, ..}
instance Property "Type" Parameter where
  type PropertyType "Type" Parameter = Value Prelude.Text
  set newValue Parameter {..} = Parameter {type' = newValue, ..}
instance Property "Value" Parameter where
  type PropertyType "Value" Parameter = Value Prelude.Text
  set newValue Parameter {..} = Parameter {value = newValue, ..}