CreateDetectorModel
Important
End of support notice: On May 20,2026, AWS will end support for AWS IoT Events. After May 20,2026, you will no longer be able to access the AWS IoT Events console or AWS IoT Events resources. For more information, see AWS IoT Events end of support.
Creates a detector model.
Request Syntax
POST /detector-models HTTP/1.1
Content-type: application/json
{
"detectorModelDefinition": {
"initialStateName": "string
",
"states": [
{
"onEnter": {
"events": [
{
"actions": [
{
"clearTimer": {
"timerName": "string
"
},
"dynamoDB": {
"hashKeyField": "string
",
"hashKeyType": "string
",
"hashKeyValue": "string
",
"operation": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"payloadField": "string
",
"rangeKeyField": "string
",
"rangeKeyType": "string
",
"rangeKeyValue": "string
",
"tableName": "string
"
},
"dynamoDBv2": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"tableName": "string
"
},
"firehose": {
"deliveryStreamName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"separator": "string
"
},
"iotEvents": {
"inputName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"iotSiteWise": {
"assetId": "string
",
"entryId": "string
",
"propertyAlias": "string
",
"propertyId": "string
",
"propertyValue": {
"quality": "string
",
"timestamp": {
"offsetInNanos": "string
",
"timeInSeconds": "string
"
},
"value": {
"booleanValue": "string
",
"doubleValue": "string
",
"integerValue": "string
",
"stringValue": "string
"
}
}
},
"iotTopicPublish": {
"mqttTopic": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"lambda": {
"functionArn": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"resetTimer": {
"timerName": "string
"
},
"setTimer": {
"durationExpression": "string
",
"seconds": number
,
"timerName": "string
"
},
"setVariable": {
"value": "string
",
"variableName": "string
"
},
"sns": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"targetArn": "string
"
},
"sqs": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"queueUrl": "string
",
"useBase64": boolean
}
}
],
"condition": "string
",
"eventName": "string
"
}
]
},
"onExit": {
"events": [
{
"actions": [
{
"clearTimer": {
"timerName": "string
"
},
"dynamoDB": {
"hashKeyField": "string
",
"hashKeyType": "string
",
"hashKeyValue": "string
",
"operation": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"payloadField": "string
",
"rangeKeyField": "string
",
"rangeKeyType": "string
",
"rangeKeyValue": "string
",
"tableName": "string
"
},
"dynamoDBv2": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"tableName": "string
"
},
"firehose": {
"deliveryStreamName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"separator": "string
"
},
"iotEvents": {
"inputName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"iotSiteWise": {
"assetId": "string
",
"entryId": "string
",
"propertyAlias": "string
",
"propertyId": "string
",
"propertyValue": {
"quality": "string
",
"timestamp": {
"offsetInNanos": "string
",
"timeInSeconds": "string
"
},
"value": {
"booleanValue": "string
",
"doubleValue": "string
",
"integerValue": "string
",
"stringValue": "string
"
}
}
},
"iotTopicPublish": {
"mqttTopic": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"lambda": {
"functionArn": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"resetTimer": {
"timerName": "string
"
},
"setTimer": {
"durationExpression": "string
",
"seconds": number
,
"timerName": "string
"
},
"setVariable": {
"value": "string
",
"variableName": "string
"
},
"sns": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"targetArn": "string
"
},
"sqs": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"queueUrl": "string
",
"useBase64": boolean
}
}
],
"condition": "string
",
"eventName": "string
"
}
]
},
"onInput": {
"events": [
{
"actions": [
{
"clearTimer": {
"timerName": "string
"
},
"dynamoDB": {
"hashKeyField": "string
",
"hashKeyType": "string
",
"hashKeyValue": "string
",
"operation": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"payloadField": "string
",
"rangeKeyField": "string
",
"rangeKeyType": "string
",
"rangeKeyValue": "string
",
"tableName": "string
"
},
"dynamoDBv2": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"tableName": "string
"
},
"firehose": {
"deliveryStreamName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"separator": "string
"
},
"iotEvents": {
"inputName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"iotSiteWise": {
"assetId": "string
",
"entryId": "string
",
"propertyAlias": "string
",
"propertyId": "string
",
"propertyValue": {
"quality": "string
",
"timestamp": {
"offsetInNanos": "string
",
"timeInSeconds": "string
"
},
"value": {
"booleanValue": "string
",
"doubleValue": "string
",
"integerValue": "string
",
"stringValue": "string
"
}
}
},
"iotTopicPublish": {
"mqttTopic": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"lambda": {
"functionArn": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"resetTimer": {
"timerName": "string
"
},
"setTimer": {
"durationExpression": "string
",
"seconds": number
,
"timerName": "string
"
},
"setVariable": {
"value": "string
",
"variableName": "string
"
},
"sns": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"targetArn": "string
"
},
"sqs": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"queueUrl": "string
",
"useBase64": boolean
}
}
],
"condition": "string
",
"eventName": "string
"
}
],
"transitionEvents": [
{
"actions": [
{
"clearTimer": {
"timerName": "string
"
},
"dynamoDB": {
"hashKeyField": "string
",
"hashKeyType": "string
",
"hashKeyValue": "string
",
"operation": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"payloadField": "string
",
"rangeKeyField": "string
",
"rangeKeyType": "string
",
"rangeKeyValue": "string
",
"tableName": "string
"
},
"dynamoDBv2": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"tableName": "string
"
},
"firehose": {
"deliveryStreamName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"separator": "string
"
},
"iotEvents": {
"inputName": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"iotSiteWise": {
"assetId": "string
",
"entryId": "string
",
"propertyAlias": "string
",
"propertyId": "string
",
"propertyValue": {
"quality": "string
",
"timestamp": {
"offsetInNanos": "string
",
"timeInSeconds": "string
"
},
"value": {
"booleanValue": "string
",
"doubleValue": "string
",
"integerValue": "string
",
"stringValue": "string
"
}
}
},
"iotTopicPublish": {
"mqttTopic": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"lambda": {
"functionArn": "string
",
"payload": {
"contentExpression": "string
",
"type": "string
"
}
},
"resetTimer": {
"timerName": "string
"
},
"setTimer": {
"durationExpression": "string
",
"seconds": number
,
"timerName": "string
"
},
"setVariable": {
"value": "string
",
"variableName": "string
"
},
"sns": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"targetArn": "string
"
},
"sqs": {
"payload": {
"contentExpression": "string
",
"type": "string
"
},
"queueUrl": "string
",
"useBase64": boolean
}
}
],
"condition": "string
",
"eventName": "string
",
"nextState": "string
"
}
]
},
"stateName": "string
"
}
]
},
"detectorModelDescription": "string
",
"detectorModelName": "string
",
"evaluationMethod": "string
",
"key": "string
",
"roleArn": "string
",
"tags": [
{
"key": "string
",
"value": "string
"
}
]
}
URI Request Parameters
The request does not use any URI parameters.
Request Body
The request accepts the following data in JSON format.
- detectorModelDefinition
-
Information that defines how the detectors operate.
Type: DetectorModelDefinition object
Required: Yes
- detectorModelDescription
-
A brief description of the detector model.
Type: String
Length Constraints: Maximum length of 1024.
Required: No
- detectorModelName
-
The name of the detector model.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 128.
Pattern:
^[a-zA-Z0-9_-]+$
Required: Yes
- evaluationMethod
-
Information about the order in which events are evaluated and how actions are executed.
Default:
BATCH
Type: String
Valid Values:
BATCH | SERIAL
Required: No
- key
-
The input attribute key used to identify a device or system to create a detector (an instance of the detector model) and then to route each input received to the appropriate detector (instance). This parameter uses a JSON-path expression in the message payload of each input to specify the attribute-value pair that is used to identify the device associated with the input.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 128.
Pattern:
^((`[\w\- ]+`)|([\w\-]+))(\.((`[\w- ]+`)|([\w\-]+)))*$
Required: No
- roleArn
-
The ARN of the role that grants permission to AWS IoT Events to perform its operations.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 2048.
Required: Yes
-
Metadata that can be used to manage the detector model.
Type: Array of Tag objects
Required: No
Response Syntax
HTTP/1.1 200
Content-type: application/json
{
"detectorModelConfiguration": {
"creationTime": number,
"detectorModelArn": "string",
"detectorModelDescription": "string",
"detectorModelName": "string",
"detectorModelVersion": "string",
"evaluationMethod": "string",
"key": "string",
"lastUpdateTime": number,
"roleArn": "string",
"status": "string"
}
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
- detectorModelConfiguration
-
Information about how the detector model is configured.
Type: DetectorModelConfiguration object
Errors
For information about the errors that are common to all actions, see Common Errors.
- InternalFailureException
-
An internal failure occurred.
HTTP Status Code: 500
- InvalidRequestException
-
The request was invalid.
HTTP Status Code: 400
- LimitExceededException
-
A limit was exceeded.
HTTP Status Code: 410
- ResourceAlreadyExistsException
-
The resource already exists.
HTTP Status Code: 409
- ResourceInUseException
-
The resource is in use.
HTTP Status Code: 409
- ServiceUnavailableException
-
The service is currently unavailable.
HTTP Status Code: 503
- ThrottlingException
-
The request could not be completed due to throttling.
HTTP Status Code: 429
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: