# Copyright (c) 2012-2025, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***


from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, integer


class VpcConfig(AWSProperty):
    """
    `VpcConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-vpcconfig.html>`__
    """

    props: PropsDictType = {
        "SecurityGroups": ([str], True),
        "Subnets": ([str], True),
    }


class BrowserNetworkConfiguration(AWSProperty):
    """
    `BrowserNetworkConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-browsercustom-browsernetworkconfiguration.html>`__
    """

    props: PropsDictType = {
        "NetworkMode": (str, True),
        "VpcConfig": (VpcConfig, False),
    }


class BrowserSigning(AWSProperty):
    """
    `BrowserSigning <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-browsercustom-browsersigning.html>`__
    """

    props: PropsDictType = {
        "Enabled": (boolean, False),
    }


class S3Location(AWSProperty):
    """
    `S3Location <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-s3location.html>`__
    """

    props: PropsDictType = {
        "Bucket": (str, True),
        "Prefix": (str, True),
        "VersionId": (str, False),
    }


class RecordingConfig(AWSProperty):
    """
    `RecordingConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-browsercustom-recordingconfig.html>`__
    """

    props: PropsDictType = {
        "Enabled": (boolean, False),
        "S3Location": (S3Location, False),
    }


class BrowserCustom(AWSObject):
    """
    `BrowserCustom <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-browsercustom.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::BrowserCustom"

    props: PropsDictType = {
        "BrowserSigning": (BrowserSigning, False),
        "Description": (str, False),
        "ExecutionRoleArn": (str, False),
        "Name": (str, True),
        "NetworkConfiguration": (BrowserNetworkConfiguration, True),
        "RecordingConfig": (RecordingConfig, False),
        "Tags": (dict, False),
    }


class CodeInterpreterNetworkConfiguration(AWSProperty):
    """
    `CodeInterpreterNetworkConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-codeinterpretercustom-codeinterpreternetworkconfiguration.html>`__
    """

    props: PropsDictType = {
        "NetworkMode": (str, True),
        "VpcConfig": (VpcConfig, False),
    }


class CodeInterpreterCustom(AWSObject):
    """
    `CodeInterpreterCustom <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-codeinterpretercustom.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::CodeInterpreterCustom"

    props: PropsDictType = {
        "Description": (str, False),
        "ExecutionRoleArn": (str, False),
        "Name": (str, True),
        "NetworkConfiguration": (CodeInterpreterNetworkConfiguration, True),
        "Tags": (dict, False),
    }


class ClaimMatchValueType(AWSProperty):
    """
    `ClaimMatchValueType <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-claimmatchvaluetype.html>`__
    """

    props: PropsDictType = {
        "MatchValueString": (str, False),
        "MatchValueStringList": ([str], False),
    }


class AuthorizingClaimMatchValueType(AWSProperty):
    """
    `AuthorizingClaimMatchValueType <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-authorizingclaimmatchvaluetype.html>`__
    """

    props: PropsDictType = {
        "ClaimMatchOperator": (str, True),
        "ClaimMatchValue": (ClaimMatchValueType, True),
    }


class CustomClaimValidationType(AWSProperty):
    """
    `CustomClaimValidationType <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-customclaimvalidationtype.html>`__
    """

    props: PropsDictType = {
        "AuthorizingClaimMatchValue": (AuthorizingClaimMatchValueType, True),
        "InboundTokenClaimName": (str, True),
        "InboundTokenClaimValueType": (str, True),
    }


class CustomJWTAuthorizerConfiguration(AWSProperty):
    """
    `CustomJWTAuthorizerConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-customjwtauthorizerconfiguration.html>`__
    """

    props: PropsDictType = {
        "AllowedAudience": ([str], False),
        "AllowedClients": ([str], False),
        "AllowedScopes": ([str], False),
        "CustomClaims": ([CustomClaimValidationType], False),
        "DiscoveryUrl": (str, True),
    }


class AuthorizerConfiguration(AWSProperty):
    """
    `AuthorizerConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-authorizerconfiguration.html>`__
    """

    props: PropsDictType = {
        "CustomJWTAuthorizer": (CustomJWTAuthorizerConfiguration, False),
    }


class LambdaInterceptorConfiguration(AWSProperty):
    """
    `LambdaInterceptorConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gateway-lambdainterceptorconfiguration.html>`__
    """

    props: PropsDictType = {
        "Arn": (str, True),
    }


class InterceptorConfiguration(AWSProperty):
    """
    `InterceptorConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gateway-interceptorconfiguration.html>`__
    """

    props: PropsDictType = {
        "Lambda": (LambdaInterceptorConfiguration, True),
    }


class InterceptorInputConfiguration(AWSProperty):
    """
    `InterceptorInputConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gateway-interceptorinputconfiguration.html>`__
    """

    props: PropsDictType = {
        "PassRequestHeaders": (boolean, True),
    }


class GatewayInterceptorConfiguration(AWSProperty):
    """
    `GatewayInterceptorConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gateway-gatewayinterceptorconfiguration.html>`__
    """

    props: PropsDictType = {
        "InputConfiguration": (InterceptorInputConfiguration, False),
        "InterceptionPoints": ([str], True),
        "Interceptor": (InterceptorConfiguration, True),
    }


class MCPGatewayConfiguration(AWSProperty):
    """
    `MCPGatewayConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gateway-mcpgatewayconfiguration.html>`__
    """

    props: PropsDictType = {
        "Instructions": (str, False),
        "SearchType": (str, False),
        "SupportedVersions": ([str], False),
    }


class GatewayProtocolConfiguration(AWSProperty):
    """
    `GatewayProtocolConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gateway-gatewayprotocolconfiguration.html>`__
    """

    props: PropsDictType = {
        "Mcp": (MCPGatewayConfiguration, True),
    }


class Gateway(AWSObject):
    """
    `Gateway <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-gateway.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::Gateway"

    props: PropsDictType = {
        "AuthorizerConfiguration": (AuthorizerConfiguration, False),
        "AuthorizerType": (str, True),
        "Description": (str, False),
        "ExceptionLevel": (str, False),
        "InterceptorConfigurations": ([GatewayInterceptorConfiguration], False),
        "KmsKeyArn": (str, False),
        "Name": (str, True),
        "ProtocolConfiguration": (GatewayProtocolConfiguration, False),
        "ProtocolType": (str, True),
        "RoleArn": (str, True),
        "Tags": (dict, False),
    }


class ApiKeyCredentialProvider(AWSProperty):
    """
    `ApiKeyCredentialProvider <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-apikeycredentialprovider.html>`__
    """

    props: PropsDictType = {
        "CredentialLocation": (str, False),
        "CredentialParameterName": (str, False),
        "CredentialPrefix": (str, False),
        "ProviderArn": (str, True),
    }


class OAuthCredentialProvider(AWSProperty):
    """
    `OAuthCredentialProvider <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-oauthcredentialprovider.html>`__
    """

    props: PropsDictType = {
        "CustomParameters": (dict, False),
        "DefaultReturnUrl": (str, False),
        "GrantType": (str, False),
        "ProviderArn": (str, True),
        "Scopes": ([str], True),
    }


class CredentialProvider(AWSProperty):
    """
    `CredentialProvider <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-credentialprovider.html>`__
    """

    props: PropsDictType = {
        "ApiKeyCredentialProvider": (ApiKeyCredentialProvider, False),
        "OauthCredentialProvider": (OAuthCredentialProvider, False),
    }


class CredentialProviderConfiguration(AWSProperty):
    """
    `CredentialProviderConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-credentialproviderconfiguration.html>`__
    """

    props: PropsDictType = {
        "CredentialProvider": (CredentialProvider, False),
        "CredentialProviderType": (str, True),
    }


class MetadataConfiguration(AWSProperty):
    """
    `MetadataConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-metadataconfiguration.html>`__
    """

    props: PropsDictType = {
        "AllowedQueryParameters": ([str], False),
        "AllowedRequestHeaders": ([str], False),
        "AllowedResponseHeaders": ([str], False),
    }


class ApiGatewayToolFilter(AWSProperty):
    """
    `ApiGatewayToolFilter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-apigatewaytoolfilter.html>`__
    """

    props: PropsDictType = {
        "FilterPath": (str, True),
        "Methods": ([str], True),
    }


class ApiGatewayToolOverride(AWSProperty):
    """
    `ApiGatewayToolOverride <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-apigatewaytooloverride.html>`__
    """

    props: PropsDictType = {
        "Description": (str, False),
        "Method": (str, True),
        "Name": (str, True),
        "Path": (str, True),
    }


class ApiGatewayToolConfiguration(AWSProperty):
    """
    `ApiGatewayToolConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-apigatewaytoolconfiguration.html>`__
    """

    props: PropsDictType = {
        "ToolFilters": ([ApiGatewayToolFilter], True),
        "ToolOverrides": ([ApiGatewayToolOverride], False),
    }


class ApiGatewayTargetConfiguration(AWSProperty):
    """
    `ApiGatewayTargetConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-apigatewaytargetconfiguration.html>`__
    """

    props: PropsDictType = {
        "ApiGatewayToolConfiguration": (ApiGatewayToolConfiguration, True),
        "RestApiId": (str, True),
        "Stage": (str, True),
    }


class S3Configuration(AWSProperty):
    """
    `S3Configuration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-s3configuration.html>`__
    """

    props: PropsDictType = {
        "BucketOwnerAccountId": (str, False),
        "Uri": (str, False),
    }


class ApiSchemaConfiguration(AWSProperty):
    """
    `ApiSchemaConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-apischemaconfiguration.html>`__
    """

    props: PropsDictType = {
        "InlinePayload": (str, False),
        "S3": (S3Configuration, False),
    }


class SchemaDefinition(AWSProperty):
    """
    `SchemaDefinition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-schemadefinition.html>`__
    """

    props: PropsDictType = {
        "Description": (str, False),
        "Items": (object, False),  # type: ignore
        "Properties": (dict, False),
        "Required": ([str], False),
        "Type": (str, True),
    }


class ToolDefinition(AWSProperty):
    """
    `ToolDefinition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-tooldefinition.html>`__
    """

    props: PropsDictType = {
        "Description": (str, True),
        "InputSchema": (SchemaDefinition, True),
        "Name": (str, True),
        "OutputSchema": (SchemaDefinition, False),
    }


class ToolSchema(AWSProperty):
    """
    `ToolSchema <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-toolschema.html>`__
    """

    props: PropsDictType = {
        "InlinePayload": ([ToolDefinition], False),
        "S3": (S3Configuration, False),
    }


class McpLambdaTargetConfiguration(AWSProperty):
    """
    `McpLambdaTargetConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-mcplambdatargetconfiguration.html>`__
    """

    props: PropsDictType = {
        "LambdaArn": (str, True),
        "ToolSchema": (ToolSchema, True),
    }


class McpServerTargetConfiguration(AWSProperty):
    """
    `McpServerTargetConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-mcpservertargetconfiguration.html>`__
    """

    props: PropsDictType = {
        "Endpoint": (str, True),
    }


class McpTargetConfiguration(AWSProperty):
    """
    `McpTargetConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-mcptargetconfiguration.html>`__
    """

    props: PropsDictType = {
        "ApiGateway": (ApiGatewayTargetConfiguration, False),
        "Lambda": (McpLambdaTargetConfiguration, False),
        "McpServer": (McpServerTargetConfiguration, False),
        "OpenApiSchema": (ApiSchemaConfiguration, False),
        "SmithyModel": (ApiSchemaConfiguration, False),
    }


class TargetConfiguration(AWSProperty):
    """
    `TargetConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-gatewaytarget-targetconfiguration.html>`__
    """

    props: PropsDictType = {
        "Mcp": (McpTargetConfiguration, True),
    }


class GatewayTarget(AWSObject):
    """
    `GatewayTarget <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-gatewaytarget.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::GatewayTarget"

    props: PropsDictType = {
        "CredentialProviderConfigurations": ([CredentialProviderConfiguration], False),
        "Description": (str, False),
        "GatewayIdentifier": (str, False),
        "MetadataConfiguration": (MetadataConfiguration, False),
        "Name": (str, True),
        "TargetConfiguration": (TargetConfiguration, True),
    }


class EpisodicOverrideConsolidationConfigurationInput(AWSProperty):
    """
    `EpisodicOverrideConsolidationConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-episodicoverrideconsolidationconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class EpisodicOverrideExtractionConfigurationInput(AWSProperty):
    """
    `EpisodicOverrideExtractionConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-episodicoverrideextractionconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class EpisodicOverrideReflectionConfigurationInput(AWSProperty):
    """
    `EpisodicOverrideReflectionConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-episodicoverridereflectionconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
        "Namespaces": ([str], False),
    }


class EpisodicOverride(AWSProperty):
    """
    `EpisodicOverride <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-episodicoverride.html>`__
    """

    props: PropsDictType = {
        "Consolidation": (EpisodicOverrideConsolidationConfigurationInput, False),
        "Extraction": (EpisodicOverrideExtractionConfigurationInput, False),
        "Reflection": (EpisodicOverrideReflectionConfigurationInput, False),
    }


class InvocationConfigurationInput(AWSProperty):
    """
    `InvocationConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-invocationconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "PayloadDeliveryBucketName": (str, False),
        "TopicArn": (str, False),
    }


class MessageBasedTriggerInput(AWSProperty):
    """
    `MessageBasedTriggerInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-messagebasedtriggerinput.html>`__
    """

    props: PropsDictType = {
        "MessageCount": (integer, False),
    }


class TimeBasedTriggerInput(AWSProperty):
    """
    `TimeBasedTriggerInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-timebasedtriggerinput.html>`__
    """

    props: PropsDictType = {
        "IdleSessionTimeout": (integer, False),
    }


class TokenBasedTriggerInput(AWSProperty):
    """
    `TokenBasedTriggerInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-tokenbasedtriggerinput.html>`__
    """

    props: PropsDictType = {
        "TokenCount": (integer, False),
    }


class TriggerConditionInput(AWSProperty):
    """
    `TriggerConditionInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-triggerconditioninput.html>`__
    """

    props: PropsDictType = {
        "MessageBasedTrigger": (MessageBasedTriggerInput, False),
        "TimeBasedTrigger": (TimeBasedTriggerInput, False),
        "TokenBasedTrigger": (TokenBasedTriggerInput, False),
    }


class SelfManagedConfiguration(AWSProperty):
    """
    `SelfManagedConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-selfmanagedconfiguration.html>`__
    """

    props: PropsDictType = {
        "HistoricalContextWindowSize": (integer, False),
        "InvocationConfiguration": (InvocationConfigurationInput, False),
        "TriggerConditions": ([TriggerConditionInput], False),
    }


class SemanticOverrideConsolidationConfigurationInput(AWSProperty):
    """
    `SemanticOverrideConsolidationConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-semanticoverrideconsolidationconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class SemanticOverrideExtractionConfigurationInput(AWSProperty):
    """
    `SemanticOverrideExtractionConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-semanticoverrideextractionconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class SemanticOverride(AWSProperty):
    """
    `SemanticOverride <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-semanticoverride.html>`__
    """

    props: PropsDictType = {
        "Consolidation": (SemanticOverrideConsolidationConfigurationInput, False),
        "Extraction": (SemanticOverrideExtractionConfigurationInput, False),
    }


class SummaryOverrideConsolidationConfigurationInput(AWSProperty):
    """
    `SummaryOverrideConsolidationConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-summaryoverrideconsolidationconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class SummaryOverride(AWSProperty):
    """
    `SummaryOverride <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-summaryoverride.html>`__
    """

    props: PropsDictType = {
        "Consolidation": (SummaryOverrideConsolidationConfigurationInput, False),
    }


class UserPreferenceOverrideConsolidationConfigurationInput(AWSProperty):
    """
    `UserPreferenceOverrideConsolidationConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-userpreferenceoverrideconsolidationconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class UserPreferenceOverrideExtractionConfigurationInput(AWSProperty):
    """
    `UserPreferenceOverrideExtractionConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-userpreferenceoverrideextractionconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "AppendToPrompt": (str, True),
        "ModelId": (str, True),
    }


class UserPreferenceOverride(AWSProperty):
    """
    `UserPreferenceOverride <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-userpreferenceoverride.html>`__
    """

    props: PropsDictType = {
        "Consolidation": (UserPreferenceOverrideConsolidationConfigurationInput, False),
        "Extraction": (UserPreferenceOverrideExtractionConfigurationInput, False),
    }


class CustomConfigurationInput(AWSProperty):
    """
    `CustomConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-customconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "EpisodicOverride": (EpisodicOverride, False),
        "SelfManagedConfiguration": (SelfManagedConfiguration, False),
        "SemanticOverride": (SemanticOverride, False),
        "SummaryOverride": (SummaryOverride, False),
        "UserPreferenceOverride": (UserPreferenceOverride, False),
    }


class CustomMemoryStrategy(AWSProperty):
    """
    `CustomMemoryStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-custommemorystrategy.html>`__
    """

    props: PropsDictType = {
        "Configuration": (CustomConfigurationInput, False),
        "CreatedAt": (str, False),
        "Description": (str, False),
        "Name": (str, True),
        "Namespaces": ([str], False),
        "Status": (str, False),
        "StrategyId": (str, False),
        "Type": (str, False),
        "UpdatedAt": (str, False),
    }


class EpisodicReflectionConfigurationInput(AWSProperty):
    """
    `EpisodicReflectionConfigurationInput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-episodicreflectionconfigurationinput.html>`__
    """

    props: PropsDictType = {
        "Namespaces": ([str], True),
    }


class EpisodicMemoryStrategy(AWSProperty):
    """
    `EpisodicMemoryStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-episodicmemorystrategy.html>`__
    """

    props: PropsDictType = {
        "CreatedAt": (str, False),
        "Description": (str, False),
        "Name": (str, True),
        "Namespaces": ([str], False),
        "ReflectionConfiguration": (EpisodicReflectionConfigurationInput, False),
        "Status": (str, False),
        "StrategyId": (str, False),
        "Type": (str, False),
        "UpdatedAt": (str, False),
    }


class SemanticMemoryStrategy(AWSProperty):
    """
    `SemanticMemoryStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-semanticmemorystrategy.html>`__
    """

    props: PropsDictType = {
        "CreatedAt": (str, False),
        "Description": (str, False),
        "Name": (str, True),
        "Namespaces": ([str], False),
        "Status": (str, False),
        "StrategyId": (str, False),
        "Type": (str, False),
        "UpdatedAt": (str, False),
    }


class SummaryMemoryStrategy(AWSProperty):
    """
    `SummaryMemoryStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-summarymemorystrategy.html>`__
    """

    props: PropsDictType = {
        "CreatedAt": (str, False),
        "Description": (str, False),
        "Name": (str, True),
        "Namespaces": ([str], False),
        "Status": (str, False),
        "StrategyId": (str, False),
        "Type": (str, False),
        "UpdatedAt": (str, False),
    }


class UserPreferenceMemoryStrategy(AWSProperty):
    """
    `UserPreferenceMemoryStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-userpreferencememorystrategy.html>`__
    """

    props: PropsDictType = {
        "CreatedAt": (str, False),
        "Description": (str, False),
        "Name": (str, True),
        "Namespaces": ([str], False),
        "Status": (str, False),
        "StrategyId": (str, False),
        "Type": (str, False),
        "UpdatedAt": (str, False),
    }


class MemoryStrategy(AWSProperty):
    """
    `MemoryStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-memory-memorystrategy.html>`__
    """

    props: PropsDictType = {
        "CustomMemoryStrategy": (CustomMemoryStrategy, False),
        "EpisodicMemoryStrategy": (EpisodicMemoryStrategy, False),
        "SemanticMemoryStrategy": (SemanticMemoryStrategy, False),
        "SummaryMemoryStrategy": (SummaryMemoryStrategy, False),
        "UserPreferenceMemoryStrategy": (UserPreferenceMemoryStrategy, False),
    }


class Memory(AWSObject):
    """
    `Memory <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-memory.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::Memory"

    props: PropsDictType = {
        "Description": (str, False),
        "EncryptionKeyArn": (str, False),
        "EventExpiryDuration": (integer, True),
        "MemoryExecutionRoleArn": (str, False),
        "MemoryStrategies": ([MemoryStrategy], False),
        "Name": (str, True),
        "Tags": (dict, False),
    }


class Code(AWSProperty):
    """
    `Code <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-code.html>`__
    """

    props: PropsDictType = {
        "S3": (S3Location, False),
    }


class CodeConfiguration(AWSProperty):
    """
    `CodeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-codeconfiguration.html>`__
    """

    props: PropsDictType = {
        "Code": (Code, True),
        "EntryPoint": ([str], True),
        "Runtime": (str, True),
    }


class ContainerConfiguration(AWSProperty):
    """
    `ContainerConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-containerconfiguration.html>`__
    """

    props: PropsDictType = {
        "ContainerUri": (str, True),
    }


class AgentRuntimeArtifact(AWSProperty):
    """
    `AgentRuntimeArtifact <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-agentruntimeartifact.html>`__
    """

    props: PropsDictType = {
        "CodeConfiguration": (CodeConfiguration, False),
        "ContainerConfiguration": (ContainerConfiguration, False),
    }


class LifecycleConfiguration(AWSProperty):
    """
    `LifecycleConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-lifecycleconfiguration.html>`__
    """

    props: PropsDictType = {
        "IdleRuntimeSessionTimeout": (integer, False),
        "MaxLifetime": (integer, False),
    }


class NetworkConfiguration(AWSProperty):
    """
    `NetworkConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-networkconfiguration.html>`__
    """

    props: PropsDictType = {
        "NetworkMode": (str, True),
        "NetworkModeConfig": (VpcConfig, False),
    }


class RequestHeaderConfiguration(AWSProperty):
    """
    `RequestHeaderConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-requestheaderconfiguration.html>`__
    """

    props: PropsDictType = {
        "RequestHeaderAllowlist": ([str], False),
    }


class Runtime(AWSObject):
    """
    `Runtime <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-runtime.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::Runtime"

    props: PropsDictType = {
        "AgentRuntimeArtifact": (AgentRuntimeArtifact, True),
        "AgentRuntimeName": (str, True),
        "AuthorizerConfiguration": (AuthorizerConfiguration, False),
        "Description": (str, False),
        "EnvironmentVariables": (dict, False),
        "LifecycleConfiguration": (LifecycleConfiguration, False),
        "NetworkConfiguration": (NetworkConfiguration, True),
        "ProtocolConfiguration": (str, False),
        "RequestHeaderConfiguration": (RequestHeaderConfiguration, False),
        "RoleArn": (str, True),
        "Tags": (dict, False),
    }


class RuntimeEndpoint(AWSObject):
    """
    `RuntimeEndpoint <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-runtimeendpoint.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::RuntimeEndpoint"

    props: PropsDictType = {
        "AgentRuntimeId": (str, True),
        "AgentRuntimeVersion": (str, False),
        "Description": (str, False),
        "Name": (str, True),
        "Tags": (dict, False),
    }


class WorkloadIdentity(AWSObject):
    """
    `WorkloadIdentity <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrockagentcore-workloadidentity.html>`__
    """

    resource_type = "AWS::BedrockAgentCore::WorkloadIdentity"

    props: PropsDictType = {
        "AllowedResourceOauth2ReturnUrls": ([str], False),
        "Name": (str, True),
        "Tags": (Tags, False),
    }


class WorkloadIdentityDetails(AWSProperty):
    """
    `WorkloadIdentityDetails <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-bedrockagentcore-runtime-workloadidentitydetails.html>`__
    """

    props: PropsDictType = {
        "WorkloadIdentityArn": (str, True),
    }
