package awselasticloadbalancingv2


// Specifies an action for a listener rule.
//
// Example:
//   // The code below shows an example of how to instantiate this type.
//   // The values are placeholders you should change.
//   import "github.com/aws/aws-cdk-go/awscdk"
//
//   actionProperty := &ActionProperty{
//   	Type: jsii.String("type"),
//
//   	// the properties below are optional
//   	AuthenticateCognitoConfig: &AuthenticateCognitoConfigProperty{
//   		UserPoolArn: jsii.String("userPoolArn"),
//   		UserPoolClientId: jsii.String("userPoolClientId"),
//   		UserPoolDomain: jsii.String("userPoolDomain"),
//
//   		// the properties below are optional
//   		AuthenticationRequestExtraParams: map[string]*string{
//   			"authenticationRequestExtraParamsKey": jsii.String("authenticationRequestExtraParams"),
//   		},
//   		OnUnauthenticatedRequest: jsii.String("onUnauthenticatedRequest"),
//   		Scope: jsii.String("scope"),
//   		SessionCookieName: jsii.String("sessionCookieName"),
//   		SessionTimeout: jsii.Number(123),
//   	},
//   	AuthenticateOidcConfig: &AuthenticateOidcConfigProperty{
//   		AuthorizationEndpoint: jsii.String("authorizationEndpoint"),
//   		ClientId: jsii.String("clientId"),
//   		Issuer: jsii.String("issuer"),
//   		TokenEndpoint: jsii.String("tokenEndpoint"),
//   		UserInfoEndpoint: jsii.String("userInfoEndpoint"),
//
//   		// the properties below are optional
//   		AuthenticationRequestExtraParams: map[string]*string{
//   			"authenticationRequestExtraParamsKey": jsii.String("authenticationRequestExtraParams"),
//   		},
//   		ClientSecret: jsii.String("clientSecret"),
//   		OnUnauthenticatedRequest: jsii.String("onUnauthenticatedRequest"),
//   		Scope: jsii.String("scope"),
//   		SessionCookieName: jsii.String("sessionCookieName"),
//   		SessionTimeout: jsii.Number(123),
//   		UseExistingClientSecret: jsii.Boolean(false),
//   	},
//   	FixedResponseConfig: &FixedResponseConfigProperty{
//   		StatusCode: jsii.String("statusCode"),
//
//   		// the properties below are optional
//   		ContentType: jsii.String("contentType"),
//   		MessageBody: jsii.String("messageBody"),
//   	},
//   	ForwardConfig: &ForwardConfigProperty{
//   		TargetGroups: []interface{}{
//   			&TargetGroupTupleProperty{
//   				TargetGroupArn: jsii.String("targetGroupArn"),
//   				Weight: jsii.Number(123),
//   			},
//   		},
//   		TargetGroupStickinessConfig: &TargetGroupStickinessConfigProperty{
//   			DurationSeconds: jsii.Number(123),
//   			Enabled: jsii.Boolean(false),
//   		},
//   	},
//   	Order: jsii.Number(123),
//   	RedirectConfig: &RedirectConfigProperty{
//   		StatusCode: jsii.String("statusCode"),
//
//   		// the properties below are optional
//   		Host: jsii.String("host"),
//   		Path: jsii.String("path"),
//   		Port: jsii.String("port"),
//   		Protocol: jsii.String("protocol"),
//   		Query: jsii.String("query"),
//   	},
//   	TargetGroupArn: jsii.String("targetGroupArn"),
//   }
//
// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html
//
type CfnListenerRule_ActionProperty struct {
	// The type of action.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-type
	//
	Type *string `field:"required" json:"type" yaml:"type"`
	// [HTTPS listeners] Information for using Amazon Cognito to authenticate users.
	//
	// Specify only when `Type` is `authenticate-cognito` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig
	//
	AuthenticateCognitoConfig interface{} `field:"optional" json:"authenticateCognitoConfig" yaml:"authenticateCognitoConfig"`
	// [HTTPS listeners] Information about an identity provider that is compliant with OpenID Connect (OIDC).
	//
	// Specify only when `Type` is `authenticate-oidc` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig
	//
	AuthenticateOidcConfig interface{} `field:"optional" json:"authenticateOidcConfig" yaml:"authenticateOidcConfig"`
	// [Application Load Balancer] Information for creating an action that returns a custom HTTP response.
	//
	// Specify only when `Type` is `fixed-response` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig
	//
	FixedResponseConfig interface{} `field:"optional" json:"fixedResponseConfig" yaml:"fixedResponseConfig"`
	// Information for creating an action that distributes requests among one or more target groups.
	//
	// For Network Load Balancers, you can specify a single target group. Specify only when `Type` is `forward` . If you specify both `ForwardConfig` and `TargetGroupArn` , you can specify only one target group using `ForwardConfig` and it must be the same target group specified in `TargetGroupArn` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig
	//
	ForwardConfig interface{} `field:"optional" json:"forwardConfig" yaml:"forwardConfig"`
	// The order for the action.
	//
	// This value is required for rules with multiple actions. The action with the lowest value for order is performed first.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-order
	//
	Order *float64 `field:"optional" json:"order" yaml:"order"`
	// [Application Load Balancer] Information for creating a redirect action.
	//
	// Specify only when `Type` is `redirect` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig
	//
	RedirectConfig interface{} `field:"optional" json:"redirectConfig" yaml:"redirectConfig"`
	// The Amazon Resource Name (ARN) of the target group.
	//
	// Specify only when `Type` is `forward` and you want to route to a single target group. To route to one or more target groups, use `ForwardConfig` instead.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-targetgrouparn
	//
	TargetGroupArn *string `field:"optional" json:"targetGroupArn" yaml:"targetGroupArn"`
}

