packages feed

stratosphere-0.23.0: library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html

module Stratosphere.Resources.ServiceCatalogPortfolioPrincipalAssociation where

import Stratosphere.ResourceImports


-- | Full data type definition for
-- ServiceCatalogPortfolioPrincipalAssociation. See
-- 'serviceCatalogPortfolioPrincipalAssociation' for a more convenient
-- constructor.
data ServiceCatalogPortfolioPrincipalAssociation =
  ServiceCatalogPortfolioPrincipalAssociation
  { _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage :: Maybe (Val Text)
  , _serviceCatalogPortfolioPrincipalAssociationPortfolioId :: Val Text
  , _serviceCatalogPortfolioPrincipalAssociationPrincipalARN :: Val Text
  , _serviceCatalogPortfolioPrincipalAssociationPrincipalType :: Val Text
  } deriving (Show, Eq)

instance ToJSON ServiceCatalogPortfolioPrincipalAssociation where
  toJSON ServiceCatalogPortfolioPrincipalAssociation{..} =
    object $
    catMaybes
    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage
    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPortfolioId
    , (Just . ("PrincipalARN",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalARN
    , (Just . ("PrincipalType",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalType
    ]

instance FromJSON ServiceCatalogPortfolioPrincipalAssociation where
  parseJSON (Object obj) =
    ServiceCatalogPortfolioPrincipalAssociation <$>
      (obj .:? "AcceptLanguage") <*>
      (obj .: "PortfolioId") <*>
      (obj .: "PrincipalARN") <*>
      (obj .: "PrincipalType")
  parseJSON _ = mempty

-- | Constructor for 'ServiceCatalogPortfolioPrincipalAssociation' containing
-- required fields as arguments.
serviceCatalogPortfolioPrincipalAssociation
  :: Val Text -- ^ 'scppriaPortfolioId'
  -> Val Text -- ^ 'scppriaPrincipalARN'
  -> Val Text -- ^ 'scppriaPrincipalType'
  -> ServiceCatalogPortfolioPrincipalAssociation
serviceCatalogPortfolioPrincipalAssociation portfolioIdarg principalARNarg principalTypearg =
  ServiceCatalogPortfolioPrincipalAssociation
  { _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage = Nothing
  , _serviceCatalogPortfolioPrincipalAssociationPortfolioId = portfolioIdarg
  , _serviceCatalogPortfolioPrincipalAssociationPrincipalARN = principalARNarg
  , _serviceCatalogPortfolioPrincipalAssociationPrincipalType = principalTypearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-acceptlanguage
scppriaAcceptLanguage :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Maybe (Val Text))
scppriaAcceptLanguage = lens _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-portfolioid
scppriaPortfolioId :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Val Text)
scppriaPortfolioId = lens _serviceCatalogPortfolioPrincipalAssociationPortfolioId (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationPortfolioId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-principalarn
scppriaPrincipalARN :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Val Text)
scppriaPrincipalARN = lens _serviceCatalogPortfolioPrincipalAssociationPrincipalARN (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationPrincipalARN = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-principaltype
scppriaPrincipalType :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Val Text)
scppriaPrincipalType = lens _serviceCatalogPortfolioPrincipalAssociationPrincipalType (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationPrincipalType = a })