{
  "typeName" : "AWS::BedrockAgentCore::Memory",
  "description" : "Resource Type definition for AWS::BedrockAgentCore::Memory",
  "definitions" : {
    "Name" : {
      "type" : "string",
      "pattern" : "^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
      "description" : "Name of the Memory resource"
    },
    "MemoryArn" : {
      "type" : "string",
      "pattern" : "^arn:(aws(?:-cn|-us-gov|-iso(?:-[bef])?)?):bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:memory/[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
      "description" : "ARN of the Memory resource"
    },
    "MemoryId" : {
      "type" : "string",
      "pattern" : "^[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
      "minLength" : 12,
      "description" : "Unique identifier for the Memory resource"
    },
    "Description" : {
      "type" : "string",
      "description" : "Description of the Memory resource"
    },
    "Arn" : {
      "type" : "string",
      "pattern" : "^arn:(aws(?:-cn|-us-gov|-iso(?:-[bef])?)?):[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$",
      "description" : "ARN format"
    },
    "MemoryStatus" : {
      "type" : "string",
      "enum" : [ "CREATING", "ACTIVE", "FAILED", "DELETING" ],
      "description" : "Status of the Memory resource"
    },
    "SemanticMemoryStrategy" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "$ref" : "#/definitions/Name"
        },
        "Description" : {
          "$ref" : "#/definitions/Description"
        },
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        },
        "StrategyId" : {
          "type" : "string",
          "minLength" : 12,
          "pattern" : "^[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
          "description" : "Unique identifier for the memory strategy"
        },
        "Type" : {
          "type" : "string",
          "enum" : [ "SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE", "CUSTOM", "EPISODIC" ],
          "description" : "Type of memory strategy"
        },
        "Status" : {
          "type" : "string",
          "enum" : [ "CREATING", "ACTIVE", "DELETING", "FAILED" ],
          "description" : "Status of the memory strategy"
        },
        "CreatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Creation timestamp of the memory strategy"
        },
        "UpdatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Last update timestamp of the memory strategy"
        }
      },
      "required" : [ "Name" ],
      "additionalProperties" : false
    },
    "SummaryMemoryStrategy" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "$ref" : "#/definitions/Name"
        },
        "Description" : {
          "$ref" : "#/definitions/Description"
        },
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        },
        "StrategyId" : {
          "type" : "string",
          "minLength" : 12,
          "pattern" : "^[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
          "description" : "Unique identifier for the memory strategy"
        },
        "Type" : {
          "type" : "string",
          "enum" : [ "SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE", "CUSTOM", "EPISODIC" ],
          "description" : "Type of memory strategy"
        },
        "Status" : {
          "type" : "string",
          "enum" : [ "CREATING", "ACTIVE", "DELETING", "FAILED" ],
          "description" : "Status of the memory strategy"
        },
        "CreatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Creation timestamp of the memory strategy"
        },
        "UpdatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Last update timestamp of the memory strategy"
        }
      },
      "required" : [ "Name" ],
      "additionalProperties" : false
    },
    "UserPreferenceMemoryStrategy" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "$ref" : "#/definitions/Name"
        },
        "Description" : {
          "$ref" : "#/definitions/Description"
        },
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        },
        "StrategyId" : {
          "type" : "string",
          "minLength" : 12,
          "pattern" : "^[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
          "description" : "Unique identifier for the memory strategy"
        },
        "Type" : {
          "type" : "string",
          "enum" : [ "SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE", "CUSTOM", "EPISODIC" ],
          "description" : "Type of memory strategy"
        },
        "Status" : {
          "type" : "string",
          "enum" : [ "CREATING", "ACTIVE", "DELETING", "FAILED" ],
          "description" : "Status of the memory strategy"
        },
        "CreatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Creation timestamp of the memory strategy"
        },
        "UpdatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Last update timestamp of the memory strategy"
        }
      },
      "required" : [ "Name" ],
      "additionalProperties" : false
    },
    "CustomMemoryStrategy" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "$ref" : "#/definitions/Name"
        },
        "Description" : {
          "$ref" : "#/definitions/Description"
        },
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "Configuration" : {
          "$ref" : "#/definitions/CustomConfigurationInput"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        },
        "StrategyId" : {
          "type" : "string",
          "minLength" : 12,
          "pattern" : "^[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
          "description" : "Unique identifier for the memory strategy"
        },
        "Type" : {
          "type" : "string",
          "enum" : [ "SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE", "CUSTOM", "EPISODIC" ],
          "description" : "Type of memory strategy"
        },
        "Status" : {
          "type" : "string",
          "enum" : [ "CREATING", "ACTIVE", "DELETING", "FAILED" ],
          "description" : "Status of the memory strategy"
        },
        "CreatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Creation timestamp of the memory strategy"
        },
        "UpdatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Last update timestamp of the memory strategy"
        }
      },
      "required" : [ "Name" ],
      "additionalProperties" : false
    },
    "EpisodicMemoryStrategy" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "$ref" : "#/definitions/Name"
        },
        "Description" : {
          "$ref" : "#/definitions/Description"
        },
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "ReflectionConfiguration" : {
          "$ref" : "#/definitions/EpisodicReflectionConfigurationInput"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        },
        "StrategyId" : {
          "type" : "string",
          "minLength" : 12,
          "pattern" : "^[a-zA-Z][a-zA-Z0-9-_]{0,99}-[a-zA-Z0-9]{10}$",
          "description" : "Unique identifier for the memory strategy"
        },
        "Type" : {
          "type" : "string",
          "enum" : [ "SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE", "CUSTOM", "EPISODIC" ],
          "description" : "Type of memory strategy"
        },
        "Status" : {
          "type" : "string",
          "enum" : [ "CREATING", "ACTIVE", "DELETING", "FAILED" ],
          "description" : "Status of the memory strategy"
        },
        "CreatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Creation timestamp of the memory strategy"
        },
        "UpdatedAt" : {
          "type" : "string",
          "format" : "date-time",
          "description" : "Last update timestamp of the memory strategy"
        }
      },
      "required" : [ "Name" ],
      "additionalProperties" : false
    },
    "MemoryStrategy" : {
      "type" : "object",
      "properties" : {
        "SemanticMemoryStrategy" : {
          "$ref" : "#/definitions/SemanticMemoryStrategy"
        },
        "SummaryMemoryStrategy" : {
          "$ref" : "#/definitions/SummaryMemoryStrategy"
        },
        "UserPreferenceMemoryStrategy" : {
          "$ref" : "#/definitions/UserPreferenceMemoryStrategy"
        },
        "CustomMemoryStrategy" : {
          "$ref" : "#/definitions/CustomMemoryStrategy"
        },
        "EpisodicMemoryStrategy" : {
          "$ref" : "#/definitions/EpisodicMemoryStrategy"
        }
      },
      "additionalProperties" : false,
      "maxProperties" : 1,
      "minProperties" : 1
    },
    "MemoryStrategies" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/MemoryStrategy"
      },
      "insertionOrder" : false,
      "description" : "List of memory strategies attached to this memory"
    },
    "StrategyConfiguration" : {
      "type" : "object",
      "properties" : {
        "Type" : {
          "type" : "string",
          "enum" : [ "SEMANTIC_OVERRIDE", "SUMMARY_OVERRIDE", "USER_PREFERENCE_OVERRIDE", "EPISODIC" ],
          "description" : "Type of strategy configuration override"
        },
        "Extraction" : {
          "$ref" : "#/definitions/ExtractionConfiguration"
        },
        "Consolidation" : {
          "$ref" : "#/definitions/ConsolidationConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "ExtractionConfiguration" : {
      "type" : "object",
      "oneOf" : [ {
        "$ref" : "#/definitions/CustomExtractionConfiguration"
      } ]
    },
    "CustomExtractionConfiguration" : {
      "type" : "object",
      "oneOf" : [ {
        "$ref" : "#/definitions/SemanticExtractionOverride"
      }, {
        "$ref" : "#/definitions/UserPreferenceExtractionOverride"
      } ]
    },
    "SemanticExtractionOverride" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string",
          "description" : "ID of the model to use"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "UserPreferenceExtractionOverride" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string",
          "description" : "ID of the model to use"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "ConsolidationConfiguration" : {
      "type" : "object",
      "oneOf" : [ {
        "$ref" : "#/definitions/CustomConsolidationConfiguration"
      } ]
    },
    "CustomConsolidationConfiguration" : {
      "type" : "object",
      "oneOf" : [ {
        "$ref" : "#/definitions/SemanticConsolidationOverride"
      }, {
        "$ref" : "#/definitions/SummaryConsolidationOverride"
      }, {
        "$ref" : "#/definitions/UserPreferenceConsolidationOverride"
      } ]
    },
    "SemanticConsolidationOverride" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string",
          "description" : "ID of the model to use"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "SummaryConsolidationOverride" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string",
          "description" : "ID of the model to use"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "UserPreferenceConsolidationOverride" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string",
          "description" : "ID of the model to use"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "EpisodicReflectionConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        }
      },
      "additionalProperties" : false
    },
    "Namespace" : {
      "type" : "string",
      "pattern" : "^[a-zA-Z0-9\\-_/]*(\\{(actorId|sessionId|memoryStrategyId)\\}[a-zA-Z0-9\\-_/]*)*$",
      "description" : "Namespace for the memory strategy"
    },
    "NamespacesList" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/Namespace"
      },
      "minItems" : 1,
      "insertionOrder" : false,
      "description" : "List of namespaces for memory strategy"
    },
    "Prompt" : {
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 30000,
      "description" : "Text prompt for model instructions"
    },
    "CustomConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "SemanticOverride" : {
          "$ref" : "#/definitions/SemanticOverride"
        },
        "SummaryOverride" : {
          "$ref" : "#/definitions/SummaryOverride"
        },
        "UserPreferenceOverride" : {
          "$ref" : "#/definitions/UserPreferenceOverride"
        },
        "SelfManagedConfiguration" : {
          "$ref" : "#/definitions/SelfManagedConfiguration"
        },
        "EpisodicOverride" : {
          "$ref" : "#/definitions/EpisodicOverride"
        }
      },
      "additionalProperties" : false,
      "maxProperties" : 1,
      "minProperties" : 1
    },
    "SelfManagedConfiguration" : {
      "type" : "object",
      "properties" : {
        "TriggerConditions" : {
          "$ref" : "#/definitions/TriggerConditionList"
        },
        "InvocationConfiguration" : {
          "$ref" : "#/definitions/InvocationConfigurationInput"
        },
        "HistoricalContextWindowSize" : {
          "type" : "integer",
          "minimum" : 0,
          "maximum" : 50
        }
      },
      "additionalProperties" : false
    },
    "TriggerConditionList" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/TriggerConditionInput"
      },
      "additionalProperties" : false,
      "insertionOrder" : false,
      "minItems" : 1
    },
    "TriggerConditionInput" : {
      "type" : "object",
      "properties" : {
        "MessageBasedTrigger" : {
          "$ref" : "#/definitions/MessageBasedTriggerInput"
        },
        "TokenBasedTrigger" : {
          "$ref" : "#/definitions/TokenBasedTriggerInput"
        },
        "TimeBasedTrigger" : {
          "$ref" : "#/definitions/TimeBasedTriggerInput"
        }
      },
      "additionalProperties" : false,
      "maxProperties" : 1,
      "minProperties" : 1
    },
    "MessageBasedTriggerInput" : {
      "type" : "object",
      "properties" : {
        "MessageCount" : {
          "type" : "integer",
          "minimum" : 1,
          "maximum" : 50
        }
      },
      "additionalProperties" : false
    },
    "TokenBasedTriggerInput" : {
      "type" : "object",
      "properties" : {
        "TokenCount" : {
          "type" : "integer",
          "minimum" : 100,
          "maximum" : 500000
        }
      },
      "additionalProperties" : false
    },
    "TimeBasedTriggerInput" : {
      "type" : "object",
      "properties" : {
        "IdleSessionTimeout" : {
          "type" : "integer",
          "minimum" : 10,
          "maximum" : 3000
        }
      },
      "additionalProperties" : false
    },
    "InvocationConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "TopicArn" : {
          "$ref" : "#/definitions/Arn"
        },
        "PayloadDeliveryBucketName" : {
          "type" : "string",
          "pattern" : "^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$"
        }
      },
      "additionalProperties" : false
    },
    "SemanticOverride" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/SemanticOverrideExtractionConfigurationInput"
        },
        "Consolidation" : {
          "$ref" : "#/definitions/SemanticOverrideConsolidationConfigurationInput"
        }
      },
      "additionalProperties" : false
    },
    "SemanticOverrideExtractionConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "SemanticOverrideConsolidationConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "SummaryOverride" : {
      "type" : "object",
      "properties" : {
        "Consolidation" : {
          "$ref" : "#/definitions/SummaryOverrideConsolidationConfigurationInput"
        }
      },
      "additionalProperties" : false
    },
    "SummaryOverrideConsolidationConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "UserPreferenceOverride" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/UserPreferenceOverrideExtractionConfigurationInput"
        },
        "Consolidation" : {
          "$ref" : "#/definitions/UserPreferenceOverrideConsolidationConfigurationInput"
        }
      },
      "additionalProperties" : false
    },
    "UserPreferenceOverrideExtractionConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "UserPreferenceOverrideConsolidationConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "EpisodicOverride" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/EpisodicOverrideExtractionConfigurationInput"
        },
        "Consolidation" : {
          "$ref" : "#/definitions/EpisodicOverrideConsolidationConfigurationInput"
        },
        "Reflection" : {
          "$ref" : "#/definitions/EpisodicOverrideReflectionConfigurationInput"
        }
      },
      "additionalProperties" : false
    },
    "EpisodicOverrideExtractionConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "EpisodicOverrideConsolidationConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "EpisodicOverrideReflectionConfigurationInput" : {
      "type" : "object",
      "properties" : {
        "AppendToPrompt" : {
          "$ref" : "#/definitions/Prompt"
        },
        "ModelId" : {
          "type" : "string"
        },
        "Namespaces" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "NamespaceTemplates" : {
          "$ref" : "#/definitions/NamespacesList"
        },
        "MemoryRecordSchema" : {
          "$ref" : "#/definitions/MemoryRecordSchema"
        }
      },
      "required" : [ "AppendToPrompt", "ModelId" ],
      "additionalProperties" : false
    },
    "ContentConfiguration" : {
      "type" : "object",
      "properties" : {
        "Type" : {
          "type" : "string",
          "enum" : [ "MEMORY_RECORDS" ],
          "description" : "The type of content to deliver"
        },
        "Level" : {
          "type" : "string",
          "enum" : [ "METADATA_ONLY", "FULL_CONTENT" ],
          "description" : "The level of content detail to deliver"
        }
      },
      "required" : [ "Type" ],
      "additionalProperties" : false
    },
    "KinesisResource" : {
      "type" : "object",
      "properties" : {
        "DataStreamArn" : {
          "$ref" : "#/definitions/Arn"
        },
        "ContentConfigurations" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ContentConfiguration"
          },
          "minItems" : 1,
          "maxItems" : 1,
          "insertionOrder" : false
        }
      },
      "required" : [ "DataStreamArn", "ContentConfigurations" ],
      "additionalProperties" : false
    },
    "StreamDeliveryResource" : {
      "type" : "object",
      "properties" : {
        "Kinesis" : {
          "$ref" : "#/definitions/KinesisResource"
        }
      },
      "additionalProperties" : false,
      "maxProperties" : 1,
      "minProperties" : 1
    },
    "StreamDeliveryResources" : {
      "type" : "object",
      "properties" : {
        "Resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/StreamDeliveryResource"
          },
          "maxItems" : 1,
          "insertionOrder" : false
        }
      },
      "required" : [ "Resources" ],
      "additionalProperties" : false
    },
    "MetadataKey" : {
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 128,
      "pattern" : "^[a-zA-Z0-9\\s._:/=+@-]*$",
      "description" : "Key name for metadata fields"
    },
    "MetadataValueType" : {
      "type" : "string",
      "enum" : [ "STRING", "STRINGLIST", "NUMBER" ],
      "description" : "Supported data types for metadata values"
    },
    "IndexedKey" : {
      "type" : "object",
      "properties" : {
        "Key" : {
          "$ref" : "#/definitions/MetadataKey"
        },
        "Type" : {
          "$ref" : "#/definitions/MetadataValueType"
        }
      },
      "required" : [ "Key", "Type" ],
      "additionalProperties" : false
    },
    "IndexedKeysList" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/IndexedKey"
      },
      "minItems" : 1,
      "maxItems" : 10,
      "insertionOrder" : false,
      "description" : "List of indexed keys for the memory"
    },
    "Definition" : {
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 1000,
      "description" : "Definition for the metadata schema entry"
    },
    "LlmExtractionInstruction" : {
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 1000,
      "description" : "LLM extraction instruction"
    },
    "StringValidation" : {
      "type" : "object",
      "properties" : {
        "AllowedValues" : {
          "type" : "array",
          "items" : {
            "type" : "string"
          },
          "minItems" : 1,
          "maxItems" : 10,
          "insertionOrder" : false
        }
      },
      "required" : [ "AllowedValues" ],
      "additionalProperties" : false
    },
    "StringListValidation" : {
      "type" : "object",
      "properties" : {
        "AllowedValues" : {
          "type" : "array",
          "items" : {
            "type" : "string"
          },
          "minItems" : 1,
          "maxItems" : 10,
          "insertionOrder" : false
        },
        "MaxItems" : {
          "type" : "integer",
          "minimum" : 1,
          "maximum" : 5
        }
      },
      "additionalProperties" : false
    },
    "NumberValidation" : {
      "type" : "object",
      "properties" : {
        "MinValue" : {
          "type" : "number"
        },
        "MaxValue" : {
          "type" : "number"
        }
      },
      "additionalProperties" : false
    },
    "Validation" : {
      "type" : "object",
      "properties" : {
        "StringValidation" : {
          "$ref" : "#/definitions/StringValidation"
        },
        "StringListValidation" : {
          "$ref" : "#/definitions/StringListValidation"
        },
        "NumberValidation" : {
          "$ref" : "#/definitions/NumberValidation"
        }
      },
      "additionalProperties" : false,
      "maxProperties" : 1,
      "minProperties" : 1
    },
    "LlmExtractionConfig" : {
      "type" : "object",
      "properties" : {
        "LlmExtractionInstruction" : {
          "$ref" : "#/definitions/LlmExtractionInstruction"
        },
        "Definition" : {
          "$ref" : "#/definitions/Definition"
        },
        "Validation" : {
          "$ref" : "#/definitions/Validation"
        }
      },
      "required" : [ "Definition" ],
      "additionalProperties" : false
    },
    "ExtractionConfig" : {
      "type" : "object",
      "properties" : {
        "LlmExtractionConfig" : {
          "$ref" : "#/definitions/LlmExtractionConfig"
        }
      },
      "additionalProperties" : false,
      "maxProperties" : 1,
      "minProperties" : 1
    },
    "MetadataSchemaEntry" : {
      "type" : "object",
      "properties" : {
        "Key" : {
          "$ref" : "#/definitions/MetadataKey"
        },
        "Type" : {
          "$ref" : "#/definitions/MetadataValueType"
        },
        "ExtractionConfig" : {
          "$ref" : "#/definitions/ExtractionConfig"
        }
      },
      "required" : [ "Key" ],
      "additionalProperties" : false
    },
    "MetadataSchemaList" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/MetadataSchemaEntry"
      },
      "minItems" : 1,
      "maxItems" : 20,
      "insertionOrder" : false,
      "description" : "List of metadata schema entries"
    },
    "MemoryRecordSchema" : {
      "type" : "object",
      "properties" : {
        "MetadataSchema" : {
          "$ref" : "#/definitions/MetadataSchemaList"
        }
      },
      "additionalProperties" : false
    },
    "TagsMap" : {
      "type" : "object",
      "description" : "A map of tag keys and values",
      "maxProperties" : 50,
      "minProperties" : 0,
      "patternProperties" : {
        "^[a-zA-Z0-9\\s._:/=+@-]{1,128}$" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 0,
          "pattern" : "^[a-zA-Z0-9\\s._:/=+@-]*$",
          "description" : "Value of a tag"
        }
      },
      "additionalProperties" : false
    }
  },
  "properties" : {
    "Name" : {
      "$ref" : "#/definitions/Name"
    },
    "Description" : {
      "$ref" : "#/definitions/Description"
    },
    "EncryptionKeyArn" : {
      "$ref" : "#/definitions/Arn"
    },
    "MemoryExecutionRoleArn" : {
      "$ref" : "#/definitions/Arn"
    },
    "EventExpiryDuration" : {
      "type" : "integer",
      "minimum" : 3,
      "maximum" : 365,
      "description" : "Duration in days until memory events expire"
    },
    "MemoryArn" : {
      "$ref" : "#/definitions/MemoryArn"
    },
    "MemoryId" : {
      "$ref" : "#/definitions/MemoryId"
    },
    "Status" : {
      "$ref" : "#/definitions/MemoryStatus"
    },
    "FailureReason" : {
      "type" : "string"
    },
    "CreatedAt" : {
      "type" : "string",
      "format" : "date-time"
    },
    "UpdatedAt" : {
      "type" : "string",
      "format" : "date-time"
    },
    "MemoryStrategies" : {
      "$ref" : "#/definitions/MemoryStrategies"
    },
    "IndexedKeys" : {
      "$ref" : "#/definitions/IndexedKeysList"
    },
    "StreamDeliveryResources" : {
      "$ref" : "#/definitions/StreamDeliveryResources"
    },
    "Tags" : {
      "$ref" : "#/definitions/TagsMap"
    }
  },
  "required" : [ "Name", "EventExpiryDuration" ],
  "primaryIdentifier" : [ "/properties/MemoryArn" ],
  "additionalIdentifiers" : [ [ "/properties/MemoryId" ] ],
  "readOnlyProperties" : [ "/properties/MemoryArn", "/properties/MemoryId", "/properties/Status", "/properties/CreatedAt", "/properties/UpdatedAt", "/properties/FailureReason", "/properties/MemoryStrategies/*/SemanticMemoryStrategy/CreatedAt", "/properties/MemoryStrategies/*/SemanticMemoryStrategy/UpdatedAt", "/properties/MemoryStrategies/*/SemanticMemoryStrategy/StrategyId", "/properties/MemoryStrategies/*/SemanticMemoryStrategy/Status", "/properties/MemoryStrategies/*/SemanticMemoryStrategy/Type", "/properties/MemoryStrategies/*/SummaryMemoryStrategy/CreatedAt", "/properties/MemoryStrategies/*/SummaryMemoryStrategy/UpdatedAt", "/properties/MemoryStrategies/*/SummaryMemoryStrategy/StrategyId", "/properties/MemoryStrategies/*/SummaryMemoryStrategy/Status", "/properties/MemoryStrategies/*/SummaryMemoryStrategy/Type", "/properties/MemoryStrategies/*/UserPreferenceMemoryStrategy/CreatedAt", "/properties/MemoryStrategies/*/UserPreferenceMemoryStrategy/UpdatedAt", "/properties/MemoryStrategies/*/UserPreferenceMemoryStrategy/StrategyId", "/properties/MemoryStrategies/*/UserPreferenceMemoryStrategy/Status", "/properties/MemoryStrategies/*/UserPreferenceMemoryStrategy/Type", "/properties/MemoryStrategies/*/CustomMemoryStrategy/CreatedAt", "/properties/MemoryStrategies/*/CustomMemoryStrategy/UpdatedAt", "/properties/MemoryStrategies/*/CustomMemoryStrategy/StrategyId", "/properties/MemoryStrategies/*/CustomMemoryStrategy/Status", "/properties/MemoryStrategies/*/CustomMemoryStrategy/Type", "/properties/MemoryStrategies/*/EpisodicMemoryStrategy/CreatedAt", "/properties/MemoryStrategies/*/EpisodicMemoryStrategy/UpdatedAt", "/properties/MemoryStrategies/*/EpisodicMemoryStrategy/StrategyId", "/properties/MemoryStrategies/*/EpisodicMemoryStrategy/Status", "/properties/MemoryStrategies/*/EpisodicMemoryStrategy/Type" ],
  "createOnlyProperties" : [ "/properties/Name", "/properties/EncryptionKeyArn" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "bedrock-agentcore:CreateMemory", "bedrock-agentcore:GetMemory", "iam:PassRole", "kms:DescribeKey", "kms:CreateGrant", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:GenerateDataKey", "bedrock-agentcore:TagResource" ],
      "timeoutInMinutes" : 45
    },
    "read" : {
      "permissions" : [ "bedrock-agentcore:GetMemory", "bedrock-agentcore:ListTagsForResource", "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ]
    },
    "update" : {
      "permissions" : [ "bedrock-agentcore:UpdateMemory", "bedrock-agentcore:GetMemory", "iam:PassRole", "bedrock-agentcore:TagResource", "bedrock-agentcore:UntagResource", "bedrock-agentcore:ListTagsForResource", "kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:GenerateDataKey" ]
    },
    "delete" : {
      "permissions" : [ "bedrock-agentcore:DeleteMemory", "bedrock-agentcore:GetMemory", "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ]
    },
    "list" : {
      "permissions" : [ "bedrock-agentcore:ListMemories" ]
    }
  },
  "tagging" : {
    "cloudFormationSystemTags" : false,
    "tagOnCreate" : true,
    "tagProperty" : "/properties/Tags",
    "tagUpdatable" : true,
    "taggable" : true,
    "permissions" : [ "bedrock-agentcore:TagResource", "bedrock-agentcore:UntagResource", "bedrock-agentcore:ListTagsForResource" ]
  },
  "additionalProperties" : false
}