packages feed

stratosphere-apigatewayv2-1.0.0: gen/Stratosphere/ApiGatewayV2/Integration.hs

module Stratosphere.ApiGatewayV2.Integration (
        module Exports, Integration(..), mkIntegration
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Integration.ResponseParameterMapProperty as Exports
import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Integration.TlsConfigProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data Integration
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html>
    Integration {haddock_workaround_ :: (),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-apiid>
                 apiId :: (Value Prelude.Text),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-connectionid>
                 connectionId :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-connectiontype>
                 connectionType :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-contenthandlingstrategy>
                 contentHandlingStrategy :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-credentialsarn>
                 credentialsArn :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-description>
                 description :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationmethod>
                 integrationMethod :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationsubtype>
                 integrationSubtype :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationtype>
                 integrationType :: (Value Prelude.Text),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationuri>
                 integrationUri :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-passthroughbehavior>
                 passthroughBehavior :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-payloadformatversion>
                 payloadFormatVersion :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-requestparameters>
                 requestParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-requesttemplates>
                 requestTemplates :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-responseparameters>
                 responseParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text ResponseParameterMapProperty)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-templateselectionexpression>
                 templateSelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-timeoutinmillis>
                 timeoutInMillis :: (Prelude.Maybe (Value Prelude.Integer)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-tlsconfig>
                 tlsConfig :: (Prelude.Maybe TlsConfigProperty)}
  deriving stock (Prelude.Eq, Prelude.Show)
mkIntegration ::
  Value Prelude.Text -> Value Prelude.Text -> Integration
mkIntegration apiId integrationType
  = Integration
      {haddock_workaround_ = (), apiId = apiId,
       integrationType = integrationType, connectionId = Prelude.Nothing,
       connectionType = Prelude.Nothing,
       contentHandlingStrategy = Prelude.Nothing,
       credentialsArn = Prelude.Nothing, description = Prelude.Nothing,
       integrationMethod = Prelude.Nothing,
       integrationSubtype = Prelude.Nothing,
       integrationUri = Prelude.Nothing,
       passthroughBehavior = Prelude.Nothing,
       payloadFormatVersion = Prelude.Nothing,
       requestParameters = Prelude.Nothing,
       requestTemplates = Prelude.Nothing,
       responseParameters = Prelude.Nothing,
       templateSelectionExpression = Prelude.Nothing,
       timeoutInMillis = Prelude.Nothing, tlsConfig = Prelude.Nothing}
instance ToResourceProperties Integration where
  toResourceProperties Integration {..}
    = ResourceProperties
        {awsType = "AWS::ApiGatewayV2::Integration",
         supportsTags = Prelude.False,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["ApiId" JSON..= apiId, "IntegrationType" JSON..= integrationType]
                           (Prelude.catMaybes
                              [(JSON..=) "ConnectionId" Prelude.<$> connectionId,
                               (JSON..=) "ConnectionType" Prelude.<$> connectionType,
                               (JSON..=) "ContentHandlingStrategy"
                                 Prelude.<$> contentHandlingStrategy,
                               (JSON..=) "CredentialsArn" Prelude.<$> credentialsArn,
                               (JSON..=) "Description" Prelude.<$> description,
                               (JSON..=) "IntegrationMethod" Prelude.<$> integrationMethod,
                               (JSON..=) "IntegrationSubtype" Prelude.<$> integrationSubtype,
                               (JSON..=) "IntegrationUri" Prelude.<$> integrationUri,
                               (JSON..=) "PassthroughBehavior" Prelude.<$> passthroughBehavior,
                               (JSON..=) "PayloadFormatVersion" Prelude.<$> payloadFormatVersion,
                               (JSON..=) "RequestParameters" Prelude.<$> requestParameters,
                               (JSON..=) "RequestTemplates" Prelude.<$> requestTemplates,
                               (JSON..=) "ResponseParameters" Prelude.<$> responseParameters,
                               (JSON..=) "TemplateSelectionExpression"
                                 Prelude.<$> templateSelectionExpression,
                               (JSON..=) "TimeoutInMillis" Prelude.<$> timeoutInMillis,
                               (JSON..=) "TlsConfig" Prelude.<$> tlsConfig]))}
instance JSON.ToJSON Integration where
  toJSON Integration {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["ApiId" JSON..= apiId, "IntegrationType" JSON..= integrationType]
              (Prelude.catMaybes
                 [(JSON..=) "ConnectionId" Prelude.<$> connectionId,
                  (JSON..=) "ConnectionType" Prelude.<$> connectionType,
                  (JSON..=) "ContentHandlingStrategy"
                    Prelude.<$> contentHandlingStrategy,
                  (JSON..=) "CredentialsArn" Prelude.<$> credentialsArn,
                  (JSON..=) "Description" Prelude.<$> description,
                  (JSON..=) "IntegrationMethod" Prelude.<$> integrationMethod,
                  (JSON..=) "IntegrationSubtype" Prelude.<$> integrationSubtype,
                  (JSON..=) "IntegrationUri" Prelude.<$> integrationUri,
                  (JSON..=) "PassthroughBehavior" Prelude.<$> passthroughBehavior,
                  (JSON..=) "PayloadFormatVersion" Prelude.<$> payloadFormatVersion,
                  (JSON..=) "RequestParameters" Prelude.<$> requestParameters,
                  (JSON..=) "RequestTemplates" Prelude.<$> requestTemplates,
                  (JSON..=) "ResponseParameters" Prelude.<$> responseParameters,
                  (JSON..=) "TemplateSelectionExpression"
                    Prelude.<$> templateSelectionExpression,
                  (JSON..=) "TimeoutInMillis" Prelude.<$> timeoutInMillis,
                  (JSON..=) "TlsConfig" Prelude.<$> tlsConfig])))
instance Property "ApiId" Integration where
  type PropertyType "ApiId" Integration = Value Prelude.Text
  set newValue Integration {..} = Integration {apiId = newValue, ..}
instance Property "ConnectionId" Integration where
  type PropertyType "ConnectionId" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {connectionId = Prelude.pure newValue, ..}
instance Property "ConnectionType" Integration where
  type PropertyType "ConnectionType" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {connectionType = Prelude.pure newValue, ..}
instance Property "ContentHandlingStrategy" Integration where
  type PropertyType "ContentHandlingStrategy" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {contentHandlingStrategy = Prelude.pure newValue, ..}
instance Property "CredentialsArn" Integration where
  type PropertyType "CredentialsArn" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {credentialsArn = Prelude.pure newValue, ..}
instance Property "Description" Integration where
  type PropertyType "Description" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {description = Prelude.pure newValue, ..}
instance Property "IntegrationMethod" Integration where
  type PropertyType "IntegrationMethod" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {integrationMethod = Prelude.pure newValue, ..}
instance Property "IntegrationSubtype" Integration where
  type PropertyType "IntegrationSubtype" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {integrationSubtype = Prelude.pure newValue, ..}
instance Property "IntegrationType" Integration where
  type PropertyType "IntegrationType" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {integrationType = newValue, ..}
instance Property "IntegrationUri" Integration where
  type PropertyType "IntegrationUri" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {integrationUri = Prelude.pure newValue, ..}
instance Property "PassthroughBehavior" Integration where
  type PropertyType "PassthroughBehavior" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {passthroughBehavior = Prelude.pure newValue, ..}
instance Property "PayloadFormatVersion" Integration where
  type PropertyType "PayloadFormatVersion" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration {payloadFormatVersion = Prelude.pure newValue, ..}
instance Property "RequestParameters" Integration where
  type PropertyType "RequestParameters" Integration = Prelude.Map Prelude.Text (Value Prelude.Text)
  set newValue Integration {..}
    = Integration {requestParameters = Prelude.pure newValue, ..}
instance Property "RequestTemplates" Integration where
  type PropertyType "RequestTemplates" Integration = Prelude.Map Prelude.Text (Value Prelude.Text)
  set newValue Integration {..}
    = Integration {requestTemplates = Prelude.pure newValue, ..}
instance Property "ResponseParameters" Integration where
  type PropertyType "ResponseParameters" Integration = Prelude.Map Prelude.Text ResponseParameterMapProperty
  set newValue Integration {..}
    = Integration {responseParameters = Prelude.pure newValue, ..}
instance Property "TemplateSelectionExpression" Integration where
  type PropertyType "TemplateSelectionExpression" Integration = Value Prelude.Text
  set newValue Integration {..}
    = Integration
        {templateSelectionExpression = Prelude.pure newValue, ..}
instance Property "TimeoutInMillis" Integration where
  type PropertyType "TimeoutInMillis" Integration = Value Prelude.Integer
  set newValue Integration {..}
    = Integration {timeoutInMillis = Prelude.pure newValue, ..}
instance Property "TlsConfig" Integration where
  type PropertyType "TlsConfig" Integration = TlsConfigProperty
  set newValue Integration {..}
    = Integration {tlsConfig = Prelude.pure newValue, ..}