/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run json-schema-to-typescript to regenerate this file. */ /** * The AWS::IoTEvents::DetectorModel resource creates a detector model. You create a *detector model* (a model of your equipment or process) using *states*. For each state, you define conditional (Boolean) logic that evaluates the incoming inputs to detect significant events. When an event is detected, it can change the state or trigger custom-built or predefined actions using other AWS services. You can define additional events that trigger actions when entering or exiting a state and, optionally, when a condition is met. For more information, see [How to Use AWS IoT Events](https://docs.aws.amazon.com/iotevents/latest/developerguide/how-to-use-iotevents.html) in the *AWS IoT Events Developer Guide*. */ export interface AwsIoteventsDetectormodel { DetectorModelDefinition: DetectorModelDefinition; /** * A brief description of the detector model. */ DetectorModelDescription?: string; /** * The name of the detector model. */ DetectorModelName?: string; /** * Information about the order in which events are evaluated and how actions are executed. */ EvaluationMethod?: "BATCH" | "SERIAL"; /** * The value used to identify a detector instance. When a device or system sends input, a new detector instance with a unique key value is created. AWS IoT Events can continue to route input to its corresponding detector instance based on this identifying information. * * This parameter uses a JSON-path expression to select the attribute-value pair in the message payload that is used for identification. To route the message to the correct detector instance, the device must send a message payload that contains the same attribute-value. */ Key?: string; /** * The ARN of the role that grants permission to AWS IoT Events to perform its operations. */ RoleArn: string; /** * An array of key-value pairs to apply to this resource. * * For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html). */ Tags?: Tag[]; } /** * Information that defines how a detector operates. */ export interface DetectorModelDefinition { /** * The state that is entered at the creation of each detector (instance). */ InitialStateName: string; /** * Information about the states of the detector. * * @minItems 1 */ States: [State, ...State[]]; } /** * Information that defines a state of a detector. */ export interface State { OnEnter?: OnEnter; OnExit?: OnExit; OnInput?: OnInput; /** * The name of the state. */ StateName: string; } /** * When entering this state, perform these `actions` if the `condition` is `TRUE`. */ export interface OnEnter { /** * Specifies the `actions` that are performed when the state is entered and the `condition` is `TRUE`. */ Events?: Event[]; } /** * Specifies the `actions` to be performed when the `condition` evaluates to `TRUE`. */ export interface Event { /** * The actions to be performed. */ Actions?: Action[]; /** * The Boolean expression that, when `TRUE`, causes the `actions` to be performed. If not present, the `actions` are performed (=`TRUE`). If the expression result is not a `Boolean` value, the `actions` are not performed (=`FALSE`). */ Condition?: string; /** * The name of the event. */ EventName: string; } /** * The actions to be performed. */ export interface Action { ClearTimer?: ClearTimer; DynamoDB?: DynamoDB; DynamoDBv2?: DynamoDBv2; Firehose?: Firehose; IotEvents?: IotEvents; IotSiteWise?: IotSiteWise; IotTopicPublish?: IotTopicPublish; Lambda?: Lambda; ResetTimer?: ResetTimer; SetTimer?: SetTimer; SetVariable?: SetVariable; Sns?: Sns; Sqs?: Sqs; } /** * Information needed to clear the timer. */ export interface ClearTimer { TimerName: string; } /** * Writes to the DynamoDB table that you created. The default action payload contains all attribute-value pairs that have the information about the detector model instance and the event that triggered the action. You can also 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. For more information, see [Actions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-event-actions.html) in *AWS IoT Events Developer Guide*. */ export interface DynamoDB { /** * The name of the hash key (also called the partition key). */ HashKeyField: string; /** * The data type for the hash key (also called the partition key). You can specify the following values: * * * `STRING` - The hash key is a string. * * * `NUMBER` - The hash key is a number. * * If you don't specify `hashKeyType`, the default value is `STRING`. */ HashKeyType?: string; /** * The value of the hash key (also called the partition key). */ HashKeyValue: string; /** * The type of operation to perform. You can specify the following values: * * * `INSERT` - Insert data as a new item into the DynamoDB table. This item uses the specified hash key as a partition key. If you specified a range key, the item uses the range key as a sort key. * * * `UPDATE` - Update an existing item of the DynamoDB table with new data. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key. * * * `DELETE` - Delete an existing item of the DynamoDB table. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key. * * If you don't specify this parameter, AWS IoT Events triggers the `INSERT` operation. */ Operation?: string; Payload?: Payload; /** * The name of the DynamoDB column that receives the action payload. * * If you don't specify this parameter, the name of the DynamoDB column is `payload`. */ PayloadField?: string; /** * The name of the range key (also called the sort key). */ RangeKeyField?: string; /** * The data type for the range key (also called the sort key), You can specify the following values: * * * `STRING` - The range key is a string. * * * `NUMBER` - The range key is number. * * If you don't specify `rangeKeyField`, the default value is `STRING`. */ RangeKeyType?: string; /** * The value of the range key (also called the sort key). */ RangeKeyValue?: string; /** * The name of the DynamoDB table. */ TableName: string; } /** * Information needed to configure the payload. * * By default, AWS IoT Events generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use `contentExpression`. */ export interface Payload { /** * The content of the payload. You can use a string expression that includes quoted strings (`''`), variables (`$variable.`), input values (`$input..`), string concatenations, and quoted strings that contain `${}` as the content. The recommended maximum size of a content expression is 1 KB. */ ContentExpression: string; /** * The value of the payload type can be either `STRING` or `JSON`. */ Type: string; } /** * Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all attribute-value pairs that have the information about the detector model instance and the event that triggered the action. You can also 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 can use expressions for parameters that are strings. For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *AWS IoT Events Developer Guide*. */ export interface DynamoDBv2 { Payload?: Payload; /** * The name of the DynamoDB table. */ TableName: string; } /** * Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream. */ export interface Firehose { /** * The name of the Kinesis Data Firehose delivery stream where the data is written. */ DeliveryStreamName: string; Payload?: Payload; /** * A character separator that is used to separate records written to the Kinesis Data Firehose delivery stream. Valid values are: '\n' (newline), '\t' (tab), '\r\n' (Windows newline), ',' (comma). */ Separator?: string; } /** * Sends an AWS IoT Events input, passing in information about the detector model instance and the event that triggered the action. */ export interface IotEvents { /** * The name of the AWS IoT Events input where the data is sent. */ InputName: string; Payload?: Payload; } /** * Sends information about the detector model instance and the event that triggered the action to a specified asset property in AWS IoT SiteWise. */ export interface IotSiteWise { /** * The ID of the asset that has the specified property. You can specify an expression. */ AssetId?: string; /** * A unique identifier for this entry. You can use the entry ID to track which data entry causes an error in case of failure. The default is a new unique identifier. You can also specify an expression. */ EntryId?: string; /** * The alias of the asset property. You can also specify an expression. */ PropertyAlias?: string; /** * The ID of the asset property. You can specify an expression. */ PropertyId?: string; PropertyValue: AssetPropertyValue; } /** * A structure that contains value information. For more information, see [AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html) in the *AWS IoT SiteWise API Reference*. */ export interface AssetPropertyValue { /** * The quality of the asset property value. The value must be `GOOD`, `BAD`, or `UNCERTAIN`. You can also specify an expression. */ Quality?: string; Timestamp?: AssetPropertyTimestamp; Value: AssetPropertyVariant; } /** * A structure that contains timestamp information. For more information, see [TimeInNanos](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TimeInNanos.html) in the *AWS IoT SiteWise API Reference*. */ export interface AssetPropertyTimestamp { /** * The timestamp, in seconds, in the Unix epoch format. The valid range is between `1-31556889864403199`. You can also specify an expression. */ OffsetInNanos?: string; /** * The nanosecond offset converted from `timeInSeconds`. The valid range is between `0-999999999`. You can also specify an expression. */ TimeInSeconds: string; } /** * A structure that contains an asset property value. For more information, see [Variant](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Variant.html) in the *AWS IoT SiteWise API Reference*. */ export interface AssetPropertyVariant { /** * The asset property value is a Boolean value that must be `TRUE` or `FALSE`. You can also specify an expression. If you use an expression, the evaluated result should be a Boolean value. */ BooleanValue?: string; /** * The asset property value is a double. You can also specify an expression. If you use an expression, the evaluated result should be a double. */ DoubleValue?: string; /** * The asset property value is an integer. You can also specify an expression. If you use an expression, the evaluated result should be an integer. */ IntegerValue?: string; /** * The asset property value is a string. You can also specify an expression. If you use an expression, the evaluated result should be a string. */ StringValue?: string; } /** * Information required to publish the MQTT message through the AWS IoT message broker. */ export interface IotTopicPublish { /** * The MQTT topic of the message. You can use a string expression that includes variables (`$variable.`) and input values (`$input..`) as the topic string. */ MqttTopic: string; Payload?: Payload; } export interface Lambda { /** * The ARN of the Lambda function that is executed. */ FunctionArn: string; Payload?: Payload; } /** * Information required to reset the timer. The timer is reset to the previously evaluated result of the duration. The duration expression isn't reevaluated when you reset the timer. */ export interface ResetTimer { /** * The name of the timer to reset. */ TimerName: string; } /** * Information needed to set the timer. */ export interface SetTimer { /** * The duration of the timer, in seconds. You can use a string expression that includes numbers, variables (`$variable.`), and input values (`$input..`) as the duration. The range of the duration is `1-31622400` seconds. To ensure accuracy, the minimum duration is `60` seconds. The evaluated result of the duration is rounded down to the nearest whole number. */ DurationExpression?: string; /** * The number of seconds until the timer expires. The minimum value is `60` seconds to ensure accuracy. The maximum value is `31622400` seconds. */ Seconds?: number; /** * The name of the timer. */ TimerName: string; } /** * Information about the variable and its new value. */ export interface SetVariable { /** * The new value of the variable. */ Value: string; /** * The name of the variable. */ VariableName: string; } /** * Information required to publish the Amazon SNS message. */ export interface Sns { Payload?: Payload; /** * The ARN of the Amazon SNS target where the message is sent. */ TargetArn: string; } export interface Sqs { Payload?: Payload; /** * The URL of the SQS queue where the data is written. */ QueueUrl: string; /** * Set this to `TRUE` if you want the data to be base-64 encoded before it is written to the queue. Otherwise, set this to `FALSE`. */ UseBase64?: boolean; } /** * When exiting this state, perform these `actions` if the specified `condition` is `TRUE`. */ export interface OnExit { /** * Specifies the `actions` that are performed when the state is exited and the `condition` is `TRUE`. */ Events?: Event[]; } /** * When an input is received and the `condition` is `TRUE`, perform the specified `actions`. */ export interface OnInput { /** * Specifies the `actions` performed when the `condition` evaluates to `TRUE`. */ Events?: Event[]; /** * Specifies the `actions` performed, and the next `state` entered, when a `condition` evaluates to `TRUE`. */ TransitionEvents?: TransitionEvent[]; } /** * Specifies the `actions `performed and the next `state` entered when a `condition` evaluates to `TRUE`. */ export interface TransitionEvent { /** * The actions to be performed. */ Actions?: Action[]; /** * A Boolean expression that when `TRUE` causes the `actions` to be performed and the `nextState` to be entered. */ Condition: string; /** * The name of the event. */ EventName: string; /** * The next state to enter. */ NextState: string; } /** * Tags to be applied to Input. */ export interface Tag { /** * Key of the Tag. */ Key: string; /** * Value of the Tag. */ Value: string; }