// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.

package iot

import (
	"context"

	"github.com/hashicorp/terraform-plugin-framework/tfsdk"
	"github.com/hashicorp/terraform-plugin-framework/types"
	. "github.com/hashicorp/terraform-provider-awscc/internal/generic"
	"github.com/hashicorp/terraform-provider-awscc/internal/registry"
)

func init() {
	registry.AddDataSourceTypeFactory("awscc_iot_topic_rule", topicRuleDataSourceType)
}

// topicRuleDataSourceType returns the Terraform awscc_iot_topic_rule data source type.
// This Terraform data source type corresponds to the CloudFormation AWS::IoT::TopicRule resource type.
func topicRuleDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
	attributes := map[string]tfsdk.Attribute{
		"arn": {
			// Property: Arn
			// CloudFormation resource type schema:
			// {
			//   "type": "string"
			// }
			Type:     types.StringType,
			Computed: true,
		},
		"rule_name": {
			// Property: RuleName
			// CloudFormation resource type schema:
			// {
			//   "type": "string"
			// }
			Type:     types.StringType,
			Computed: true,
		},
		"tags": {
			// Property: Tags
			// CloudFormation resource type schema:
			// {
			//   "items": {
			//     "additionalProperties": false,
			//     "properties": {
			//       "Key": {
			//         "type": "string"
			//       },
			//       "Value": {
			//         "type": "string"
			//       }
			//     },
			//     "required": [
			//       "Key",
			//       "Value"
			//     ],
			//     "type": "object"
			//   },
			//   "type": "array"
			// }
			Attributes: tfsdk.ListNestedAttributes(
				map[string]tfsdk.Attribute{
					"key": {
						// Property: Key
						Type:     types.StringType,
						Computed: true,
					},
					"value": {
						// Property: Value
						Type:     types.StringType,
						Computed: true,
					},
				},
				tfsdk.ListNestedAttributesOptions{},
			),
			Computed: true,
		},
		"topic_rule_payload": {
			// Property: TopicRulePayload
			// CloudFormation resource type schema:
			// {
			//   "additionalProperties": false,
			//   "properties": {
			//     "Actions": {
			//       "items": {
			//         "additionalProperties": false,
			//         "properties": {
			//           "CloudwatchAlarm": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "AlarmName": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "StateReason": {
			//                 "type": "string"
			//               },
			//               "StateValue": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "AlarmName",
			//               "StateReason",
			//               "StateValue",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "CloudwatchLogs": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "LogGroupName": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "LogGroupName",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "CloudwatchMetric": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "MetricName": {
			//                 "type": "string"
			//               },
			//               "MetricNamespace": {
			//                 "type": "string"
			//               },
			//               "MetricTimestamp": {
			//                 "type": "string"
			//               },
			//               "MetricUnit": {
			//                 "type": "string"
			//               },
			//               "MetricValue": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "MetricName",
			//               "MetricValue",
			//               "MetricNamespace",
			//               "MetricUnit",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "DynamoDB": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "HashKeyField": {
			//                 "type": "string"
			//               },
			//               "HashKeyType": {
			//                 "type": "string"
			//               },
			//               "HashKeyValue": {
			//                 "type": "string"
			//               },
			//               "PayloadField": {
			//                 "type": "string"
			//               },
			//               "RangeKeyField": {
			//                 "type": "string"
			//               },
			//               "RangeKeyType": {
			//                 "type": "string"
			//               },
			//               "RangeKeyValue": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "TableName": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "TableName",
			//               "HashKeyField",
			//               "HashKeyValue",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "DynamoDBv2": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "PutItem": {
			//                 "additionalProperties": false,
			//                 "properties": {
			//                   "TableName": {
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "TableName"
			//                 ],
			//                 "type": "object"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "type": "object"
			//           },
			//           "Elasticsearch": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "Endpoint": {
			//                 "type": "string"
			//               },
			//               "Id": {
			//                 "type": "string"
			//               },
			//               "Index": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "Type": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "Type",
			//               "Endpoint",
			//               "Index",
			//               "Id",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Firehose": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "BatchMode": {
			//                 "type": "boolean"
			//               },
			//               "DeliveryStreamName": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "Separator": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "DeliveryStreamName",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Http": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "Auth": {
			//                 "additionalProperties": false,
			//                 "properties": {
			//                   "Sigv4": {
			//                     "additionalProperties": false,
			//                     "properties": {
			//                       "RoleArn": {
			//                         "type": "string"
			//                       },
			//                       "ServiceName": {
			//                         "type": "string"
			//                       },
			//                       "SigningRegion": {
			//                         "type": "string"
			//                       }
			//                     },
			//                     "required": [
			//                       "ServiceName",
			//                       "SigningRegion",
			//                       "RoleArn"
			//                     ],
			//                     "type": "object"
			//                   }
			//                 },
			//                 "type": "object"
			//               },
			//               "ConfirmationUrl": {
			//                 "type": "string"
			//               },
			//               "Headers": {
			//                 "items": {
			//                   "additionalProperties": false,
			//                   "properties": {
			//                     "Key": {
			//                       "type": "string"
			//                     },
			//                     "Value": {
			//                       "type": "string"
			//                     }
			//                   },
			//                   "required": [
			//                     "Value",
			//                     "Key"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "type": "array",
			//                 "uniqueItems": true
			//               },
			//               "Url": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "Url"
			//             ],
			//             "type": "object"
			//           },
			//           "IotAnalytics": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "BatchMode": {
			//                 "type": "boolean"
			//               },
			//               "ChannelName": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "ChannelName",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "IotEvents": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "BatchMode": {
			//                 "type": "boolean"
			//               },
			//               "InputName": {
			//                 "type": "string"
			//               },
			//               "MessageId": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "InputName",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "IotSiteWise": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "PutAssetPropertyValueEntries": {
			//                 "items": {
			//                   "additionalProperties": false,
			//                   "properties": {
			//                     "AssetId": {
			//                       "type": "string"
			//                     },
			//                     "EntryId": {
			//                       "type": "string"
			//                     },
			//                     "PropertyAlias": {
			//                       "type": "string"
			//                     },
			//                     "PropertyId": {
			//                       "type": "string"
			//                     },
			//                     "PropertyValues": {
			//                       "items": {
			//                         "additionalProperties": false,
			//                         "properties": {
			//                           "Quality": {
			//                             "type": "string"
			//                           },
			//                           "Timestamp": {
			//                             "additionalProperties": false,
			//                             "properties": {
			//                               "OffsetInNanos": {
			//                                 "type": "string"
			//                               },
			//                               "TimeInSeconds": {
			//                                 "type": "string"
			//                               }
			//                             },
			//                             "required": [
			//                               "TimeInSeconds"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "Value": {
			//                             "additionalProperties": false,
			//                             "properties": {
			//                               "BooleanValue": {
			//                                 "type": "string"
			//                               },
			//                               "DoubleValue": {
			//                                 "type": "string"
			//                               },
			//                               "IntegerValue": {
			//                                 "type": "string"
			//                               },
			//                               "StringValue": {
			//                                 "type": "string"
			//                               }
			//                             },
			//                             "type": "object"
			//                           }
			//                         },
			//                         "required": [
			//                           "Value",
			//                           "Timestamp"
			//                         ],
			//                         "type": "object"
			//                       },
			//                       "type": "array",
			//                       "uniqueItems": true
			//                     }
			//                   },
			//                   "required": [
			//                     "PropertyValues"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "type": "array",
			//                 "uniqueItems": true
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "PutAssetPropertyValueEntries",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Kafka": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "ClientProperties": {
			//                 "additionalProperties": false,
			//                 "patternProperties": {
			//                   "": {
			//                     "type": "string"
			//                   }
			//                 },
			//                 "type": "object"
			//               },
			//               "DestinationArn": {
			//                 "type": "string"
			//               },
			//               "Key": {
			//                 "type": "string"
			//               },
			//               "Partition": {
			//                 "type": "string"
			//               },
			//               "Topic": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "DestinationArn",
			//               "Topic",
			//               "ClientProperties"
			//             ],
			//             "type": "object"
			//           },
			//           "Kinesis": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "PartitionKey": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "StreamName": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "StreamName",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Lambda": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "FunctionArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "type": "object"
			//           },
			//           "OpenSearch": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "Endpoint": {
			//                 "type": "string"
			//               },
			//               "Id": {
			//                 "type": "string"
			//               },
			//               "Index": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "Type": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "Type",
			//               "Endpoint",
			//               "Index",
			//               "Id",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Republish": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "Qos": {
			//                 "type": "integer"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "Topic": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "Topic",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "S3": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "BucketName": {
			//                 "type": "string"
			//               },
			//               "CannedAcl": {
			//                 "enum": [
			//                   "private",
			//                   "public-read",
			//                   "public-read-write",
			//                   "aws-exec-read",
			//                   "authenticated-read",
			//                   "bucket-owner-read",
			//                   "bucket-owner-full-control",
			//                   "log-delivery-write"
			//                 ],
			//                 "type": "string"
			//               },
			//               "Key": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "BucketName",
			//               "Key",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Sns": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "MessageFormat": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "TargetArn": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "TargetArn",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Sqs": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "QueueUrl": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "UseBase64": {
			//                 "type": "boolean"
			//               }
			//             },
			//             "required": [
			//               "RoleArn",
			//               "QueueUrl"
			//             ],
			//             "type": "object"
			//           },
			//           "StepFunctions": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "ExecutionNamePrefix": {
			//                 "type": "string"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "StateMachineName": {
			//                 "type": "string"
			//               }
			//             },
			//             "required": [
			//               "StateMachineName",
			//               "RoleArn"
			//             ],
			//             "type": "object"
			//           },
			//           "Timestream": {
			//             "additionalProperties": false,
			//             "properties": {
			//               "BatchMode": {
			//                 "type": "boolean"
			//               },
			//               "DatabaseName": {
			//                 "type": "string"
			//               },
			//               "Dimensions": {
			//                 "items": {
			//                   "additionalProperties": false,
			//                   "properties": {
			//                     "Name": {
			//                       "type": "string"
			//                     },
			//                     "Value": {
			//                       "type": "string"
			//                     }
			//                   },
			//                   "required": [
			//                     "Name",
			//                     "Value"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "maxItems": 128,
			//                 "minItems": 1,
			//                 "type": "array"
			//               },
			//               "RoleArn": {
			//                 "type": "string"
			//               },
			//               "TableName": {
			//                 "type": "string"
			//               },
			//               "Timestamp": {
			//                 "additionalProperties": false,
			//                 "properties": {
			//                   "Unit": {
			//                     "type": "string"
			//                   },
			//                   "Value": {
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "Value",
			//                   "Unit"
			//                 ],
			//                 "type": "object"
			//               }
			//             },
			//             "required": [
			//               "RoleArn",
			//               "DatabaseName",
			//               "TableName",
			//               "Dimensions"
			//             ],
			//             "type": "object"
			//           }
			//         },
			//         "type": "object"
			//       },
			//       "type": "array"
			//     },
			//     "AwsIotSqlVersion": {
			//       "type": "string"
			//     },
			//     "Description": {
			//       "type": "string"
			//     },
			//     "ErrorAction": {
			//       "additionalProperties": false,
			//       "properties": {
			//         "CloudwatchAlarm": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "AlarmName": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "StateReason": {
			//               "type": "string"
			//             },
			//             "StateValue": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "AlarmName",
			//             "StateReason",
			//             "StateValue",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "CloudwatchLogs": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "LogGroupName": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "LogGroupName",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "CloudwatchMetric": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "MetricName": {
			//               "type": "string"
			//             },
			//             "MetricNamespace": {
			//               "type": "string"
			//             },
			//             "MetricTimestamp": {
			//               "type": "string"
			//             },
			//             "MetricUnit": {
			//               "type": "string"
			//             },
			//             "MetricValue": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "MetricName",
			//             "MetricValue",
			//             "MetricNamespace",
			//             "MetricUnit",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "DynamoDB": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "HashKeyField": {
			//               "type": "string"
			//             },
			//             "HashKeyType": {
			//               "type": "string"
			//             },
			//             "HashKeyValue": {
			//               "type": "string"
			//             },
			//             "PayloadField": {
			//               "type": "string"
			//             },
			//             "RangeKeyField": {
			//               "type": "string"
			//             },
			//             "RangeKeyType": {
			//               "type": "string"
			//             },
			//             "RangeKeyValue": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "TableName": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "TableName",
			//             "HashKeyField",
			//             "HashKeyValue",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "DynamoDBv2": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "PutItem": {
			//               "additionalProperties": false,
			//               "properties": {
			//                 "TableName": {
			//                   "type": "string"
			//                 }
			//               },
			//               "required": [
			//                 "TableName"
			//               ],
			//               "type": "object"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "type": "object"
			//         },
			//         "Elasticsearch": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "Endpoint": {
			//               "type": "string"
			//             },
			//             "Id": {
			//               "type": "string"
			//             },
			//             "Index": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "Type": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "Type",
			//             "Endpoint",
			//             "Index",
			//             "Id",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Firehose": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "BatchMode": {
			//               "type": "boolean"
			//             },
			//             "DeliveryStreamName": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "Separator": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "DeliveryStreamName",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Http": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "Auth": {
			//               "additionalProperties": false,
			//               "properties": {
			//                 "Sigv4": {
			//                   "additionalProperties": false,
			//                   "properties": {
			//                     "RoleArn": {
			//                       "type": "string"
			//                     },
			//                     "ServiceName": {
			//                       "type": "string"
			//                     },
			//                     "SigningRegion": {
			//                       "type": "string"
			//                     }
			//                   },
			//                   "required": [
			//                     "ServiceName",
			//                     "SigningRegion",
			//                     "RoleArn"
			//                   ],
			//                   "type": "object"
			//                 }
			//               },
			//               "type": "object"
			//             },
			//             "ConfirmationUrl": {
			//               "type": "string"
			//             },
			//             "Headers": {
			//               "items": {
			//                 "additionalProperties": false,
			//                 "properties": {
			//                   "Key": {
			//                     "type": "string"
			//                   },
			//                   "Value": {
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "Value",
			//                   "Key"
			//                 ],
			//                 "type": "object"
			//               },
			//               "type": "array",
			//               "uniqueItems": true
			//             },
			//             "Url": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "Url"
			//           ],
			//           "type": "object"
			//         },
			//         "IotAnalytics": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "BatchMode": {
			//               "type": "boolean"
			//             },
			//             "ChannelName": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "ChannelName",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "IotEvents": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "BatchMode": {
			//               "type": "boolean"
			//             },
			//             "InputName": {
			//               "type": "string"
			//             },
			//             "MessageId": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "InputName",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "IotSiteWise": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "PutAssetPropertyValueEntries": {
			//               "items": {
			//                 "additionalProperties": false,
			//                 "properties": {
			//                   "AssetId": {
			//                     "type": "string"
			//                   },
			//                   "EntryId": {
			//                     "type": "string"
			//                   },
			//                   "PropertyAlias": {
			//                     "type": "string"
			//                   },
			//                   "PropertyId": {
			//                     "type": "string"
			//                   },
			//                   "PropertyValues": {
			//                     "items": {
			//                       "additionalProperties": false,
			//                       "properties": {
			//                         "Quality": {
			//                           "type": "string"
			//                         },
			//                         "Timestamp": {
			//                           "additionalProperties": false,
			//                           "properties": {
			//                             "OffsetInNanos": {
			//                               "type": "string"
			//                             },
			//                             "TimeInSeconds": {
			//                               "type": "string"
			//                             }
			//                           },
			//                           "required": [
			//                             "TimeInSeconds"
			//                           ],
			//                           "type": "object"
			//                         },
			//                         "Value": {
			//                           "additionalProperties": false,
			//                           "properties": {
			//                             "BooleanValue": {
			//                               "type": "string"
			//                             },
			//                             "DoubleValue": {
			//                               "type": "string"
			//                             },
			//                             "IntegerValue": {
			//                               "type": "string"
			//                             },
			//                             "StringValue": {
			//                               "type": "string"
			//                             }
			//                           },
			//                           "type": "object"
			//                         }
			//                       },
			//                       "required": [
			//                         "Value",
			//                         "Timestamp"
			//                       ],
			//                       "type": "object"
			//                     },
			//                     "type": "array",
			//                     "uniqueItems": true
			//                   }
			//                 },
			//                 "required": [
			//                   "PropertyValues"
			//                 ],
			//                 "type": "object"
			//               },
			//               "type": "array",
			//               "uniqueItems": true
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "PutAssetPropertyValueEntries",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Kafka": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "ClientProperties": {
			//               "additionalProperties": false,
			//               "patternProperties": {
			//                 "": {
			//                   "type": "string"
			//                 }
			//               },
			//               "type": "object"
			//             },
			//             "DestinationArn": {
			//               "type": "string"
			//             },
			//             "Key": {
			//               "type": "string"
			//             },
			//             "Partition": {
			//               "type": "string"
			//             },
			//             "Topic": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "DestinationArn",
			//             "Topic",
			//             "ClientProperties"
			//           ],
			//           "type": "object"
			//         },
			//         "Kinesis": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "PartitionKey": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "StreamName": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "StreamName",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Lambda": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "FunctionArn": {
			//               "type": "string"
			//             }
			//           },
			//           "type": "object"
			//         },
			//         "OpenSearch": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "Endpoint": {
			//               "type": "string"
			//             },
			//             "Id": {
			//               "type": "string"
			//             },
			//             "Index": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "Type": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "Type",
			//             "Endpoint",
			//             "Index",
			//             "Id",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Republish": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "Qos": {
			//               "type": "integer"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "Topic": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "Topic",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "S3": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "BucketName": {
			//               "type": "string"
			//             },
			//             "CannedAcl": {
			//               "enum": [
			//                 "private",
			//                 "public-read",
			//                 "public-read-write",
			//                 "aws-exec-read",
			//                 "authenticated-read",
			//                 "bucket-owner-read",
			//                 "bucket-owner-full-control",
			//                 "log-delivery-write"
			//               ],
			//               "type": "string"
			//             },
			//             "Key": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "BucketName",
			//             "Key",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Sns": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "MessageFormat": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "TargetArn": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "TargetArn",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Sqs": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "QueueUrl": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "UseBase64": {
			//               "type": "boolean"
			//             }
			//           },
			//           "required": [
			//             "RoleArn",
			//             "QueueUrl"
			//           ],
			//           "type": "object"
			//         },
			//         "StepFunctions": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "ExecutionNamePrefix": {
			//               "type": "string"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "StateMachineName": {
			//               "type": "string"
			//             }
			//           },
			//           "required": [
			//             "StateMachineName",
			//             "RoleArn"
			//           ],
			//           "type": "object"
			//         },
			//         "Timestream": {
			//           "additionalProperties": false,
			//           "properties": {
			//             "BatchMode": {
			//               "type": "boolean"
			//             },
			//             "DatabaseName": {
			//               "type": "string"
			//             },
			//             "Dimensions": {
			//               "items": {
			//                 "additionalProperties": false,
			//                 "properties": {
			//                   "Name": {
			//                     "type": "string"
			//                   },
			//                   "Value": {
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "Name",
			//                   "Value"
			//                 ],
			//                 "type": "object"
			//               },
			//               "maxItems": 128,
			//               "minItems": 1,
			//               "type": "array"
			//             },
			//             "RoleArn": {
			//               "type": "string"
			//             },
			//             "TableName": {
			//               "type": "string"
			//             },
			//             "Timestamp": {
			//               "additionalProperties": false,
			//               "properties": {
			//                 "Unit": {
			//                   "type": "string"
			//                 },
			//                 "Value": {
			//                   "type": "string"
			//                 }
			//               },
			//               "required": [
			//                 "Value",
			//                 "Unit"
			//               ],
			//               "type": "object"
			//             }
			//           },
			//           "required": [
			//             "RoleArn",
			//             "DatabaseName",
			//             "TableName",
			//             "Dimensions"
			//           ],
			//           "type": "object"
			//         }
			//       },
			//       "type": "object"
			//     },
			//     "RuleDisabled": {
			//       "type": "boolean"
			//     },
			//     "Sql": {
			//       "type": "string"
			//     }
			//   },
			//   "required": [
			//     "Actions",
			//     "Sql"
			//   ],
			//   "type": "object"
			// }
			Attributes: tfsdk.SingleNestedAttributes(
				map[string]tfsdk.Attribute{
					"actions": {
						// Property: Actions
						Attributes: tfsdk.ListNestedAttributes(
							map[string]tfsdk.Attribute{
								"cloudwatch_alarm": {
									// Property: CloudwatchAlarm
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"alarm_name": {
												// Property: AlarmName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"state_reason": {
												// Property: StateReason
												Type:     types.StringType,
												Computed: true,
											},
											"state_value": {
												// Property: StateValue
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"cloudwatch_logs": {
									// Property: CloudwatchLogs
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"log_group_name": {
												// Property: LogGroupName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"cloudwatch_metric": {
									// Property: CloudwatchMetric
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"metric_name": {
												// Property: MetricName
												Type:     types.StringType,
												Computed: true,
											},
											"metric_namespace": {
												// Property: MetricNamespace
												Type:     types.StringType,
												Computed: true,
											},
											"metric_timestamp": {
												// Property: MetricTimestamp
												Type:     types.StringType,
												Computed: true,
											},
											"metric_unit": {
												// Property: MetricUnit
												Type:     types.StringType,
												Computed: true,
											},
											"metric_value": {
												// Property: MetricValue
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"dynamo_db": {
									// Property: DynamoDB
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"hash_key_field": {
												// Property: HashKeyField
												Type:     types.StringType,
												Computed: true,
											},
											"hash_key_type": {
												// Property: HashKeyType
												Type:     types.StringType,
												Computed: true,
											},
											"hash_key_value": {
												// Property: HashKeyValue
												Type:     types.StringType,
												Computed: true,
											},
											"payload_field": {
												// Property: PayloadField
												Type:     types.StringType,
												Computed: true,
											},
											"range_key_field": {
												// Property: RangeKeyField
												Type:     types.StringType,
												Computed: true,
											},
											"range_key_type": {
												// Property: RangeKeyType
												Type:     types.StringType,
												Computed: true,
											},
											"range_key_value": {
												// Property: RangeKeyValue
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"table_name": {
												// Property: TableName
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"dynamo_d_bv_2": {
									// Property: DynamoDBv2
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"put_item": {
												// Property: PutItem
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"table_name": {
															// Property: TableName
															Type:     types.StringType,
															Computed: true,
														},
													},
												),
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"elasticsearch": {
									// Property: Elasticsearch
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"endpoint": {
												// Property: Endpoint
												Type:     types.StringType,
												Computed: true,
											},
											"id": {
												// Property: Id
												Type:     types.StringType,
												Computed: true,
											},
											"index": {
												// Property: Index
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"type": {
												// Property: Type
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"firehose": {
									// Property: Firehose
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"delivery_stream_name": {
												// Property: DeliveryStreamName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"separator": {
												// Property: Separator
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"http": {
									// Property: Http
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"auth": {
												// Property: Auth
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"sigv_4": {
															// Property: Sigv4
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"role_arn": {
																		// Property: RoleArn
																		Type:     types.StringType,
																		Computed: true,
																	},
																	"service_name": {
																		// Property: ServiceName
																		Type:     types.StringType,
																		Computed: true,
																	},
																	"signing_region": {
																		// Property: SigningRegion
																		Type:     types.StringType,
																		Computed: true,
																	},
																},
															),
															Computed: true,
														},
													},
												),
												Computed: true,
											},
											"confirmation_url": {
												// Property: ConfirmationUrl
												Type:     types.StringType,
												Computed: true,
											},
											"headers": {
												// Property: Headers
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"key": {
															// Property: Key
															Type:     types.StringType,
															Computed: true,
														},
														"value": {
															// Property: Value
															Type:     types.StringType,
															Computed: true,
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Computed: true,
											},
											"url": {
												// Property: Url
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"iot_analytics": {
									// Property: IotAnalytics
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"channel_name": {
												// Property: ChannelName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"iot_events": {
									// Property: IotEvents
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"input_name": {
												// Property: InputName
												Type:     types.StringType,
												Computed: true,
											},
											"message_id": {
												// Property: MessageId
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"iot_site_wise": {
									// Property: IotSiteWise
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"put_asset_property_value_entries": {
												// Property: PutAssetPropertyValueEntries
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"asset_id": {
															// Property: AssetId
															Type:     types.StringType,
															Computed: true,
														},
														"entry_id": {
															// Property: EntryId
															Type:     types.StringType,
															Computed: true,
														},
														"property_alias": {
															// Property: PropertyAlias
															Type:     types.StringType,
															Computed: true,
														},
														"property_id": {
															// Property: PropertyId
															Type:     types.StringType,
															Computed: true,
														},
														"property_values": {
															// Property: PropertyValues
															Attributes: tfsdk.ListNestedAttributes(
																map[string]tfsdk.Attribute{
																	"quality": {
																		// Property: Quality
																		Type:     types.StringType,
																		Computed: true,
																	},
																	"timestamp": {
																		// Property: Timestamp
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"offset_in_nanos": {
																					// Property: OffsetInNanos
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"time_in_seconds": {
																					// Property: TimeInSeconds
																					Type:     types.StringType,
																					Computed: true,
																				},
																			},
																		),
																		Computed: true,
																	},
																	"value": {
																		// Property: Value
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"boolean_value": {
																					// Property: BooleanValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"double_value": {
																					// Property: DoubleValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"integer_value": {
																					// Property: IntegerValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"string_value": {
																					// Property: StringValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																			},
																		),
																		Computed: true,
																	},
																},
																tfsdk.ListNestedAttributesOptions{},
															),
															Computed: true,
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"kafka": {
									// Property: Kafka
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"client_properties": {
												// Property: ClientProperties
												// Pattern: ""
												Type:     types.MapType{ElemType: types.StringType},
												Computed: true,
											},
											"destination_arn": {
												// Property: DestinationArn
												Type:     types.StringType,
												Computed: true,
											},
											"key": {
												// Property: Key
												Type:     types.StringType,
												Computed: true,
											},
											"partition": {
												// Property: Partition
												Type:     types.StringType,
												Computed: true,
											},
											"topic": {
												// Property: Topic
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"kinesis": {
									// Property: Kinesis
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"partition_key": {
												// Property: PartitionKey
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"stream_name": {
												// Property: StreamName
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"lambda": {
									// Property: Lambda
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"function_arn": {
												// Property: FunctionArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"open_search": {
									// Property: OpenSearch
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"endpoint": {
												// Property: Endpoint
												Type:     types.StringType,
												Computed: true,
											},
											"id": {
												// Property: Id
												Type:     types.StringType,
												Computed: true,
											},
											"index": {
												// Property: Index
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"type": {
												// Property: Type
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"republish": {
									// Property: Republish
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"qos": {
												// Property: Qos
												Type:     types.Int64Type,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"topic": {
												// Property: Topic
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"s3": {
									// Property: S3
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"bucket_name": {
												// Property: BucketName
												Type:     types.StringType,
												Computed: true,
											},
											"canned_acl": {
												// Property: CannedAcl
												Type:     types.StringType,
												Computed: true,
											},
											"key": {
												// Property: Key
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"sns": {
									// Property: Sns
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"message_format": {
												// Property: MessageFormat
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"target_arn": {
												// Property: TargetArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"sqs": {
									// Property: Sqs
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"queue_url": {
												// Property: QueueUrl
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"use_base_64": {
												// Property: UseBase64
												Type:     types.BoolType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"step_functions": {
									// Property: StepFunctions
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"execution_name_prefix": {
												// Property: ExecutionNamePrefix
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"state_machine_name": {
												// Property: StateMachineName
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"timestream": {
									// Property: Timestream
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"database_name": {
												// Property: DatabaseName
												Type:     types.StringType,
												Computed: true,
											},
											"dimensions": {
												// Property: Dimensions
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"name": {
															// Property: Name
															Type:     types.StringType,
															Computed: true,
														},
														"value": {
															// Property: Value
															Type:     types.StringType,
															Computed: true,
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"table_name": {
												// Property: TableName
												Type:     types.StringType,
												Computed: true,
											},
											"timestamp": {
												// Property: Timestamp
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"unit": {
															// Property: Unit
															Type:     types.StringType,
															Computed: true,
														},
														"value": {
															// Property: Value
															Type:     types.StringType,
															Computed: true,
														},
													},
												),
												Computed: true,
											},
										},
									),
									Computed: true,
								},
							},
							tfsdk.ListNestedAttributesOptions{},
						),
						Computed: true,
					},
					"aws_iot_sql_version": {
						// Property: AwsIotSqlVersion
						Type:     types.StringType,
						Computed: true,
					},
					"description": {
						// Property: Description
						Type:     types.StringType,
						Computed: true,
					},
					"error_action": {
						// Property: ErrorAction
						Attributes: tfsdk.SingleNestedAttributes(
							map[string]tfsdk.Attribute{
								"cloudwatch_alarm": {
									// Property: CloudwatchAlarm
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"alarm_name": {
												// Property: AlarmName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"state_reason": {
												// Property: StateReason
												Type:     types.StringType,
												Computed: true,
											},
											"state_value": {
												// Property: StateValue
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"cloudwatch_logs": {
									// Property: CloudwatchLogs
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"log_group_name": {
												// Property: LogGroupName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"cloudwatch_metric": {
									// Property: CloudwatchMetric
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"metric_name": {
												// Property: MetricName
												Type:     types.StringType,
												Computed: true,
											},
											"metric_namespace": {
												// Property: MetricNamespace
												Type:     types.StringType,
												Computed: true,
											},
											"metric_timestamp": {
												// Property: MetricTimestamp
												Type:     types.StringType,
												Computed: true,
											},
											"metric_unit": {
												// Property: MetricUnit
												Type:     types.StringType,
												Computed: true,
											},
											"metric_value": {
												// Property: MetricValue
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"dynamo_db": {
									// Property: DynamoDB
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"hash_key_field": {
												// Property: HashKeyField
												Type:     types.StringType,
												Computed: true,
											},
											"hash_key_type": {
												// Property: HashKeyType
												Type:     types.StringType,
												Computed: true,
											},
											"hash_key_value": {
												// Property: HashKeyValue
												Type:     types.StringType,
												Computed: true,
											},
											"payload_field": {
												// Property: PayloadField
												Type:     types.StringType,
												Computed: true,
											},
											"range_key_field": {
												// Property: RangeKeyField
												Type:     types.StringType,
												Computed: true,
											},
											"range_key_type": {
												// Property: RangeKeyType
												Type:     types.StringType,
												Computed: true,
											},
											"range_key_value": {
												// Property: RangeKeyValue
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"table_name": {
												// Property: TableName
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"dynamo_d_bv_2": {
									// Property: DynamoDBv2
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"put_item": {
												// Property: PutItem
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"table_name": {
															// Property: TableName
															Type:     types.StringType,
															Computed: true,
														},
													},
												),
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"elasticsearch": {
									// Property: Elasticsearch
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"endpoint": {
												// Property: Endpoint
												Type:     types.StringType,
												Computed: true,
											},
											"id": {
												// Property: Id
												Type:     types.StringType,
												Computed: true,
											},
											"index": {
												// Property: Index
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"type": {
												// Property: Type
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"firehose": {
									// Property: Firehose
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"delivery_stream_name": {
												// Property: DeliveryStreamName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"separator": {
												// Property: Separator
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"http": {
									// Property: Http
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"auth": {
												// Property: Auth
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"sigv_4": {
															// Property: Sigv4
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"role_arn": {
																		// Property: RoleArn
																		Type:     types.StringType,
																		Computed: true,
																	},
																	"service_name": {
																		// Property: ServiceName
																		Type:     types.StringType,
																		Computed: true,
																	},
																	"signing_region": {
																		// Property: SigningRegion
																		Type:     types.StringType,
																		Computed: true,
																	},
																},
															),
															Computed: true,
														},
													},
												),
												Computed: true,
											},
											"confirmation_url": {
												// Property: ConfirmationUrl
												Type:     types.StringType,
												Computed: true,
											},
											"headers": {
												// Property: Headers
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"key": {
															// Property: Key
															Type:     types.StringType,
															Computed: true,
														},
														"value": {
															// Property: Value
															Type:     types.StringType,
															Computed: true,
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Computed: true,
											},
											"url": {
												// Property: Url
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"iot_analytics": {
									// Property: IotAnalytics
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"channel_name": {
												// Property: ChannelName
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"iot_events": {
									// Property: IotEvents
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"input_name": {
												// Property: InputName
												Type:     types.StringType,
												Computed: true,
											},
											"message_id": {
												// Property: MessageId
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"iot_site_wise": {
									// Property: IotSiteWise
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"put_asset_property_value_entries": {
												// Property: PutAssetPropertyValueEntries
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"asset_id": {
															// Property: AssetId
															Type:     types.StringType,
															Computed: true,
														},
														"entry_id": {
															// Property: EntryId
															Type:     types.StringType,
															Computed: true,
														},
														"property_alias": {
															// Property: PropertyAlias
															Type:     types.StringType,
															Computed: true,
														},
														"property_id": {
															// Property: PropertyId
															Type:     types.StringType,
															Computed: true,
														},
														"property_values": {
															// Property: PropertyValues
															Attributes: tfsdk.ListNestedAttributes(
																map[string]tfsdk.Attribute{
																	"quality": {
																		// Property: Quality
																		Type:     types.StringType,
																		Computed: true,
																	},
																	"timestamp": {
																		// Property: Timestamp
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"offset_in_nanos": {
																					// Property: OffsetInNanos
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"time_in_seconds": {
																					// Property: TimeInSeconds
																					Type:     types.StringType,
																					Computed: true,
																				},
																			},
																		),
																		Computed: true,
																	},
																	"value": {
																		// Property: Value
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"boolean_value": {
																					// Property: BooleanValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"double_value": {
																					// Property: DoubleValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"integer_value": {
																					// Property: IntegerValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																				"string_value": {
																					// Property: StringValue
																					Type:     types.StringType,
																					Computed: true,
																				},
																			},
																		),
																		Computed: true,
																	},
																},
																tfsdk.ListNestedAttributesOptions{},
															),
															Computed: true,
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"kafka": {
									// Property: Kafka
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"client_properties": {
												// Property: ClientProperties
												// Pattern: ""
												Type:     types.MapType{ElemType: types.StringType},
												Computed: true,
											},
											"destination_arn": {
												// Property: DestinationArn
												Type:     types.StringType,
												Computed: true,
											},
											"key": {
												// Property: Key
												Type:     types.StringType,
												Computed: true,
											},
											"partition": {
												// Property: Partition
												Type:     types.StringType,
												Computed: true,
											},
											"topic": {
												// Property: Topic
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"kinesis": {
									// Property: Kinesis
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"partition_key": {
												// Property: PartitionKey
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"stream_name": {
												// Property: StreamName
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"lambda": {
									// Property: Lambda
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"function_arn": {
												// Property: FunctionArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"open_search": {
									// Property: OpenSearch
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"endpoint": {
												// Property: Endpoint
												Type:     types.StringType,
												Computed: true,
											},
											"id": {
												// Property: Id
												Type:     types.StringType,
												Computed: true,
											},
											"index": {
												// Property: Index
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"type": {
												// Property: Type
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"republish": {
									// Property: Republish
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"qos": {
												// Property: Qos
												Type:     types.Int64Type,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"topic": {
												// Property: Topic
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"s3": {
									// Property: S3
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"bucket_name": {
												// Property: BucketName
												Type:     types.StringType,
												Computed: true,
											},
											"canned_acl": {
												// Property: CannedAcl
												Type:     types.StringType,
												Computed: true,
											},
											"key": {
												// Property: Key
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"sns": {
									// Property: Sns
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"message_format": {
												// Property: MessageFormat
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"target_arn": {
												// Property: TargetArn
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"sqs": {
									// Property: Sqs
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"queue_url": {
												// Property: QueueUrl
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"use_base_64": {
												// Property: UseBase64
												Type:     types.BoolType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"step_functions": {
									// Property: StepFunctions
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"execution_name_prefix": {
												// Property: ExecutionNamePrefix
												Type:     types.StringType,
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"state_machine_name": {
												// Property: StateMachineName
												Type:     types.StringType,
												Computed: true,
											},
										},
									),
									Computed: true,
								},
								"timestream": {
									// Property: Timestream
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"batch_mode": {
												// Property: BatchMode
												Type:     types.BoolType,
												Computed: true,
											},
											"database_name": {
												// Property: DatabaseName
												Type:     types.StringType,
												Computed: true,
											},
											"dimensions": {
												// Property: Dimensions
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"name": {
															// Property: Name
															Type:     types.StringType,
															Computed: true,
														},
														"value": {
															// Property: Value
															Type:     types.StringType,
															Computed: true,
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Computed: true,
											},
											"role_arn": {
												// Property: RoleArn
												Type:     types.StringType,
												Computed: true,
											},
											"table_name": {
												// Property: TableName
												Type:     types.StringType,
												Computed: true,
											},
											"timestamp": {
												// Property: Timestamp
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"unit": {
															// Property: Unit
															Type:     types.StringType,
															Computed: true,
														},
														"value": {
															// Property: Value
															Type:     types.StringType,
															Computed: true,
														},
													},
												),
												Computed: true,
											},
										},
									),
									Computed: true,
								},
							},
						),
						Computed: true,
					},
					"rule_disabled": {
						// Property: RuleDisabled
						Type:     types.BoolType,
						Computed: true,
					},
					"sql": {
						// Property: Sql
						Type:     types.StringType,
						Computed: true,
					},
				},
			),
			Computed: true,
		},
	}

	attributes["id"] = tfsdk.Attribute{
		Description: "Uniquely identifies the resource.",
		Type:        types.StringType,
		Required:    true,
	}

	schema := tfsdk.Schema{
		Description: "Data Source schema for AWS::IoT::TopicRule",
		Version:     1,
		Attributes:  attributes,
	}

	var opts DataSourceTypeOptions

	opts = opts.WithCloudFormationTypeName("AWS::IoT::TopicRule").WithTerraformTypeName("awscc_iot_topic_rule")
	opts = opts.WithTerraformSchema(schema)
	opts = opts.WithAttributeNameMap(map[string]string{
		"actions":                          "Actions",
		"alarm_name":                       "AlarmName",
		"arn":                              "Arn",
		"asset_id":                         "AssetId",
		"auth":                             "Auth",
		"aws_iot_sql_version":              "AwsIotSqlVersion",
		"batch_mode":                       "BatchMode",
		"boolean_value":                    "BooleanValue",
		"bucket_name":                      "BucketName",
		"canned_acl":                       "CannedAcl",
		"channel_name":                     "ChannelName",
		"client_properties":                "ClientProperties",
		"cloudwatch_alarm":                 "CloudwatchAlarm",
		"cloudwatch_logs":                  "CloudwatchLogs",
		"cloudwatch_metric":                "CloudwatchMetric",
		"confirmation_url":                 "ConfirmationUrl",
		"database_name":                    "DatabaseName",
		"delivery_stream_name":             "DeliveryStreamName",
		"description":                      "Description",
		"destination_arn":                  "DestinationArn",
		"dimensions":                       "Dimensions",
		"double_value":                     "DoubleValue",
		"dynamo_d_bv_2":                    "DynamoDBv2",
		"dynamo_db":                        "DynamoDB",
		"elasticsearch":                    "Elasticsearch",
		"endpoint":                         "Endpoint",
		"entry_id":                         "EntryId",
		"error_action":                     "ErrorAction",
		"execution_name_prefix":            "ExecutionNamePrefix",
		"firehose":                         "Firehose",
		"function_arn":                     "FunctionArn",
		"hash_key_field":                   "HashKeyField",
		"hash_key_type":                    "HashKeyType",
		"hash_key_value":                   "HashKeyValue",
		"headers":                          "Headers",
		"http":                             "Http",
		"id":                               "Id",
		"index":                            "Index",
		"input_name":                       "InputName",
		"integer_value":                    "IntegerValue",
		"iot_analytics":                    "IotAnalytics",
		"iot_events":                       "IotEvents",
		"iot_site_wise":                    "IotSiteWise",
		"kafka":                            "Kafka",
		"key":                              "Key",
		"kinesis":                          "Kinesis",
		"lambda":                           "Lambda",
		"log_group_name":                   "LogGroupName",
		"message_format":                   "MessageFormat",
		"message_id":                       "MessageId",
		"metric_name":                      "MetricName",
		"metric_namespace":                 "MetricNamespace",
		"metric_timestamp":                 "MetricTimestamp",
		"metric_unit":                      "MetricUnit",
		"metric_value":                     "MetricValue",
		"name":                             "Name",
		"offset_in_nanos":                  "OffsetInNanos",
		"open_search":                      "OpenSearch",
		"partition":                        "Partition",
		"partition_key":                    "PartitionKey",
		"payload_field":                    "PayloadField",
		"property_alias":                   "PropertyAlias",
		"property_id":                      "PropertyId",
		"property_values":                  "PropertyValues",
		"put_asset_property_value_entries": "PutAssetPropertyValueEntries",
		"put_item":                         "PutItem",
		"qos":                              "Qos",
		"quality":                          "Quality",
		"queue_url":                        "QueueUrl",
		"range_key_field":                  "RangeKeyField",
		"range_key_type":                   "RangeKeyType",
		"range_key_value":                  "RangeKeyValue",
		"republish":                        "Republish",
		"role_arn":                         "RoleArn",
		"rule_disabled":                    "RuleDisabled",
		"rule_name":                        "RuleName",
		"s3":                               "S3",
		"separator":                        "Separator",
		"service_name":                     "ServiceName",
		"signing_region":                   "SigningRegion",
		"sigv_4":                           "Sigv4",
		"sns":                              "Sns",
		"sql":                              "Sql",
		"sqs":                              "Sqs",
		"state_machine_name":               "StateMachineName",
		"state_reason":                     "StateReason",
		"state_value":                      "StateValue",
		"step_functions":                   "StepFunctions",
		"stream_name":                      "StreamName",
		"string_value":                     "StringValue",
		"table_name":                       "TableName",
		"tags":                             "Tags",
		"target_arn":                       "TargetArn",
		"time_in_seconds":                  "TimeInSeconds",
		"timestamp":                        "Timestamp",
		"timestream":                       "Timestream",
		"topic":                            "Topic",
		"topic_rule_payload":               "TopicRulePayload",
		"type":                             "Type",
		"unit":                             "Unit",
		"url":                              "Url",
		"use_base_64":                      "UseBase64",
		"value":                            "Value",
	})

	singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)

	if err != nil {
		return nil, err
	}

	return singularDataSourceType, nil
}