module Stratosphere.DataZone.PolicyGrant.PolicyGrantPrincipalProperty (
        module Exports, PolicyGrantPrincipalProperty(..),
        mkPolicyGrantPrincipalProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.DomainUnitPolicyGrantPrincipalProperty as Exports
import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.GroupPolicyGrantPrincipalProperty as Exports
import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.ProjectPolicyGrantPrincipalProperty as Exports
import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.UserPolicyGrantPrincipalProperty as Exports
import Stratosphere.ResourceProperties
data PolicyGrantPrincipalProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html>
    PolicyGrantPrincipalProperty {PolicyGrantPrincipalProperty -> ()
haddock_workaround_ :: (),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-domainunit>
                                  PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
domainUnit :: (Prelude.Maybe DomainUnitPolicyGrantPrincipalProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-group>
                                  PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
group :: (Prelude.Maybe GroupPolicyGrantPrincipalProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-project>
                                  PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
project :: (Prelude.Maybe ProjectPolicyGrantPrincipalProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-user>
                                  PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
user :: (Prelude.Maybe UserPolicyGrantPrincipalProperty)}
  deriving stock (PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> Bool
(PolicyGrantPrincipalProperty
 -> PolicyGrantPrincipalProperty -> Bool)
-> (PolicyGrantPrincipalProperty
    -> PolicyGrantPrincipalProperty -> Bool)
-> Eq PolicyGrantPrincipalProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> Bool
== :: PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> Bool
$c/= :: PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> Bool
/= :: PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> Bool
Prelude.Eq, Int -> PolicyGrantPrincipalProperty -> ShowS
[PolicyGrantPrincipalProperty] -> ShowS
PolicyGrantPrincipalProperty -> String
(Int -> PolicyGrantPrincipalProperty -> ShowS)
-> (PolicyGrantPrincipalProperty -> String)
-> ([PolicyGrantPrincipalProperty] -> ShowS)
-> Show PolicyGrantPrincipalProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PolicyGrantPrincipalProperty -> ShowS
showsPrec :: Int -> PolicyGrantPrincipalProperty -> ShowS
$cshow :: PolicyGrantPrincipalProperty -> String
show :: PolicyGrantPrincipalProperty -> String
$cshowList :: [PolicyGrantPrincipalProperty] -> ShowS
showList :: [PolicyGrantPrincipalProperty] -> ShowS
Prelude.Show)
mkPolicyGrantPrincipalProperty :: PolicyGrantPrincipalProperty
mkPolicyGrantPrincipalProperty :: PolicyGrantPrincipalProperty
mkPolicyGrantPrincipalProperty
  = PolicyGrantPrincipalProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
domainUnit = Maybe DomainUnitPolicyGrantPrincipalProperty
forall a. Maybe a
Prelude.Nothing,
       group :: Maybe GroupPolicyGrantPrincipalProperty
group = Maybe GroupPolicyGrantPrincipalProperty
forall a. Maybe a
Prelude.Nothing, project :: Maybe ProjectPolicyGrantPrincipalProperty
project = Maybe ProjectPolicyGrantPrincipalProperty
forall a. Maybe a
Prelude.Nothing,
       user :: Maybe UserPolicyGrantPrincipalProperty
user = Maybe UserPolicyGrantPrincipalProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties PolicyGrantPrincipalProperty where
  toResourceProperties :: PolicyGrantPrincipalProperty -> ResourceProperties
toResourceProperties PolicyGrantPrincipalProperty {Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: PolicyGrantPrincipalProperty -> ()
domainUnit :: PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
group :: PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
project :: PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
user :: PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::DataZone::PolicyGrant.PolicyGrantPrincipal",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> DomainUnitPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"DomainUnit" (DomainUnitPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe DomainUnitPolicyGrantPrincipalProperty
-> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DomainUnitPolicyGrantPrincipalProperty
domainUnit,
                            Key -> GroupPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Group" (GroupPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe GroupPolicyGrantPrincipalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GroupPolicyGrantPrincipalProperty
group,
                            Key -> ProjectPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Project" (ProjectPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe ProjectPolicyGrantPrincipalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProjectPolicyGrantPrincipalProperty
project,
                            Key -> UserPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"User" (UserPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe UserPolicyGrantPrincipalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe UserPolicyGrantPrincipalProperty
user])}
instance JSON.ToJSON PolicyGrantPrincipalProperty where
  toJSON :: PolicyGrantPrincipalProperty -> Value
toJSON PolicyGrantPrincipalProperty {Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: PolicyGrantPrincipalProperty -> ()
domainUnit :: PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
group :: PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
project :: PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
user :: PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> DomainUnitPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"DomainUnit" (DomainUnitPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe DomainUnitPolicyGrantPrincipalProperty
-> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DomainUnitPolicyGrantPrincipalProperty
domainUnit,
               Key -> GroupPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Group" (GroupPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe GroupPolicyGrantPrincipalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GroupPolicyGrantPrincipalProperty
group,
               Key -> ProjectPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Project" (ProjectPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe ProjectPolicyGrantPrincipalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProjectPolicyGrantPrincipalProperty
project,
               Key -> UserPolicyGrantPrincipalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"User" (UserPolicyGrantPrincipalProperty -> (Key, Value))
-> Maybe UserPolicyGrantPrincipalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe UserPolicyGrantPrincipalProperty
user]))
instance Property "DomainUnit" PolicyGrantPrincipalProperty where
  type PropertyType "DomainUnit" PolicyGrantPrincipalProperty = DomainUnitPolicyGrantPrincipalProperty
  set :: PropertyType "DomainUnit" PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> PolicyGrantPrincipalProperty
set PropertyType "DomainUnit" PolicyGrantPrincipalProperty
newValue PolicyGrantPrincipalProperty {Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: PolicyGrantPrincipalProperty -> ()
domainUnit :: PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
group :: PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
project :: PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
user :: PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
    = PolicyGrantPrincipalProperty
        {domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
domainUnit = DomainUnitPolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "DomainUnit" PolicyGrantPrincipalProperty
DomainUnitPolicyGrantPrincipalProperty
newValue, Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: ()
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
instance Property "Group" PolicyGrantPrincipalProperty where
  type PropertyType "Group" PolicyGrantPrincipalProperty = GroupPolicyGrantPrincipalProperty
  set :: PropertyType "Group" PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> PolicyGrantPrincipalProperty
set PropertyType "Group" PolicyGrantPrincipalProperty
newValue PolicyGrantPrincipalProperty {Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: PolicyGrantPrincipalProperty -> ()
domainUnit :: PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
group :: PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
project :: PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
user :: PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
    = PolicyGrantPrincipalProperty {group :: Maybe GroupPolicyGrantPrincipalProperty
group = GroupPolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "Group" PolicyGrantPrincipalProperty
GroupPolicyGrantPrincipalProperty
newValue, Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
instance Property "Project" PolicyGrantPrincipalProperty where
  type PropertyType "Project" PolicyGrantPrincipalProperty = ProjectPolicyGrantPrincipalProperty
  set :: PropertyType "Project" PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> PolicyGrantPrincipalProperty
set PropertyType "Project" PolicyGrantPrincipalProperty
newValue PolicyGrantPrincipalProperty {Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: PolicyGrantPrincipalProperty -> ()
domainUnit :: PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
group :: PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
project :: PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
user :: PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
    = PolicyGrantPrincipalProperty
        {project :: Maybe ProjectPolicyGrantPrincipalProperty
project = ProjectPolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "Project" PolicyGrantPrincipalProperty
ProjectPolicyGrantPrincipalProperty
newValue, Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
instance Property "User" PolicyGrantPrincipalProperty where
  type PropertyType "User" PolicyGrantPrincipalProperty = UserPolicyGrantPrincipalProperty
  set :: PropertyType "User" PolicyGrantPrincipalProperty
-> PolicyGrantPrincipalProperty -> PolicyGrantPrincipalProperty
set PropertyType "User" PolicyGrantPrincipalProperty
newValue PolicyGrantPrincipalProperty {Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
Maybe UserPolicyGrantPrincipalProperty
()
haddock_workaround_ :: PolicyGrantPrincipalProperty -> ()
domainUnit :: PolicyGrantPrincipalProperty
-> Maybe DomainUnitPolicyGrantPrincipalProperty
group :: PolicyGrantPrincipalProperty
-> Maybe GroupPolicyGrantPrincipalProperty
project :: PolicyGrantPrincipalProperty
-> Maybe ProjectPolicyGrantPrincipalProperty
user :: PolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
user :: Maybe UserPolicyGrantPrincipalProperty
..}
    = PolicyGrantPrincipalProperty {user :: Maybe UserPolicyGrantPrincipalProperty
user = UserPolicyGrantPrincipalProperty
-> Maybe UserPolicyGrantPrincipalProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "User" PolicyGrantPrincipalProperty
UserPolicyGrantPrincipalProperty
newValue, Maybe DomainUnitPolicyGrantPrincipalProperty
Maybe GroupPolicyGrantPrincipalProperty
Maybe ProjectPolicyGrantPrincipalProperty
()
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
haddock_workaround_ :: ()
domainUnit :: Maybe DomainUnitPolicyGrantPrincipalProperty
group :: Maybe GroupPolicyGrantPrincipalProperty
project :: Maybe ProjectPolicyGrantPrincipalProperty
..}