// Code generated by generators/resource/main.go; DO NOT EDIT.

package lex

import (
	"context"
	"regexp"

	"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"
	"github.com/hashicorp/terraform-provider-awscc/internal/validate"
)

func init() {
	registry.AddResourceTypeFactory("awscc_lex_bot", botResourceType)
}

// botResourceType returns the Terraform awscc_lex_bot resource type.
// This Terraform resource type corresponds to the CloudFormation AWS::Lex::Bot resource type.
func botResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
	attributes := map[string]tfsdk.Attribute{
		"arn": {
			// Property: Arn
			// CloudFormation resource type schema:
			// {
			//   "maxLength": 1011,
			//   "minLength": 1,
			//   "pattern": "^arn:aws[a-zA-Z-]*:lex:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:bot/[0-9a-zA-Z]+$",
			//   "type": "string"
			// }
			Type:     types.StringType,
			Computed: true,
			PlanModifiers: []tfsdk.AttributePlanModifier{
				tfsdk.UseStateForUnknown(),
			},
		},
		"auto_build_bot_locales": {
			// Property: AutoBuildBotLocales
			// CloudFormation resource type schema:
			// {
			//   "description": "Specifies whether to build the bot locales after bot creation completes.",
			//   "type": "boolean"
			// }
			Description: "Specifies whether to build the bot locales after bot creation completes.",
			Type:        types.BoolType,
			Optional:    true,
			// AutoBuildBotLocales is a write-only property.
		},
		"bot_file_s3_location": {
			// Property: BotFileS3Location
			// CloudFormation resource type schema:
			// {
			//   "additionalProperties": false,
			//   "description": "S3 location of bot definitions zip file, if it's not defined inline in CloudFormation.",
			//   "properties": {
			//     "S3Bucket": {
			//       "description": "An Amazon S3 bucket in the same AWS Region as your function. The bucket can be in a different AWS account.",
			//       "maxLength": 63,
			//       "minLength": 3,
			//       "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$",
			//       "type": "string"
			//     },
			//     "S3ObjectKey": {
			//       "description": "The Amazon S3 key of the deployment package.",
			//       "maxLength": 1024,
			//       "minLength": 1,
			//       "pattern": "[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$",
			//       "type": "string"
			//     },
			//     "S3ObjectVersion": {
			//       "description": "For versioned objects, the version of the deployment package object to use. If not specified, the current object version will be used.",
			//       "maxLength": 1024,
			//       "minLength": 1,
			//       "type": "string"
			//     }
			//   },
			//   "required": [
			//     "S3Bucket",
			//     "S3ObjectKey"
			//   ],
			//   "type": "object"
			// }
			Description: "S3 location of bot definitions zip file, if it's not defined inline in CloudFormation.",
			Attributes: tfsdk.SingleNestedAttributes(
				map[string]tfsdk.Attribute{
					"s3_bucket": {
						// Property: S3Bucket
						Description: "An Amazon S3 bucket in the same AWS Region as your function. The bucket can be in a different AWS account.",
						Type:        types.StringType,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(3, 63),
							validate.StringMatch(regexp.MustCompile("^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$"), ""),
						},
					},
					"s3_object_key": {
						// Property: S3ObjectKey
						Description: "The Amazon S3 key of the deployment package.",
						Type:        types.StringType,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(1, 1024),
							validate.StringMatch(regexp.MustCompile("[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$"), ""),
						},
					},
					"s3_object_version": {
						// Property: S3ObjectVersion
						Description: "For versioned objects, the version of the deployment package object to use. If not specified, the current object version will be used.",
						Type:        types.StringType,
						Optional:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(1, 1024),
						},
					},
				},
			),
			Optional: true,
			// BotFileS3Location is a write-only property.
		},
		"bot_locales": {
			// Property: BotLocales
			// CloudFormation resource type schema:
			// {
			//   "description": "List of bot locales",
			//   "insertionOrder": false,
			//   "items": {
			//     "additionalProperties": false,
			//     "description": "A locale in the bot, which contains the intents and slot types that the bot uses in conversations with users in the specified language and locale.",
			//     "properties": {
			//       "CustomVocabulary": {
			//         "additionalProperties": false,
			//         "description": "A custom vocabulary is a list of specific phrases that you want Amazon Lex V2 to recognize in the audio input.",
			//         "properties": {
			//           "CustomVocabularyItems": {
			//             "insertionOrder": false,
			//             "items": {
			//               "additionalProperties": false,
			//               "description": "A custom vocabulary item that contains the phrase to recognize and a weight to give the boost.",
			//               "properties": {
			//                 "Phrase": {
			//                   "description": "Phrase that should be recognized.",
			//                   "maxLength": 100,
			//                   "minLength": 1,
			//                   "type": "string"
			//                 },
			//                 "Weight": {
			//                   "description": "The degree to which the phrase recognition is boosted.",
			//                   "maximum": 3,
			//                   "minimum": 1,
			//                   "type": "integer"
			//                 }
			//               },
			//               "required": [
			//                 "Phrase"
			//               ],
			//               "type": "object"
			//             },
			//             "maxItems": 500,
			//             "type": "array",
			//             "uniqueItems": true
			//           }
			//         },
			//         "required": [
			//           "CustomVocabularyItems"
			//         ],
			//         "type": "object"
			//       },
			//       "Description": {
			//         "description": "A description of the resource",
			//         "maxLength": 200,
			//         "type": "string"
			//       },
			//       "Intents": {
			//         "description": "List of intents",
			//         "insertionOrder": false,
			//         "items": {
			//           "additionalProperties": false,
			//           "description": "An intent represents an action that the user wants to perform. You create a bot to support one or more related intents.",
			//           "properties": {
			//             "Description": {
			//               "description": "A description of the resource",
			//               "maxLength": 200,
			//               "type": "string"
			//             },
			//             "DialogCodeHook": {
			//               "additionalProperties": false,
			//               "description": "Settings that determine the Lambda function that Amazon Lex uses for processing user responses.",
			//               "properties": {
			//                 "Enabled": {
			//                   "type": "boolean"
			//                 }
			//               },
			//               "required": [
			//                 "Enabled"
			//               ],
			//               "type": "object"
			//             },
			//             "FulfillmentCodeHook": {
			//               "additionalProperties": false,
			//               "description": "Settings that determine if a Lambda function should be invoked to fulfill a specific intent.",
			//               "properties": {
			//                 "Enabled": {
			//                   "type": "boolean"
			//                 },
			//                 "FulfillmentUpdatesSpecification": {
			//                   "additionalProperties": false,
			//                   "description": "Provides information for updating the user on the progress of fulfilling an intent.",
			//                   "properties": {
			//                     "Active": {
			//                       "description": "Determines whether fulfillment updates are sent to the user. When this field is true, updates are sent.",
			//                       "type": "boolean"
			//                     },
			//                     "StartResponse": {
			//                       "additionalProperties": false,
			//                       "description": "Provides settings for a message that is sent to the user when a fulfillment Lambda function starts running.",
			//                       "properties": {
			//                         "AllowInterrupt": {
			//                           "description": "Determines whether the user can interrupt the start message while it is playing.",
			//                           "type": "boolean"
			//                         },
			//                         "DelayInSeconds": {
			//                           "description": "The delay between when the Lambda fulfillment function starts running and the start message is played. If the Lambda function returns before the delay is over, the start message isn't played.",
			//                           "maximum": 900,
			//                           "minimum": 1,
			//                           "type": "integer"
			//                         },
			//                         "MessageGroups": {
			//                           "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                           "insertionOrder": false,
			//                           "items": {
			//                             "additionalProperties": false,
			//                             "description": "One or more messages that Amazon Lex can send to the user.",
			//                             "properties": {
			//                               "Message": {
			//                                 "additionalProperties": false,
			//                                 "description": "The primary message that Amazon Lex should send to the user.",
			//                                 "properties": {
			//                                   "CustomPayload": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in a custom format defined by the client application.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The string that is sent to your application.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "ImageResponseCard": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message that defines a response card that the client application can show to the user.",
			//                                     "properties": {
			//                                       "Buttons": {
			//                                         "description": "A list of buttons that should be displayed on the response card.",
			//                                         "insertionOrder": false,
			//                                         "items": {
			//                                           "additionalProperties": false,
			//                                           "description": "A button to use on a response card used to gather slot values from a user.",
			//                                           "properties": {
			//                                             "Text": {
			//                                               "description": "The text that appears on the button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Value": {
			//                                               "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Text",
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "maxItems": 5,
			//                                         "type": "array"
			//                                       },
			//                                       "ImageUrl": {
			//                                         "description": "The URL of an image to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Subtitle": {
			//                                         "description": "The subtitle to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Title": {
			//                                         "description": "The title to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Title"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "PlainTextMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in plain text format.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The message to send to the user.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "SSMLMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The SSML text that defines the prompt.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   }
			//                                 },
			//                                 "type": "object"
			//                               },
			//                               "Variations": {
			//                                 "description": "Message variations to send to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "The primary message that Amazon Lex should send to the user.",
			//                                   "properties": {
			//                                     "CustomPayload": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in a custom format defined by the client application.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The string that is sent to your application.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "ImageResponseCard": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message that defines a response card that the client application can show to the user.",
			//                                       "properties": {
			//                                         "Buttons": {
			//                                           "description": "A list of buttons that should be displayed on the response card.",
			//                                           "insertionOrder": false,
			//                                           "items": {
			//                                             "additionalProperties": false,
			//                                             "description": "A button to use on a response card used to gather slot values from a user.",
			//                                             "properties": {
			//                                               "Text": {
			//                                                 "description": "The text that appears on the button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Value": {
			//                                                 "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Text",
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "maxItems": 5,
			//                                           "type": "array"
			//                                         },
			//                                         "ImageUrl": {
			//                                           "description": "The URL of an image to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Subtitle": {
			//                                           "description": "The subtitle to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Title": {
			//                                           "description": "The title to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Title"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "PlainTextMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in plain text format.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The message to send to the user.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "SSMLMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The SSML text that defines the prompt.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     }
			//                                   },
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 2,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "Message"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "maxItems": 5,
			//                           "minItems": 1,
			//                           "type": "array"
			//                         }
			//                       },
			//                       "required": [
			//                         "DelayInSeconds",
			//                         "MessageGroups"
			//                       ],
			//                       "type": "object"
			//                     },
			//                     "TimeoutInSeconds": {
			//                       "description": "The length of time that the fulfillment Lambda function should run before it times out.",
			//                       "maximum": 900,
			//                       "minimum": 1,
			//                       "type": "integer"
			//                     },
			//                     "UpdateResponse": {
			//                       "additionalProperties": false,
			//                       "description": "Provides settings for a message that is sent periodically to the user while a fulfillment Lambda function is running.",
			//                       "properties": {
			//                         "AllowInterrupt": {
			//                           "description": "Determines whether the user can interrupt an update message while it is playing.",
			//                           "type": "boolean"
			//                         },
			//                         "FrequencyInSeconds": {
			//                           "description": "The frequency that a message is sent to the user. When the period ends, Amazon Lex chooses a message from the message groups and plays it to the user. If the fulfillment Lambda returns before the first period ends, an update message is not played to the user.",
			//                           "maximum": 900,
			//                           "minimum": 1,
			//                           "type": "integer"
			//                         },
			//                         "MessageGroups": {
			//                           "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                           "insertionOrder": false,
			//                           "items": {
			//                             "additionalProperties": false,
			//                             "description": "One or more messages that Amazon Lex can send to the user.",
			//                             "properties": {
			//                               "Message": {
			//                                 "additionalProperties": false,
			//                                 "description": "The primary message that Amazon Lex should send to the user.",
			//                                 "properties": {
			//                                   "CustomPayload": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in a custom format defined by the client application.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The string that is sent to your application.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "ImageResponseCard": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message that defines a response card that the client application can show to the user.",
			//                                     "properties": {
			//                                       "Buttons": {
			//                                         "description": "A list of buttons that should be displayed on the response card.",
			//                                         "insertionOrder": false,
			//                                         "items": {
			//                                           "additionalProperties": false,
			//                                           "description": "A button to use on a response card used to gather slot values from a user.",
			//                                           "properties": {
			//                                             "Text": {
			//                                               "description": "The text that appears on the button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Value": {
			//                                               "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Text",
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "maxItems": 5,
			//                                         "type": "array"
			//                                       },
			//                                       "ImageUrl": {
			//                                         "description": "The URL of an image to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Subtitle": {
			//                                         "description": "The subtitle to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Title": {
			//                                         "description": "The title to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Title"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "PlainTextMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in plain text format.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The message to send to the user.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "SSMLMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The SSML text that defines the prompt.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   }
			//                                 },
			//                                 "type": "object"
			//                               },
			//                               "Variations": {
			//                                 "description": "Message variations to send to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "The primary message that Amazon Lex should send to the user.",
			//                                   "properties": {
			//                                     "CustomPayload": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in a custom format defined by the client application.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The string that is sent to your application.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "ImageResponseCard": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message that defines a response card that the client application can show to the user.",
			//                                       "properties": {
			//                                         "Buttons": {
			//                                           "description": "A list of buttons that should be displayed on the response card.",
			//                                           "insertionOrder": false,
			//                                           "items": {
			//                                             "additionalProperties": false,
			//                                             "description": "A button to use on a response card used to gather slot values from a user.",
			//                                             "properties": {
			//                                               "Text": {
			//                                                 "description": "The text that appears on the button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Value": {
			//                                                 "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Text",
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "maxItems": 5,
			//                                           "type": "array"
			//                                         },
			//                                         "ImageUrl": {
			//                                           "description": "The URL of an image to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Subtitle": {
			//                                           "description": "The subtitle to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Title": {
			//                                           "description": "The title to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Title"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "PlainTextMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in plain text format.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The message to send to the user.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "SSMLMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The SSML text that defines the prompt.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     }
			//                                   },
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 2,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "Message"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "maxItems": 5,
			//                           "minItems": 1,
			//                           "type": "array"
			//                         }
			//                       },
			//                       "required": [
			//                         "FrequencyInSeconds",
			//                         "MessageGroups"
			//                       ],
			//                       "type": "object"
			//                     }
			//                   },
			//                   "required": [
			//                     "Active"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "PostFulfillmentStatusSpecification": {
			//                   "additionalProperties": false,
			//                   "description": "Provides information for updating the user on the progress of fulfilling an intent.",
			//                   "properties": {
			//                     "FailureResponse": {
			//                       "additionalProperties": false,
			//                       "description": "A list of message groups that Amazon Lex uses to respond the user input.",
			//                       "properties": {
			//                         "AllowInterrupt": {
			//                           "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                           "type": "boolean"
			//                         },
			//                         "MessageGroupsList": {
			//                           "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                           "insertionOrder": false,
			//                           "items": {
			//                             "additionalProperties": false,
			//                             "description": "One or more messages that Amazon Lex can send to the user.",
			//                             "properties": {
			//                               "Message": {
			//                                 "additionalProperties": false,
			//                                 "description": "The primary message that Amazon Lex should send to the user.",
			//                                 "properties": {
			//                                   "CustomPayload": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in a custom format defined by the client application.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The string that is sent to your application.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "ImageResponseCard": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message that defines a response card that the client application can show to the user.",
			//                                     "properties": {
			//                                       "Buttons": {
			//                                         "description": "A list of buttons that should be displayed on the response card.",
			//                                         "insertionOrder": false,
			//                                         "items": {
			//                                           "additionalProperties": false,
			//                                           "description": "A button to use on a response card used to gather slot values from a user.",
			//                                           "properties": {
			//                                             "Text": {
			//                                               "description": "The text that appears on the button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Value": {
			//                                               "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Text",
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "maxItems": 5,
			//                                         "type": "array"
			//                                       },
			//                                       "ImageUrl": {
			//                                         "description": "The URL of an image to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Subtitle": {
			//                                         "description": "The subtitle to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Title": {
			//                                         "description": "The title to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Title"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "PlainTextMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in plain text format.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The message to send to the user.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "SSMLMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The SSML text that defines the prompt.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   }
			//                                 },
			//                                 "type": "object"
			//                               },
			//                               "Variations": {
			//                                 "description": "Message variations to send to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "The primary message that Amazon Lex should send to the user.",
			//                                   "properties": {
			//                                     "CustomPayload": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in a custom format defined by the client application.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The string that is sent to your application.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "ImageResponseCard": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message that defines a response card that the client application can show to the user.",
			//                                       "properties": {
			//                                         "Buttons": {
			//                                           "description": "A list of buttons that should be displayed on the response card.",
			//                                           "insertionOrder": false,
			//                                           "items": {
			//                                             "additionalProperties": false,
			//                                             "description": "A button to use on a response card used to gather slot values from a user.",
			//                                             "properties": {
			//                                               "Text": {
			//                                                 "description": "The text that appears on the button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Value": {
			//                                                 "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Text",
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "maxItems": 5,
			//                                           "type": "array"
			//                                         },
			//                                         "ImageUrl": {
			//                                           "description": "The URL of an image to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Subtitle": {
			//                                           "description": "The subtitle to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Title": {
			//                                           "description": "The title to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Title"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "PlainTextMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in plain text format.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The message to send to the user.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "SSMLMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The SSML text that defines the prompt.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     }
			//                                   },
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 2,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "Message"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "maxItems": 5,
			//                           "minItems": 1,
			//                           "type": "array"
			//                         }
			//                       },
			//                       "required": [
			//                         "MessageGroupsList"
			//                       ],
			//                       "type": "object"
			//                     },
			//                     "SuccessResponse": {
			//                       "additionalProperties": false,
			//                       "description": "A list of message groups that Amazon Lex uses to respond the user input.",
			//                       "properties": {
			//                         "AllowInterrupt": {
			//                           "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                           "type": "boolean"
			//                         },
			//                         "MessageGroupsList": {
			//                           "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                           "insertionOrder": false,
			//                           "items": {
			//                             "additionalProperties": false,
			//                             "description": "One or more messages that Amazon Lex can send to the user.",
			//                             "properties": {
			//                               "Message": {
			//                                 "additionalProperties": false,
			//                                 "description": "The primary message that Amazon Lex should send to the user.",
			//                                 "properties": {
			//                                   "CustomPayload": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in a custom format defined by the client application.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The string that is sent to your application.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "ImageResponseCard": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message that defines a response card that the client application can show to the user.",
			//                                     "properties": {
			//                                       "Buttons": {
			//                                         "description": "A list of buttons that should be displayed on the response card.",
			//                                         "insertionOrder": false,
			//                                         "items": {
			//                                           "additionalProperties": false,
			//                                           "description": "A button to use on a response card used to gather slot values from a user.",
			//                                           "properties": {
			//                                             "Text": {
			//                                               "description": "The text that appears on the button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Value": {
			//                                               "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Text",
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "maxItems": 5,
			//                                         "type": "array"
			//                                       },
			//                                       "ImageUrl": {
			//                                         "description": "The URL of an image to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Subtitle": {
			//                                         "description": "The subtitle to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Title": {
			//                                         "description": "The title to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Title"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "PlainTextMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in plain text format.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The message to send to the user.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "SSMLMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The SSML text that defines the prompt.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   }
			//                                 },
			//                                 "type": "object"
			//                               },
			//                               "Variations": {
			//                                 "description": "Message variations to send to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "The primary message that Amazon Lex should send to the user.",
			//                                   "properties": {
			//                                     "CustomPayload": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in a custom format defined by the client application.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The string that is sent to your application.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "ImageResponseCard": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message that defines a response card that the client application can show to the user.",
			//                                       "properties": {
			//                                         "Buttons": {
			//                                           "description": "A list of buttons that should be displayed on the response card.",
			//                                           "insertionOrder": false,
			//                                           "items": {
			//                                             "additionalProperties": false,
			//                                             "description": "A button to use on a response card used to gather slot values from a user.",
			//                                             "properties": {
			//                                               "Text": {
			//                                                 "description": "The text that appears on the button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Value": {
			//                                                 "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Text",
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "maxItems": 5,
			//                                           "type": "array"
			//                                         },
			//                                         "ImageUrl": {
			//                                           "description": "The URL of an image to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Subtitle": {
			//                                           "description": "The subtitle to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Title": {
			//                                           "description": "The title to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Title"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "PlainTextMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in plain text format.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The message to send to the user.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "SSMLMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The SSML text that defines the prompt.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     }
			//                                   },
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 2,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "Message"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "maxItems": 5,
			//                           "minItems": 1,
			//                           "type": "array"
			//                         }
			//                       },
			//                       "required": [
			//                         "MessageGroupsList"
			//                       ],
			//                       "type": "object"
			//                     },
			//                     "TimeoutResponse": {
			//                       "additionalProperties": false,
			//                       "description": "A list of message groups that Amazon Lex uses to respond the user input.",
			//                       "properties": {
			//                         "AllowInterrupt": {
			//                           "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                           "type": "boolean"
			//                         },
			//                         "MessageGroupsList": {
			//                           "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                           "insertionOrder": false,
			//                           "items": {
			//                             "additionalProperties": false,
			//                             "description": "One or more messages that Amazon Lex can send to the user.",
			//                             "properties": {
			//                               "Message": {
			//                                 "additionalProperties": false,
			//                                 "description": "The primary message that Amazon Lex should send to the user.",
			//                                 "properties": {
			//                                   "CustomPayload": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in a custom format defined by the client application.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The string that is sent to your application.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "ImageResponseCard": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message that defines a response card that the client application can show to the user.",
			//                                     "properties": {
			//                                       "Buttons": {
			//                                         "description": "A list of buttons that should be displayed on the response card.",
			//                                         "insertionOrder": false,
			//                                         "items": {
			//                                           "additionalProperties": false,
			//                                           "description": "A button to use on a response card used to gather slot values from a user.",
			//                                           "properties": {
			//                                             "Text": {
			//                                               "description": "The text that appears on the button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Value": {
			//                                               "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                               "maxLength": 50,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Text",
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "maxItems": 5,
			//                                         "type": "array"
			//                                       },
			//                                       "ImageUrl": {
			//                                         "description": "The URL of an image to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Subtitle": {
			//                                         "description": "The subtitle to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       },
			//                                       "Title": {
			//                                         "description": "The title to display on the response card.",
			//                                         "maxLength": 250,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Title"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "PlainTextMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in plain text format.",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The message to send to the user.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   },
			//                                   "SSMLMessage": {
			//                                     "additionalProperties": false,
			//                                     "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                     "properties": {
			//                                       "Value": {
			//                                         "description": "The SSML text that defines the prompt.",
			//                                         "maxLength": 1000,
			//                                         "minLength": 1,
			//                                         "type": "string"
			//                                       }
			//                                     },
			//                                     "required": [
			//                                       "Value"
			//                                     ],
			//                                     "type": "object"
			//                                   }
			//                                 },
			//                                 "type": "object"
			//                               },
			//                               "Variations": {
			//                                 "description": "Message variations to send to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "The primary message that Amazon Lex should send to the user.",
			//                                   "properties": {
			//                                     "CustomPayload": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in a custom format defined by the client application.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The string that is sent to your application.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "ImageResponseCard": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message that defines a response card that the client application can show to the user.",
			//                                       "properties": {
			//                                         "Buttons": {
			//                                           "description": "A list of buttons that should be displayed on the response card.",
			//                                           "insertionOrder": false,
			//                                           "items": {
			//                                             "additionalProperties": false,
			//                                             "description": "A button to use on a response card used to gather slot values from a user.",
			//                                             "properties": {
			//                                               "Text": {
			//                                                 "description": "The text that appears on the button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Value": {
			//                                                 "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Text",
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "maxItems": 5,
			//                                           "type": "array"
			//                                         },
			//                                         "ImageUrl": {
			//                                           "description": "The URL of an image to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Subtitle": {
			//                                           "description": "The subtitle to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Title": {
			//                                           "description": "The title to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Title"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "PlainTextMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in plain text format.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The message to send to the user.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "SSMLMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The SSML text that defines the prompt.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     }
			//                                   },
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 2,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "Message"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "maxItems": 5,
			//                           "minItems": 1,
			//                           "type": "array"
			//                         }
			//                       },
			//                       "required": [
			//                         "MessageGroupsList"
			//                       ],
			//                       "type": "object"
			//                     }
			//                   },
			//                   "type": "object"
			//                 }
			//               },
			//               "required": [
			//                 "Enabled"
			//               ],
			//               "type": "object"
			//             },
			//             "InputContexts": {
			//               "description": "The list of input contexts specified for the intent.",
			//               "insertionOrder": false,
			//               "items": {
			//                 "additionalProperties": false,
			//                 "description": "InputContext specified for the intent.",
			//                 "properties": {
			//                   "Name": {
			//                     "description": "The name of the context.",
			//                     "maxLength": 100,
			//                     "minLength": 1,
			//                     "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "Name"
			//                 ],
			//                 "type": "object"
			//               },
			//               "maxItems": 5,
			//               "type": "array"
			//             },
			//             "IntentClosingSetting": {
			//               "additionalProperties": false,
			//               "description": "Response that Amazon Lex sends to the user when the intent is closed.",
			//               "properties": {
			//                 "ClosingResponse": {
			//                   "additionalProperties": false,
			//                   "description": "A list of message groups that Amazon Lex uses to respond the user input.",
			//                   "properties": {
			//                     "AllowInterrupt": {
			//                       "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                       "type": "boolean"
			//                     },
			//                     "MessageGroupsList": {
			//                       "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                       "insertionOrder": false,
			//                       "items": {
			//                         "additionalProperties": false,
			//                         "description": "One or more messages that Amazon Lex can send to the user.",
			//                         "properties": {
			//                           "Message": {
			//                             "additionalProperties": false,
			//                             "description": "The primary message that Amazon Lex should send to the user.",
			//                             "properties": {
			//                               "CustomPayload": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in a custom format defined by the client application.",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The string that is sent to your application.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "ImageResponseCard": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message that defines a response card that the client application can show to the user.",
			//                                 "properties": {
			//                                   "Buttons": {
			//                                     "description": "A list of buttons that should be displayed on the response card.",
			//                                     "insertionOrder": false,
			//                                     "items": {
			//                                       "additionalProperties": false,
			//                                       "description": "A button to use on a response card used to gather slot values from a user.",
			//                                       "properties": {
			//                                         "Text": {
			//                                           "description": "The text that appears on the button.",
			//                                           "maxLength": 50,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Value": {
			//                                           "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                           "maxLength": 50,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Text",
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "maxItems": 5,
			//                                     "type": "array"
			//                                   },
			//                                   "ImageUrl": {
			//                                     "description": "The URL of an image to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   },
			//                                   "Subtitle": {
			//                                     "description": "The subtitle to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   },
			//                                   "Title": {
			//                                     "description": "The title to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Title"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "PlainTextMessage": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in plain text format.",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The message to send to the user.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "SSMLMessage": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The SSML text that defines the prompt.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               }
			//                             },
			//                             "type": "object"
			//                           },
			//                           "Variations": {
			//                             "description": "Message variations to send to the user.",
			//                             "insertionOrder": false,
			//                             "items": {
			//                               "additionalProperties": false,
			//                               "description": "The primary message that Amazon Lex should send to the user.",
			//                               "properties": {
			//                                 "CustomPayload": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in a custom format defined by the client application.",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The string that is sent to your application.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "ImageResponseCard": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message that defines a response card that the client application can show to the user.",
			//                                   "properties": {
			//                                     "Buttons": {
			//                                       "description": "A list of buttons that should be displayed on the response card.",
			//                                       "insertionOrder": false,
			//                                       "items": {
			//                                         "additionalProperties": false,
			//                                         "description": "A button to use on a response card used to gather slot values from a user.",
			//                                         "properties": {
			//                                           "Text": {
			//                                             "description": "The text that appears on the button.",
			//                                             "maxLength": 50,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           },
			//                                           "Value": {
			//                                             "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                             "maxLength": 50,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Text",
			//                                           "Value"
			//                                         ],
			//                                         "type": "object"
			//                                       },
			//                                       "maxItems": 5,
			//                                       "type": "array"
			//                                     },
			//                                     "ImageUrl": {
			//                                       "description": "The URL of an image to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     },
			//                                     "Subtitle": {
			//                                       "description": "The subtitle to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     },
			//                                     "Title": {
			//                                       "description": "The title to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Title"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "PlainTextMessage": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in plain text format.",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The message to send to the user.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "SSMLMessage": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The SSML text that defines the prompt.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 }
			//                               },
			//                               "type": "object"
			//                             },
			//                             "maxItems": 2,
			//                             "type": "array"
			//                           }
			//                         },
			//                         "required": [
			//                           "Message"
			//                         ],
			//                         "type": "object"
			//                       },
			//                       "maxItems": 5,
			//                       "minItems": 1,
			//                       "type": "array"
			//                     }
			//                   },
			//                   "required": [
			//                     "MessageGroupsList"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "IsActive": {
			//                   "type": "boolean"
			//                 }
			//               },
			//               "required": [
			//                 "ClosingResponse"
			//               ],
			//               "type": "object"
			//             },
			//             "IntentConfirmationSetting": {
			//               "additionalProperties": false,
			//               "description": "Prompts that Amazon Lex sends to the user to confirm the completion of an intent.",
			//               "properties": {
			//                 "DeclinationResponse": {
			//                   "additionalProperties": false,
			//                   "description": "A list of message groups that Amazon Lex uses to respond the user input.",
			//                   "properties": {
			//                     "AllowInterrupt": {
			//                       "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                       "type": "boolean"
			//                     },
			//                     "MessageGroupsList": {
			//                       "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                       "insertionOrder": false,
			//                       "items": {
			//                         "additionalProperties": false,
			//                         "description": "One or more messages that Amazon Lex can send to the user.",
			//                         "properties": {
			//                           "Message": {
			//                             "additionalProperties": false,
			//                             "description": "The primary message that Amazon Lex should send to the user.",
			//                             "properties": {
			//                               "CustomPayload": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in a custom format defined by the client application.",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The string that is sent to your application.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "ImageResponseCard": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message that defines a response card that the client application can show to the user.",
			//                                 "properties": {
			//                                   "Buttons": {
			//                                     "description": "A list of buttons that should be displayed on the response card.",
			//                                     "insertionOrder": false,
			//                                     "items": {
			//                                       "additionalProperties": false,
			//                                       "description": "A button to use on a response card used to gather slot values from a user.",
			//                                       "properties": {
			//                                         "Text": {
			//                                           "description": "The text that appears on the button.",
			//                                           "maxLength": 50,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Value": {
			//                                           "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                           "maxLength": 50,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Text",
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "maxItems": 5,
			//                                     "type": "array"
			//                                   },
			//                                   "ImageUrl": {
			//                                     "description": "The URL of an image to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   },
			//                                   "Subtitle": {
			//                                     "description": "The subtitle to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   },
			//                                   "Title": {
			//                                     "description": "The title to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Title"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "PlainTextMessage": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in plain text format.",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The message to send to the user.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "SSMLMessage": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The SSML text that defines the prompt.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               }
			//                             },
			//                             "type": "object"
			//                           },
			//                           "Variations": {
			//                             "description": "Message variations to send to the user.",
			//                             "insertionOrder": false,
			//                             "items": {
			//                               "additionalProperties": false,
			//                               "description": "The primary message that Amazon Lex should send to the user.",
			//                               "properties": {
			//                                 "CustomPayload": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in a custom format defined by the client application.",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The string that is sent to your application.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "ImageResponseCard": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message that defines a response card that the client application can show to the user.",
			//                                   "properties": {
			//                                     "Buttons": {
			//                                       "description": "A list of buttons that should be displayed on the response card.",
			//                                       "insertionOrder": false,
			//                                       "items": {
			//                                         "additionalProperties": false,
			//                                         "description": "A button to use on a response card used to gather slot values from a user.",
			//                                         "properties": {
			//                                           "Text": {
			//                                             "description": "The text that appears on the button.",
			//                                             "maxLength": 50,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           },
			//                                           "Value": {
			//                                             "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                             "maxLength": 50,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Text",
			//                                           "Value"
			//                                         ],
			//                                         "type": "object"
			//                                       },
			//                                       "maxItems": 5,
			//                                       "type": "array"
			//                                     },
			//                                     "ImageUrl": {
			//                                       "description": "The URL of an image to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     },
			//                                     "Subtitle": {
			//                                       "description": "The subtitle to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     },
			//                                     "Title": {
			//                                       "description": "The title to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Title"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "PlainTextMessage": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in plain text format.",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The message to send to the user.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "SSMLMessage": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The SSML text that defines the prompt.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 }
			//                               },
			//                               "type": "object"
			//                             },
			//                             "maxItems": 2,
			//                             "type": "array"
			//                           }
			//                         },
			//                         "required": [
			//                           "Message"
			//                         ],
			//                         "type": "object"
			//                       },
			//                       "maxItems": 5,
			//                       "minItems": 1,
			//                       "type": "array"
			//                     }
			//                   },
			//                   "required": [
			//                     "MessageGroupsList"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "IsActive": {
			//                   "type": "boolean"
			//                 },
			//                 "PromptSpecification": {
			//                   "additionalProperties": false,
			//                   "description": "Prompts the user to confirm the intent.",
			//                   "properties": {
			//                     "AllowInterrupt": {
			//                       "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                       "type": "boolean"
			//                     },
			//                     "MaxRetries": {
			//                       "description": "The maximum number of times the bot tries to elicit a resonse from the user using this prompt.",
			//                       "maximum": 5,
			//                       "minimum": 0,
			//                       "type": "integer"
			//                     },
			//                     "MessageGroupsList": {
			//                       "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                       "insertionOrder": false,
			//                       "items": {
			//                         "additionalProperties": false,
			//                         "description": "One or more messages that Amazon Lex can send to the user.",
			//                         "properties": {
			//                           "Message": {
			//                             "additionalProperties": false,
			//                             "description": "The primary message that Amazon Lex should send to the user.",
			//                             "properties": {
			//                               "CustomPayload": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in a custom format defined by the client application.",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The string that is sent to your application.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "ImageResponseCard": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message that defines a response card that the client application can show to the user.",
			//                                 "properties": {
			//                                   "Buttons": {
			//                                     "description": "A list of buttons that should be displayed on the response card.",
			//                                     "insertionOrder": false,
			//                                     "items": {
			//                                       "additionalProperties": false,
			//                                       "description": "A button to use on a response card used to gather slot values from a user.",
			//                                       "properties": {
			//                                         "Text": {
			//                                           "description": "The text that appears on the button.",
			//                                           "maxLength": 50,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Value": {
			//                                           "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                           "maxLength": 50,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Text",
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "maxItems": 5,
			//                                     "type": "array"
			//                                   },
			//                                   "ImageUrl": {
			//                                     "description": "The URL of an image to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   },
			//                                   "Subtitle": {
			//                                     "description": "The subtitle to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   },
			//                                   "Title": {
			//                                     "description": "The title to display on the response card.",
			//                                     "maxLength": 250,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Title"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "PlainTextMessage": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in plain text format.",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The message to send to the user.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               },
			//                               "SSMLMessage": {
			//                                 "additionalProperties": false,
			//                                 "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                 "properties": {
			//                                   "Value": {
			//                                     "description": "The SSML text that defines the prompt.",
			//                                     "maxLength": 1000,
			//                                     "minLength": 1,
			//                                     "type": "string"
			//                                   }
			//                                 },
			//                                 "required": [
			//                                   "Value"
			//                                 ],
			//                                 "type": "object"
			//                               }
			//                             },
			//                             "type": "object"
			//                           },
			//                           "Variations": {
			//                             "description": "Message variations to send to the user.",
			//                             "insertionOrder": false,
			//                             "items": {
			//                               "additionalProperties": false,
			//                               "description": "The primary message that Amazon Lex should send to the user.",
			//                               "properties": {
			//                                 "CustomPayload": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in a custom format defined by the client application.",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The string that is sent to your application.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "ImageResponseCard": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message that defines a response card that the client application can show to the user.",
			//                                   "properties": {
			//                                     "Buttons": {
			//                                       "description": "A list of buttons that should be displayed on the response card.",
			//                                       "insertionOrder": false,
			//                                       "items": {
			//                                         "additionalProperties": false,
			//                                         "description": "A button to use on a response card used to gather slot values from a user.",
			//                                         "properties": {
			//                                           "Text": {
			//                                             "description": "The text that appears on the button.",
			//                                             "maxLength": 50,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           },
			//                                           "Value": {
			//                                             "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                             "maxLength": 50,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Text",
			//                                           "Value"
			//                                         ],
			//                                         "type": "object"
			//                                       },
			//                                       "maxItems": 5,
			//                                       "type": "array"
			//                                     },
			//                                     "ImageUrl": {
			//                                       "description": "The URL of an image to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     },
			//                                     "Subtitle": {
			//                                       "description": "The subtitle to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     },
			//                                     "Title": {
			//                                       "description": "The title to display on the response card.",
			//                                       "maxLength": 250,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Title"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "PlainTextMessage": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in plain text format.",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The message to send to the user.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "SSMLMessage": {
			//                                   "additionalProperties": false,
			//                                   "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                   "properties": {
			//                                     "Value": {
			//                                       "description": "The SSML text that defines the prompt.",
			//                                       "maxLength": 1000,
			//                                       "minLength": 1,
			//                                       "type": "string"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Value"
			//                                   ],
			//                                   "type": "object"
			//                                 }
			//                               },
			//                               "type": "object"
			//                             },
			//                             "maxItems": 2,
			//                             "type": "array"
			//                           }
			//                         },
			//                         "required": [
			//                           "Message"
			//                         ],
			//                         "type": "object"
			//                       },
			//                       "maxItems": 5,
			//                       "minItems": 1,
			//                       "type": "array"
			//                     }
			//                   },
			//                   "required": [
			//                     "MessageGroupsList",
			//                     "MaxRetries"
			//                   ],
			//                   "type": "object"
			//                 }
			//               },
			//               "required": [
			//                 "PromptSpecification",
			//                 "DeclinationResponse"
			//               ],
			//               "type": "object"
			//             },
			//             "KendraConfiguration": {
			//               "additionalProperties": false,
			//               "description": "Configuration for searching a Amazon Kendra index specified for the intent.",
			//               "properties": {
			//                 "KendraIndex": {
			//                   "description": "The Amazon Resource Name (ARN) of the Amazon Kendra index that you want the AMAZON.KendraSearchIntent intent to search.",
			//                   "maxLength": 2048,
			//                   "minLength": 32,
			//                   "pattern": "^arn:aws[a-zA-Z-]*:kendra:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:index/[a-zA-Z0-9][a-zA-Z0-9_-]*$",
			//                   "type": "string"
			//                 },
			//                 "QueryFilterString": {
			//                   "description": "A query filter that Amazon Lex sends to Amazon Kendra to filter the response from a query.",
			//                   "maxLength": 5000,
			//                   "minLength": 1,
			//                   "type": "string"
			//                 },
			//                 "QueryFilterStringEnabled": {
			//                   "description": "Determines whether the AMAZON.KendraSearchIntent intent uses a custom query string to query the Amazon Kendra index.",
			//                   "type": "boolean"
			//                 }
			//               },
			//               "required": [
			//                 "KendraIndex"
			//               ],
			//               "type": "object"
			//             },
			//             "Name": {
			//               "description": "Unique name for a resource.",
			//               "maxLength": 100,
			//               "minLength": 1,
			//               "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//               "type": "string"
			//             },
			//             "OutputContexts": {
			//               "description": "A list of contexts that the intent activates when it is fulfilled.",
			//               "insertionOrder": false,
			//               "items": {
			//                 "additionalProperties": false,
			//                 "description": "A session context that is activated when an intent is fulfilled.",
			//                 "properties": {
			//                   "Name": {
			//                     "description": "Unique name for a resource.",
			//                     "maxLength": 100,
			//                     "minLength": 1,
			//                     "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//                     "type": "string"
			//                   },
			//                   "TimeToLiveInSeconds": {
			//                     "description": "The amount of time, in seconds, that the output context should remain active.",
			//                     "maximum": 86400,
			//                     "minimum": 5,
			//                     "type": "integer"
			//                   },
			//                   "TurnsToLive": {
			//                     "description": "The number of conversation turns that the output context should remain active.",
			//                     "maximum": 20,
			//                     "minimum": 1,
			//                     "type": "integer"
			//                   }
			//                 },
			//                 "required": [
			//                   "Name",
			//                   "TimeToLiveInSeconds",
			//                   "TurnsToLive"
			//                 ],
			//                 "type": "object"
			//               },
			//               "maxItems": 10,
			//               "type": "array"
			//             },
			//             "ParentIntentSignature": {
			//               "description": "A unique identifier for the built-in intent to base this intent on.",
			//               "type": "string"
			//             },
			//             "SampleUtterances": {
			//               "description": "An array of sample utterances",
			//               "insertionOrder": false,
			//               "items": {
			//                 "additionalProperties": false,
			//                 "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt.",
			//                 "properties": {
			//                   "Utterance": {
			//                     "description": "The sample utterance that Amazon Lex uses to build its machine-learning model to recognize intents/slots.",
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "Utterance"
			//                 ],
			//                 "type": "object"
			//               },
			//               "type": "array"
			//             },
			//             "SlotPriorities": {
			//               "description": "List for slot priorities",
			//               "insertionOrder": false,
			//               "items": {
			//                 "additionalProperties": false,
			//                 "description": "The priority that Amazon Lex should use when eliciting slot values from a user.",
			//                 "properties": {
			//                   "Priority": {
			//                     "description": "The priority that a slot should be elicited.",
			//                     "maximum": 100,
			//                     "minimum": 0,
			//                     "type": "integer"
			//                   },
			//                   "SlotName": {
			//                     "description": "The name of the slot.",
			//                     "maxLength": 100,
			//                     "minLength": 1,
			//                     "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//                     "type": "string"
			//                   }
			//                 },
			//                 "required": [
			//                   "SlotName",
			//                   "Priority"
			//                 ],
			//                 "type": "object"
			//               },
			//               "type": "array"
			//             },
			//             "Slots": {
			//               "description": "List of slots",
			//               "insertionOrder": false,
			//               "items": {
			//                 "additionalProperties": false,
			//                 "description": "A slot is a variable needed to fulfill an intent, where an intent can require zero or more slots.",
			//                 "properties": {
			//                   "Description": {
			//                     "description": "A description of the resource",
			//                     "maxLength": 200,
			//                     "type": "string"
			//                   },
			//                   "MultipleValuesSetting": {
			//                     "additionalProperties": false,
			//                     "description": "Indicates whether a slot can return multiple values.",
			//                     "properties": {
			//                       "AllowMultipleValues": {
			//                         "type": "boolean"
			//                       }
			//                     },
			//                     "type": "object"
			//                   },
			//                   "Name": {
			//                     "description": "Unique name for a resource.",
			//                     "maxLength": 100,
			//                     "minLength": 1,
			//                     "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//                     "type": "string"
			//                   },
			//                   "ObfuscationSetting": {
			//                     "additionalProperties": false,
			//                     "description": "Determines whether Amazon Lex obscures slot values in conversation logs.",
			//                     "properties": {
			//                       "ObfuscationSettingType": {
			//                         "description": "Value that determines whether Amazon Lex obscures slot values in conversation logs. The default is to obscure the values.",
			//                         "enum": [
			//                           "None",
			//                           "DefaultObfuscation"
			//                         ],
			//                         "type": "string"
			//                       }
			//                     },
			//                     "required": [
			//                       "ObfuscationSettingType"
			//                     ],
			//                     "type": "object"
			//                   },
			//                   "SlotTypeName": {
			//                     "description": "The slot type name that is used in the slot. Allows for custom and built-in slot type names",
			//                     "type": "string"
			//                   },
			//                   "ValueElicitationSetting": {
			//                     "additionalProperties": false,
			//                     "description": "Settings that you can use for eliciting a slot value.",
			//                     "properties": {
			//                       "DefaultValueSpecification": {
			//                         "additionalProperties": false,
			//                         "description": "A list of default values for a slot.",
			//                         "properties": {
			//                           "DefaultValueList": {
			//                             "description": "A list of slot default values",
			//                             "insertionOrder": false,
			//                             "items": {
			//                               "additionalProperties": false,
			//                               "description": "The default value to use when a user doesn't provide a value for a slot.",
			//                               "properties": {
			//                                 "DefaultValue": {
			//                                   "description": "The default value to use when a user doesn't provide a value for a slot.",
			//                                   "maxLength": 202,
			//                                   "minLength": 1,
			//                                   "type": "string"
			//                                 }
			//                               },
			//                               "required": [
			//                                 "DefaultValue"
			//                               ],
			//                               "type": "object"
			//                             },
			//                             "maxItems": 10,
			//                             "type": "array"
			//                           }
			//                         },
			//                         "required": [
			//                           "DefaultValueList"
			//                         ],
			//                         "type": "object"
			//                       },
			//                       "PromptSpecification": {
			//                         "additionalProperties": false,
			//                         "description": "The prompt that Amazon Lex uses to elicit the slot value from the user.",
			//                         "properties": {
			//                           "AllowInterrupt": {
			//                             "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                             "type": "boolean"
			//                           },
			//                           "MaxRetries": {
			//                             "description": "The maximum number of times the bot tries to elicit a resonse from the user using this prompt.",
			//                             "maximum": 5,
			//                             "minimum": 0,
			//                             "type": "integer"
			//                           },
			//                           "MessageGroupsList": {
			//                             "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                             "insertionOrder": false,
			//                             "items": {
			//                               "additionalProperties": false,
			//                               "description": "One or more messages that Amazon Lex can send to the user.",
			//                               "properties": {
			//                                 "Message": {
			//                                   "additionalProperties": false,
			//                                   "description": "The primary message that Amazon Lex should send to the user.",
			//                                   "properties": {
			//                                     "CustomPayload": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in a custom format defined by the client application.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The string that is sent to your application.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "ImageResponseCard": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message that defines a response card that the client application can show to the user.",
			//                                       "properties": {
			//                                         "Buttons": {
			//                                           "description": "A list of buttons that should be displayed on the response card.",
			//                                           "insertionOrder": false,
			//                                           "items": {
			//                                             "additionalProperties": false,
			//                                             "description": "A button to use on a response card used to gather slot values from a user.",
			//                                             "properties": {
			//                                               "Text": {
			//                                                 "description": "The text that appears on the button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Value": {
			//                                                 "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                 "maxLength": 50,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Text",
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "maxItems": 5,
			//                                           "type": "array"
			//                                         },
			//                                         "ImageUrl": {
			//                                           "description": "The URL of an image to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Subtitle": {
			//                                           "description": "The subtitle to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         },
			//                                         "Title": {
			//                                           "description": "The title to display on the response card.",
			//                                           "maxLength": 250,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Title"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "PlainTextMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in plain text format.",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The message to send to the user.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     },
			//                                     "SSMLMessage": {
			//                                       "additionalProperties": false,
			//                                       "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                       "properties": {
			//                                         "Value": {
			//                                           "description": "The SSML text that defines the prompt.",
			//                                           "maxLength": 1000,
			//                                           "minLength": 1,
			//                                           "type": "string"
			//                                         }
			//                                       },
			//                                       "required": [
			//                                         "Value"
			//                                       ],
			//                                       "type": "object"
			//                                     }
			//                                   },
			//                                   "type": "object"
			//                                 },
			//                                 "Variations": {
			//                                   "description": "Message variations to send to the user.",
			//                                   "insertionOrder": false,
			//                                   "items": {
			//                                     "additionalProperties": false,
			//                                     "description": "The primary message that Amazon Lex should send to the user.",
			//                                     "properties": {
			//                                       "CustomPayload": {
			//                                         "additionalProperties": false,
			//                                         "description": "A message in a custom format defined by the client application.",
			//                                         "properties": {
			//                                           "Value": {
			//                                             "description": "The string that is sent to your application.",
			//                                             "maxLength": 1000,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Value"
			//                                         ],
			//                                         "type": "object"
			//                                       },
			//                                       "ImageResponseCard": {
			//                                         "additionalProperties": false,
			//                                         "description": "A message that defines a response card that the client application can show to the user.",
			//                                         "properties": {
			//                                           "Buttons": {
			//                                             "description": "A list of buttons that should be displayed on the response card.",
			//                                             "insertionOrder": false,
			//                                             "items": {
			//                                               "additionalProperties": false,
			//                                               "description": "A button to use on a response card used to gather slot values from a user.",
			//                                               "properties": {
			//                                                 "Text": {
			//                                                   "description": "The text that appears on the button.",
			//                                                   "maxLength": 50,
			//                                                   "minLength": 1,
			//                                                   "type": "string"
			//                                                 },
			//                                                 "Value": {
			//                                                   "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                   "maxLength": 50,
			//                                                   "minLength": 1,
			//                                                   "type": "string"
			//                                                 }
			//                                               },
			//                                               "required": [
			//                                                 "Text",
			//                                                 "Value"
			//                                               ],
			//                                               "type": "object"
			//                                             },
			//                                             "maxItems": 5,
			//                                             "type": "array"
			//                                           },
			//                                           "ImageUrl": {
			//                                             "description": "The URL of an image to display on the response card.",
			//                                             "maxLength": 250,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           },
			//                                           "Subtitle": {
			//                                             "description": "The subtitle to display on the response card.",
			//                                             "maxLength": 250,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           },
			//                                           "Title": {
			//                                             "description": "The title to display on the response card.",
			//                                             "maxLength": 250,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Title"
			//                                         ],
			//                                         "type": "object"
			//                                       },
			//                                       "PlainTextMessage": {
			//                                         "additionalProperties": false,
			//                                         "description": "A message in plain text format.",
			//                                         "properties": {
			//                                           "Value": {
			//                                             "description": "The message to send to the user.",
			//                                             "maxLength": 1000,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Value"
			//                                         ],
			//                                         "type": "object"
			//                                       },
			//                                       "SSMLMessage": {
			//                                         "additionalProperties": false,
			//                                         "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                         "properties": {
			//                                           "Value": {
			//                                             "description": "The SSML text that defines the prompt.",
			//                                             "maxLength": 1000,
			//                                             "minLength": 1,
			//                                             "type": "string"
			//                                           }
			//                                         },
			//                                         "required": [
			//                                           "Value"
			//                                         ],
			//                                         "type": "object"
			//                                       }
			//                                     },
			//                                     "type": "object"
			//                                   },
			//                                   "maxItems": 2,
			//                                   "type": "array"
			//                                 }
			//                               },
			//                               "required": [
			//                                 "Message"
			//                               ],
			//                               "type": "object"
			//                             },
			//                             "maxItems": 5,
			//                             "minItems": 1,
			//                             "type": "array"
			//                           }
			//                         },
			//                         "required": [
			//                           "MessageGroupsList",
			//                           "MaxRetries"
			//                         ],
			//                         "type": "object"
			//                       },
			//                       "SampleUtterances": {
			//                         "description": "If you know a specific pattern that users might respond to an Amazon Lex request for a slot value, you can provide those utterances to improve accuracy.",
			//                         "insertionOrder": false,
			//                         "items": {
			//                           "additionalProperties": false,
			//                           "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt.",
			//                           "properties": {
			//                             "Utterance": {
			//                               "description": "The sample utterance that Amazon Lex uses to build its machine-learning model to recognize intents/slots.",
			//                               "type": "string"
			//                             }
			//                           },
			//                           "required": [
			//                             "Utterance"
			//                           ],
			//                           "type": "object"
			//                         },
			//                         "type": "array"
			//                       },
			//                       "SlotConstraint": {
			//                         "description": "Specifies whether the slot is required or optional.",
			//                         "enum": [
			//                           "Required",
			//                           "Optional"
			//                         ],
			//                         "type": "string"
			//                       },
			//                       "WaitAndContinueSpecification": {
			//                         "additionalProperties": false,
			//                         "description": "Specifies the prompts that Amazon Lex uses while a bot is waiting for customer input.",
			//                         "properties": {
			//                           "ContinueResponse": {
			//                             "additionalProperties": false,
			//                             "description": "The response that Amazon Lex sends to indicate that the bot is ready to continue the conversation.",
			//                             "properties": {
			//                               "AllowInterrupt": {
			//                                 "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                                 "type": "boolean"
			//                               },
			//                               "MessageGroupsList": {
			//                                 "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "One or more messages that Amazon Lex can send to the user.",
			//                                   "properties": {
			//                                     "Message": {
			//                                       "additionalProperties": false,
			//                                       "description": "The primary message that Amazon Lex should send to the user.",
			//                                       "properties": {
			//                                         "CustomPayload": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in a custom format defined by the client application.",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The string that is sent to your application.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "ImageResponseCard": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message that defines a response card that the client application can show to the user.",
			//                                           "properties": {
			//                                             "Buttons": {
			//                                               "description": "A list of buttons that should be displayed on the response card.",
			//                                               "insertionOrder": false,
			//                                               "items": {
			//                                                 "additionalProperties": false,
			//                                                 "description": "A button to use on a response card used to gather slot values from a user.",
			//                                                 "properties": {
			//                                                   "Text": {
			//                                                     "description": "The text that appears on the button.",
			//                                                     "maxLength": 50,
			//                                                     "minLength": 1,
			//                                                     "type": "string"
			//                                                   },
			//                                                   "Value": {
			//                                                     "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                     "maxLength": 50,
			//                                                     "minLength": 1,
			//                                                     "type": "string"
			//                                                   }
			//                                                 },
			//                                                 "required": [
			//                                                   "Text",
			//                                                   "Value"
			//                                                 ],
			//                                                 "type": "object"
			//                                               },
			//                                               "maxItems": 5,
			//                                               "type": "array"
			//                                             },
			//                                             "ImageUrl": {
			//                                               "description": "The URL of an image to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Subtitle": {
			//                                               "description": "The subtitle to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Title": {
			//                                               "description": "The title to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Title"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "PlainTextMessage": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in plain text format.",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The message to send to the user.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "SSMLMessage": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The SSML text that defines the prompt.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         }
			//                                       },
			//                                       "type": "object"
			//                                     },
			//                                     "Variations": {
			//                                       "description": "Message variations to send to the user.",
			//                                       "insertionOrder": false,
			//                                       "items": {
			//                                         "additionalProperties": false,
			//                                         "description": "The primary message that Amazon Lex should send to the user.",
			//                                         "properties": {
			//                                           "CustomPayload": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in a custom format defined by the client application.",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The string that is sent to your application.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "ImageResponseCard": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message that defines a response card that the client application can show to the user.",
			//                                             "properties": {
			//                                               "Buttons": {
			//                                                 "description": "A list of buttons that should be displayed on the response card.",
			//                                                 "insertionOrder": false,
			//                                                 "items": {
			//                                                   "additionalProperties": false,
			//                                                   "description": "A button to use on a response card used to gather slot values from a user.",
			//                                                   "properties": {
			//                                                     "Text": {
			//                                                       "description": "The text that appears on the button.",
			//                                                       "maxLength": 50,
			//                                                       "minLength": 1,
			//                                                       "type": "string"
			//                                                     },
			//                                                     "Value": {
			//                                                       "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                       "maxLength": 50,
			//                                                       "minLength": 1,
			//                                                       "type": "string"
			//                                                     }
			//                                                   },
			//                                                   "required": [
			//                                                     "Text",
			//                                                     "Value"
			//                                                   ],
			//                                                   "type": "object"
			//                                                 },
			//                                                 "maxItems": 5,
			//                                                 "type": "array"
			//                                               },
			//                                               "ImageUrl": {
			//                                                 "description": "The URL of an image to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Subtitle": {
			//                                                 "description": "The subtitle to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Title": {
			//                                                 "description": "The title to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Title"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "PlainTextMessage": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in plain text format.",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The message to send to the user.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "SSMLMessage": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The SSML text that defines the prompt.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           }
			//                                         },
			//                                         "type": "object"
			//                                       },
			//                                       "maxItems": 2,
			//                                       "type": "array"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Message"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 5,
			//                                 "minItems": 1,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "MessageGroupsList"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "IsActive": {
			//                             "description": "Specifies whether the bot will wait for a user to respond.",
			//                             "type": "boolean"
			//                           },
			//                           "StillWaitingResponse": {
			//                             "additionalProperties": false,
			//                             "description": "The response that Amazon Lex sends periodically to the user to indicate that the bot is still waiting for input from the user.",
			//                             "properties": {
			//                               "AllowInterrupt": {
			//                                 "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                                 "type": "boolean"
			//                               },
			//                               "FrequencyInSeconds": {
			//                                 "description": "How often a message should be sent to the user in seconds.",
			//                                 "maximum": 300,
			//                                 "minimum": 1,
			//                                 "type": "integer"
			//                               },
			//                               "MessageGroupsList": {
			//                                 "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "One or more messages that Amazon Lex can send to the user.",
			//                                   "properties": {
			//                                     "Message": {
			//                                       "additionalProperties": false,
			//                                       "description": "The primary message that Amazon Lex should send to the user.",
			//                                       "properties": {
			//                                         "CustomPayload": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in a custom format defined by the client application.",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The string that is sent to your application.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "ImageResponseCard": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message that defines a response card that the client application can show to the user.",
			//                                           "properties": {
			//                                             "Buttons": {
			//                                               "description": "A list of buttons that should be displayed on the response card.",
			//                                               "insertionOrder": false,
			//                                               "items": {
			//                                                 "additionalProperties": false,
			//                                                 "description": "A button to use on a response card used to gather slot values from a user.",
			//                                                 "properties": {
			//                                                   "Text": {
			//                                                     "description": "The text that appears on the button.",
			//                                                     "maxLength": 50,
			//                                                     "minLength": 1,
			//                                                     "type": "string"
			//                                                   },
			//                                                   "Value": {
			//                                                     "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                     "maxLength": 50,
			//                                                     "minLength": 1,
			//                                                     "type": "string"
			//                                                   }
			//                                                 },
			//                                                 "required": [
			//                                                   "Text",
			//                                                   "Value"
			//                                                 ],
			//                                                 "type": "object"
			//                                               },
			//                                               "maxItems": 5,
			//                                               "type": "array"
			//                                             },
			//                                             "ImageUrl": {
			//                                               "description": "The URL of an image to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Subtitle": {
			//                                               "description": "The subtitle to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Title": {
			//                                               "description": "The title to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Title"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "PlainTextMessage": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in plain text format.",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The message to send to the user.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "SSMLMessage": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The SSML text that defines the prompt.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         }
			//                                       },
			//                                       "type": "object"
			//                                     },
			//                                     "Variations": {
			//                                       "description": "Message variations to send to the user.",
			//                                       "insertionOrder": false,
			//                                       "items": {
			//                                         "additionalProperties": false,
			//                                         "description": "The primary message that Amazon Lex should send to the user.",
			//                                         "properties": {
			//                                           "CustomPayload": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in a custom format defined by the client application.",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The string that is sent to your application.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "ImageResponseCard": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message that defines a response card that the client application can show to the user.",
			//                                             "properties": {
			//                                               "Buttons": {
			//                                                 "description": "A list of buttons that should be displayed on the response card.",
			//                                                 "insertionOrder": false,
			//                                                 "items": {
			//                                                   "additionalProperties": false,
			//                                                   "description": "A button to use on a response card used to gather slot values from a user.",
			//                                                   "properties": {
			//                                                     "Text": {
			//                                                       "description": "The text that appears on the button.",
			//                                                       "maxLength": 50,
			//                                                       "minLength": 1,
			//                                                       "type": "string"
			//                                                     },
			//                                                     "Value": {
			//                                                       "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                       "maxLength": 50,
			//                                                       "minLength": 1,
			//                                                       "type": "string"
			//                                                     }
			//                                                   },
			//                                                   "required": [
			//                                                     "Text",
			//                                                     "Value"
			//                                                   ],
			//                                                   "type": "object"
			//                                                 },
			//                                                 "maxItems": 5,
			//                                                 "type": "array"
			//                                               },
			//                                               "ImageUrl": {
			//                                                 "description": "The URL of an image to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Subtitle": {
			//                                                 "description": "The subtitle to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Title": {
			//                                                 "description": "The title to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Title"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "PlainTextMessage": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in plain text format.",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The message to send to the user.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "SSMLMessage": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The SSML text that defines the prompt.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           }
			//                                         },
			//                                         "type": "object"
			//                                       },
			//                                       "maxItems": 2,
			//                                       "type": "array"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Message"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 5,
			//                                 "minItems": 1,
			//                                 "type": "array"
			//                               },
			//                               "TimeoutInSeconds": {
			//                                 "description": "If Amazon Lex waits longer than this length of time in seconds for a response, it will stop sending messages.",
			//                                 "maximum": 900,
			//                                 "minimum": 1,
			//                                 "type": "integer"
			//                               }
			//                             },
			//                             "required": [
			//                               "MessageGroupsList",
			//                               "FrequencyInSeconds",
			//                               "TimeoutInSeconds"
			//                             ],
			//                             "type": "object"
			//                           },
			//                           "WaitingResponse": {
			//                             "additionalProperties": false,
			//                             "description": "The response that Amazon Lex sends to indicate that the bot is waiting for the conversation to continue.",
			//                             "properties": {
			//                               "AllowInterrupt": {
			//                                 "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
			//                                 "type": "boolean"
			//                               },
			//                               "MessageGroupsList": {
			//                                 "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
			//                                 "insertionOrder": false,
			//                                 "items": {
			//                                   "additionalProperties": false,
			//                                   "description": "One or more messages that Amazon Lex can send to the user.",
			//                                   "properties": {
			//                                     "Message": {
			//                                       "additionalProperties": false,
			//                                       "description": "The primary message that Amazon Lex should send to the user.",
			//                                       "properties": {
			//                                         "CustomPayload": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in a custom format defined by the client application.",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The string that is sent to your application.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "ImageResponseCard": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message that defines a response card that the client application can show to the user.",
			//                                           "properties": {
			//                                             "Buttons": {
			//                                               "description": "A list of buttons that should be displayed on the response card.",
			//                                               "insertionOrder": false,
			//                                               "items": {
			//                                                 "additionalProperties": false,
			//                                                 "description": "A button to use on a response card used to gather slot values from a user.",
			//                                                 "properties": {
			//                                                   "Text": {
			//                                                     "description": "The text that appears on the button.",
			//                                                     "maxLength": 50,
			//                                                     "minLength": 1,
			//                                                     "type": "string"
			//                                                   },
			//                                                   "Value": {
			//                                                     "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                     "maxLength": 50,
			//                                                     "minLength": 1,
			//                                                     "type": "string"
			//                                                   }
			//                                                 },
			//                                                 "required": [
			//                                                   "Text",
			//                                                   "Value"
			//                                                 ],
			//                                                 "type": "object"
			//                                               },
			//                                               "maxItems": 5,
			//                                               "type": "array"
			//                                             },
			//                                             "ImageUrl": {
			//                                               "description": "The URL of an image to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Subtitle": {
			//                                               "description": "The subtitle to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             },
			//                                             "Title": {
			//                                               "description": "The title to display on the response card.",
			//                                               "maxLength": 250,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Title"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "PlainTextMessage": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in plain text format.",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The message to send to the user.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         },
			//                                         "SSMLMessage": {
			//                                           "additionalProperties": false,
			//                                           "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                           "properties": {
			//                                             "Value": {
			//                                               "description": "The SSML text that defines the prompt.",
			//                                               "maxLength": 1000,
			//                                               "minLength": 1,
			//                                               "type": "string"
			//                                             }
			//                                           },
			//                                           "required": [
			//                                             "Value"
			//                                           ],
			//                                           "type": "object"
			//                                         }
			//                                       },
			//                                       "type": "object"
			//                                     },
			//                                     "Variations": {
			//                                       "description": "Message variations to send to the user.",
			//                                       "insertionOrder": false,
			//                                       "items": {
			//                                         "additionalProperties": false,
			//                                         "description": "The primary message that Amazon Lex should send to the user.",
			//                                         "properties": {
			//                                           "CustomPayload": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in a custom format defined by the client application.",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The string that is sent to your application.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "ImageResponseCard": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message that defines a response card that the client application can show to the user.",
			//                                             "properties": {
			//                                               "Buttons": {
			//                                                 "description": "A list of buttons that should be displayed on the response card.",
			//                                                 "insertionOrder": false,
			//                                                 "items": {
			//                                                   "additionalProperties": false,
			//                                                   "description": "A button to use on a response card used to gather slot values from a user.",
			//                                                   "properties": {
			//                                                     "Text": {
			//                                                       "description": "The text that appears on the button.",
			//                                                       "maxLength": 50,
			//                                                       "minLength": 1,
			//                                                       "type": "string"
			//                                                     },
			//                                                     "Value": {
			//                                                       "description": "The value returned to Amazon Lex when the user chooses this button.",
			//                                                       "maxLength": 50,
			//                                                       "minLength": 1,
			//                                                       "type": "string"
			//                                                     }
			//                                                   },
			//                                                   "required": [
			//                                                     "Text",
			//                                                     "Value"
			//                                                   ],
			//                                                   "type": "object"
			//                                                 },
			//                                                 "maxItems": 5,
			//                                                 "type": "array"
			//                                               },
			//                                               "ImageUrl": {
			//                                                 "description": "The URL of an image to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Subtitle": {
			//                                                 "description": "The subtitle to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               },
			//                                               "Title": {
			//                                                 "description": "The title to display on the response card.",
			//                                                 "maxLength": 250,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Title"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "PlainTextMessage": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in plain text format.",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The message to send to the user.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           },
			//                                           "SSMLMessage": {
			//                                             "additionalProperties": false,
			//                                             "description": "A message in Speech Synthesis Markup Language (SSML).",
			//                                             "properties": {
			//                                               "Value": {
			//                                                 "description": "The SSML text that defines the prompt.",
			//                                                 "maxLength": 1000,
			//                                                 "minLength": 1,
			//                                                 "type": "string"
			//                                               }
			//                                             },
			//                                             "required": [
			//                                               "Value"
			//                                             ],
			//                                             "type": "object"
			//                                           }
			//                                         },
			//                                         "type": "object"
			//                                       },
			//                                       "maxItems": 2,
			//                                       "type": "array"
			//                                     }
			//                                   },
			//                                   "required": [
			//                                     "Message"
			//                                   ],
			//                                   "type": "object"
			//                                 },
			//                                 "maxItems": 5,
			//                                 "minItems": 1,
			//                                 "type": "array"
			//                               }
			//                             },
			//                             "required": [
			//                               "MessageGroupsList"
			//                             ],
			//                             "type": "object"
			//                           }
			//                         },
			//                         "required": [
			//                           "WaitingResponse",
			//                           "ContinueResponse"
			//                         ],
			//                         "type": "object"
			//                       }
			//                     },
			//                     "required": [
			//                       "SlotConstraint"
			//                     ],
			//                     "type": "object"
			//                   }
			//                 },
			//                 "required": [
			//                   "Name",
			//                   "SlotTypeName",
			//                   "ValueElicitationSetting"
			//                 ],
			//                 "type": "object"
			//               },
			//               "maxItems": 100,
			//               "type": "array",
			//               "uniqueItems": true
			//             }
			//           },
			//           "required": [
			//             "Name"
			//           ],
			//           "type": "object"
			//         },
			//         "maxItems": 1000,
			//         "type": "array",
			//         "uniqueItems": true
			//       },
			//       "LocaleId": {
			//         "description": "The identifier of the language and locale that the bot will be used in.",
			//         "type": "string"
			//       },
			//       "NluConfidenceThreshold": {
			//         "description": "The specified confidence threshold for inserting the AMAZON.FallbackIntent and AMAZON.KendraSearchIntent intents.",
			//         "maximum": 1,
			//         "minimum": 0,
			//         "type": "number"
			//       },
			//       "SlotTypes": {
			//         "description": "List of SlotTypes",
			//         "insertionOrder": false,
			//         "items": {
			//           "additionalProperties": false,
			//           "description": "A custom, extended built-in or a grammar slot type.",
			//           "properties": {
			//             "Description": {
			//               "description": "A description of the resource",
			//               "maxLength": 200,
			//               "type": "string"
			//             },
			//             "ExternalSourceSetting": {
			//               "additionalProperties": false,
			//               "description": "Provides information about the external source of the slot type's definition.",
			//               "properties": {
			//                 "GrammarSlotTypeSetting": {
			//                   "additionalProperties": false,
			//                   "description": "Settings required for a slot type based on a grammar that you provide.",
			//                   "properties": {
			//                     "Source": {
			//                       "additionalProperties": false,
			//                       "description": "Describes the Amazon S3 bucket name and location for the grammar that is the source for the slot type.",
			//                       "properties": {
			//                         "KmsKeyArn": {
			//                           "description": "The Amazon KMS key required to decrypt the contents of the grammar, if any.",
			//                           "maxLength": 2048,
			//                           "minLength": 20,
			//                           "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$",
			//                           "type": "string"
			//                         },
			//                         "S3BucketName": {
			//                           "description": "The name of the S3 bucket that contains the grammar source.",
			//                           "maxLength": 63,
			//                           "minLength": 3,
			//                           "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$",
			//                           "type": "string"
			//                         },
			//                         "S3ObjectKey": {
			//                           "description": "The path to the grammar in the S3 bucket.",
			//                           "maxLength": 1024,
			//                           "minLength": 1,
			//                           "pattern": "[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$",
			//                           "type": "string"
			//                         }
			//                       },
			//                       "required": [
			//                         "S3BucketName",
			//                         "S3ObjectKey"
			//                       ],
			//                       "type": "object"
			//                     }
			//                   },
			//                   "type": "object"
			//                 }
			//               },
			//               "type": "object"
			//             },
			//             "Name": {
			//               "description": "Unique name for a resource.",
			//               "maxLength": 100,
			//               "minLength": 1,
			//               "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//               "type": "string"
			//             },
			//             "ParentSlotTypeSignature": {
			//               "description": "The built-in slot type used as a parent of this slot type.",
			//               "type": "string"
			//             },
			//             "SlotTypeValues": {
			//               "description": "A List of slot type values",
			//               "insertionOrder": false,
			//               "items": {
			//                 "additionalProperties": false,
			//                 "description": "Value that the slot type can take.",
			//                 "properties": {
			//                   "SampleValue": {
			//                     "additionalProperties": false,
			//                     "description": "Defines one of the values for a slot type.",
			//                     "properties": {
			//                       "Value": {
			//                         "description": "The value that can be used for a slot type.",
			//                         "maxLength": 140,
			//                         "minLength": 1,
			//                         "type": "string"
			//                       }
			//                     },
			//                     "required": [
			//                       "Value"
			//                     ],
			//                     "type": "object"
			//                   },
			//                   "Synonyms": {
			//                     "description": "Additional values related to the slot type entry.",
			//                     "insertionOrder": false,
			//                     "items": {
			//                       "additionalProperties": false,
			//                       "description": "Defines one of the values for a slot type.",
			//                       "properties": {
			//                         "Value": {
			//                           "description": "The value that can be used for a slot type.",
			//                           "maxLength": 140,
			//                           "minLength": 1,
			//                           "type": "string"
			//                         }
			//                       },
			//                       "required": [
			//                         "Value"
			//                       ],
			//                       "type": "object"
			//                     },
			//                     "maxItems": 10000,
			//                     "type": "array"
			//                   }
			//                 },
			//                 "required": [
			//                   "SampleValue"
			//                 ],
			//                 "type": "object"
			//               },
			//               "maxItems": 10000,
			//               "type": "array"
			//             },
			//             "ValueSelectionSetting": {
			//               "additionalProperties": false,
			//               "description": "Contains settings used by Amazon Lex to select a slot value.",
			//               "properties": {
			//                 "AdvancedRecognitionSetting": {
			//                   "additionalProperties": false,
			//                   "description": "Provides settings that enable advanced recognition settings for slot values.",
			//                   "properties": {
			//                     "AudioRecognitionStrategy": {
			//                       "description": "Enables using slot values as a custom vocabulary when recognizing user utterances.",
			//                       "enum": [
			//                         "UseSlotValuesAsCustomVocabulary"
			//                       ],
			//                       "type": "string"
			//                     }
			//                   },
			//                   "type": "object"
			//                 },
			//                 "RegexFilter": {
			//                   "additionalProperties": false,
			//                   "description": "A regular expression used to validate the value of a slot.",
			//                   "properties": {
			//                     "Pattern": {
			//                       "description": "Regex pattern",
			//                       "maxLength": 300,
			//                       "minLength": 1,
			//                       "type": "string"
			//                     }
			//                   },
			//                   "required": [
			//                     "Pattern"
			//                   ],
			//                   "type": "object"
			//                 },
			//                 "ResolutionStrategy": {
			//                   "enum": [
			//                     "ORIGINAL_VALUE",
			//                     "TOP_RESOLUTION"
			//                   ],
			//                   "type": "string"
			//                 }
			//               },
			//               "required": [
			//                 "ResolutionStrategy"
			//               ],
			//               "type": "object"
			//             }
			//           },
			//           "required": [
			//             "Name"
			//           ],
			//           "type": "object"
			//         },
			//         "maxItems": 100,
			//         "type": "array",
			//         "uniqueItems": true
			//       },
			//       "VoiceSettings": {
			//         "additionalProperties": false,
			//         "description": "Settings for using an Amazon Polly voice to communicate with a user.",
			//         "properties": {
			//           "VoiceId": {
			//             "description": "The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user.",
			//             "type": "string"
			//           }
			//         },
			//         "required": [
			//           "VoiceId"
			//         ],
			//         "type": "object"
			//       }
			//     },
			//     "required": [
			//       "LocaleId",
			//       "NluConfidenceThreshold"
			//     ],
			//     "type": "object"
			//   },
			//   "type": "array",
			//   "uniqueItems": true
			// }
			Description: "List of bot locales",
			Attributes: tfsdk.SetNestedAttributes(
				map[string]tfsdk.Attribute{
					"custom_vocabulary": {
						// Property: CustomVocabulary
						Description: "A custom vocabulary is a list of specific phrases that you want Amazon Lex V2 to recognize in the audio input.",
						Attributes: tfsdk.SingleNestedAttributes(
							map[string]tfsdk.Attribute{
								"custom_vocabulary_items": {
									// Property: CustomVocabularyItems
									Attributes: tfsdk.SetNestedAttributes(
										map[string]tfsdk.Attribute{
											"phrase": {
												// Property: Phrase
												Description: "Phrase that should be recognized.",
												Type:        types.StringType,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(1, 100),
												},
											},
											"weight": {
												// Property: Weight
												Description: "The degree to which the phrase recognition is boosted.",
												Type:        types.Int64Type,
												Optional:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.IntBetween(1, 3),
												},
											},
										},
										tfsdk.SetNestedAttributesOptions{},
									),
									Required: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(500),
									},
								},
							},
						),
						Optional: true,
					},
					"description": {
						// Property: Description
						Description: "A description of the resource",
						Type:        types.StringType,
						Optional:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenAtMost(200),
						},
					},
					"intents": {
						// Property: Intents
						Description: "List of intents",
						Attributes: tfsdk.SetNestedAttributes(
							map[string]tfsdk.Attribute{
								"description": {
									// Property: Description
									Description: "A description of the resource",
									Type:        types.StringType,
									Optional:    true,
									Validators: []tfsdk.AttributeValidator{
										validate.StringLenAtMost(200),
									},
								},
								"dialog_code_hook": {
									// Property: DialogCodeHook
									Description: "Settings that determine the Lambda function that Amazon Lex uses for processing user responses.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"enabled": {
												// Property: Enabled
												Type:     types.BoolType,
												Required: true,
											},
										},
									),
									Optional: true,
								},
								"fulfillment_code_hook": {
									// Property: FulfillmentCodeHook
									Description: "Settings that determine if a Lambda function should be invoked to fulfill a specific intent.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"enabled": {
												// Property: Enabled
												Type:     types.BoolType,
												Required: true,
											},
											"fulfillment_updates_specification": {
												// Property: FulfillmentUpdatesSpecification
												Description: "Provides information for updating the user on the progress of fulfilling an intent.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"active": {
															// Property: Active
															Description: "Determines whether fulfillment updates are sent to the user. When this field is true, updates are sent.",
															Type:        types.BoolType,
															Required:    true,
														},
														"start_response": {
															// Property: StartResponse
															Description: "Provides settings for a message that is sent to the user when a fulfillment Lambda function starts running.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"allow_interrupt": {
																		// Property: AllowInterrupt
																		Description: "Determines whether the user can interrupt the start message while it is playing.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"delay_in_seconds": {
																		// Property: DelayInSeconds
																		Description: "The delay between when the Lambda fulfillment function starts running and the start message is played. If the Lambda function returns before the delay is over, the start message isn't played.",
																		Type:        types.Int64Type,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.IntBetween(1, 900),
																		},
																	},
																	"message_groups": {
																		// Property: MessageGroups
																		Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"message": {
																					// Property: Message
																					Description: "The primary message that Amazon Lex should send to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																					),
																					Required: true,
																				},
																				"variations": {
																					// Property: Variations
																					Description: "Message variations to send to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Optional: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenAtMost(2),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenBetween(1, 5),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
														"timeout_in_seconds": {
															// Property: TimeoutInSeconds
															Description: "The length of time that the fulfillment Lambda function should run before it times out.",
															Type:        types.Int64Type,
															Optional:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.IntBetween(1, 900),
															},
														},
														"update_response": {
															// Property: UpdateResponse
															Description: "Provides settings for a message that is sent periodically to the user while a fulfillment Lambda function is running.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"allow_interrupt": {
																		// Property: AllowInterrupt
																		Description: "Determines whether the user can interrupt an update message while it is playing.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"frequency_in_seconds": {
																		// Property: FrequencyInSeconds
																		Description: "The frequency that a message is sent to the user. When the period ends, Amazon Lex chooses a message from the message groups and plays it to the user. If the fulfillment Lambda returns before the first period ends, an update message is not played to the user.",
																		Type:        types.Int64Type,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.IntBetween(1, 900),
																		},
																	},
																	"message_groups": {
																		// Property: MessageGroups
																		Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"message": {
																					// Property: Message
																					Description: "The primary message that Amazon Lex should send to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																					),
																					Required: true,
																				},
																				"variations": {
																					// Property: Variations
																					Description: "Message variations to send to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Optional: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenAtMost(2),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenBetween(1, 5),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
													},
												),
												Optional: true,
											},
											"post_fulfillment_status_specification": {
												// Property: PostFulfillmentStatusSpecification
												Description: "Provides information for updating the user on the progress of fulfilling an intent.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"failure_response": {
															// Property: FailureResponse
															Description: "A list of message groups that Amazon Lex uses to respond the user input.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"allow_interrupt": {
																		// Property: AllowInterrupt
																		Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"message_groups_list": {
																		// Property: MessageGroupsList
																		Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"message": {
																					// Property: Message
																					Description: "The primary message that Amazon Lex should send to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																					),
																					Required: true,
																				},
																				"variations": {
																					// Property: Variations
																					Description: "Message variations to send to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Optional: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenAtMost(2),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenBetween(1, 5),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
														"success_response": {
															// Property: SuccessResponse
															Description: "A list of message groups that Amazon Lex uses to respond the user input.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"allow_interrupt": {
																		// Property: AllowInterrupt
																		Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"message_groups_list": {
																		// Property: MessageGroupsList
																		Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"message": {
																					// Property: Message
																					Description: "The primary message that Amazon Lex should send to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																					),
																					Required: true,
																				},
																				"variations": {
																					// Property: Variations
																					Description: "Message variations to send to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Optional: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenAtMost(2),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenBetween(1, 5),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
														"timeout_response": {
															// Property: TimeoutResponse
															Description: "A list of message groups that Amazon Lex uses to respond the user input.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"allow_interrupt": {
																		// Property: AllowInterrupt
																		Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"message_groups_list": {
																		// Property: MessageGroupsList
																		Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"message": {
																					// Property: Message
																					Description: "The primary message that Amazon Lex should send to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																					),
																					Required: true,
																				},
																				"variations": {
																					// Property: Variations
																					Description: "Message variations to send to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Optional: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenAtMost(2),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenBetween(1, 5),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
													},
												),
												Optional: true,
											},
										},
									),
									Optional: true,
								},
								"input_contexts": {
									// Property: InputContexts
									Description: "The list of input contexts specified for the intent.",
									Attributes: tfsdk.ListNestedAttributes(
										map[string]tfsdk.Attribute{
											"name": {
												// Property: Name
												Description: "The name of the context.",
												Type:        types.StringType,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(1, 100),
													validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
												},
											},
										},
										tfsdk.ListNestedAttributesOptions{},
									),
									Optional: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(5),
									},
									PlanModifiers: []tfsdk.AttributePlanModifier{
										Multiset(),
									},
								},
								"intent_closing_setting": {
									// Property: IntentClosingSetting
									Description: "Response that Amazon Lex sends to the user when the intent is closed.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"closing_response": {
												// Property: ClosingResponse
												Description: "A list of message groups that Amazon Lex uses to respond the user input.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"allow_interrupt": {
															// Property: AllowInterrupt
															Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
															Type:        types.BoolType,
															Optional:    true,
														},
														"message_groups_list": {
															// Property: MessageGroupsList
															Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
															Attributes: tfsdk.ListNestedAttributes(
																map[string]tfsdk.Attribute{
																	"message": {
																		// Property: Message
																		Description: "The primary message that Amazon Lex should send to the user.",
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"custom_payload": {
																					// Property: CustomPayload
																					Description: "A message in a custom format defined by the client application.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The string that is sent to your application.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"image_response_card": {
																					// Property: ImageResponseCard
																					Description: "A message that defines a response card that the client application can show to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"buttons": {
																								// Property: Buttons
																								Description: "A list of buttons that should be displayed on the response card.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"text": {
																											// Property: Text
																											Description: "The text that appears on the button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																										"value": {
																											// Property: Value
																											Description: "The value returned to Amazon Lex when the user chooses this button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(5),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																							"image_url": {
																								// Property: ImageUrl
																								Description: "The URL of an image to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"subtitle": {
																								// Property: Subtitle
																								Description: "The subtitle to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"title": {
																								// Property: Title
																								Description: "The title to display on the response card.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"plain_text_message": {
																					// Property: PlainTextMessage
																					Description: "A message in plain text format.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The message to send to the user.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"ssml_message": {
																					// Property: SSMLMessage
																					Description: "A message in Speech Synthesis Markup Language (SSML).",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The SSML text that defines the prompt.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																			},
																		),
																		Required: true,
																	},
																	"variations": {
																		// Property: Variations
																		Description: "Message variations to send to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"custom_payload": {
																					// Property: CustomPayload
																					Description: "A message in a custom format defined by the client application.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The string that is sent to your application.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"image_response_card": {
																					// Property: ImageResponseCard
																					Description: "A message that defines a response card that the client application can show to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"buttons": {
																								// Property: Buttons
																								Description: "A list of buttons that should be displayed on the response card.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"text": {
																											// Property: Text
																											Description: "The text that appears on the button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																										"value": {
																											// Property: Value
																											Description: "The value returned to Amazon Lex when the user chooses this button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(5),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																							"image_url": {
																								// Property: ImageUrl
																								Description: "The URL of an image to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"subtitle": {
																								// Property: Subtitle
																								Description: "The subtitle to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"title": {
																								// Property: Title
																								Description: "The title to display on the response card.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"plain_text_message": {
																					// Property: PlainTextMessage
																					Description: "A message in plain text format.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The message to send to the user.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"ssml_message": {
																					// Property: SSMLMessage
																					Description: "A message in Speech Synthesis Markup Language (SSML).",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The SSML text that defines the prompt.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Optional: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenAtMost(2),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
																tfsdk.ListNestedAttributesOptions{},
															),
															Required: true,
															Validators: []tfsdk.AttributeValidator{
																validate.ArrayLenBetween(1, 5),
															},
															PlanModifiers: []tfsdk.AttributePlanModifier{
																Multiset(),
															},
														},
													},
												),
												Required: true,
											},
											"is_active": {
												// Property: IsActive
												Type:     types.BoolType,
												Optional: true,
											},
										},
									),
									Optional: true,
								},
								"intent_confirmation_setting": {
									// Property: IntentConfirmationSetting
									Description: "Prompts that Amazon Lex sends to the user to confirm the completion of an intent.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"declination_response": {
												// Property: DeclinationResponse
												Description: "A list of message groups that Amazon Lex uses to respond the user input.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"allow_interrupt": {
															// Property: AllowInterrupt
															Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
															Type:        types.BoolType,
															Optional:    true,
														},
														"message_groups_list": {
															// Property: MessageGroupsList
															Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
															Attributes: tfsdk.ListNestedAttributes(
																map[string]tfsdk.Attribute{
																	"message": {
																		// Property: Message
																		Description: "The primary message that Amazon Lex should send to the user.",
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"custom_payload": {
																					// Property: CustomPayload
																					Description: "A message in a custom format defined by the client application.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The string that is sent to your application.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"image_response_card": {
																					// Property: ImageResponseCard
																					Description: "A message that defines a response card that the client application can show to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"buttons": {
																								// Property: Buttons
																								Description: "A list of buttons that should be displayed on the response card.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"text": {
																											// Property: Text
																											Description: "The text that appears on the button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																										"value": {
																											// Property: Value
																											Description: "The value returned to Amazon Lex when the user chooses this button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(5),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																							"image_url": {
																								// Property: ImageUrl
																								Description: "The URL of an image to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"subtitle": {
																								// Property: Subtitle
																								Description: "The subtitle to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"title": {
																								// Property: Title
																								Description: "The title to display on the response card.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"plain_text_message": {
																					// Property: PlainTextMessage
																					Description: "A message in plain text format.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The message to send to the user.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"ssml_message": {
																					// Property: SSMLMessage
																					Description: "A message in Speech Synthesis Markup Language (SSML).",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The SSML text that defines the prompt.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																			},
																		),
																		Required: true,
																	},
																	"variations": {
																		// Property: Variations
																		Description: "Message variations to send to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"custom_payload": {
																					// Property: CustomPayload
																					Description: "A message in a custom format defined by the client application.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The string that is sent to your application.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"image_response_card": {
																					// Property: ImageResponseCard
																					Description: "A message that defines a response card that the client application can show to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"buttons": {
																								// Property: Buttons
																								Description: "A list of buttons that should be displayed on the response card.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"text": {
																											// Property: Text
																											Description: "The text that appears on the button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																										"value": {
																											// Property: Value
																											Description: "The value returned to Amazon Lex when the user chooses this button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(5),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																							"image_url": {
																								// Property: ImageUrl
																								Description: "The URL of an image to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"subtitle": {
																								// Property: Subtitle
																								Description: "The subtitle to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"title": {
																								// Property: Title
																								Description: "The title to display on the response card.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"plain_text_message": {
																					// Property: PlainTextMessage
																					Description: "A message in plain text format.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The message to send to the user.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"ssml_message": {
																					// Property: SSMLMessage
																					Description: "A message in Speech Synthesis Markup Language (SSML).",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The SSML text that defines the prompt.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Optional: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenAtMost(2),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
																tfsdk.ListNestedAttributesOptions{},
															),
															Required: true,
															Validators: []tfsdk.AttributeValidator{
																validate.ArrayLenBetween(1, 5),
															},
															PlanModifiers: []tfsdk.AttributePlanModifier{
																Multiset(),
															},
														},
													},
												),
												Required: true,
											},
											"is_active": {
												// Property: IsActive
												Type:     types.BoolType,
												Optional: true,
											},
											"prompt_specification": {
												// Property: PromptSpecification
												Description: "Prompts the user to confirm the intent.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"allow_interrupt": {
															// Property: AllowInterrupt
															Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
															Type:        types.BoolType,
															Optional:    true,
														},
														"max_retries": {
															// Property: MaxRetries
															Description: "The maximum number of times the bot tries to elicit a resonse from the user using this prompt.",
															Type:        types.Int64Type,
															Required:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.IntBetween(0, 5),
															},
														},
														"message_groups_list": {
															// Property: MessageGroupsList
															Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
															Attributes: tfsdk.ListNestedAttributes(
																map[string]tfsdk.Attribute{
																	"message": {
																		// Property: Message
																		Description: "The primary message that Amazon Lex should send to the user.",
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"custom_payload": {
																					// Property: CustomPayload
																					Description: "A message in a custom format defined by the client application.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The string that is sent to your application.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"image_response_card": {
																					// Property: ImageResponseCard
																					Description: "A message that defines a response card that the client application can show to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"buttons": {
																								// Property: Buttons
																								Description: "A list of buttons that should be displayed on the response card.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"text": {
																											// Property: Text
																											Description: "The text that appears on the button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																										"value": {
																											// Property: Value
																											Description: "The value returned to Amazon Lex when the user chooses this button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(5),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																							"image_url": {
																								// Property: ImageUrl
																								Description: "The URL of an image to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"subtitle": {
																								// Property: Subtitle
																								Description: "The subtitle to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"title": {
																								// Property: Title
																								Description: "The title to display on the response card.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"plain_text_message": {
																					// Property: PlainTextMessage
																					Description: "A message in plain text format.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The message to send to the user.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"ssml_message": {
																					// Property: SSMLMessage
																					Description: "A message in Speech Synthesis Markup Language (SSML).",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The SSML text that defines the prompt.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																			},
																		),
																		Required: true,
																	},
																	"variations": {
																		// Property: Variations
																		Description: "Message variations to send to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"custom_payload": {
																					// Property: CustomPayload
																					Description: "A message in a custom format defined by the client application.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The string that is sent to your application.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"image_response_card": {
																					// Property: ImageResponseCard
																					Description: "A message that defines a response card that the client application can show to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"buttons": {
																								// Property: Buttons
																								Description: "A list of buttons that should be displayed on the response card.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"text": {
																											// Property: Text
																											Description: "The text that appears on the button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																										"value": {
																											// Property: Value
																											Description: "The value returned to Amazon Lex when the user chooses this button.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 50),
																											},
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(5),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																							"image_url": {
																								// Property: ImageUrl
																								Description: "The URL of an image to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"subtitle": {
																								// Property: Subtitle
																								Description: "The subtitle to display on the response card.",
																								Type:        types.StringType,
																								Optional:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																							"title": {
																								// Property: Title
																								Description: "The title to display on the response card.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 250),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"plain_text_message": {
																					// Property: PlainTextMessage
																					Description: "A message in plain text format.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The message to send to the user.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																				"ssml_message": {
																					// Property: SSMLMessage
																					Description: "A message in Speech Synthesis Markup Language (SSML).",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"value": {
																								// Property: Value
																								Description: "The SSML text that defines the prompt.",
																								Type:        types.StringType,
																								Required:    true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.StringLenBetween(1, 1000),
																								},
																							},
																						},
																					),
																					Optional: true,
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Optional: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenAtMost(2),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
																tfsdk.ListNestedAttributesOptions{},
															),
															Required: true,
															Validators: []tfsdk.AttributeValidator{
																validate.ArrayLenBetween(1, 5),
															},
															PlanModifiers: []tfsdk.AttributePlanModifier{
																Multiset(),
															},
														},
													},
												),
												Required: true,
											},
										},
									),
									Optional: true,
								},
								"kendra_configuration": {
									// Property: KendraConfiguration
									Description: "Configuration for searching a Amazon Kendra index specified for the intent.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"kendra_index": {
												// Property: KendraIndex
												Description: "The Amazon Resource Name (ARN) of the Amazon Kendra index that you want the AMAZON.KendraSearchIntent intent to search.",
												Type:        types.StringType,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(32, 2048),
													validate.StringMatch(regexp.MustCompile("^arn:aws[a-zA-Z-]*:kendra:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:index/[a-zA-Z0-9][a-zA-Z0-9_-]*$"), ""),
												},
											},
											"query_filter_string": {
												// Property: QueryFilterString
												Description: "A query filter that Amazon Lex sends to Amazon Kendra to filter the response from a query.",
												Type:        types.StringType,
												Optional:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(1, 5000),
												},
											},
											"query_filter_string_enabled": {
												// Property: QueryFilterStringEnabled
												Description: "Determines whether the AMAZON.KendraSearchIntent intent uses a custom query string to query the Amazon Kendra index.",
												Type:        types.BoolType,
												Optional:    true,
											},
										},
									),
									Optional: true,
								},
								"name": {
									// Property: Name
									Description: "Unique name for a resource.",
									Type:        types.StringType,
									Required:    true,
									Validators: []tfsdk.AttributeValidator{
										validate.StringLenBetween(1, 100),
										validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
									},
								},
								"output_contexts": {
									// Property: OutputContexts
									Description: "A list of contexts that the intent activates when it is fulfilled.",
									Attributes: tfsdk.ListNestedAttributes(
										map[string]tfsdk.Attribute{
											"name": {
												// Property: Name
												Description: "Unique name for a resource.",
												Type:        types.StringType,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(1, 100),
													validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
												},
											},
											"time_to_live_in_seconds": {
												// Property: TimeToLiveInSeconds
												Description: "The amount of time, in seconds, that the output context should remain active.",
												Type:        types.Int64Type,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.IntBetween(5, 86400),
												},
											},
											"turns_to_live": {
												// Property: TurnsToLive
												Description: "The number of conversation turns that the output context should remain active.",
												Type:        types.Int64Type,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.IntBetween(1, 20),
												},
											},
										},
										tfsdk.ListNestedAttributesOptions{},
									),
									Optional: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(10),
									},
									PlanModifiers: []tfsdk.AttributePlanModifier{
										Multiset(),
									},
								},
								"parent_intent_signature": {
									// Property: ParentIntentSignature
									Description: "A unique identifier for the built-in intent to base this intent on.",
									Type:        types.StringType,
									Optional:    true,
								},
								"sample_utterances": {
									// Property: SampleUtterances
									Description: "An array of sample utterances",
									Attributes: tfsdk.ListNestedAttributes(
										map[string]tfsdk.Attribute{
											"utterance": {
												// Property: Utterance
												Description: "The sample utterance that Amazon Lex uses to build its machine-learning model to recognize intents/slots.",
												Type:        types.StringType,
												Required:    true,
											},
										},
										tfsdk.ListNestedAttributesOptions{},
									),
									Optional: true,
									PlanModifiers: []tfsdk.AttributePlanModifier{
										Multiset(),
									},
								},
								"slot_priorities": {
									// Property: SlotPriorities
									Description: "List for slot priorities",
									Attributes: tfsdk.ListNestedAttributes(
										map[string]tfsdk.Attribute{
											"priority": {
												// Property: Priority
												Description: "The priority that a slot should be elicited.",
												Type:        types.Int64Type,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.IntBetween(0, 100),
												},
											},
											"slot_name": {
												// Property: SlotName
												Description: "The name of the slot.",
												Type:        types.StringType,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(1, 100),
													validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
												},
											},
										},
										tfsdk.ListNestedAttributesOptions{},
									),
									Optional: true,
									PlanModifiers: []tfsdk.AttributePlanModifier{
										Multiset(),
									},
								},
								"slots": {
									// Property: Slots
									Description: "List of slots",
									Attributes: tfsdk.SetNestedAttributes(
										map[string]tfsdk.Attribute{
											"description": {
												// Property: Description
												Description: "A description of the resource",
												Type:        types.StringType,
												Optional:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenAtMost(200),
												},
											},
											"multiple_values_setting": {
												// Property: MultipleValuesSetting
												Description: "Indicates whether a slot can return multiple values.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"allow_multiple_values": {
															// Property: AllowMultipleValues
															Type:     types.BoolType,
															Optional: true,
														},
													},
												),
												Optional: true,
											},
											"name": {
												// Property: Name
												Description: "Unique name for a resource.",
												Type:        types.StringType,
												Required:    true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringLenBetween(1, 100),
													validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
												},
											},
											"obfuscation_setting": {
												// Property: ObfuscationSetting
												Description: "Determines whether Amazon Lex obscures slot values in conversation logs.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"obfuscation_setting_type": {
															// Property: ObfuscationSettingType
															Description: "Value that determines whether Amazon Lex obscures slot values in conversation logs. The default is to obscure the values.",
															Type:        types.StringType,
															Required:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.StringInSlice([]string{
																	"None",
																	"DefaultObfuscation",
																}),
															},
														},
													},
												),
												Optional: true,
											},
											"slot_type_name": {
												// Property: SlotTypeName
												Description: "The slot type name that is used in the slot. Allows for custom and built-in slot type names",
												Type:        types.StringType,
												Required:    true,
											},
											"value_elicitation_setting": {
												// Property: ValueElicitationSetting
												Description: "Settings that you can use for eliciting a slot value.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"default_value_specification": {
															// Property: DefaultValueSpecification
															Description: "A list of default values for a slot.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"default_value_list": {
																		// Property: DefaultValueList
																		Description: "A list of slot default values",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"default_value": {
																					// Property: DefaultValue
																					Description: "The default value to use when a user doesn't provide a value for a slot.",
																					Type:        types.StringType,
																					Required:    true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.StringLenBetween(1, 202),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenAtMost(10),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
														"prompt_specification": {
															// Property: PromptSpecification
															Description: "The prompt that Amazon Lex uses to elicit the slot value from the user.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"allow_interrupt": {
																		// Property: AllowInterrupt
																		Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"max_retries": {
																		// Property: MaxRetries
																		Description: "The maximum number of times the bot tries to elicit a resonse from the user using this prompt.",
																		Type:        types.Int64Type,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.IntBetween(0, 5),
																		},
																	},
																	"message_groups_list": {
																		// Property: MessageGroupsList
																		Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																		Attributes: tfsdk.ListNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"message": {
																					// Property: Message
																					Description: "The primary message that Amazon Lex should send to the user.",
																					Attributes: tfsdk.SingleNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																					),
																					Required: true,
																				},
																				"variations": {
																					// Property: Variations
																					Description: "Message variations to send to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"custom_payload": {
																								// Property: CustomPayload
																								Description: "A message in a custom format defined by the client application.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The string that is sent to your application.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"image_response_card": {
																								// Property: ImageResponseCard
																								Description: "A message that defines a response card that the client application can show to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"buttons": {
																											// Property: Buttons
																											Description: "A list of buttons that should be displayed on the response card.",
																											Attributes: tfsdk.ListNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"text": {
																														// Property: Text
																														Description: "The text that appears on the button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																													"value": {
																														// Property: Value
																														Description: "The value returned to Amazon Lex when the user chooses this button.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 50),
																														},
																													},
																												},
																												tfsdk.ListNestedAttributesOptions{},
																											),
																											Optional: true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.ArrayLenAtMost(5),
																											},
																											PlanModifiers: []tfsdk.AttributePlanModifier{
																												Multiset(),
																											},
																										},
																										"image_url": {
																											// Property: ImageUrl
																											Description: "The URL of an image to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"subtitle": {
																											// Property: Subtitle
																											Description: "The subtitle to display on the response card.",
																											Type:        types.StringType,
																											Optional:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																										"title": {
																											// Property: Title
																											Description: "The title to display on the response card.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 250),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"plain_text_message": {
																								// Property: PlainTextMessage
																								Description: "A message in plain text format.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The message to send to the user.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																							"ssml_message": {
																								// Property: SSMLMessage
																								Description: "A message in Speech Synthesis Markup Language (SSML).",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"value": {
																											// Property: Value
																											Description: "The SSML text that defines the prompt.",
																											Type:        types.StringType,
																											Required:    true,
																											Validators: []tfsdk.AttributeValidator{
																												validate.StringLenBetween(1, 1000),
																											},
																										},
																									},
																								),
																								Optional: true,
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Optional: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenAtMost(2),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																			tfsdk.ListNestedAttributesOptions{},
																		),
																		Required: true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.ArrayLenBetween(1, 5),
																		},
																		PlanModifiers: []tfsdk.AttributePlanModifier{
																			Multiset(),
																		},
																	},
																},
															),
															Optional: true,
														},
														"sample_utterances": {
															// Property: SampleUtterances
															Description: "If you know a specific pattern that users might respond to an Amazon Lex request for a slot value, you can provide those utterances to improve accuracy.",
															Attributes: tfsdk.ListNestedAttributes(
																map[string]tfsdk.Attribute{
																	"utterance": {
																		// Property: Utterance
																		Description: "The sample utterance that Amazon Lex uses to build its machine-learning model to recognize intents/slots.",
																		Type:        types.StringType,
																		Required:    true,
																	},
																},
																tfsdk.ListNestedAttributesOptions{},
															),
															Optional: true,
															PlanModifiers: []tfsdk.AttributePlanModifier{
																Multiset(),
															},
														},
														"slot_constraint": {
															// Property: SlotConstraint
															Description: "Specifies whether the slot is required or optional.",
															Type:        types.StringType,
															Required:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.StringInSlice([]string{
																	"Required",
																	"Optional",
																}),
															},
														},
														"wait_and_continue_specification": {
															// Property: WaitAndContinueSpecification
															Description: "Specifies the prompts that Amazon Lex uses while a bot is waiting for customer input.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"continue_response": {
																		// Property: ContinueResponse
																		Description: "The response that Amazon Lex sends to indicate that the bot is ready to continue the conversation.",
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"allow_interrupt": {
																					// Property: AllowInterrupt
																					Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																					Type:        types.BoolType,
																					Optional:    true,
																				},
																				"message_groups_list": {
																					// Property: MessageGroupsList
																					Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"message": {
																								// Property: Message
																								Description: "The primary message that Amazon Lex should send to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"custom_payload": {
																											// Property: CustomPayload
																											Description: "A message in a custom format defined by the client application.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The string that is sent to your application.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"image_response_card": {
																											// Property: ImageResponseCard
																											Description: "A message that defines a response card that the client application can show to the user.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"buttons": {
																														// Property: Buttons
																														Description: "A list of buttons that should be displayed on the response card.",
																														Attributes: tfsdk.ListNestedAttributes(
																															map[string]tfsdk.Attribute{
																																"text": {
																																	// Property: Text
																																	Description: "The text that appears on the button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																																"value": {
																																	// Property: Value
																																	Description: "The value returned to Amazon Lex when the user chooses this button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																															},
																															tfsdk.ListNestedAttributesOptions{},
																														),
																														Optional: true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.ArrayLenAtMost(5),
																														},
																														PlanModifiers: []tfsdk.AttributePlanModifier{
																															Multiset(),
																														},
																													},
																													"image_url": {
																														// Property: ImageUrl
																														Description: "The URL of an image to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"subtitle": {
																														// Property: Subtitle
																														Description: "The subtitle to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"title": {
																														// Property: Title
																														Description: "The title to display on the response card.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"plain_text_message": {
																											// Property: PlainTextMessage
																											Description: "A message in plain text format.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The message to send to the user.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"ssml_message": {
																											// Property: SSMLMessage
																											Description: "A message in Speech Synthesis Markup Language (SSML).",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The SSML text that defines the prompt.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																									},
																								),
																								Required: true,
																							},
																							"variations": {
																								// Property: Variations
																								Description: "Message variations to send to the user.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"custom_payload": {
																											// Property: CustomPayload
																											Description: "A message in a custom format defined by the client application.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The string that is sent to your application.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"image_response_card": {
																											// Property: ImageResponseCard
																											Description: "A message that defines a response card that the client application can show to the user.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"buttons": {
																														// Property: Buttons
																														Description: "A list of buttons that should be displayed on the response card.",
																														Attributes: tfsdk.ListNestedAttributes(
																															map[string]tfsdk.Attribute{
																																"text": {
																																	// Property: Text
																																	Description: "The text that appears on the button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																																"value": {
																																	// Property: Value
																																	Description: "The value returned to Amazon Lex when the user chooses this button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																															},
																															tfsdk.ListNestedAttributesOptions{},
																														),
																														Optional: true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.ArrayLenAtMost(5),
																														},
																														PlanModifiers: []tfsdk.AttributePlanModifier{
																															Multiset(),
																														},
																													},
																													"image_url": {
																														// Property: ImageUrl
																														Description: "The URL of an image to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"subtitle": {
																														// Property: Subtitle
																														Description: "The subtitle to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"title": {
																														// Property: Title
																														Description: "The title to display on the response card.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"plain_text_message": {
																											// Property: PlainTextMessage
																											Description: "A message in plain text format.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The message to send to the user.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"ssml_message": {
																											// Property: SSMLMessage
																											Description: "A message in Speech Synthesis Markup Language (SSML).",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The SSML text that defines the prompt.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(2),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Required: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenBetween(1, 5),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																		),
																		Required: true,
																	},
																	"is_active": {
																		// Property: IsActive
																		Description: "Specifies whether the bot will wait for a user to respond.",
																		Type:        types.BoolType,
																		Optional:    true,
																	},
																	"still_waiting_response": {
																		// Property: StillWaitingResponse
																		Description: "The response that Amazon Lex sends periodically to the user to indicate that the bot is still waiting for input from the user.",
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"allow_interrupt": {
																					// Property: AllowInterrupt
																					Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																					Type:        types.BoolType,
																					Optional:    true,
																				},
																				"frequency_in_seconds": {
																					// Property: FrequencyInSeconds
																					Description: "How often a message should be sent to the user in seconds.",
																					Type:        types.Int64Type,
																					Required:    true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.IntBetween(1, 300),
																					},
																				},
																				"message_groups_list": {
																					// Property: MessageGroupsList
																					Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"message": {
																								// Property: Message
																								Description: "The primary message that Amazon Lex should send to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"custom_payload": {
																											// Property: CustomPayload
																											Description: "A message in a custom format defined by the client application.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The string that is sent to your application.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"image_response_card": {
																											// Property: ImageResponseCard
																											Description: "A message that defines a response card that the client application can show to the user.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"buttons": {
																														// Property: Buttons
																														Description: "A list of buttons that should be displayed on the response card.",
																														Attributes: tfsdk.ListNestedAttributes(
																															map[string]tfsdk.Attribute{
																																"text": {
																																	// Property: Text
																																	Description: "The text that appears on the button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																																"value": {
																																	// Property: Value
																																	Description: "The value returned to Amazon Lex when the user chooses this button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																															},
																															tfsdk.ListNestedAttributesOptions{},
																														),
																														Optional: true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.ArrayLenAtMost(5),
																														},
																														PlanModifiers: []tfsdk.AttributePlanModifier{
																															Multiset(),
																														},
																													},
																													"image_url": {
																														// Property: ImageUrl
																														Description: "The URL of an image to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"subtitle": {
																														// Property: Subtitle
																														Description: "The subtitle to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"title": {
																														// Property: Title
																														Description: "The title to display on the response card.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"plain_text_message": {
																											// Property: PlainTextMessage
																											Description: "A message in plain text format.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The message to send to the user.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"ssml_message": {
																											// Property: SSMLMessage
																											Description: "A message in Speech Synthesis Markup Language (SSML).",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The SSML text that defines the prompt.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																									},
																								),
																								Required: true,
																							},
																							"variations": {
																								// Property: Variations
																								Description: "Message variations to send to the user.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"custom_payload": {
																											// Property: CustomPayload
																											Description: "A message in a custom format defined by the client application.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The string that is sent to your application.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"image_response_card": {
																											// Property: ImageResponseCard
																											Description: "A message that defines a response card that the client application can show to the user.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"buttons": {
																														// Property: Buttons
																														Description: "A list of buttons that should be displayed on the response card.",
																														Attributes: tfsdk.ListNestedAttributes(
																															map[string]tfsdk.Attribute{
																																"text": {
																																	// Property: Text
																																	Description: "The text that appears on the button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																																"value": {
																																	// Property: Value
																																	Description: "The value returned to Amazon Lex when the user chooses this button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																															},
																															tfsdk.ListNestedAttributesOptions{},
																														),
																														Optional: true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.ArrayLenAtMost(5),
																														},
																														PlanModifiers: []tfsdk.AttributePlanModifier{
																															Multiset(),
																														},
																													},
																													"image_url": {
																														// Property: ImageUrl
																														Description: "The URL of an image to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"subtitle": {
																														// Property: Subtitle
																														Description: "The subtitle to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"title": {
																														// Property: Title
																														Description: "The title to display on the response card.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"plain_text_message": {
																											// Property: PlainTextMessage
																											Description: "A message in plain text format.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The message to send to the user.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"ssml_message": {
																											// Property: SSMLMessage
																											Description: "A message in Speech Synthesis Markup Language (SSML).",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The SSML text that defines the prompt.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(2),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Required: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenBetween(1, 5),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																				"timeout_in_seconds": {
																					// Property: TimeoutInSeconds
																					Description: "If Amazon Lex waits longer than this length of time in seconds for a response, it will stop sending messages.",
																					Type:        types.Int64Type,
																					Required:    true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.IntBetween(1, 900),
																					},
																				},
																			},
																		),
																		Optional: true,
																	},
																	"waiting_response": {
																		// Property: WaitingResponse
																		Description: "The response that Amazon Lex sends to indicate that the bot is waiting for the conversation to continue.",
																		Attributes: tfsdk.SingleNestedAttributes(
																			map[string]tfsdk.Attribute{
																				"allow_interrupt": {
																					// Property: AllowInterrupt
																					Description: "Indicates whether the user can interrupt a speech prompt from the bot.",
																					Type:        types.BoolType,
																					Optional:    true,
																				},
																				"message_groups_list": {
																					// Property: MessageGroupsList
																					Description: "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
																					Attributes: tfsdk.ListNestedAttributes(
																						map[string]tfsdk.Attribute{
																							"message": {
																								// Property: Message
																								Description: "The primary message that Amazon Lex should send to the user.",
																								Attributes: tfsdk.SingleNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"custom_payload": {
																											// Property: CustomPayload
																											Description: "A message in a custom format defined by the client application.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The string that is sent to your application.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"image_response_card": {
																											// Property: ImageResponseCard
																											Description: "A message that defines a response card that the client application can show to the user.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"buttons": {
																														// Property: Buttons
																														Description: "A list of buttons that should be displayed on the response card.",
																														Attributes: tfsdk.ListNestedAttributes(
																															map[string]tfsdk.Attribute{
																																"text": {
																																	// Property: Text
																																	Description: "The text that appears on the button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																																"value": {
																																	// Property: Value
																																	Description: "The value returned to Amazon Lex when the user chooses this button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																															},
																															tfsdk.ListNestedAttributesOptions{},
																														),
																														Optional: true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.ArrayLenAtMost(5),
																														},
																														PlanModifiers: []tfsdk.AttributePlanModifier{
																															Multiset(),
																														},
																													},
																													"image_url": {
																														// Property: ImageUrl
																														Description: "The URL of an image to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"subtitle": {
																														// Property: Subtitle
																														Description: "The subtitle to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"title": {
																														// Property: Title
																														Description: "The title to display on the response card.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"plain_text_message": {
																											// Property: PlainTextMessage
																											Description: "A message in plain text format.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The message to send to the user.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"ssml_message": {
																											// Property: SSMLMessage
																											Description: "A message in Speech Synthesis Markup Language (SSML).",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The SSML text that defines the prompt.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																									},
																								),
																								Required: true,
																							},
																							"variations": {
																								// Property: Variations
																								Description: "Message variations to send to the user.",
																								Attributes: tfsdk.ListNestedAttributes(
																									map[string]tfsdk.Attribute{
																										"custom_payload": {
																											// Property: CustomPayload
																											Description: "A message in a custom format defined by the client application.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The string that is sent to your application.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"image_response_card": {
																											// Property: ImageResponseCard
																											Description: "A message that defines a response card that the client application can show to the user.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"buttons": {
																														// Property: Buttons
																														Description: "A list of buttons that should be displayed on the response card.",
																														Attributes: tfsdk.ListNestedAttributes(
																															map[string]tfsdk.Attribute{
																																"text": {
																																	// Property: Text
																																	Description: "The text that appears on the button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																																"value": {
																																	// Property: Value
																																	Description: "The value returned to Amazon Lex when the user chooses this button.",
																																	Type:        types.StringType,
																																	Required:    true,
																																	Validators: []tfsdk.AttributeValidator{
																																		validate.StringLenBetween(1, 50),
																																	},
																																},
																															},
																															tfsdk.ListNestedAttributesOptions{},
																														),
																														Optional: true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.ArrayLenAtMost(5),
																														},
																														PlanModifiers: []tfsdk.AttributePlanModifier{
																															Multiset(),
																														},
																													},
																													"image_url": {
																														// Property: ImageUrl
																														Description: "The URL of an image to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"subtitle": {
																														// Property: Subtitle
																														Description: "The subtitle to display on the response card.",
																														Type:        types.StringType,
																														Optional:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																													"title": {
																														// Property: Title
																														Description: "The title to display on the response card.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 250),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"plain_text_message": {
																											// Property: PlainTextMessage
																											Description: "A message in plain text format.",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The message to send to the user.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																										"ssml_message": {
																											// Property: SSMLMessage
																											Description: "A message in Speech Synthesis Markup Language (SSML).",
																											Attributes: tfsdk.SingleNestedAttributes(
																												map[string]tfsdk.Attribute{
																													"value": {
																														// Property: Value
																														Description: "The SSML text that defines the prompt.",
																														Type:        types.StringType,
																														Required:    true,
																														Validators: []tfsdk.AttributeValidator{
																															validate.StringLenBetween(1, 1000),
																														},
																													},
																												},
																											),
																											Optional: true,
																										},
																									},
																									tfsdk.ListNestedAttributesOptions{},
																								),
																								Optional: true,
																								Validators: []tfsdk.AttributeValidator{
																									validate.ArrayLenAtMost(2),
																								},
																								PlanModifiers: []tfsdk.AttributePlanModifier{
																									Multiset(),
																								},
																							},
																						},
																						tfsdk.ListNestedAttributesOptions{},
																					),
																					Required: true,
																					Validators: []tfsdk.AttributeValidator{
																						validate.ArrayLenBetween(1, 5),
																					},
																					PlanModifiers: []tfsdk.AttributePlanModifier{
																						Multiset(),
																					},
																				},
																			},
																		),
																		Required: true,
																	},
																},
															),
															Optional: true,
														},
													},
												),
												Required: true,
											},
										},
										tfsdk.SetNestedAttributesOptions{},
									),
									Optional: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(100),
									},
								},
							},
							tfsdk.SetNestedAttributesOptions{},
						),
						Optional: true,
						Validators: []tfsdk.AttributeValidator{
							validate.ArrayLenAtMost(1000),
						},
					},
					"locale_id": {
						// Property: LocaleId
						Description: "The identifier of the language and locale that the bot will be used in.",
						Type:        types.StringType,
						Required:    true,
					},
					"nlu_confidence_threshold": {
						// Property: NluConfidenceThreshold
						Description: "The specified confidence threshold for inserting the AMAZON.FallbackIntent and AMAZON.KendraSearchIntent intents.",
						Type:        types.Float64Type,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.FloatBetween(0.000000, 1.000000),
						},
					},
					"slot_types": {
						// Property: SlotTypes
						Description: "List of SlotTypes",
						Attributes: tfsdk.SetNestedAttributes(
							map[string]tfsdk.Attribute{
								"description": {
									// Property: Description
									Description: "A description of the resource",
									Type:        types.StringType,
									Optional:    true,
									Validators: []tfsdk.AttributeValidator{
										validate.StringLenAtMost(200),
									},
								},
								"external_source_setting": {
									// Property: ExternalSourceSetting
									Description: "Provides information about the external source of the slot type's definition.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"grammar_slot_type_setting": {
												// Property: GrammarSlotTypeSetting
												Description: "Settings required for a slot type based on a grammar that you provide.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"source": {
															// Property: Source
															Description: "Describes the Amazon S3 bucket name and location for the grammar that is the source for the slot type.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"kms_key_arn": {
																		// Property: KmsKeyArn
																		Description: "The Amazon KMS key required to decrypt the contents of the grammar, if any.",
																		Type:        types.StringType,
																		Optional:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(20, 2048),
																			validate.StringMatch(regexp.MustCompile("^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$"), ""),
																		},
																	},
																	"s3_bucket_name": {
																		// Property: S3BucketName
																		Description: "The name of the S3 bucket that contains the grammar source.",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(3, 63),
																			validate.StringMatch(regexp.MustCompile("^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$"), ""),
																		},
																	},
																	"s3_object_key": {
																		// Property: S3ObjectKey
																		Description: "The path to the grammar in the S3 bucket.",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(1, 1024),
																			validate.StringMatch(regexp.MustCompile("[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$"), ""),
																		},
																	},
																},
															),
															Optional: true,
														},
													},
												),
												Optional: true,
											},
										},
									),
									Optional: true,
								},
								"name": {
									// Property: Name
									Description: "Unique name for a resource.",
									Type:        types.StringType,
									Required:    true,
									Validators: []tfsdk.AttributeValidator{
										validate.StringLenBetween(1, 100),
										validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
									},
								},
								"parent_slot_type_signature": {
									// Property: ParentSlotTypeSignature
									Description: "The built-in slot type used as a parent of this slot type.",
									Type:        types.StringType,
									Optional:    true,
								},
								"slot_type_values": {
									// Property: SlotTypeValues
									Description: "A List of slot type values",
									Attributes: tfsdk.ListNestedAttributes(
										map[string]tfsdk.Attribute{
											"sample_value": {
												// Property: SampleValue
												Description: "Defines one of the values for a slot type.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"value": {
															// Property: Value
															Description: "The value that can be used for a slot type.",
															Type:        types.StringType,
															Required:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.StringLenBetween(1, 140),
															},
														},
													},
												),
												Required: true,
											},
											"synonyms": {
												// Property: Synonyms
												Description: "Additional values related to the slot type entry.",
												Attributes: tfsdk.ListNestedAttributes(
													map[string]tfsdk.Attribute{
														"value": {
															// Property: Value
															Description: "The value that can be used for a slot type.",
															Type:        types.StringType,
															Required:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.StringLenBetween(1, 140),
															},
														},
													},
													tfsdk.ListNestedAttributesOptions{},
												),
												Optional: true,
												Validators: []tfsdk.AttributeValidator{
													validate.ArrayLenAtMost(10000),
												},
												PlanModifiers: []tfsdk.AttributePlanModifier{
													Multiset(),
												},
											},
										},
										tfsdk.ListNestedAttributesOptions{},
									),
									Optional: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(10000),
									},
									PlanModifiers: []tfsdk.AttributePlanModifier{
										Multiset(),
									},
								},
								"value_selection_setting": {
									// Property: ValueSelectionSetting
									Description: "Contains settings used by Amazon Lex to select a slot value.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"advanced_recognition_setting": {
												// Property: AdvancedRecognitionSetting
												Description: "Provides settings that enable advanced recognition settings for slot values.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"audio_recognition_strategy": {
															// Property: AudioRecognitionStrategy
															Description: "Enables using slot values as a custom vocabulary when recognizing user utterances.",
															Type:        types.StringType,
															Optional:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.StringInSlice([]string{
																	"UseSlotValuesAsCustomVocabulary",
																}),
															},
														},
													},
												),
												Optional: true,
											},
											"regex_filter": {
												// Property: RegexFilter
												Description: "A regular expression used to validate the value of a slot.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"pattern": {
															// Property: Pattern
															Description: "Regex pattern",
															Type:        types.StringType,
															Required:    true,
															Validators: []tfsdk.AttributeValidator{
																validate.StringLenBetween(1, 300),
															},
														},
													},
												),
												Optional: true,
											},
											"resolution_strategy": {
												// Property: ResolutionStrategy
												Type:     types.StringType,
												Required: true,
												Validators: []tfsdk.AttributeValidator{
													validate.StringInSlice([]string{
														"ORIGINAL_VALUE",
														"TOP_RESOLUTION",
													}),
												},
											},
										},
									),
									Optional: true,
								},
							},
							tfsdk.SetNestedAttributesOptions{},
						),
						Optional: true,
						Validators: []tfsdk.AttributeValidator{
							validate.ArrayLenAtMost(100),
						},
					},
					"voice_settings": {
						// Property: VoiceSettings
						Description: "Settings for using an Amazon Polly voice to communicate with a user.",
						Attributes: tfsdk.SingleNestedAttributes(
							map[string]tfsdk.Attribute{
								"voice_id": {
									// Property: VoiceId
									Description: "The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user.",
									Type:        types.StringType,
									Required:    true,
								},
							},
						),
						Optional: true,
					},
				},
				tfsdk.SetNestedAttributesOptions{},
			),
			Optional: true,
			// BotLocales is a write-only property.
		},
		"bot_tags": {
			// Property: BotTags
			// CloudFormation resource type schema:
			// {
			//   "description": "A list of tags to add to the bot, which can only be added at bot creation.",
			//   "insertionOrder": false,
			//   "items": {
			//     "additionalProperties": false,
			//     "description": "A key-value pair for tagging Lex resources",
			//     "properties": {
			//       "Key": {
			//         "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
			//         "maxLength": 128,
			//         "minLength": 1,
			//         "type": "string"
			//       },
			//       "Value": {
			//         "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
			//         "maxLength": 256,
			//         "minLength": 0,
			//         "type": "string"
			//       }
			//     },
			//     "required": [
			//       "Key",
			//       "Value"
			//     ],
			//     "type": "object"
			//   },
			//   "maxItems": 200,
			//   "type": "array",
			//   "uniqueItems": true
			// }
			Description: "A list of tags to add to the bot, which can only be added at bot creation.",
			Attributes: tfsdk.SetNestedAttributes(
				map[string]tfsdk.Attribute{
					"key": {
						// Property: Key
						Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
						Type:        types.StringType,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(1, 128),
						},
					},
					"value": {
						// Property: Value
						Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
						Type:        types.StringType,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(0, 256),
						},
					},
				},
				tfsdk.SetNestedAttributesOptions{},
			),
			Optional: true,
			Validators: []tfsdk.AttributeValidator{
				validate.ArrayLenAtMost(200),
			},
			// BotTags is a write-only property.
		},
		"data_privacy": {
			// Property: DataPrivacy
			// CloudFormation resource type schema:
			// {
			//   "additionalProperties": false,
			//   "description": "Data privacy setting of the Bot.",
			//   "properties": {
			//     "ChildDirected": {
			//       "description": "",
			//       "type": "boolean"
			//     }
			//   },
			//   "required": [
			//     "ChildDirected"
			//   ],
			//   "type": "object"
			// }
			Description: "Data privacy setting of the Bot.",
			Attributes: tfsdk.SingleNestedAttributes(
				map[string]tfsdk.Attribute{
					"child_directed": {
						// Property: ChildDirected
						Description: "",
						Type:        types.BoolType,
						Required:    true,
					},
				},
			),
			Required: true,
		},
		"description": {
			// Property: Description
			// CloudFormation resource type schema:
			// {
			//   "description": "A description of the resource",
			//   "maxLength": 200,
			//   "type": "string"
			// }
			Description: "A description of the resource",
			Type:        types.StringType,
			Optional:    true,
			Validators: []tfsdk.AttributeValidator{
				validate.StringLenAtMost(200),
			},
		},
		"id": {
			// Property: Id
			// CloudFormation resource type schema:
			// {
			//   "description": "Unique ID of resource",
			//   "maxLength": 10,
			//   "minLength": 10,
			//   "pattern": "^[0-9a-zA-Z]+$",
			//   "type": "string"
			// }
			Description: "Unique ID of resource",
			Type:        types.StringType,
			Computed:    true,
			PlanModifiers: []tfsdk.AttributePlanModifier{
				tfsdk.UseStateForUnknown(),
			},
		},
		"idle_session_ttl_in_seconds": {
			// Property: IdleSessionTTLInSeconds
			// CloudFormation resource type schema:
			// {
			//   "description": "IdleSessionTTLInSeconds of the resource",
			//   "maximum": 86400,
			//   "minimum": 60,
			//   "type": "integer"
			// }
			Description: "IdleSessionTTLInSeconds of the resource",
			Type:        types.Int64Type,
			Required:    true,
			Validators: []tfsdk.AttributeValidator{
				validate.IntBetween(60, 86400),
			},
		},
		"name": {
			// Property: Name
			// CloudFormation resource type schema:
			// {
			//   "description": "Unique name for a resource.",
			//   "maxLength": 100,
			//   "minLength": 1,
			//   "pattern": "^([0-9a-zA-Z][_-]?)+$",
			//   "type": "string"
			// }
			Description: "Unique name for a resource.",
			Type:        types.StringType,
			Required:    true,
			Validators: []tfsdk.AttributeValidator{
				validate.StringLenBetween(1, 100),
				validate.StringMatch(regexp.MustCompile("^([0-9a-zA-Z][_-]?)+$"), ""),
			},
		},
		"role_arn": {
			// Property: RoleArn
			// CloudFormation resource type schema:
			// {
			//   "description": "The Amazon Resource Name (ARN) of an IAM role that has permission to access the bot.",
			//   "maxLength": 2048,
			//   "minLength": 32,
			//   "pattern": "^arn:aws[a-zA-Z-]*:iam::[0-9]{12}:role/.*$",
			//   "type": "string"
			// }
			Description: "The Amazon Resource Name (ARN) of an IAM role that has permission to access the bot.",
			Type:        types.StringType,
			Required:    true,
			Validators: []tfsdk.AttributeValidator{
				validate.StringLenBetween(32, 2048),
				validate.StringMatch(regexp.MustCompile("^arn:aws[a-zA-Z-]*:iam::[0-9]{12}:role/.*$"), ""),
			},
		},
		"test_bot_alias_settings": {
			// Property: TestBotAliasSettings
			// CloudFormation resource type schema:
			// {
			//   "additionalProperties": false,
			//   "description": "Configuring the test bot alias settings for a given bot",
			//   "properties": {
			//     "BotAliasLocaleSettings": {
			//       "description": "A list of bot alias locale settings to add to the bot alias.",
			//       "insertionOrder": false,
			//       "items": {
			//         "additionalProperties": false,
			//         "description": "A locale setting in alias",
			//         "properties": {
			//           "BotAliasLocaleSetting": {
			//             "additionalProperties": false,
			//             "description": "You can use this parameter to specify a specific Lambda function to run different functions in different locales.",
			//             "properties": {
			//               "CodeHookSpecification": {
			//                 "additionalProperties": false,
			//                 "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
			//                 "properties": {
			//                   "LambdaCodeHook": {
			//                     "additionalProperties": false,
			//                     "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
			//                     "properties": {
			//                       "CodeHookInterfaceVersion": {
			//                         "description": "The version of the request-response that you want Amazon Lex to use to invoke your Lambda function.",
			//                         "maxLength": 5,
			//                         "minLength": 1,
			//                         "type": "string"
			//                       },
			//                       "LambdaArn": {
			//                         "description": "The Amazon Resource Name (ARN) of the Lambda function.",
			//                         "maxLength": 2048,
			//                         "minLength": 20,
			//                         "type": "string"
			//                       }
			//                     },
			//                     "required": [
			//                       "CodeHookInterfaceVersion",
			//                       "LambdaArn"
			//                     ],
			//                     "type": "object"
			//                   }
			//                 },
			//                 "required": [
			//                   "LambdaCodeHook"
			//                 ],
			//                 "type": "object"
			//               },
			//               "Enabled": {
			//                 "description": "Whether the Lambda code hook is enabled",
			//                 "type": "boolean"
			//               }
			//             },
			//             "required": [
			//               "Enabled"
			//             ],
			//             "type": "object"
			//           },
			//           "LocaleId": {
			//             "description": "A string used to identify the locale",
			//             "maxLength": 128,
			//             "minLength": 1,
			//             "type": "string"
			//           }
			//         },
			//         "required": [
			//           "LocaleId",
			//           "BotAliasLocaleSetting"
			//         ],
			//         "type": "object"
			//       },
			//       "maxItems": 50,
			//       "type": "array",
			//       "uniqueItems": true
			//     },
			//     "ConversationLogSettings": {
			//       "additionalProperties": false,
			//       "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
			//       "properties": {
			//         "AudioLogSettings": {
			//           "description": "List of audio log settings that pertain to the conversation log settings for the bot's TestBotAlias.",
			//           "insertionOrder": false,
			//           "items": {
			//             "additionalProperties": false,
			//             "description": "Settings for logging audio of conversations between Amazon Lex and a user. You specify whether to log audio and the Amazon S3 bucket where the audio file is stored.",
			//             "properties": {
			//               "Destination": {
			//                 "additionalProperties": false,
			//                 "description": "The location of audio log files collected when conversation logging is enabled for a bot.",
			//                 "properties": {
			//                   "S3Bucket": {
			//                     "additionalProperties": false,
			//                     "description": "Specifies an Amazon S3 bucket for logging audio conversations",
			//                     "properties": {
			//                       "KmsKeyArn": {
			//                         "description": "The Amazon Resource Name (ARN) of an AWS Key Management Service (KMS) key for encrypting audio log files stored in an S3 bucket.",
			//                         "maxLength": 2048,
			//                         "minLength": 20,
			//                         "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$",
			//                         "type": "string"
			//                       },
			//                       "LogPrefix": {
			//                         "description": "The Amazon S3 key of the deployment package.",
			//                         "maxLength": 1024,
			//                         "minLength": 0,
			//                         "type": "string"
			//                       },
			//                       "S3BucketArn": {
			//                         "description": "The Amazon Resource Name (ARN) of an Amazon S3 bucket where audio log files are stored.",
			//                         "maxLength": 2048,
			//                         "minLength": 1,
			//                         "pattern": "^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$",
			//                         "type": "string"
			//                       }
			//                     },
			//                     "required": [
			//                       "LogPrefix",
			//                       "S3BucketArn"
			//                     ],
			//                     "type": "object"
			//                   }
			//                 },
			//                 "required": [
			//                   "S3Bucket"
			//                 ],
			//                 "type": "object"
			//               },
			//               "Enabled": {
			//                 "description": "",
			//                 "type": "boolean"
			//               }
			//             },
			//             "required": [
			//               "Destination",
			//               "Enabled"
			//             ],
			//             "type": "object"
			//           },
			//           "maxItems": 1,
			//           "type": "array",
			//           "uniqueItems": true
			//         },
			//         "TextLogSettings": {
			//           "description": "List of text log settings that pertain to the conversation log settings for the bot's TestBotAlias",
			//           "insertionOrder": false,
			//           "items": {
			//             "additionalProperties": false,
			//             "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
			//             "properties": {
			//               "Destination": {
			//                 "additionalProperties": false,
			//                 "description": "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.",
			//                 "properties": {
			//                   "CloudWatch": {
			//                     "additionalProperties": false,
			//                     "properties": {
			//                       "CloudWatchLogGroupArn": {
			//                         "description": "A string used to identify the groupArn for the Cloudwatch Log Group",
			//                         "maxLength": 2048,
			//                         "minLength": 1,
			//                         "type": "string"
			//                       },
			//                       "LogPrefix": {
			//                         "description": "A string containing the value for the Log Prefix",
			//                         "maxLength": 1024,
			//                         "minLength": 0,
			//                         "type": "string"
			//                       }
			//                     },
			//                     "required": [
			//                       "CloudWatchLogGroupArn",
			//                       "LogPrefix"
			//                     ],
			//                     "type": "object"
			//                   }
			//                 },
			//                 "required": [
			//                   "CloudWatch"
			//                 ],
			//                 "type": "object"
			//               },
			//               "Enabled": {
			//                 "description": "",
			//                 "type": "boolean"
			//               }
			//             },
			//             "required": [
			//               "Destination",
			//               "Enabled"
			//             ],
			//             "type": "object"
			//           },
			//           "maxItems": 1,
			//           "type": "array",
			//           "uniqueItems": true
			//         }
			//       },
			//       "type": "object"
			//     },
			//     "Description": {
			//       "description": "A description of the resource",
			//       "maxLength": 200,
			//       "type": "string"
			//     },
			//     "SentimentAnalysisSettings": {
			//       "additionalProperties": false,
			//       "description": "Determines whether Amazon Lex will use Amazon Comprehend to detect the sentiment of user utterances.",
			//       "properties": {
			//         "DetectSentiment": {
			//           "description": "Enable to call Amazon Comprehend for Sentiment natively within Lex",
			//           "type": "boolean"
			//         }
			//       },
			//       "required": [
			//         "DetectSentiment"
			//       ],
			//       "type": "object"
			//     }
			//   },
			//   "type": "object"
			// }
			Description: "Configuring the test bot alias settings for a given bot",
			Attributes: tfsdk.SingleNestedAttributes(
				map[string]tfsdk.Attribute{
					"bot_alias_locale_settings": {
						// Property: BotAliasLocaleSettings
						Description: "A list of bot alias locale settings to add to the bot alias.",
						Attributes: tfsdk.SetNestedAttributes(
							map[string]tfsdk.Attribute{
								"bot_alias_locale_setting": {
									// Property: BotAliasLocaleSetting
									Description: "You can use this parameter to specify a specific Lambda function to run different functions in different locales.",
									Attributes: tfsdk.SingleNestedAttributes(
										map[string]tfsdk.Attribute{
											"code_hook_specification": {
												// Property: CodeHookSpecification
												Description: "Contains information about code hooks that Amazon Lex calls during a conversation.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"lambda_code_hook": {
															// Property: LambdaCodeHook
															Description: "Contains information about code hooks that Amazon Lex calls during a conversation.",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"code_hook_interface_version": {
																		// Property: CodeHookInterfaceVersion
																		Description: "The version of the request-response that you want Amazon Lex to use to invoke your Lambda function.",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(1, 5),
																		},
																	},
																	"lambda_arn": {
																		// Property: LambdaArn
																		Description: "The Amazon Resource Name (ARN) of the Lambda function.",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(20, 2048),
																		},
																	},
																},
															),
															Required: true,
														},
													},
												),
												Optional: true,
											},
											"enabled": {
												// Property: Enabled
												Description: "Whether the Lambda code hook is enabled",
												Type:        types.BoolType,
												Required:    true,
											},
										},
									),
									Required: true,
								},
								"locale_id": {
									// Property: LocaleId
									Description: "A string used to identify the locale",
									Type:        types.StringType,
									Required:    true,
									Validators: []tfsdk.AttributeValidator{
										validate.StringLenBetween(1, 128),
									},
								},
							},
							tfsdk.SetNestedAttributesOptions{},
						),
						Optional: true,
						Validators: []tfsdk.AttributeValidator{
							validate.ArrayLenAtMost(50),
						},
					},
					"conversation_log_settings": {
						// Property: ConversationLogSettings
						Description: "Contains information about code hooks that Amazon Lex calls during a conversation.",
						Attributes: tfsdk.SingleNestedAttributes(
							map[string]tfsdk.Attribute{
								"audio_log_settings": {
									// Property: AudioLogSettings
									Description: "List of audio log settings that pertain to the conversation log settings for the bot's TestBotAlias.",
									Attributes: tfsdk.SetNestedAttributes(
										map[string]tfsdk.Attribute{
											"destination": {
												// Property: Destination
												Description: "The location of audio log files collected when conversation logging is enabled for a bot.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"s3_bucket": {
															// Property: S3Bucket
															Description: "Specifies an Amazon S3 bucket for logging audio conversations",
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"kms_key_arn": {
																		// Property: KmsKeyArn
																		Description: "The Amazon Resource Name (ARN) of an AWS Key Management Service (KMS) key for encrypting audio log files stored in an S3 bucket.",
																		Type:        types.StringType,
																		Optional:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(20, 2048),
																			validate.StringMatch(regexp.MustCompile("^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$"), ""),
																		},
																	},
																	"log_prefix": {
																		// Property: LogPrefix
																		Description: "The Amazon S3 key of the deployment package.",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(0, 1024),
																		},
																	},
																	"s3_bucket_arn": {
																		// Property: S3BucketArn
																		Description: "The Amazon Resource Name (ARN) of an Amazon S3 bucket where audio log files are stored.",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(1, 2048),
																			validate.StringMatch(regexp.MustCompile("^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$"), ""),
																		},
																	},
																},
															),
															Required: true,
														},
													},
												),
												Required: true,
											},
											"enabled": {
												// Property: Enabled
												Description: "",
												Type:        types.BoolType,
												Required:    true,
											},
										},
										tfsdk.SetNestedAttributesOptions{},
									),
									Optional: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(1),
									},
								},
								"text_log_settings": {
									// Property: TextLogSettings
									Description: "List of text log settings that pertain to the conversation log settings for the bot's TestBotAlias",
									Attributes: tfsdk.SetNestedAttributes(
										map[string]tfsdk.Attribute{
											"destination": {
												// Property: Destination
												Description: "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.",
												Attributes: tfsdk.SingleNestedAttributes(
													map[string]tfsdk.Attribute{
														"cloudwatch": {
															// Property: CloudWatch
															Attributes: tfsdk.SingleNestedAttributes(
																map[string]tfsdk.Attribute{
																	"cloudwatch_log_group_arn": {
																		// Property: CloudWatchLogGroupArn
																		Description: "A string used to identify the groupArn for the Cloudwatch Log Group",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(1, 2048),
																		},
																	},
																	"log_prefix": {
																		// Property: LogPrefix
																		Description: "A string containing the value for the Log Prefix",
																		Type:        types.StringType,
																		Required:    true,
																		Validators: []tfsdk.AttributeValidator{
																			validate.StringLenBetween(0, 1024),
																		},
																	},
																},
															),
															Required: true,
														},
													},
												),
												Required: true,
											},
											"enabled": {
												// Property: Enabled
												Description: "",
												Type:        types.BoolType,
												Required:    true,
											},
										},
										tfsdk.SetNestedAttributesOptions{},
									),
									Optional: true,
									Validators: []tfsdk.AttributeValidator{
										validate.ArrayLenAtMost(1),
									},
								},
							},
						),
						Optional: true,
					},
					"description": {
						// Property: Description
						Description: "A description of the resource",
						Type:        types.StringType,
						Optional:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenAtMost(200),
						},
					},
					"sentiment_analysis_settings": {
						// Property: SentimentAnalysisSettings
						Description: "Determines whether Amazon Lex will use Amazon Comprehend to detect the sentiment of user utterances.",
						Attributes: tfsdk.SingleNestedAttributes(
							map[string]tfsdk.Attribute{
								"detect_sentiment": {
									// Property: DetectSentiment
									Description: "Enable to call Amazon Comprehend for Sentiment natively within Lex",
									Type:        types.BoolType,
									Required:    true,
								},
							},
						),
						Optional: true,
					},
				},
			),
			Optional: true,
		},
		"test_bot_alias_tags": {
			// Property: TestBotAliasTags
			// CloudFormation resource type schema:
			// {
			//   "description": "A list of tags to add to the test alias for a bot, , which can only be added at bot/bot alias creation.",
			//   "insertionOrder": false,
			//   "items": {
			//     "additionalProperties": false,
			//     "description": "A key-value pair for tagging Lex resources",
			//     "properties": {
			//       "Key": {
			//         "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
			//         "maxLength": 128,
			//         "minLength": 1,
			//         "type": "string"
			//       },
			//       "Value": {
			//         "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
			//         "maxLength": 256,
			//         "minLength": 0,
			//         "type": "string"
			//       }
			//     },
			//     "required": [
			//       "Key",
			//       "Value"
			//     ],
			//     "type": "object"
			//   },
			//   "maxItems": 200,
			//   "type": "array",
			//   "uniqueItems": true
			// }
			Description: "A list of tags to add to the test alias for a bot, , which can only be added at bot/bot alias creation.",
			Attributes: tfsdk.SetNestedAttributes(
				map[string]tfsdk.Attribute{
					"key": {
						// Property: Key
						Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
						Type:        types.StringType,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(1, 128),
						},
					},
					"value": {
						// Property: Value
						Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
						Type:        types.StringType,
						Required:    true,
						Validators: []tfsdk.AttributeValidator{
							validate.StringLenBetween(0, 256),
						},
					},
				},
				tfsdk.SetNestedAttributesOptions{},
			),
			Optional: true,
			Validators: []tfsdk.AttributeValidator{
				validate.ArrayLenAtMost(200),
			},
			// TestBotAliasTags is a write-only property.
		},
	}

	schema := tfsdk.Schema{
		Description: "Amazon Lex conversational bot performing automated tasks such as ordering a pizza, booking a hotel, and so on.",
		Version:     1,
		Attributes:  attributes,
	}

	var opts ResourceTypeOptions

	opts = opts.WithCloudFormationTypeName("AWS::Lex::Bot").WithTerraformTypeName("awscc_lex_bot")
	opts = opts.WithTerraformSchema(schema)
	opts = opts.WithSyntheticIDAttribute(false)
	opts = opts.WithAttributeNameMap(map[string]string{
		"active":                                "Active",
		"advanced_recognition_setting":          "AdvancedRecognitionSetting",
		"allow_interrupt":                       "AllowInterrupt",
		"allow_multiple_values":                 "AllowMultipleValues",
		"arn":                                   "Arn",
		"audio_log_settings":                    "AudioLogSettings",
		"audio_recognition_strategy":            "AudioRecognitionStrategy",
		"auto_build_bot_locales":                "AutoBuildBotLocales",
		"bot_alias_locale_setting":              "BotAliasLocaleSetting",
		"bot_alias_locale_settings":             "BotAliasLocaleSettings",
		"bot_file_s3_location":                  "BotFileS3Location",
		"bot_locales":                           "BotLocales",
		"bot_tags":                              "BotTags",
		"buttons":                               "Buttons",
		"child_directed":                        "ChildDirected",
		"closing_response":                      "ClosingResponse",
		"cloudwatch":                            "CloudWatch",
		"cloudwatch_log_group_arn":              "CloudWatchLogGroupArn",
		"code_hook_interface_version":           "CodeHookInterfaceVersion",
		"code_hook_specification":               "CodeHookSpecification",
		"continue_response":                     "ContinueResponse",
		"conversation_log_settings":             "ConversationLogSettings",
		"custom_payload":                        "CustomPayload",
		"custom_vocabulary":                     "CustomVocabulary",
		"custom_vocabulary_items":               "CustomVocabularyItems",
		"data_privacy":                          "DataPrivacy",
		"declination_response":                  "DeclinationResponse",
		"default_value":                         "DefaultValue",
		"default_value_list":                    "DefaultValueList",
		"default_value_specification":           "DefaultValueSpecification",
		"delay_in_seconds":                      "DelayInSeconds",
		"description":                           "Description",
		"destination":                           "Destination",
		"detect_sentiment":                      "DetectSentiment",
		"dialog_code_hook":                      "DialogCodeHook",
		"enabled":                               "Enabled",
		"external_source_setting":               "ExternalSourceSetting",
		"failure_response":                      "FailureResponse",
		"frequency_in_seconds":                  "FrequencyInSeconds",
		"fulfillment_code_hook":                 "FulfillmentCodeHook",
		"fulfillment_updates_specification":     "FulfillmentUpdatesSpecification",
		"grammar_slot_type_setting":             "GrammarSlotTypeSetting",
		"id":                                    "Id",
		"idle_session_ttl_in_seconds":           "IdleSessionTTLInSeconds",
		"image_response_card":                   "ImageResponseCard",
		"image_url":                             "ImageUrl",
		"input_contexts":                        "InputContexts",
		"intent_closing_setting":                "IntentClosingSetting",
		"intent_confirmation_setting":           "IntentConfirmationSetting",
		"intents":                               "Intents",
		"is_active":                             "IsActive",
		"kendra_configuration":                  "KendraConfiguration",
		"kendra_index":                          "KendraIndex",
		"key":                                   "Key",
		"kms_key_arn":                           "KmsKeyArn",
		"lambda_arn":                            "LambdaArn",
		"lambda_code_hook":                      "LambdaCodeHook",
		"locale_id":                             "LocaleId",
		"log_prefix":                            "LogPrefix",
		"max_retries":                           "MaxRetries",
		"message":                               "Message",
		"message_groups":                        "MessageGroups",
		"message_groups_list":                   "MessageGroupsList",
		"multiple_values_setting":               "MultipleValuesSetting",
		"name":                                  "Name",
		"nlu_confidence_threshold":              "NluConfidenceThreshold",
		"obfuscation_setting":                   "ObfuscationSetting",
		"obfuscation_setting_type":              "ObfuscationSettingType",
		"output_contexts":                       "OutputContexts",
		"parent_intent_signature":               "ParentIntentSignature",
		"parent_slot_type_signature":            "ParentSlotTypeSignature",
		"pattern":                               "Pattern",
		"phrase":                                "Phrase",
		"plain_text_message":                    "PlainTextMessage",
		"post_fulfillment_status_specification": "PostFulfillmentStatusSpecification",
		"priority":                              "Priority",
		"prompt_specification":                  "PromptSpecification",
		"query_filter_string":                   "QueryFilterString",
		"query_filter_string_enabled":           "QueryFilterStringEnabled",
		"regex_filter":                          "RegexFilter",
		"resolution_strategy":                   "ResolutionStrategy",
		"role_arn":                              "RoleArn",
		"s3_bucket":                             "S3Bucket",
		"s3_bucket_arn":                         "S3BucketArn",
		"s3_bucket_name":                        "S3BucketName",
		"s3_object_key":                         "S3ObjectKey",
		"s3_object_version":                     "S3ObjectVersion",
		"sample_utterances":                     "SampleUtterances",
		"sample_value":                          "SampleValue",
		"sentiment_analysis_settings":           "SentimentAnalysisSettings",
		"slot_constraint":                       "SlotConstraint",
		"slot_name":                             "SlotName",
		"slot_priorities":                       "SlotPriorities",
		"slot_type_name":                        "SlotTypeName",
		"slot_type_values":                      "SlotTypeValues",
		"slot_types":                            "SlotTypes",
		"slots":                                 "Slots",
		"source":                                "Source",
		"ssml_message":                          "SSMLMessage",
		"start_response":                        "StartResponse",
		"still_waiting_response":                "StillWaitingResponse",
		"subtitle":                              "Subtitle",
		"success_response":                      "SuccessResponse",
		"synonyms":                              "Synonyms",
		"test_bot_alias_settings":               "TestBotAliasSettings",
		"test_bot_alias_tags":                   "TestBotAliasTags",
		"text":                                  "Text",
		"text_log_settings":                     "TextLogSettings",
		"time_to_live_in_seconds":               "TimeToLiveInSeconds",
		"timeout_in_seconds":                    "TimeoutInSeconds",
		"timeout_response":                      "TimeoutResponse",
		"title":                                 "Title",
		"turns_to_live":                         "TurnsToLive",
		"update_response":                       "UpdateResponse",
		"utterance":                             "Utterance",
		"value":                                 "Value",
		"value_elicitation_setting":             "ValueElicitationSetting",
		"value_selection_setting":               "ValueSelectionSetting",
		"variations":                            "Variations",
		"voice_id":                              "VoiceId",
		"voice_settings":                        "VoiceSettings",
		"wait_and_continue_specification":       "WaitAndContinueSpecification",
		"waiting_response":                      "WaitingResponse",
		"weight":                                "Weight",
	})

	opts = opts.WithWriteOnlyPropertyPaths([]string{
		"/properties/BotLocales",
		"/properties/BotFileS3Location",
		"/properties/AutoBuildBotLocales",
		"/properties/BotTags",
		"/properties/TestBotAliasTags",
	})
	opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)

	opts = opts.WithUpdateTimeoutInMinutes(0)

	resourceType, err := NewResourceType(ctx, opts...)

	if err != nil {
		return nil, err
	}

	return resourceType, nil
}