{-# 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.SSM.Types.ParameterMetadata
-- 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.SSM.Types.ParameterMetadata 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.SSM.Types.ParameterInlinePolicy
import Amazonka.SSM.Types.ParameterTier
import Amazonka.SSM.Types.ParameterType

-- | Metadata includes information like the ARN of the last user and the
-- date\/time the parameter was last used.
--
-- /See:/ 'newParameterMetadata' smart constructor.
data ParameterMetadata = ParameterMetadata'
  { -- | A parameter name can include only the following letters and symbols.
    --
    -- a-zA-Z0-9_.-
    ParameterMetadata -> Maybe Text
allowedPattern :: Prelude.Maybe Prelude.Text,
    -- | The data type of the parameter, such as @text@ or @aws:ec2:image@. The
    -- default is @text@.
    ParameterMetadata -> Maybe Text
dataType :: Prelude.Maybe Prelude.Text,
    -- | Description of the parameter actions.
    ParameterMetadata -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The ID of the query key used for this parameter.
    ParameterMetadata -> Maybe Text
keyId :: Prelude.Maybe Prelude.Text,
    -- | Date the parameter was last changed or updated.
    ParameterMetadata -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | Amazon Resource Name (ARN) of the Amazon Web Services user who last
    -- changed the parameter.
    ParameterMetadata -> Maybe Text
lastModifiedUser :: Prelude.Maybe Prelude.Text,
    -- | The parameter name.
    ParameterMetadata -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | A list of policies associated with a parameter.
    ParameterMetadata -> Maybe [ParameterInlinePolicy]
policies :: Prelude.Maybe [ParameterInlinePolicy],
    -- | The parameter tier.
    ParameterMetadata -> Maybe ParameterTier
tier :: Prelude.Maybe ParameterTier,
    -- | The type of parameter. Valid parameter types include the following:
    -- @String@, @StringList@, and @SecureString@.
    ParameterMetadata -> Maybe ParameterType
type' :: Prelude.Maybe ParameterType,
    -- | The parameter version.
    ParameterMetadata -> Maybe Integer
version :: Prelude.Maybe Prelude.Integer
  }
  deriving (ParameterMetadata -> ParameterMetadata -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParameterMetadata -> ParameterMetadata -> Bool
$c/= :: ParameterMetadata -> ParameterMetadata -> Bool
== :: ParameterMetadata -> ParameterMetadata -> Bool
$c== :: ParameterMetadata -> ParameterMetadata -> Bool
Prelude.Eq, ReadPrec [ParameterMetadata]
ReadPrec ParameterMetadata
Int -> ReadS ParameterMetadata
ReadS [ParameterMetadata]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ParameterMetadata]
$creadListPrec :: ReadPrec [ParameterMetadata]
readPrec :: ReadPrec ParameterMetadata
$creadPrec :: ReadPrec ParameterMetadata
readList :: ReadS [ParameterMetadata]
$creadList :: ReadS [ParameterMetadata]
readsPrec :: Int -> ReadS ParameterMetadata
$creadsPrec :: Int -> ReadS ParameterMetadata
Prelude.Read, Int -> ParameterMetadata -> ShowS
[ParameterMetadata] -> ShowS
ParameterMetadata -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParameterMetadata] -> ShowS
$cshowList :: [ParameterMetadata] -> ShowS
show :: ParameterMetadata -> String
$cshow :: ParameterMetadata -> String
showsPrec :: Int -> ParameterMetadata -> ShowS
$cshowsPrec :: Int -> ParameterMetadata -> ShowS
Prelude.Show, forall x. Rep ParameterMetadata x -> ParameterMetadata
forall x. ParameterMetadata -> Rep ParameterMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ParameterMetadata x -> ParameterMetadata
$cfrom :: forall x. ParameterMetadata -> Rep ParameterMetadata x
Prelude.Generic)

-- |
-- Create a value of 'ParameterMetadata' 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:
--
-- 'allowedPattern', 'parameterMetadata_allowedPattern' - A parameter name can include only the following letters and symbols.
--
-- a-zA-Z0-9_.-
--
-- 'dataType', 'parameterMetadata_dataType' - The data type of the parameter, such as @text@ or @aws:ec2:image@. The
-- default is @text@.
--
-- 'description', 'parameterMetadata_description' - Description of the parameter actions.
--
-- 'keyId', 'parameterMetadata_keyId' - The ID of the query key used for this parameter.
--
-- 'lastModifiedDate', 'parameterMetadata_lastModifiedDate' - Date the parameter was last changed or updated.
--
-- 'lastModifiedUser', 'parameterMetadata_lastModifiedUser' - Amazon Resource Name (ARN) of the Amazon Web Services user who last
-- changed the parameter.
--
-- 'name', 'parameterMetadata_name' - The parameter name.
--
-- 'policies', 'parameterMetadata_policies' - A list of policies associated with a parameter.
--
-- 'tier', 'parameterMetadata_tier' - The parameter tier.
--
-- 'type'', 'parameterMetadata_type' - The type of parameter. Valid parameter types include the following:
-- @String@, @StringList@, and @SecureString@.
--
-- 'version', 'parameterMetadata_version' - The parameter version.
newParameterMetadata ::
  ParameterMetadata
newParameterMetadata :: ParameterMetadata
newParameterMetadata =
  ParameterMetadata'
    { $sel:allowedPattern:ParameterMetadata' :: Maybe Text
allowedPattern =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dataType:ParameterMetadata' :: Maybe Text
dataType = forall a. Maybe a
Prelude.Nothing,
      $sel:description:ParameterMetadata' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:keyId:ParameterMetadata' :: Maybe Text
keyId = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:ParameterMetadata' :: Maybe POSIX
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedUser:ParameterMetadata' :: Maybe Text
lastModifiedUser = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ParameterMetadata' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:policies:ParameterMetadata' :: Maybe [ParameterInlinePolicy]
policies = forall a. Maybe a
Prelude.Nothing,
      $sel:tier:ParameterMetadata' :: Maybe ParameterTier
tier = forall a. Maybe a
Prelude.Nothing,
      $sel:type':ParameterMetadata' :: Maybe ParameterType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:version:ParameterMetadata' :: Maybe Integer
version = forall a. Maybe a
Prelude.Nothing
    }

-- | A parameter name can include only the following letters and symbols.
--
-- a-zA-Z0-9_.-
parameterMetadata_allowedPattern :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Text)
parameterMetadata_allowedPattern :: Lens' ParameterMetadata (Maybe Text)
parameterMetadata_allowedPattern = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Text
allowedPattern :: Maybe Text
$sel:allowedPattern:ParameterMetadata' :: ParameterMetadata -> Maybe Text
allowedPattern} -> Maybe Text
allowedPattern) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Text
a -> ParameterMetadata
s {$sel:allowedPattern:ParameterMetadata' :: Maybe Text
allowedPattern = Maybe Text
a} :: ParameterMetadata)

-- | The data type of the parameter, such as @text@ or @aws:ec2:image@. The
-- default is @text@.
parameterMetadata_dataType :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Text)
parameterMetadata_dataType :: Lens' ParameterMetadata (Maybe Text)
parameterMetadata_dataType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Text
dataType :: Maybe Text
$sel:dataType:ParameterMetadata' :: ParameterMetadata -> Maybe Text
dataType} -> Maybe Text
dataType) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Text
a -> ParameterMetadata
s {$sel:dataType:ParameterMetadata' :: Maybe Text
dataType = Maybe Text
a} :: ParameterMetadata)

-- | Description of the parameter actions.
parameterMetadata_description :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Text)
parameterMetadata_description :: Lens' ParameterMetadata (Maybe Text)
parameterMetadata_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Text
description :: Maybe Text
$sel:description:ParameterMetadata' :: ParameterMetadata -> Maybe Text
description} -> Maybe Text
description) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Text
a -> ParameterMetadata
s {$sel:description:ParameterMetadata' :: Maybe Text
description = Maybe Text
a} :: ParameterMetadata)

-- | The ID of the query key used for this parameter.
parameterMetadata_keyId :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Text)
parameterMetadata_keyId :: Lens' ParameterMetadata (Maybe Text)
parameterMetadata_keyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Text
keyId :: Maybe Text
$sel:keyId:ParameterMetadata' :: ParameterMetadata -> Maybe Text
keyId} -> Maybe Text
keyId) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Text
a -> ParameterMetadata
s {$sel:keyId:ParameterMetadata' :: Maybe Text
keyId = Maybe Text
a} :: ParameterMetadata)

-- | Date the parameter was last changed or updated.
parameterMetadata_lastModifiedDate :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.UTCTime)
parameterMetadata_lastModifiedDate :: Lens' ParameterMetadata (Maybe UTCTime)
parameterMetadata_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:ParameterMetadata' :: ParameterMetadata -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe POSIX
a -> ParameterMetadata
s {$sel:lastModifiedDate:ParameterMetadata' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: ParameterMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Amazon Resource Name (ARN) of the Amazon Web Services user who last
-- changed the parameter.
parameterMetadata_lastModifiedUser :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Text)
parameterMetadata_lastModifiedUser :: Lens' ParameterMetadata (Maybe Text)
parameterMetadata_lastModifiedUser = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Text
lastModifiedUser :: Maybe Text
$sel:lastModifiedUser:ParameterMetadata' :: ParameterMetadata -> Maybe Text
lastModifiedUser} -> Maybe Text
lastModifiedUser) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Text
a -> ParameterMetadata
s {$sel:lastModifiedUser:ParameterMetadata' :: Maybe Text
lastModifiedUser = Maybe Text
a} :: ParameterMetadata)

-- | The parameter name.
parameterMetadata_name :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Text)
parameterMetadata_name :: Lens' ParameterMetadata (Maybe Text)
parameterMetadata_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Text
name :: Maybe Text
$sel:name:ParameterMetadata' :: ParameterMetadata -> Maybe Text
name} -> Maybe Text
name) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Text
a -> ParameterMetadata
s {$sel:name:ParameterMetadata' :: Maybe Text
name = Maybe Text
a} :: ParameterMetadata)

-- | A list of policies associated with a parameter.
parameterMetadata_policies :: Lens.Lens' ParameterMetadata (Prelude.Maybe [ParameterInlinePolicy])
parameterMetadata_policies :: Lens' ParameterMetadata (Maybe [ParameterInlinePolicy])
parameterMetadata_policies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe [ParameterInlinePolicy]
policies :: Maybe [ParameterInlinePolicy]
$sel:policies:ParameterMetadata' :: ParameterMetadata -> Maybe [ParameterInlinePolicy]
policies} -> Maybe [ParameterInlinePolicy]
policies) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe [ParameterInlinePolicy]
a -> ParameterMetadata
s {$sel:policies:ParameterMetadata' :: Maybe [ParameterInlinePolicy]
policies = Maybe [ParameterInlinePolicy]
a} :: ParameterMetadata) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The parameter tier.
parameterMetadata_tier :: Lens.Lens' ParameterMetadata (Prelude.Maybe ParameterTier)
parameterMetadata_tier :: Lens' ParameterMetadata (Maybe ParameterTier)
parameterMetadata_tier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe ParameterTier
tier :: Maybe ParameterTier
$sel:tier:ParameterMetadata' :: ParameterMetadata -> Maybe ParameterTier
tier} -> Maybe ParameterTier
tier) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe ParameterTier
a -> ParameterMetadata
s {$sel:tier:ParameterMetadata' :: Maybe ParameterTier
tier = Maybe ParameterTier
a} :: ParameterMetadata)

-- | The type of parameter. Valid parameter types include the following:
-- @String@, @StringList@, and @SecureString@.
parameterMetadata_type :: Lens.Lens' ParameterMetadata (Prelude.Maybe ParameterType)
parameterMetadata_type :: Lens' ParameterMetadata (Maybe ParameterType)
parameterMetadata_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe ParameterType
type' :: Maybe ParameterType
$sel:type':ParameterMetadata' :: ParameterMetadata -> Maybe ParameterType
type'} -> Maybe ParameterType
type') (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe ParameterType
a -> ParameterMetadata
s {$sel:type':ParameterMetadata' :: Maybe ParameterType
type' = Maybe ParameterType
a} :: ParameterMetadata)

-- | The parameter version.
parameterMetadata_version :: Lens.Lens' ParameterMetadata (Prelude.Maybe Prelude.Integer)
parameterMetadata_version :: Lens' ParameterMetadata (Maybe Integer)
parameterMetadata_version = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ParameterMetadata' {Maybe Integer
version :: Maybe Integer
$sel:version:ParameterMetadata' :: ParameterMetadata -> Maybe Integer
version} -> Maybe Integer
version) (\s :: ParameterMetadata
s@ParameterMetadata' {} Maybe Integer
a -> ParameterMetadata
s {$sel:version:ParameterMetadata' :: Maybe Integer
version = Maybe Integer
a} :: ParameterMetadata)

instance Data.FromJSON ParameterMetadata where
  parseJSON :: Value -> Parser ParameterMetadata
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ParameterMetadata"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [ParameterInlinePolicy]
-> Maybe ParameterTier
-> Maybe ParameterType
-> Maybe Integer
-> ParameterMetadata
ParameterMetadata'
            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
"AllowedPattern")
            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
"DataType")
            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
"Description")
            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
"KeyId")
            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
"LastModifiedDate")
            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
"LastModifiedUser")
            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
"Name")
            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
"Policies" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"Tier")
            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
"Type")
            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
"Version")
      )

instance Prelude.Hashable ParameterMetadata where
  hashWithSalt :: Int -> ParameterMetadata -> Int
hashWithSalt Int
_salt ParameterMetadata' {Maybe Integer
Maybe [ParameterInlinePolicy]
Maybe Text
Maybe POSIX
Maybe ParameterTier
Maybe ParameterType
version :: Maybe Integer
type' :: Maybe ParameterType
tier :: Maybe ParameterTier
policies :: Maybe [ParameterInlinePolicy]
name :: Maybe Text
lastModifiedUser :: Maybe Text
lastModifiedDate :: Maybe POSIX
keyId :: Maybe Text
description :: Maybe Text
dataType :: Maybe Text
allowedPattern :: Maybe Text
$sel:version:ParameterMetadata' :: ParameterMetadata -> Maybe Integer
$sel:type':ParameterMetadata' :: ParameterMetadata -> Maybe ParameterType
$sel:tier:ParameterMetadata' :: ParameterMetadata -> Maybe ParameterTier
$sel:policies:ParameterMetadata' :: ParameterMetadata -> Maybe [ParameterInlinePolicy]
$sel:name:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:lastModifiedUser:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:lastModifiedDate:ParameterMetadata' :: ParameterMetadata -> Maybe POSIX
$sel:keyId:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:description:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:dataType:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:allowedPattern:ParameterMetadata' :: ParameterMetadata -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
allowedPattern
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dataType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
keyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastModifiedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastModifiedUser
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ParameterInlinePolicy]
policies
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ParameterTier
tier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ParameterType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
version

instance Prelude.NFData ParameterMetadata where
  rnf :: ParameterMetadata -> ()
rnf ParameterMetadata' {Maybe Integer
Maybe [ParameterInlinePolicy]
Maybe Text
Maybe POSIX
Maybe ParameterTier
Maybe ParameterType
version :: Maybe Integer
type' :: Maybe ParameterType
tier :: Maybe ParameterTier
policies :: Maybe [ParameterInlinePolicy]
name :: Maybe Text
lastModifiedUser :: Maybe Text
lastModifiedDate :: Maybe POSIX
keyId :: Maybe Text
description :: Maybe Text
dataType :: Maybe Text
allowedPattern :: Maybe Text
$sel:version:ParameterMetadata' :: ParameterMetadata -> Maybe Integer
$sel:type':ParameterMetadata' :: ParameterMetadata -> Maybe ParameterType
$sel:tier:ParameterMetadata' :: ParameterMetadata -> Maybe ParameterTier
$sel:policies:ParameterMetadata' :: ParameterMetadata -> Maybe [ParameterInlinePolicy]
$sel:name:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:lastModifiedUser:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:lastModifiedDate:ParameterMetadata' :: ParameterMetadata -> Maybe POSIX
$sel:keyId:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:description:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:dataType:ParameterMetadata' :: ParameterMetadata -> Maybe Text
$sel:allowedPattern:ParameterMetadata' :: ParameterMetadata -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
allowedPattern
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dataType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
keyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastModifiedUser
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ParameterInlinePolicy]
policies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ParameterTier
tier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ParameterType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
version