{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-lex-bot.json",
  "title": "AWSLexBotProperties",
  "description": "Amazon Lex conversational bot performing automated tasks such as ordering a pizza, booking a hotel, and so on.. Source:- <https://docs.aws.amazon.com/lexv2/latest/dg/build-create.html>",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-lex-bot.json",
    "sourceSha256": "bc837514b74faa59213ebc8ce8b95c0795ae5cf6dea19d7e8e54625e5d543302"
  },
  "type": "object",
  "properties": {
    "Name": {
      "$ref": "#/$defs/Name"
    },
    "Description": {
      "$ref": "#/$defs/Description"
    },
    "RoleArn": {
      "$ref": "#/$defs/RoleArn"
    },
    "DataPrivacy": {
      "description": "Data privacy setting of the Bot.",
      "type": "object",
      "properties": {
        "ChildDirected": {
          "type": "boolean",
          "description": ""
        }
      },
      "required": [
        "ChildDirected"
      ],
      "additionalProperties": false
    },
    "IdleSessionTTLInSeconds": {
      "description": "IdleSessionTTLInSeconds of the resource",
      "type": "integer",
      "minimum": 60,
      "maximum": 86400
    },
    "BotLocales": {
      "description": "List of bot locales",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/BotLocale"
      }
    },
    "BotFileS3Location": {
      "$ref": "#/$defs/S3Location"
    },
    "BotTags": {
      "description": "A list of tags to add to the bot, which can only be added at bot creation.",
      "type": "array",
      "uniqueItems": true,
      "maxItems": 200,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/Tag"
      }
    },
    "TestBotAliasTags": {
      "description": "A list of tags to add to the test alias for a bot, , which can only be added at bot/bot alias creation.",
      "type": "array",
      "uniqueItems": true,
      "maxItems": 200,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/Tag"
      }
    },
    "AutoBuildBotLocales": {
      "description": "Specifies whether to build the bot locales after bot creation completes.",
      "type": "boolean"
    },
    "TestBotAliasSettings": {
      "$ref": "#/$defs/TestBotAliasSettings"
    }
  },
  "typeName": "AWS::Lex::Bot",
  "writeOnlyProperties": [
    "/properties/BotLocales",
    "/properties/BotFileS3Location",
    "/properties/AutoBuildBotLocales",
    "/properties/BotTags",
    "/properties/TestBotAliasTags"
  ],
  "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/build-create.html",
  "additionalProperties": false,
  "readOnlyProperties": [
    "/properties/Id",
    "/properties/Arn"
  ],
  "taggable": true,
  "$defs": {
    "BotAliasLocaleSettingsList": {
      "description": "A list of bot alias locale settings to add to the bot alias.",
      "type": "array",
      "uniqueItems": true,
      "maxItems": 50,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/BotAliasLocaleSettingsItem"
      },
      "title": "AWSLexBotBotAliasLocaleSettingsListDefinition"
    },
    "BotAliasLocaleSettingsItem": {
      "description": "A locale setting in alias",
      "type": "object",
      "properties": {
        "LocaleId": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "A string used to identify the locale"
        },
        "BotAliasLocaleSetting": {
          "$ref": "#/$defs/BotAliasLocaleSettings"
        }
      },
      "required": [
        "LocaleId",
        "BotAliasLocaleSetting"
      ],
      "title": "AWSLexBotBotAliasLocaleSettingsItemDefinition",
      "additionalProperties": false
    },
    "BotAliasLocaleSettings": {
      "description": "You can use this parameter to specify a specific Lambda function to run different functions in different locales.",
      "type": "object",
      "properties": {
        "CodeHookSpecification": {
          "$ref": "#/$defs/CodeHookSpecification"
        },
        "Enabled": {
          "type": "boolean",
          "description": "Whether the Lambda code hook is enabled"
        }
      },
      "required": [
        "Enabled"
      ],
      "title": "AWSLexBotBotAliasLocaleSettingsDefinition",
      "additionalProperties": false
    },
    "CodeHookSpecification": {
      "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
      "type": "object",
      "properties": {
        "LambdaCodeHook": {
          "$ref": "#/$defs/LambdaCodeHook"
        }
      },
      "required": [
        "LambdaCodeHook"
      ],
      "title": "AWSLexBotCodeHookSpecificationDefinition",
      "additionalProperties": false
    },
    "LambdaCodeHook": {
      "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
      "type": "object",
      "properties": {
        "CodeHookInterfaceVersion": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 5
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The version of the request-response that you want Amazon Lex to use to invoke your Lambda function."
        },
        "LambdaArn": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 20,
              "maxLength": 2048
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon Resource Name (ARN) of the Lambda function."
        }
      },
      "required": [
        "CodeHookInterfaceVersion",
        "LambdaArn"
      ],
      "title": "AWSLexBotLambdaCodeHookDefinition",
      "additionalProperties": false
    },
    "ConversationLogSettings": {
      "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
      "type": "object",
      "properties": {
        "AudioLogSettings": {
          "$ref": "#/$defs/AudioLogSettings"
        },
        "TextLogSettings": {
          "$ref": "#/$defs/TextLogSettings"
        }
      },
      "title": "AWSLexBotConversationLogSettingsDefinition",
      "additionalProperties": false
    },
    "AudioLogSettings": {
      "description": "List of audio log settings that pertain to the conversation log settings for the bot's TestBotAlias.",
      "type": "array",
      "maxItems": 1,
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/AudioLogSetting"
      },
      "title": "AWSLexBotAudioLogSettingsDefinition"
    },
    "TextLogSettings": {
      "description": "List of text log settings that pertain to the conversation log settings for the bot's TestBotAlias",
      "type": "array",
      "maxItems": 1,
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/TextLogSetting"
      },
      "title": "AWSLexBotTextLogSettingsDefinition"
    },
    "AudioLogSetting": {
      "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.",
      "type": "object",
      "properties": {
        "Destination": {
          "$ref": "#/$defs/AudioLogDestination"
        },
        "Enabled": {
          "type": "boolean",
          "description": ""
        }
      },
      "required": [
        "Destination",
        "Enabled"
      ],
      "title": "AWSLexBotAudioLogSettingDefinition",
      "additionalProperties": false
    },
    "TextLogSetting": {
      "description": "Contains information about code hooks that Amazon Lex calls during a conversation.",
      "type": "object",
      "properties": {
        "Destination": {
          "$ref": "#/$defs/TextLogDestination"
        },
        "Enabled": {
          "type": "boolean",
          "description": ""
        }
      },
      "required": [
        "Destination",
        "Enabled"
      ],
      "title": "AWSLexBotTextLogSettingDefinition",
      "additionalProperties": false
    },
    "AudioLogDestination": {
      "description": "The location of audio log files collected when conversation logging is enabled for a bot.",
      "type": "object",
      "properties": {
        "S3Bucket": {
          "$ref": "#/$defs/S3BucketLogDestination"
        }
      },
      "required": [
        "S3Bucket"
      ],
      "title": "AWSLexBotAudioLogDestinationDefinition",
      "additionalProperties": false
    },
    "TextLogDestination": {
      "description": "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.",
      "type": "object",
      "properties": {
        "CloudWatch": {
          "$ref": "#/$defs/CloudWatchLogGroupLogDestination"
        }
      },
      "required": [
        "CloudWatch"
      ],
      "title": "AWSLexBotTextLogDestinationDefinition",
      "additionalProperties": false
    },
    "CloudWatchLogGroupLogDestination": {
      "type": "object",
      "properties": {
        "CloudWatchLogGroupArn": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "A string used to identify the groupArn for the Cloudwatch Log Group"
        },
        "LogPrefix": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 1024
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "A string containing the value for the Log Prefix"
        }
      },
      "required": [
        "CloudWatchLogGroupArn",
        "LogPrefix"
      ],
      "title": "AWSLexBotCloudWatchLogGroupLogDestinationDefinition",
      "additionalProperties": false
    },
    "S3BucketLogDestination": {
      "description": "Specifies an Amazon S3 bucket for logging audio conversations",
      "type": "object",
      "properties": {
        "S3BucketArn": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "pattern": "^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon Resource Name (ARN) of an Amazon S3 bucket where audio log files are stored."
        },
        "LogPrefix": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 1024
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon S3 key of the deployment package."
        },
        "KmsKeyArn": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 20,
              "maxLength": 2048,
              "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[0-9]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon Resource Name (ARN) of an AWS Key Management Service (KMS) key for encrypting audio log files stored in an S3 bucket."
        }
      },
      "required": [
        "LogPrefix",
        "S3BucketArn"
      ],
      "title": "AWSLexBotS3BucketLogDestinationDefinition",
      "additionalProperties": false
    },
    "TestBotAliasSettings": {
      "description": "Configuring the test bot alias settings for a given bot",
      "type": "object",
      "properties": {
        "BotAliasLocaleSettings": {
          "$ref": "#/$defs/BotAliasLocaleSettingsList"
        },
        "ConversationLogSettings": {
          "$ref": "#/$defs/ConversationLogSettings"
        },
        "Description": {
          "$ref": "#/$defs/Description"
        },
        "SentimentAnalysisSettings": {
          "description": "Determines whether Amazon Lex will use Amazon Comprehend to detect the sentiment of user utterances.",
          "type": "object",
          "properties": {
            "DetectSentiment": {
              "type": "boolean",
              "description": "Enable to call Amazon Comprehend for Sentiment natively within Lex"
            }
          },
          "required": [
            "DetectSentiment"
          ],
          "additionalProperties": false
        }
      },
      "title": "AWSLexBotTestBotAliasSettingsDefinition",
      "additionalProperties": false
    },
    "RoleArn": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 32,
          "maxLength": 2048,
          "pattern": "^arn:aws[a-zA-Z-]*:iam::[0-9]{12}:role/.*$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Amazon Resource Name (ARN) of an IAM role that has permission to access the bot.",
      "title": "AWSLexBotRoleArnDefinition"
    },
    "Id": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 10,
          "maxLength": 10,
          "pattern": "^[0-9a-zA-Z]+$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Unique ID of resource",
      "title": "AWSLexBotIdDefinition"
    },
    "BotArn": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 1011,
          "pattern": "^arn:aws[a-zA-Z-]*:lex:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:bot/[0-9a-zA-Z]+$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotBotArnDefinition"
    },
    "Name": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "pattern": "^([0-9a-zA-Z][_-]?)+$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Unique name for a resource.",
      "title": "AWSLexBotNameDefinition"
    },
    "Description": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "A description of the resource",
      "title": "AWSLexBotDescriptionDefinition"
    },
    "DataPrivacy": {
      "description": "Provides information on additional privacy protections Amazon Lex should use with the bot's data.",
      "type": "object",
      "properties": {
        "ChildDirected": {
          "type": "boolean",
          "description": "Specify whether your use of Amazon Lex is related to application that is directed or targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA)."
        }
      },
      "required": [
        "ChildDirected"
      ],
      "title": "AWSLexBotDataPrivacyDefinition",
      "additionalProperties": false
    },
    "IdleSessionTTLInSeconds": {
      "description": "The time, in seconds, that Amazon Lex should keep information about a user's conversation with the bot.",
      "type": "integer",
      "minimum": 60,
      "maximum": 86400,
      "title": "AWSLexBotIdleSessionTTLInSecondsDefinition"
    },
    "Utterance": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The sample utterance that Amazon Lex uses to build its machine-learning model to recognize intents/slots.",
      "title": "AWSLexBotUtteranceDefinition"
    },
    "SampleUtterance": {
      "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt.",
      "type": "object",
      "properties": {
        "Utterance": {
          "$ref": "#/$defs/Utterance"
        }
      },
      "required": [
        "Utterance"
      ],
      "title": "AWSLexBotSampleUtteranceDefinition",
      "additionalProperties": false
    },
    "SampleUtterancesList": {
      "description": "An array of sample utterances",
      "type": "array",
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/SampleUtterance"
      },
      "title": "AWSLexBotSampleUtterancesListDefinition"
    },
    "Tag": {
      "description": "A key-value pair for tagging Lex resources",
      "type": "object",
      "properties": {
        "Key": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "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 -."
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 256
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "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 -."
        }
      },
      "required": [
        "Key",
        "Value"
      ],
      "title": "AWSLexBotTagDefinition",
      "additionalProperties": false
    },
    "LocaleId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The identifier of the language and locale that the bot will be used in.",
      "title": "AWSLexBotLocaleIdDefinition"
    },
    "VoiceSettings": {
      "description": "Settings for using an Amazon Polly voice to communicate with a user.",
      "type": "object",
      "properties": {
        "VoiceId": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user."
        },
        "Engine": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "standard",
                "neural"
              ]
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Indicates the type of Amazon Polly voice that Amazon Lex should use for voice interaction with the user. For more information, see the engine parameter of the SynthesizeSpeech operation in the Amazon Polly developer guide."
        }
      },
      "required": [
        "VoiceId"
      ],
      "title": "AWSLexBotVoiceSettingsDefinition",
      "additionalProperties": false
    },
    "ConfidenceThreshold": {
      "description": "The specified confidence threshold for inserting the AMAZON.FallbackIntent and AMAZON.KendraSearchIntent intents.",
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "title": "AWSLexBotConfidenceThresholdDefinition"
    },
    "ParentIntentSignature": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "A unique identifier for the built-in intent to base this intent on.",
      "title": "AWSLexBotParentIntentSignatureDefinition"
    },
    "DialogCodeHookSetting": {
      "description": "Settings that determine the Lambda function that Amazon Lex uses for processing user responses.",
      "type": "object",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "title": "AWSLexBotDialogCodeHookSettingDefinition",
      "additionalProperties": false
    },
    "FulfillmentStartResponseSpecification": {
      "description": "Provides settings for a message that is sent to the user when a fulfillment Lambda function starts running.",
      "type": "object",
      "properties": {
        "MessageGroups": {
          "$ref": "#/$defs/MessageGroupsList"
        },
        "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": "integer",
          "minimum": 1,
          "maximum": 900
        },
        "AllowInterrupt": {
          "description": "Determines whether the user can interrupt the start message while it is playing.",
          "type": "boolean"
        }
      },
      "required": [
        "DelayInSeconds",
        "MessageGroups"
      ],
      "title": "AWSLexBotFulfillmentStartResponseSpecificationDefinition",
      "additionalProperties": false
    },
    "FulfillmentUpdateResponseSpecification": {
      "description": "Provides settings for a message that is sent periodically to the user while a fulfillment Lambda function is running.",
      "type": "object",
      "properties": {
        "MessageGroups": {
          "$ref": "#/$defs/MessageGroupsList"
        },
        "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": "integer",
          "minimum": 1,
          "maximum": 900
        },
        "AllowInterrupt": {
          "description": "Determines whether the user can interrupt an update message while it is playing.",
          "type": "boolean"
        }
      },
      "required": [
        "FrequencyInSeconds",
        "MessageGroups"
      ],
      "title": "AWSLexBotFulfillmentUpdateResponseSpecificationDefinition",
      "additionalProperties": false
    },
    "FulfillmentUpdatesSpecification": {
      "description": "Provides information for updating the user on the progress of fulfilling an intent.",
      "type": "object",
      "properties": {
        "StartResponse": {
          "$ref": "#/$defs/FulfillmentStartResponseSpecification"
        },
        "UpdateResponse": {
          "$ref": "#/$defs/FulfillmentUpdateResponseSpecification"
        },
        "TimeoutInSeconds": {
          "description": "The length of time that the fulfillment Lambda function should run before it times out.",
          "type": "integer",
          "minimum": 1,
          "maximum": 900
        },
        "Active": {
          "description": "Determines whether fulfillment updates are sent to the user. When this field is true, updates are sent.",
          "type": "boolean"
        }
      },
      "required": [
        "Active"
      ],
      "title": "AWSLexBotFulfillmentUpdatesSpecificationDefinition",
      "additionalProperties": false
    },
    "PostFulfillmentStatusSpecification": {
      "description": "Provides a setting that determines whether the post-fulfillment response is sent to the user.",
      "type": "object",
      "properties": {
        "SuccessResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "SuccessNextStep": {
          "description": "Specifies the next step in the conversation that Amazon Lex invokes when the fulfillment code hook completes successfully.",
          "$ref": "#/$defs/DialogState"
        },
        "SuccessConditional": {
          "description": "A list of conditional branches to evaluate after the fulfillment code hook finishes successfully.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "FailureResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "FailureNextStep": {
          "description": "Specifies the next step the bot runs after the fulfillment code hook throws an exception or returns with the State field of the Intent object set to Failed.",
          "$ref": "#/$defs/DialogState"
        },
        "FailureConditional": {
          "description": "A list of conditional branches to evaluate after the fulfillment code hook throws an exception or returns with the State field of the Intent object set to Failed.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "TimeoutResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "TimeoutNextStep": {
          "description": "Specifies the next step that the bot runs when the fulfillment code hook times out.",
          "$ref": "#/$defs/DialogState"
        },
        "TimeoutConditional": {
          "description": "A list of conditional branches to evaluate if the fulfillment code hook times out.",
          "$ref": "#/$defs/ConditionalSpecification"
        }
      },
      "required": [],
      "title": "AWSLexBotPostFulfillmentStatusSpecificationDefinition",
      "additionalProperties": false
    },
    "FulfillmentCodeHookSetting": {
      "description": "Settings that determine if a Lambda function should be invoked to fulfill a specific intent.",
      "type": "object",
      "properties": {
        "FulfillmentUpdatesSpecification": {
          "$ref": "#/$defs/FulfillmentUpdatesSpecification"
        },
        "PostFulfillmentStatusSpecification": {
          "$ref": "#/$defs/PostFulfillmentStatusSpecification"
        },
        "Enabled": {
          "type": "boolean"
        },
        "IsActive": {
          "description": "Determines whether the fulfillment code hook is used. When active is false, the code hook doesn't run.",
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "title": "AWSLexBotFulfillmentCodeHookSettingDefinition",
      "additionalProperties": false
    },
    "Button": {
      "description": "A button to use on a response card used to gather slot values from a user.",
      "type": "object",
      "properties": {
        "Text": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The text that appears on the button."
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The value returned to Amazon Lex when the user chooses this button."
        }
      },
      "required": [
        "Text",
        "Value"
      ],
      "title": "AWSLexBotButtonDefinition",
      "additionalProperties": false
    },
    "AttachmentTitle": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 250
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotAttachmentTitleDefinition"
    },
    "AttachmentUrl": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 250
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotAttachmentUrlDefinition"
    },
    "ImageResponseCard": {
      "description": "A message that defines a response card that the client application can show to the user.",
      "type": "object",
      "properties": {
        "Title": {
          "description": "The title to display on the response card.",
          "$ref": "#/$defs/AttachmentTitle"
        },
        "Subtitle": {
          "description": "The subtitle to display on the response card.",
          "$ref": "#/$defs/AttachmentTitle"
        },
        "ImageUrl": {
          "description": "The URL of an image to display on the response card.",
          "$ref": "#/$defs/AttachmentUrl"
        },
        "Buttons": {
          "description": "A list of buttons that should be displayed on the response card.",
          "type": "array",
          "maxItems": 5,
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/Button"
          }
        }
      },
      "required": [
        "Title"
      ],
      "title": "AWSLexBotImageResponseCardDefinition",
      "additionalProperties": false
    },
    "PlainTextMessage": {
      "description": "A message in plain text format.",
      "type": "object",
      "properties": {
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The message to send to the user."
        }
      },
      "required": [
        "Value"
      ],
      "title": "AWSLexBotPlainTextMessageDefinition",
      "additionalProperties": false
    },
    "CustomPayload": {
      "description": "A message in a custom format defined by the client application.",
      "type": "object",
      "properties": {
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The string that is sent to your application."
        }
      },
      "required": [
        "Value"
      ],
      "title": "AWSLexBotCustomPayloadDefinition",
      "additionalProperties": false
    },
    "SSMLMessage": {
      "description": "A message in Speech Synthesis Markup Language (SSML).",
      "type": "object",
      "properties": {
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The SSML text that defines the prompt."
        }
      },
      "required": [
        "Value"
      ],
      "title": "AWSLexBotSSMLMessageDefinition",
      "additionalProperties": false
    },
    "Message": {
      "description": "The primary message that Amazon Lex should send to the user.",
      "type": "object",
      "properties": {
        "PlainTextMessage": {
          "$ref": "#/$defs/PlainTextMessage"
        },
        "CustomPayload": {
          "$ref": "#/$defs/CustomPayload"
        },
        "SSMLMessage": {
          "$ref": "#/$defs/SSMLMessage"
        },
        "ImageResponseCard": {
          "$ref": "#/$defs/ImageResponseCard"
        }
      },
      "required": [],
      "title": "AWSLexBotMessageDefinition",
      "additionalProperties": false
    },
    "MessageGroup": {
      "description": "One or more messages that Amazon Lex can send to the user.",
      "type": "object",
      "properties": {
        "Message": {
          "$ref": "#/$defs/Message"
        },
        "Variations": {
          "description": "Message variations to send to the user.",
          "type": "array",
          "maxItems": 2,
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/Message"
          }
        }
      },
      "required": [
        "Message"
      ],
      "title": "AWSLexBotMessageGroupDefinition",
      "additionalProperties": false
    },
    "MessageGroupsList": {
      "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.",
      "type": "array",
      "minItems": 1,
      "maxItems": 5,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/MessageGroup"
      },
      "title": "AWSLexBotMessageGroupsListDefinition"
    },
    "PromptMaxRetries": {
      "description": "The maximum number of times the bot tries to elicit a response from the user using this prompt.",
      "type": "integer",
      "minimum": 0,
      "maximum": 5,
      "title": "AWSLexBotPromptMaxRetriesDefinition"
    },
    "MessageSelectionStrategy": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "Random",
            "Ordered"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Indicates how a message is selected from a message group among retries.",
      "title": "AWSLexBotMessageSelectionStrategyDefinition"
    },
    "AllowedInputTypes": {
      "description": "Specifies the allowed input types.",
      "type": "object",
      "properties": {
        "AllowAudioInput": {
          "description": "Indicates whether audio input is allowed.",
          "type": "boolean"
        },
        "AllowDTMFInput": {
          "description": "Indicates whether DTMF input is allowed.",
          "type": "boolean"
        }
      },
      "required": [
        "AllowAudioInput",
        "AllowDTMFInput"
      ],
      "title": "AWSLexBotAllowedInputTypesDefinition",
      "additionalProperties": false
    },
    "DTMFSpecification": {
      "description": "Specifies the settings on DTMF input.",
      "type": "object",
      "properties": {
        "DeletionCharacter": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[A-D0-9#*]{1}$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The DTMF character that clears the accumulated DTMF digits and immediately ends the input."
        },
        "EndCharacter": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[A-D0-9#*]{1}$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The DTMF character that immediately ends input. If the user does not press this character, the input ends after the end timeout."
        },
        "EndTimeoutMs": {
          "description": "How long the bot should wait after the last DTMF character input before assuming that the input has concluded.",
          "type": "integer",
          "minimum": 1
        },
        "MaxLength": {
          "description": "The maximum number of DTMF digits allowed in an utterance.",
          "type": "integer",
          "minimum": 1,
          "maximum": 1024
        }
      },
      "required": [
        "DeletionCharacter",
        "EndCharacter",
        "EndTimeoutMs",
        "MaxLength"
      ],
      "title": "AWSLexBotDTMFSpecificationDefinition",
      "additionalProperties": false
    },
    "AudioSpecification": {
      "description": "Specifies the audio input specifications.",
      "type": "object",
      "properties": {
        "EndTimeoutMs": {
          "description": "Time for which a bot waits after the customer stops speaking to assume the utterance is finished.",
          "type": "integer",
          "minimum": 1
        },
        "MaxLengthMs": {
          "description": "Time for how long Amazon Lex waits before speech input is truncated and the speech is returned to application.",
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "EndTimeoutMs",
        "MaxLengthMs"
      ],
      "title": "AWSLexBotAudioSpecificationDefinition",
      "additionalProperties": false
    },
    "AudioAndDTMFInputSpecification": {
      "description": "Specifies the audio and DTMF input specification.",
      "type": "object",
      "properties": {
        "StartTimeoutMs": {
          "description": "Time for which a bot waits before assuming that the customer isn't going to speak or press a key. This timeout is shared between Audio and DTMF inputs.",
          "type": "integer",
          "minimum": 1
        },
        "DTMFSpecification": {
          "$ref": "#/$defs/DTMFSpecification"
        },
        "AudioSpecification": {
          "$ref": "#/$defs/AudioSpecification"
        }
      },
      "required": [
        "StartTimeoutMs"
      ],
      "title": "AWSLexBotAudioAndDTMFInputSpecificationDefinition",
      "additionalProperties": false
    },
    "TextInputSpecification": {
      "description": "Specifies the text input specifications.",
      "type": "object",
      "properties": {
        "StartTimeoutMs": {
          "description": "Time for which a bot waits before re-prompting a customer for text input.",
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "StartTimeoutMs"
      ],
      "title": "AWSLexBotTextInputSpecificationDefinition",
      "additionalProperties": false
    },
    "PromptAttemptSpecification": {
      "description": "Specifies the settings on a prompt attempt.",
      "type": "object",
      "properties": {
        "AllowedInputTypes": {
          "$ref": "#/$defs/AllowedInputTypes"
        },
        "AllowInterrupt": {
          "description": "Indicates whether the user can interrupt a speech prompt attempt from the bot.",
          "type": "boolean"
        },
        "AudioAndDTMFInputSpecification": {
          "$ref": "#/$defs/AudioAndDTMFInputSpecification"
        },
        "TextInputSpecification": {
          "$ref": "#/$defs/TextInputSpecification"
        }
      },
      "required": [
        "AllowedInputTypes"
      ],
      "title": "AWSLexBotPromptAttemptSpecificationDefinition",
      "additionalProperties": false
    },
    "PromptSpecification": {
      "description": "Prompts the user to confirm the intent.",
      "type": "object",
      "properties": {
        "MessageGroupsList": {
          "$ref": "#/$defs/MessageGroupsList"
        },
        "MaxRetries": {
          "$ref": "#/$defs/PromptMaxRetries"
        },
        "AllowInterrupt": {
          "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
          "type": "boolean"
        },
        "MessageSelectionStrategy": {
          "$ref": "#/$defs/MessageSelectionStrategy"
        },
        "PromptAttemptsSpecification": {
          "description": "Specifies the advanced settings on each attempt of the prompt.",
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^(Initial|Retry1|Retry2|Retry3|Retry4|Retry5)$": {
              "$ref": "#/$defs/PromptAttemptSpecification"
            }
          }
        }
      },
      "required": [
        "MessageGroupsList",
        "MaxRetries"
      ],
      "title": "AWSLexBotPromptSpecificationDefinition",
      "additionalProperties": false
    },
    "ResponseSpecification": {
      "description": "A list of message groups that Amazon Lex uses to respond the user input.",
      "type": "object",
      "properties": {
        "MessageGroupsList": {
          "$ref": "#/$defs/MessageGroupsList"
        },
        "AllowInterrupt": {
          "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
          "type": "boolean"
        }
      },
      "required": [
        "MessageGroupsList"
      ],
      "title": "AWSLexBotResponseSpecificationDefinition",
      "additionalProperties": false
    },
    "StillWaitingResponseFrequency": {
      "description": "How often a message should be sent to the user in seconds.",
      "type": "integer",
      "minimum": 1,
      "maximum": 300,
      "title": "AWSLexBotStillWaitingResponseFrequencyDefinition"
    },
    "StillWaitingResponseTimeout": {
      "description": "If Amazon Lex waits longer than this length of time in seconds for a response, it will stop sending messages.",
      "type": "integer",
      "minimum": 1,
      "maximum": 900,
      "title": "AWSLexBotStillWaitingResponseTimeoutDefinition"
    },
    "StillWaitingResponseSpecification": {
      "description": "StillWaitingResponseSpecification.",
      "type": "object",
      "properties": {
        "MessageGroupsList": {
          "$ref": "#/$defs/MessageGroupsList"
        },
        "FrequencyInSeconds": {
          "$ref": "#/$defs/StillWaitingResponseFrequency"
        },
        "TimeoutInSeconds": {
          "$ref": "#/$defs/StillWaitingResponseTimeout"
        },
        "AllowInterrupt": {
          "description": "Indicates whether the user can interrupt a speech prompt from the bot.",
          "type": "boolean"
        }
      },
      "required": [
        "MessageGroupsList",
        "FrequencyInSeconds",
        "TimeoutInSeconds"
      ],
      "title": "AWSLexBotStillWaitingResponseSpecificationDefinition",
      "additionalProperties": false
    },
    "IntentConfirmationSetting": {
      "description": "Provides a prompt for making sure that the user is ready for the intent to be fulfilled.",
      "type": "object",
      "properties": {
        "PromptSpecification": {
          "description": "Prompts the user to confirm the intent. This question should have a yes or no answer.",
          "$ref": "#/$defs/PromptSpecification"
        },
        "IsActive": {
          "description": "Specifies whether the intent's confirmation is sent to the user. When this field is false, confirmation and declination responses aren't sent. If the active field isn't specified, the default is true.",
          "type": "boolean"
        },
        "ConfirmationResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "ConfirmationNextStep": {
          "description": "Specifies the next step that the bot executes when the customer confirms the intent.",
          "$ref": "#/$defs/DialogState"
        },
        "ConfirmationConditional": {
          "description": "A list of conditional branches to evaluate after the intent is closed.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "DeclinationResponse": {
          "description": "When the user answers \"no\" to the question defined in promptSpecification, Amazon Lex responds with this response to acknowledge that the intent was canceled.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "DeclinationNextStep": {
          "description": "Specifies the next step that the bot executes when the customer declines the intent.",
          "$ref": "#/$defs/DialogState"
        },
        "DeclinationConditional": {
          "description": "A list of conditional branches to evaluate after the intent is declined.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "FailureResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "FailureNextStep": {
          "description": "The next step to take in the conversation if the confirmation step fails.",
          "$ref": "#/$defs/DialogState"
        },
        "FailureConditional": {
          "description": "Provides a list of conditional branches. Branches are evaluated in the order that they are entered in the list. The first branch with a condition that evaluates to true is executed. The last branch in the list is the default branch. The default branch should not have any condition expression. The default branch is executed if no other branch has a matching condition.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "CodeHook": {
          "description": "The DialogCodeHookInvocationSetting object associated with intent's confirmation step. The dialog code hook is triggered based on these invocation settings when the confirmation next step or declination next step or failure next step is InvokeDialogCodeHook.",
          "$ref": "#/$defs/DialogCodeHookInvocationSetting"
        },
        "ElicitationCodeHook": {
          "description": "The DialogCodeHookInvocationSetting used when the code hook is invoked during confirmation prompt retries.",
          "$ref": "#/$defs/ElicitationCodeHookInvocationSetting"
        }
      },
      "required": [
        "PromptSpecification"
      ],
      "title": "AWSLexBotIntentConfirmationSettingDefinition",
      "additionalProperties": false
    },
    "IntentClosingSetting": {
      "description": "Provides a statement the Amazon Lex conveys to the user when the intent is successfully fulfilled.",
      "type": "object",
      "properties": {
        "ClosingResponse": {
          "description": "The response that Amazon Lex sends to the user when the intent is complete.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "IsActive": {
          "description": "Specifies whether an intent's closing response is used. When this field is false, the closing response isn't sent to the user. If the active field isn't specified, the default is true.",
          "type": "boolean"
        },
        "Conditional": {
          "description": "A list of conditional branches associated with the intent's closing response. These branches are executed when the nextStep attribute is set to EvalutateConditional.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "NextStep": {
          "description": "Specifies the next step that the bot executes after playing the intent's closing response.",
          "$ref": "#/$defs/DialogState"
        }
      },
      "title": "AWSLexBotIntentClosingSettingDefinition",
      "additionalProperties": false
    },
    "InputContext": {
      "description": "InputContext specified for the intent.",
      "type": "object",
      "properties": {
        "Name": {
          "description": "The name of the context.",
          "$ref": "#/$defs/Name"
        }
      },
      "required": [
        "Name"
      ],
      "title": "AWSLexBotInputContextDefinition",
      "additionalProperties": false
    },
    "InputContextsList": {
      "description": "The list of input contexts specified for the intent.",
      "type": "array",
      "maxItems": 5,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/InputContext"
      },
      "title": "AWSLexBotInputContextsListDefinition"
    },
    "ContextTimeToLiveInSeconds": {
      "description": "The amount of time, in seconds, that the output context should remain active.",
      "type": "integer",
      "minimum": 5,
      "maximum": 86400,
      "title": "AWSLexBotContextTimeToLiveInSecondsDefinition"
    },
    "ContextTurnsToLive": {
      "description": "The number of conversation turns that the output context should remain active.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "title": "AWSLexBotContextTurnsToLiveDefinition"
    },
    "OutputContext": {
      "description": "A session context that is activated when an intent is fulfilled.",
      "type": "object",
      "properties": {
        "Name": {
          "$ref": "#/$defs/Name"
        },
        "TimeToLiveInSeconds": {
          "$ref": "#/$defs/ContextTimeToLiveInSeconds"
        },
        "TurnsToLive": {
          "$ref": "#/$defs/ContextTurnsToLive"
        }
      },
      "required": [
        "Name",
        "TimeToLiveInSeconds",
        "TurnsToLive"
      ],
      "title": "AWSLexBotOutputContextDefinition",
      "additionalProperties": false
    },
    "OutputContextsList": {
      "description": "A list of contexts that the intent activates when it is fulfilled.",
      "type": "array",
      "maxItems": 10,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/OutputContext"
      },
      "title": "AWSLexBotOutputContextsListDefinition"
    },
    "KendraIndexArn": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 32,
          "maxLength": 2048,
          "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_-]*$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Amazon Resource Name (ARN) of the Amazon Kendra index that you want the AMAZON.KendraSearchIntent intent to search.",
      "title": "AWSLexBotKendraIndexArnDefinition"
    },
    "QueryFilterString": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "A query filter that Amazon Lex sends to Amazon Kendra to filter the response from a query.",
      "title": "AWSLexBotQueryFilterStringDefinition"
    },
    "KendraConfiguration": {
      "description": "Configuration for searching a Amazon Kendra index specified for the intent.",
      "type": "object",
      "properties": {
        "KendraIndex": {
          "$ref": "#/$defs/KendraIndexArn"
        },
        "QueryFilterStringEnabled": {
          "description": "Determines whether the AMAZON.KendraSearchIntent intent uses a custom query string to query the Amazon Kendra index.",
          "type": "boolean"
        },
        "QueryFilterString": {
          "$ref": "#/$defs/QueryFilterString"
        }
      },
      "required": [
        "KendraIndex"
      ],
      "title": "AWSLexBotKendraConfigurationDefinition",
      "additionalProperties": false
    },
    "PriorityValue": {
      "description": "The priority that a slot should be elicited.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "title": "AWSLexBotPriorityValueDefinition"
    },
    "SlotPriority": {
      "description": "The priority that Amazon Lex should use when eliciting slot values from a user.",
      "type": "object",
      "properties": {
        "Priority": {
          "$ref": "#/$defs/PriorityValue"
        },
        "SlotName": {
          "description": "The name of the slot.",
          "$ref": "#/$defs/Name"
        }
      },
      "required": [
        "SlotName",
        "Priority"
      ],
      "title": "AWSLexBotSlotPriorityDefinition",
      "additionalProperties": false
    },
    "SlotPrioritiesList": {
      "description": "List for slot priorities",
      "type": "array",
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/SlotPriority"
      },
      "title": "AWSLexBotSlotPrioritiesListDefinition"
    },
    "Intent": {
      "description": "Represents an action that the user wants to perform.",
      "type": "object",
      "properties": {
        "Name": {
          "description": "The name of the intent.",
          "$ref": "#/$defs/Name"
        },
        "Description": {
          "description": "Description of thr intent.",
          "$ref": "#/$defs/Description"
        },
        "ParentIntentSignature": {
          "$ref": "#/$defs/ParentIntentSignature"
        },
        "SampleUtterances": {
          "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt.",
          "$ref": "#/$defs/SampleUtterancesList"
        },
        "DialogCodeHook": {
          "$ref": "#/$defs/DialogCodeHookSetting"
        },
        "FulfillmentCodeHook": {
          "$ref": "#/$defs/FulfillmentCodeHookSetting"
        },
        "IntentConfirmationSetting": {
          "$ref": "#/$defs/IntentConfirmationSetting"
        },
        "IntentClosingSetting": {
          "$ref": "#/$defs/IntentClosingSetting"
        },
        "InitialResponseSetting": {
          "description": "Configuration setting for a response sent to the user before Amazon Lex starts eliciting slots.",
          "$ref": "#/$defs/InitialResponseSetting"
        },
        "InputContexts": {
          "$ref": "#/$defs/InputContextsList"
        },
        "OutputContexts": {
          "$ref": "#/$defs/OutputContextsList"
        },
        "KendraConfiguration": {
          "$ref": "#/$defs/KendraConfiguration"
        },
        "SlotPriorities": {
          "$ref": "#/$defs/SlotPrioritiesList"
        },
        "Slots": {
          "description": "List of slots",
          "type": "array",
          "maxItems": 100,
          "uniqueItems": true,
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/Slot"
          }
        }
      },
      "required": [
        "Name"
      ],
      "title": "AWSLexBotIntentDefinition",
      "additionalProperties": false
    },
    "ParentSlotTypeSignature": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The built-in slot type used as a parent of this slot type.",
      "title": "AWSLexBotParentSlotTypeSignatureDefinition"
    },
    "SlotTypeName": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The slot type name that is used in the slot. Allows for custom and built-in slot type names",
      "title": "AWSLexBotSlotTypeNameDefinition"
    },
    "SampleValue": {
      "description": "Defines one of the values for a slot type.",
      "type": "object",
      "properties": {
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 140
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The value that can be used for a slot type."
        }
      },
      "required": [
        "Value"
      ],
      "title": "AWSLexBotSampleValueDefinition",
      "additionalProperties": false
    },
    "SynonymList": {
      "description": "Additional values related to the slot type entry.",
      "type": "array",
      "maxItems": 10000,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/SampleValue"
      },
      "title": "AWSLexBotSynonymListDefinition"
    },
    "SlotTypeValue": {
      "description": "Value that the slot type can take.",
      "type": "object",
      "properties": {
        "SampleValue": {
          "$ref": "#/$defs/SampleValue"
        },
        "Synonyms": {
          "$ref": "#/$defs/SynonymList"
        }
      },
      "required": [
        "SampleValue"
      ],
      "title": "AWSLexBotSlotTypeValueDefinition",
      "additionalProperties": false
    },
    "SlotTypeValues": {
      "description": "A List of slot type values",
      "type": "array",
      "maxItems": 10000,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/SlotTypeValue"
      },
      "title": "AWSLexBotSlotTypeValuesDefinition"
    },
    "SlotValueResolutionStrategy": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ORIGINAL_VALUE",
            "TOP_RESOLUTION"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotSlotValueResolutionStrategyDefinition"
    },
    "SlotValueRegexFilter": {
      "description": "A regular expression used to validate the value of a slot.",
      "type": "object",
      "properties": {
        "Pattern": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Regex pattern"
        }
      },
      "required": [
        "Pattern"
      ],
      "title": "AWSLexBotSlotValueRegexFilterDefinition",
      "additionalProperties": false
    },
    "AudioRecognitionStrategy": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "UseSlotValuesAsCustomVocabulary"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Enables using slot values as a custom vocabulary when recognizing user utterances.",
      "title": "AWSLexBotAudioRecognitionStrategyDefinition"
    },
    "AdvancedRecognitionSetting": {
      "description": "Provides settings that enable advanced recognition settings for slot values.",
      "type": "object",
      "properties": {
        "AudioRecognitionStrategy": {
          "$ref": "#/$defs/AudioRecognitionStrategy"
        }
      },
      "title": "AWSLexBotAdvancedRecognitionSettingDefinition",
      "additionalProperties": false
    },
    "SlotValueSelectionSetting": {
      "description": "Contains settings used by Amazon Lex to select a slot value.",
      "type": "object",
      "properties": {
        "ResolutionStrategy": {
          "$ref": "#/$defs/SlotValueResolutionStrategy"
        },
        "RegexFilter": {
          "$ref": "#/$defs/SlotValueRegexFilter"
        },
        "AdvancedRecognitionSetting": {
          "$ref": "#/$defs/AdvancedRecognitionSetting"
        }
      },
      "required": [
        "ResolutionStrategy"
      ],
      "title": "AWSLexBotSlotValueSelectionSettingDefinition",
      "additionalProperties": false
    },
    "S3BucketName": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 3,
          "maxLength": 63,
          "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotS3BucketNameDefinition"
    },
    "S3ObjectKey": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 1024,
          "pattern": "[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotS3ObjectKeyDefinition"
    },
    "GrammarSlotTypeSource": {
      "description": "Describes the Amazon S3 bucket name and location for the grammar that is the source for the slot type.",
      "type": "object",
      "properties": {
        "S3BucketName": {
          "description": "The name of the S3 bucket that contains the grammar source.",
          "$ref": "#/$defs/S3BucketName"
        },
        "S3ObjectKey": {
          "description": "The path to the grammar in the S3 bucket.",
          "$ref": "#/$defs/S3ObjectKey"
        },
        "KmsKeyArn": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 20,
              "maxLength": 2048,
              "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[0-9]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon KMS key required to decrypt the contents of the grammar, if any."
        }
      },
      "required": [
        "S3BucketName",
        "S3ObjectKey"
      ],
      "title": "AWSLexBotGrammarSlotTypeSourceDefinition",
      "additionalProperties": false
    },
    "GrammarSlotTypeSetting": {
      "description": "Settings required for a slot type based on a grammar that you provide.",
      "type": "object",
      "properties": {
        "Source": {
          "$ref": "#/$defs/GrammarSlotTypeSource"
        }
      },
      "title": "AWSLexBotGrammarSlotTypeSettingDefinition",
      "additionalProperties": false
    },
    "ExternalSourceSetting": {
      "description": "Provides information about the external source of the slot type's definition.",
      "type": "object",
      "properties": {
        "GrammarSlotTypeSetting": {
          "$ref": "#/$defs/GrammarSlotTypeSetting"
        }
      },
      "title": "AWSLexBotExternalSourceSettingDefinition",
      "additionalProperties": false
    },
    "SlotType": {
      "description": "A custom, extended built-in or a grammar slot type.",
      "type": "object",
      "properties": {
        "Name": {
          "$ref": "#/$defs/Name"
        },
        "Description": {
          "$ref": "#/$defs/Description"
        },
        "ParentSlotTypeSignature": {
          "$ref": "#/$defs/ParentSlotTypeSignature"
        },
        "SlotTypeValues": {
          "$ref": "#/$defs/SlotTypeValues"
        },
        "ValueSelectionSetting": {
          "$ref": "#/$defs/SlotValueSelectionSetting"
        },
        "ExternalSourceSetting": {
          "$ref": "#/$defs/ExternalSourceSetting"
        }
      },
      "required": [
        "Name"
      ],
      "title": "AWSLexBotSlotTypeDefinition",
      "additionalProperties": false
    },
    "CustomVocabularyItem": {
      "description": "A custom vocabulary item that contains the phrase to recognize and a weight to give the boost.",
      "type": "object",
      "properties": {
        "Phrase": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Phrase that should be recognized."
        },
        "Weight": {
          "description": "The degree to which the phrase recognition is boosted. The weight 0 means that no boosting will be applied and the entry will only be used for performing replacements using the displayAs field.",
          "type": "integer",
          "minimum": 0,
          "maximum": 3
        },
        "DisplayAs": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Defines how you want your phrase to look in your transcription output."
        }
      },
      "required": [
        "Phrase"
      ],
      "title": "AWSLexBotCustomVocabularyItemDefinition",
      "additionalProperties": false
    },
    "CustomVocabularyItems": {
      "type": "array",
      "maxItems": 500,
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/CustomVocabularyItem"
      },
      "title": "AWSLexBotCustomVocabularyItemsDefinition"
    },
    "CustomVocabulary": {
      "description": "A custom vocabulary is a list of specific phrases that you want Amazon Lex V2 to recognize in the audio input.",
      "type": "object",
      "properties": {
        "CustomVocabularyItems": {
          "$ref": "#/$defs/CustomVocabularyItems"
        }
      },
      "required": [
        "CustomVocabularyItems"
      ],
      "title": "AWSLexBotCustomVocabularyDefinition",
      "additionalProperties": false
    },
    "SlotDefaultValue": {
      "description": "The default value to use when a user doesn't provide a value for a slot.",
      "type": "object",
      "properties": {
        "DefaultValue": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 202
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The default value to use when a user doesn't provide a value for a slot."
        }
      },
      "required": [
        "DefaultValue"
      ],
      "title": "AWSLexBotSlotDefaultValueDefinition",
      "additionalProperties": false
    },
    "SlotDefaultValueSpecification": {
      "description": "A list of values that Amazon Lex should use as the default value for a slot.",
      "type": "object",
      "properties": {
        "DefaultValueList": {
          "description": "A list of slot default values",
          "type": "array",
          "maxItems": 10,
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/SlotDefaultValue"
          }
        }
      },
      "required": [
        "DefaultValueList"
      ],
      "title": "AWSLexBotSlotDefaultValueSpecificationDefinition",
      "additionalProperties": false
    },
    "SlotConstraint": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "Required",
            "Optional"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSLexBotSlotConstraintDefinition"
    },
    "WaitAndContinueSpecification": {
      "description": "The prompts that Amazon Lex uses while a bot is waiting for customer input.",
      "type": "object",
      "properties": {
        "WaitingResponse": {
          "description": "The response that Amazon Lex sends to indicate that the bot is waiting for the conversation to continue.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "ContinueResponse": {
          "description": "The response that Amazon Lex sends to indicate that the bot is ready to continue the conversation.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "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.",
          "$ref": "#/$defs/StillWaitingResponseSpecification"
        },
        "IsActive": {
          "description": "Specifies whether the bot will wait for a user to respond.",
          "type": "boolean"
        }
      },
      "required": [
        "WaitingResponse",
        "ContinueResponse"
      ],
      "title": "AWSLexBotWaitAndContinueSpecificationDefinition",
      "additionalProperties": false
    },
    "SlotValueElicitationSetting": {
      "description": "Settings that you can use for eliciting a slot value.",
      "type": "object",
      "properties": {
        "DefaultValueSpecification": {
          "description": "A list of default values for a slot.",
          "$ref": "#/$defs/SlotDefaultValueSpecification"
        },
        "SlotConstraint": {
          "description": "Specifies whether the slot is required or optional.",
          "$ref": "#/$defs/SlotConstraint"
        },
        "PromptSpecification": {
          "description": "The prompt that Amazon Lex uses to elicit the slot value from the user.",
          "$ref": "#/$defs/PromptSpecification"
        },
        "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.",
          "$ref": "#/$defs/SampleUtterancesList"
        },
        "WaitAndContinueSpecification": {
          "description": "Specifies the prompts that Amazon Lex uses while a bot is waiting for customer input.",
          "$ref": "#/$defs/WaitAndContinueSpecification"
        },
        "SlotCaptureSetting": {
          "description": "Specifies the next stage in the conversation after capturing the slot.",
          "$ref": "#/$defs/SlotCaptureSetting"
        }
      },
      "required": [
        "SlotConstraint"
      ],
      "title": "AWSLexBotSlotValueElicitationSettingDefinition",
      "additionalProperties": false
    },
    "ObfuscationSetting": {
      "description": "Determines whether Amazon Lex obscures slot values in conversation logs.",
      "type": "object",
      "properties": {
        "ObfuscationSettingType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "None",
                "DefaultObfuscation"
              ]
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Value that determines whether Amazon Lex obscures slot values in conversation logs. The default is to obscure the values."
        }
      },
      "required": [
        "ObfuscationSettingType"
      ],
      "title": "AWSLexBotObfuscationSettingDefinition",
      "additionalProperties": false
    },
    "MultipleValuesSetting": {
      "description": "Indicates whether a slot can return multiple values.",
      "type": "object",
      "properties": {
        "AllowMultipleValues": {
          "type": "boolean"
        }
      },
      "required": [],
      "title": "AWSLexBotMultipleValuesSettingDefinition",
      "additionalProperties": false
    },
    "Slot": {
      "description": "A slot is a variable needed to fulfill an intent, where an intent can require zero or more slots.",
      "type": "object",
      "properties": {
        "Name": {
          "$ref": "#/$defs/Name"
        },
        "Description": {
          "$ref": "#/$defs/Description"
        },
        "SlotTypeName": {
          "$ref": "#/$defs/SlotTypeName"
        },
        "ValueElicitationSetting": {
          "$ref": "#/$defs/SlotValueElicitationSetting"
        },
        "ObfuscationSetting": {
          "$ref": "#/$defs/ObfuscationSetting"
        },
        "MultipleValuesSetting": {
          "$ref": "#/$defs/MultipleValuesSetting"
        }
      },
      "required": [
        "Name",
        "SlotTypeName",
        "ValueElicitationSetting"
      ],
      "title": "AWSLexBotSlotDefinition",
      "additionalProperties": false
    },
    "BotLocale": {
      "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.",
      "type": "object",
      "properties": {
        "LocaleId": {
          "$ref": "#/$defs/LocaleId"
        },
        "Description": {
          "$ref": "#/$defs/Description"
        },
        "VoiceSettings": {
          "$ref": "#/$defs/VoiceSettings"
        },
        "NluConfidenceThreshold": {
          "$ref": "#/$defs/ConfidenceThreshold"
        },
        "Intents": {
          "description": "List of intents",
          "type": "array",
          "maxItems": 1000,
          "uniqueItems": true,
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/Intent"
          }
        },
        "SlotTypes": {
          "description": "List of SlotTypes",
          "type": "array",
          "maxItems": 250,
          "uniqueItems": true,
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/SlotType"
          }
        },
        "CustomVocabulary": {
          "$ref": "#/$defs/CustomVocabulary"
        }
      },
      "required": [
        "LocaleId",
        "NluConfidenceThreshold"
      ],
      "title": "AWSLexBotBotLocaleDefinition",
      "additionalProperties": false
    },
    "S3Location": {
      "description": "S3 location of bot definitions zip file, if it's not defined inline in CloudFormation.",
      "type": "object",
      "properties": {
        "S3Bucket": {
          "description": "An Amazon S3 bucket in the same AWS Region as your function. The bucket can be in a different AWS account.",
          "$ref": "#/$defs/S3BucketName"
        },
        "S3ObjectKey": {
          "description": "The Amazon S3 key of the deployment package.",
          "$ref": "#/$defs/S3ObjectKey"
        },
        "S3ObjectVersion": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "For versioned objects, the version of the deployment package object to use. If not specified, the current object version will be used."
        }
      },
      "required": [
        "S3Bucket",
        "S3ObjectKey"
      ],
      "title": "AWSLexBotS3LocationDefinition",
      "additionalProperties": false
    },
    "Condition": {
      "description": "Provides an expression that evaluates to true or false.",
      "type": "object",
      "properties": {
        "ExpressionString": {
          "description": "The expression string that is evaluated.",
          "$ref": "#/$defs/ConditionExpression"
        }
      },
      "required": [
        "ExpressionString"
      ],
      "title": "AWSLexBotConditionDefinition",
      "additionalProperties": false
    },
    "Conditional": {
      "description": "Contains conditional branches to fork the conversation flow.",
      "type": "object",
      "properties": {
        "IsActive": {
          "type": "boolean"
        },
        "ConditionalBranches": {
          "$ref": "#/$defs/ConditionalBranches"
        }
      },
      "required": [
        "IsActive",
        "ConditionalBranches"
      ],
      "title": "AWSLexBotConditionalDefinition",
      "additionalProperties": false
    },
    "ConditionalSpecification": {
      "description": "Provides a list of conditional branches. Branches are evaluated in the order that they are entered in the list. The first branch with a condition that evaluates to true is executed. The last branch in the list is the default branch. The default branch should not have any condition expression. The default branch is executed if no other branch has a matching condition.",
      "type": "object",
      "properties": {
        "IsActive": {
          "description": "Determines whether a conditional branch is active. When active is false, the conditions are not evaluated.",
          "type": "boolean"
        },
        "ConditionalBranches": {
          "description": "A list of conditional branches. A conditional branch is made up of a condition, a response and a next step. The response and next step are executed when the condition is true.",
          "$ref": "#/$defs/ConditionalBranches"
        },
        "DefaultBranch": {
          "description": "The conditional branch that should be followed when the conditions for other branches are not satisfied. A conditional branch is made up of a condition, a response and a next step.",
          "$ref": "#/$defs/DefaultConditionalBranch"
        }
      },
      "required": [
        "IsActive",
        "ConditionalBranches",
        "DefaultBranch"
      ],
      "title": "AWSLexBotConditionalSpecificationDefinition",
      "additionalProperties": false
    },
    "DefaultConditionalBranch": {
      "description": "A set of actions that Amazon Lex should run if none of the other conditions are met.",
      "type": "object",
      "properties": {
        "NextStep": {
          "description": "The next step in the conversation.",
          "$ref": "#/$defs/DialogState"
        },
        "Response": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        }
      },
      "title": "AWSLexBotDefaultConditionalBranchDefinition",
      "additionalProperties": false
    },
    "ConditionalBranch": {
      "description": "A set of actions that Amazon Lex should run if the condition is matched.",
      "type": "object",
      "properties": {
        "Name": {
          "description": "The name of the branch.",
          "$ref": "#/$defs/Name"
        },
        "Condition": {
          "description": "Contains the expression to evaluate. If the condition is true, the branch's actions are taken.",
          "$ref": "#/$defs/Condition"
        },
        "NextStep": {
          "description": "The next step in the conversation.",
          "$ref": "#/$defs/DialogState"
        },
        "Response": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        }
      },
      "required": [
        "Name",
        "Condition",
        "NextStep"
      ],
      "title": "AWSLexBotConditionalBranchDefinition",
      "additionalProperties": false
    },
    "ConditionalBranches": {
      "description": "A list of 1 to 4 conditional branches to fork the conversation flow.",
      "type": "array",
      "minItems": 1,
      "maxItems": 4,
      "insertionOrder": true,
      "items": {
        "$ref": "#/$defs/ConditionalBranch"
      },
      "title": "AWSLexBotConditionalBranchesDefinition"
    },
    "InitialResponseSetting": {
      "description": "Configuration setting for a response sent to the user before Amazon Lex starts eliciting slots.",
      "type": "object",
      "properties": {
        "InitialResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "NextStep": {
          "description": "The next step in the conversation.",
          "$ref": "#/$defs/DialogState"
        },
        "Conditional": {
          "description": "Provides a list of conditional branches. Branches are evaluated in the order that they are entered in the list. The first branch with a condition that evaluates to true is executed. The last branch in the list is the default branch. The default branch should not have any condition expression. The default branch is executed if no other branch has a matching condition.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "CodeHook": {
          "description": "Settings that specify the dialog code hook that is called by Amazon Lex at a step of the conversation.",
          "$ref": "#/$defs/DialogCodeHookInvocationSetting"
        }
      },
      "title": "AWSLexBotInitialResponseSettingDefinition",
      "additionalProperties": false
    },
    "ConditionExpression": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 1024
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Expression that is evaluated to true or false at runtime.",
      "title": "AWSLexBotConditionExpressionDefinition"
    },
    "DialogCodeHookInvocationSetting": {
      "description": "Settings that specify the dialog code hook that is called by Amazon Lex at a step of the conversation.",
      "type": "object",
      "properties": {
        "EnableCodeHookInvocation": {
          "description": "Indicates whether a Lambda function should be invoked for the dialog.",
          "type": "boolean"
        },
        "IsActive": {
          "description": "Determines whether a dialog code hook is used when the intent is activated.",
          "type": "boolean"
        },
        "InvocationLabel": {
          "description": "A label that indicates the dialog step from which the dialog code hook is happening.",
          "$ref": "#/$defs/Name"
        },
        "PostCodeHookSpecification": {
          "description": "Contains the responses and actions that Amazon Lex takes after the Lambda function is complete.",
          "$ref": "#/$defs/PostDialogCodeHookInvocationSpecification"
        }
      },
      "required": [
        "IsActive",
        "EnableCodeHookInvocation",
        "PostCodeHookSpecification"
      ],
      "title": "AWSLexBotDialogCodeHookInvocationSettingDefinition",
      "additionalProperties": false
    },
    "ElicitationCodeHookInvocationSetting": {
      "description": "Settings that specify the dialog code hook that is called by Amazon Lex between eliciting slot values.",
      "type": "object",
      "properties": {
        "EnableCodeHookInvocation": {
          "description": "Indicates whether a Lambda function should be invoked for the dialog.",
          "type": "boolean"
        },
        "InvocationLabel": {
          "description": "A label that indicates the dialog step from which the dialog code hook is happening.",
          "$ref": "#/$defs/Name"
        }
      },
      "required": [
        "EnableCodeHookInvocation"
      ],
      "title": "AWSLexBotElicitationCodeHookInvocationSettingDefinition",
      "additionalProperties": false
    },
    "PostDialogCodeHookInvocationSpecification": {
      "description": "Specifies next steps to run after the dialog code hook finishes.",
      "type": "object",
      "properties": {
        "SuccessResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "SuccessNextStep": {
          "description": "Specifics the next step the bot runs after the dialog code hook finishes successfully.",
          "$ref": "#/$defs/DialogState"
        },
        "SuccessConditional": {
          "description": "A list of conditional branches to evaluate after the dialog code hook finishes successfully.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "FailureResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "FailureNextStep": {
          "description": "Specifies the next step the bot runs after the dialog code hook throws an exception or returns with the State field of the Intent object set to Failed.",
          "$ref": "#/$defs/DialogState"
        },
        "FailureConditional": {
          "description": "A list of conditional branches to evaluate after the dialog code hook throws an exception or returns with the State field of the Intent object set to Failed.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "TimeoutResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "TimeoutNextStep": {
          "description": "Specifies the next step that the bot runs when the code hook times out.",
          "$ref": "#/$defs/DialogState"
        },
        "TimeoutConditional": {
          "description": "A list of conditional branches to evaluate if the code hook times out.",
          "$ref": "#/$defs/ConditionalSpecification"
        }
      },
      "title": "AWSLexBotPostDialogCodeHookInvocationSpecificationDefinition",
      "additionalProperties": false
    },
    "DialogState": {
      "description": "The current state of the conversation with the user.",
      "type": "object",
      "properties": {
        "DialogAction": {
          "description": "Defines the action that the bot executes at runtime when the conversation reaches this step.",
          "$ref": "#/$defs/DialogAction"
        },
        "Intent": {
          "description": "Override settings to configure the intent state.",
          "$ref": "#/$defs/IntentOverride"
        },
        "SessionAttributes": {
          "description": "List of session attributes to be applied when the conversation reaches this step.",
          "type": "array",
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/SessionAttribute"
          }
        }
      },
      "title": "AWSLexBotDialogStateDefinition",
      "additionalProperties": false
    },
    "DialogAction": {
      "description": "Defines the action that the bot executes at runtime when the conversation reaches this step.",
      "type": "object",
      "properties": {
        "Type": {
          "description": "The action that the bot should execute.",
          "$ref": "#/$defs/DialogActionType"
        },
        "SlotToElicit": {
          "description": "If the dialog action is ElicitSlot, defines the slot to elicit from the user.",
          "$ref": "#/$defs/Name"
        },
        "SuppressNextMessage": {
          "description": "When true the next message for the intent is not used.",
          "type": "boolean"
        }
      },
      "required": [
        "Type"
      ],
      "title": "AWSLexBotDialogActionDefinition",
      "additionalProperties": false
    },
    "DialogActionType": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "CloseIntent",
            "ConfirmIntent",
            "ElicitIntent",
            "ElicitSlot",
            "StartIntent",
            "FulfillIntent",
            "EndConversation",
            "EvaluateConditional",
            "InvokeDialogCodeHook"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The possible values of actions that the conversation can take.",
      "title": "AWSLexBotDialogActionTypeDefinition"
    },
    "SessionAttribute": {
      "description": "Key/value pair representing session-specific context information. It contains application information passed between Amazon Lex and a client application.",
      "type": "object",
      "properties": {
        "Key": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 1024
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "Key"
      ],
      "title": "AWSLexBotSessionAttributeDefinition",
      "additionalProperties": false
    },
    "IntentOverride": {
      "description": "Override settings to configure the intent state.",
      "type": "object",
      "properties": {
        "Name": {
          "description": "The name of the intent. Only required when you're switching intents.",
          "$ref": "#/$defs/Name"
        },
        "Slots": {
          "description": "A map of all of the slot value overrides for the intent.",
          "type": "array",
          "insertionOrder": false,
          "items": {
            "$ref": "#/$defs/SlotValueOverrideMap"
          }
        }
      },
      "title": "AWSLexBotIntentOverrideDefinition",
      "additionalProperties": false
    },
    "SlotValueOverrideMap": {
      "description": "A map of slot names and their overridden values.",
      "type": "object",
      "properties": {
        "SlotName": {
          "$ref": "#/$defs/Name"
        },
        "SlotValueOverride": {
          "$ref": "#/$defs/SlotValueOverride"
        }
      },
      "title": "AWSLexBotSlotValueOverrideMapDefinition",
      "additionalProperties": false
    },
    "SlotValueOverride": {
      "description": "The slot values that Amazon Lex uses when it sets slot values in a dialog step.",
      "type": "object",
      "properties": {
        "Shape": {
          "description": "When the shape value is List, it indicates that the values field contains a list of slot values. When the value is Scalar, it indicates that the value field contains a single value.",
          "$ref": "#/$defs/SlotShape"
        },
        "Value": {
          "description": "The current value of the slot.",
          "$ref": "#/$defs/SlotValue"
        },
        "Values": {
          "description": "A list of one or more values that the user provided for the slot. For example, for a slot that elicits pizza toppings, the values might be \"pepperoni\" and \"pineapple.\"",
          "$ref": "#/$defs/SlotValues"
        }
      },
      "title": "AWSLexBotSlotValueOverrideDefinition",
      "additionalProperties": false
    },
    "SlotValue": {
      "description": "The value to set in a slot.",
      "type": "object",
      "properties": {
        "InterpretedValue": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 202
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The value that Amazon Lex determines for the slot."
        }
      },
      "title": "AWSLexBotSlotValueDefinition",
      "additionalProperties": false
    },
    "SlotValues": {
      "description": "An array of values that slots should be set to",
      "type": "array",
      "items": {
        "$ref": "#/$defs/SlotValueOverride"
      },
      "title": "AWSLexBotSlotValuesDefinition"
    },
    "SlotShape": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "Scalar",
            "List"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The different shapes that a slot can be in during a conversation.",
      "title": "AWSLexBotSlotShapeDefinition"
    },
    "SlotCaptureSetting": {
      "description": "Settings used when Amazon Lex successfully captures a slot value from a user.",
      "type": "object",
      "properties": {
        "CaptureResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "CaptureNextStep": {
          "description": "Specifies the next step that the bot runs when the slot value is captured before the code hook times out.",
          "$ref": "#/$defs/DialogState"
        },
        "CaptureConditional": {
          "description": "A list of conditional branches to evaluate after the slot value is captured.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "FailureResponse": {
          "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input.",
          "$ref": "#/$defs/ResponseSpecification"
        },
        "FailureNextStep": {
          "description": "Specifies the next step that the bot runs when the slot value code is not recognized.",
          "$ref": "#/$defs/DialogState"
        },
        "FailureConditional": {
          "description": "A list of conditional branches to evaluate when the slot value isn't captured.",
          "$ref": "#/$defs/ConditionalSpecification"
        },
        "CodeHook": {
          "description": "Code hook called after Amazon Lex successfully captures a slot value.",
          "$ref": "#/$defs/DialogCodeHookInvocationSetting"
        },
        "ElicitationCodeHook": {
          "description": "Code hook called when Amazon Lex doesn't capture a slot value.",
          "$ref": "#/$defs/ElicitationCodeHookInvocationSetting"
        }
      },
      "title": "AWSLexBotSlotCaptureSettingDefinition",
      "additionalProperties": false
    }
  },
  "required": [
    "Name",
    "RoleArn",
    "DataPrivacy",
    "IdleSessionTTLInSeconds"
  ],
  "primaryIdentifier": [
    "/properties/Id"
  ]
}
