package awsiotevents


// Specifies one of the following actions to receive notifications when the alarm state changes.
//
// 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"
//
//   alarmActionProperty := &AlarmActionProperty{
//   	DynamoDb: &DynamoDBProperty{
//   		HashKeyField: jsii.String("hashKeyField"),
//   		HashKeyValue: jsii.String("hashKeyValue"),
//   		TableName: jsii.String("tableName"),
//
//   		// the properties below are optional
//   		HashKeyType: jsii.String("hashKeyType"),
//   		Operation: jsii.String("operation"),
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   		PayloadField: jsii.String("payloadField"),
//   		RangeKeyField: jsii.String("rangeKeyField"),
//   		RangeKeyType: jsii.String("rangeKeyType"),
//   		RangeKeyValue: jsii.String("rangeKeyValue"),
//   	},
//   	DynamoDBv2: &DynamoDBv2Property{
//   		TableName: jsii.String("tableName"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   	},
//   	Firehose: &FirehoseProperty{
//   		DeliveryStreamName: jsii.String("deliveryStreamName"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   		Separator: jsii.String("separator"),
//   	},
//   	IotEvents: &IotEventsProperty{
//   		InputName: jsii.String("inputName"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   	},
//   	IotSiteWise: &IotSiteWiseProperty{
//   		AssetId: jsii.String("assetId"),
//   		EntryId: jsii.String("entryId"),
//   		PropertyAlias: jsii.String("propertyAlias"),
//   		PropertyId: jsii.String("propertyId"),
//   		PropertyValue: &AssetPropertyValueProperty{
//   			Value: &AssetPropertyVariantProperty{
//   				BooleanValue: jsii.String("booleanValue"),
//   				DoubleValue: jsii.String("doubleValue"),
//   				IntegerValue: jsii.String("integerValue"),
//   				StringValue: jsii.String("stringValue"),
//   			},
//
//   			// the properties below are optional
//   			Quality: jsii.String("quality"),
//   			Timestamp: &AssetPropertyTimestampProperty{
//   				TimeInSeconds: jsii.String("timeInSeconds"),
//
//   				// the properties below are optional
//   				OffsetInNanos: jsii.String("offsetInNanos"),
//   			},
//   		},
//   	},
//   	IotTopicPublish: &IotTopicPublishProperty{
//   		MqttTopic: jsii.String("mqttTopic"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   	},
//   	Lambda: &LambdaProperty{
//   		FunctionArn: jsii.String("functionArn"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   	},
//   	Sns: &SnsProperty{
//   		TargetArn: jsii.String("targetArn"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   	},
//   	Sqs: &SqsProperty{
//   		QueueUrl: jsii.String("queueUrl"),
//
//   		// the properties below are optional
//   		Payload: &PayloadProperty{
//   			ContentExpression: jsii.String("contentExpression"),
//   			Type: jsii.String("type"),
//   		},
//   		UseBase64: jsii.Boolean(false),
//   	},
//   }
//
// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html
//
type CfnAlarmModel_AlarmActionProperty struct {
	// Defines an action to write to the Amazon DynamoDB table that you created.
	//
	// The standard action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html) . One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify.
	//
	// You must use expressions for all parameters in `DynamoDBAction` . The expressions accept literals, operators, functions, references, and substitution templates.
	//
	// **Examples** - For literal values, the expressions must contain single quotes. For example, the value for the `hashKeyType` parameter can be `'STRING'` .
	// - For references, you must specify either variables or input values. For example, the value for the `hashKeyField` parameter can be `$input.GreenhouseInput.name` .
	// - For a substitution template, you must use `${}` , and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.
	//
	// In the following example, the value for the `hashKeyValue` parameter uses a substitution template.
	//
	// `'${$input.GreenhouseInput.temperature * 6 / 5 + 32} in Fahrenheit'`
	// - For a string concatenation, you must use `+` . A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.
	//
	// In the following example, the value for the `tableName` parameter uses a string concatenation.
	//
	// `'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`
	//
	// For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *AWS IoT Events Developer Guide* .
	//
	// If the defined payload type is a string, `DynamoDBAction` writes non-JSON data to the DynamoDB table as binary data. The DynamoDB console displays the data as Base64-encoded text. The value for the `payloadField` parameter is `<payload-field>_raw` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-dynamodb
	//
	DynamoDb interface{} `field:"optional" json:"dynamoDb" yaml:"dynamoDb"`
	// Defines an action to write to the Amazon DynamoDB table that you created.
	//
	// The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html) . A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.
	//
	// You must use expressions for all parameters in `DynamoDBv2Action` . The expressions accept literals, operators, functions, references, and substitution templates.
	//
	// **Examples** - For literal values, the expressions must contain single quotes. For example, the value for the `tableName` parameter can be `'GreenhouseTemperatureTable'` .
	// - For references, you must specify either variables or input values. For example, the value for the `tableName` parameter can be `$variable.ddbtableName` .
	// - For a substitution template, you must use `${}` , and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.
	//
	// In the following example, the value for the `contentExpression` parameter in `Payload` uses a substitution template.
	//
	// `'{\"sensorID\": \"${$input.GreenhouseInput.sensor_id}\", \"temperature\": \"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\"}'`
	// - For a string concatenation, you must use `+` . A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.
	//
	// In the following example, the value for the `tableName` parameter uses a string concatenation.
	//
	// `'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`
	//
	// For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *AWS IoT Events Developer Guide* .
	//
	// The value for the `type` parameter in `Payload` must be `JSON` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-dynamodbv2
	//
	DynamoDBv2 interface{} `field:"optional" json:"dynamoDBv2" yaml:"dynamoDBv2"`
	// Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-firehose
	//
	Firehose interface{} `field:"optional" json:"firehose" yaml:"firehose"`
	// Sends an AWS IoT Events input, passing in information about the detector model instance and the event that triggered the action.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-iotevents
	//
	IotEvents interface{} `field:"optional" json:"iotEvents" yaml:"iotEvents"`
	// Sends information about the detector model instance and the event that triggered the action to a specified asset property in AWS IoT SiteWise .
	//
	// You must use expressions for all parameters in `IotSiteWiseAction` . The expressions accept literals, operators, functions, references, and substitutions templates.
	//
	// **Examples** - For literal values, the expressions must contain single quotes. For example, the value for the `propertyAlias` parameter can be `'/company/windfarm/3/turbine/7/temperature'` .
	// - For references, you must specify either variables or input values. For example, the value for the `assetId` parameter can be `$input.TurbineInput.assetId1` .
	// - For a substitution template, you must use `${}` , and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.
	//
	// In the following example, the value for the `propertyAlias` parameter uses a substitution template.
	//
	// `'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`
	//
	// You must specify either `propertyAlias` or both `assetId` and `propertyId` to identify the target asset property in AWS IoT SiteWise .
	//
	// For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *AWS IoT Events Developer Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-iotsitewise
	//
	IotSiteWise interface{} `field:"optional" json:"iotSiteWise" yaml:"iotSiteWise"`
	// Information required to publish the MQTT message through the AWS IoT message broker.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-iottopicpublish
	//
	IotTopicPublish interface{} `field:"optional" json:"iotTopicPublish" yaml:"iotTopicPublish"`
	// Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-lambda
	//
	Lambda interface{} `field:"optional" json:"lambda" yaml:"lambda"`
	// Information required to publish the Amazon SNS message.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-sns
	//
	Sns interface{} `field:"optional" json:"sns" yaml:"sns"`
	// Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotevents-alarmmodel-alarmaction.html#cfn-iotevents-alarmmodel-alarmaction-sqs
	//
	Sqs interface{} `field:"optional" json:"sqs" yaml:"sqs"`
}

