CreateAlarmModel

enum_ComparisonOperator := [ "GREATER", "GREATER_OR_EQUAL", "LESS", "LESS_OR_EQUAL", "EQUAL", "NOT_EQUAL" ]
enum_PayloadType := [ "STRING", "JSON" ]

valid {
    input.Body.alarmModelName == STRING
    input.Body.alarmModelDescription == STRING
    input.Body.roleArn == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.key == STRING
    input.Body.severity == INTEGER
    input.Body.alarmRule.simpleRule.inputProperty == STRING
    input.Body.alarmRule.simpleRule.comparisonOperator == enum_ComparisonOperator[_]
    input.Body.alarmRule.simpleRule.threshold == STRING
    input.Body.alarmNotification.notificationActions[_].action.lambdaAction.functionArn == STRING
    input.Body.alarmNotification.notificationActions[_].action.lambdaAction.payload.contentExpression == STRING
    input.Body.alarmNotification.notificationActions[_].action.lambdaAction.payload.type == enum_PayloadType[_]
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].senderId == STRING
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].additionalMessage == STRING
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].recipients[_].ssoIdentity.identityStoreId == STRING
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].recipients[_].ssoIdentity.userId == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].from == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].content.subject == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].content.additionalMessage == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].recipients.to[_].ssoIdentity.identityStoreId == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].recipients.to[_].ssoIdentity.userId == STRING
    input.Body.alarmEventActions.alarmActions[_].sns.targetArn == STRING
    input.Body.alarmEventActions.alarmActions[_].sns.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.alarmEventActions.alarmActions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].lambda.functionArn == STRING
    input.Body.alarmEventActions.alarmActions[_].lambda.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].iotEvents.inputName == STRING
    input.Body.alarmEventActions.alarmActions[_].iotEvents.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].sqs.queueUrl == STRING
    input.Body.alarmEventActions.alarmActions[_].sqs.useBase64 == BOOLEAN
    input.Body.alarmEventActions.alarmActions[_].sqs.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].firehose.deliveryStreamName == STRING
    input.Body.alarmEventActions.alarmActions[_].firehose.separator == STRING
    input.Body.alarmEventActions.alarmActions[_].firehose.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.hashKeyType == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.hashKeyField == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.hashKeyValue == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.rangeKeyType == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.rangeKeyField == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.operation == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.payloadField == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.tableName == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].dynamoDBv2.tableName == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.entryId == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.assetId == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyId == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyAlias == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.alarmCapabilities.initializationConfiguration.disabledOnInitialization == BOOLEAN
    input.Body.alarmCapabilities.acknowledgeFlow.enabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateDetectorModel

enum_EvaluationMethod := [ "BATCH", "SERIAL" ]
enum_PayloadType := [ "STRING", "JSON" ]

valid {
    input.Body.detectorModelName == STRING
    input.Body.detectorModelDefinition.states[_].stateName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].nextState == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.initialStateName == STRING
    input.Body.detectorModelDescription == STRING
    input.Body.key == STRING
    input.Body.roleArn == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.evaluationMethod == enum_EvaluationMethod[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateInput

valid {
    input.Body.inputName == STRING
    input.Body.inputDescription == STRING
    input.Body.inputDefinition.attributes[_].jsonPath == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAlarmModel

valid {
    input.ReqMap.alarmModelName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteDetectorModel

valid {
    input.ReqMap.detectorModelName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteInput

valid {
    input.ReqMap.inputName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAlarmModel

valid {
    input.ReqMap.alarmModelName == STRING
    input.Qs.version == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeDetectorModel

valid {
    input.ReqMap.detectorModelName == STRING
    input.Qs.version == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeDetectorModelAnalysis

valid {
    input.ReqMap.analysisId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeInput

valid {
    input.ReqMap.inputName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLoggingOptions

valid {
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetDetectorModelAnalysisResults

valid {
    input.ReqMap.analysisId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAlarmModelVersions

valid {
    input.ReqMap.alarmModelName == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAlarmModels

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDetectorModelVersions

valid {
    input.ReqMap.detectorModelName == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDetectorModels

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListInputRoutings

valid {
    input.Body.inputIdentifier.iotEventsInputIdentifier.inputName == STRING
    input.Body.inputIdentifier.iotSiteWiseInputIdentifier.iotSiteWiseAssetModelPropertyIdentifier.assetModelId == STRING
    input.Body.inputIdentifier.iotSiteWiseInputIdentifier.iotSiteWiseAssetModelPropertyIdentifier.propertyId == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListInputs

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.Qs.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutLoggingOptions

enum_LoggingLevel := [ "ERROR", "INFO", "DEBUG" ]

valid {
    input.Body.loggingOptions.roleArn == STRING
    input.Body.loggingOptions.level == enum_LoggingLevel[_]
    input.Body.loggingOptions.enabled == BOOLEAN
    input.Body.loggingOptions.detectorDebugOptions[_].detectorModelName == STRING
    input.Body.loggingOptions.detectorDebugOptions[_].keyValue == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartDetectorModelAnalysis

enum_PayloadType := [ "STRING", "JSON" ]

valid {
    input.Body.detectorModelDefinition.states[_].stateName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].nextState == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.initialStateName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Qs.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

valid {
    input.Qs.resourceArn == STRING
    input.Qs.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAlarmModel

enum_ComparisonOperator := [ "GREATER", "GREATER_OR_EQUAL", "LESS", "LESS_OR_EQUAL", "EQUAL", "NOT_EQUAL" ]
enum_PayloadType := [ "STRING", "JSON" ]

valid {
    input.Body.alarmModelDescription == STRING
    input.Body.roleArn == STRING
    input.Body.severity == INTEGER
    input.Body.alarmRule.simpleRule.inputProperty == STRING
    input.Body.alarmRule.simpleRule.comparisonOperator == enum_ComparisonOperator[_]
    input.Body.alarmRule.simpleRule.threshold == STRING
    input.Body.alarmNotification.notificationActions[_].action.lambdaAction.functionArn == STRING
    input.Body.alarmNotification.notificationActions[_].action.lambdaAction.payload.contentExpression == STRING
    input.Body.alarmNotification.notificationActions[_].action.lambdaAction.payload.type == enum_PayloadType[_]
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].senderId == STRING
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].additionalMessage == STRING
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].recipients[_].ssoIdentity.identityStoreId == STRING
    input.Body.alarmNotification.notificationActions[_].smsConfigurations[_].recipients[_].ssoIdentity.userId == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].from == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].content.subject == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].content.additionalMessage == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].recipients.to[_].ssoIdentity.identityStoreId == STRING
    input.Body.alarmNotification.notificationActions[_].emailConfigurations[_].recipients.to[_].ssoIdentity.userId == STRING
    input.Body.alarmEventActions.alarmActions[_].sns.targetArn == STRING
    input.Body.alarmEventActions.alarmActions[_].sns.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.alarmEventActions.alarmActions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].lambda.functionArn == STRING
    input.Body.alarmEventActions.alarmActions[_].lambda.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].iotEvents.inputName == STRING
    input.Body.alarmEventActions.alarmActions[_].iotEvents.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].sqs.queueUrl == STRING
    input.Body.alarmEventActions.alarmActions[_].sqs.useBase64 == BOOLEAN
    input.Body.alarmEventActions.alarmActions[_].sqs.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].firehose.deliveryStreamName == STRING
    input.Body.alarmEventActions.alarmActions[_].firehose.separator == STRING
    input.Body.alarmEventActions.alarmActions[_].firehose.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.hashKeyType == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.hashKeyField == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.hashKeyValue == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.rangeKeyType == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.rangeKeyField == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.operation == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.payloadField == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.tableName == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].dynamoDBv2.tableName == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.alarmEventActions.alarmActions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.entryId == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.assetId == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyId == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyAlias == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.alarmEventActions.alarmActions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.alarmCapabilities.initializationConfiguration.disabledOnInitialization == BOOLEAN
    input.Body.alarmCapabilities.acknowledgeFlow.enabled == BOOLEAN
    input.ReqMap.alarmModelName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateDetectorModel

enum_EvaluationMethod := [ "BATCH", "SERIAL" ]
enum_PayloadType := [ "STRING", "JSON" ]

valid {
    input.Body.detectorModelDefinition.states[_].stateName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onInput.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onInput.transitionEvents[_].nextState == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onEnter.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].eventName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].condition == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setVariable.variableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setVariable.value == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.targetArn == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sns.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.mqttTopic == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotTopicPublish.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.seconds == INTEGER
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].setTimer.durationExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].clearTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].resetTimer.timerName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.functionArn == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].lambda.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.inputName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotEvents.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.queueUrl == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.useBase64 == BOOLEAN
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].sqs.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.deliveryStreamName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.separator == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].firehose.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.hashKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyType == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.rangeKeyValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.operation == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payloadField == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDB.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.tableName == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.payload.contentExpression == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].dynamoDBv2.payload.type == enum_PayloadType[_]
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.entryId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.assetId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyId == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyAlias == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.stringValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.integerValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.doubleValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.value.booleanValue == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.timestamp.timeInSeconds == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.timestamp.offsetInNanos == STRING
    input.Body.detectorModelDefinition.states[_].onExit.events[_].actions[_].iotSiteWise.propertyValue.quality == STRING
    input.Body.detectorModelDefinition.initialStateName == STRING
    input.Body.detectorModelDescription == STRING
    input.Body.roleArn == STRING
    input.Body.evaluationMethod == enum_EvaluationMethod[_]
    input.ReqMap.detectorModelName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateInput

valid {
    input.Body.inputDescription == STRING
    input.Body.inputDefinition.attributes[_].jsonPath == STRING
    input.ReqMap.inputName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}