{
 "additionalIdentifiers": [
  [
   "/properties/Id"
  ]
 ],
 "additionalProperties": false,
 "definitions": {
  "AdditionalModelRequestFields": {
   "type": "object"
  },
  "AgentFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "AgentAliasArn": {
     "maxLength": 2048,
     "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$",
     "type": "string"
    }
   },
   "required": [
    "AgentAliasArn"
   ],
   "type": "object"
  },
  "BedrockRerankingModelArn": {
   "maxLength": 2048,
   "minLength": 1,
   "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model/(.*))?$",
   "type": "string"
  },
  "CollectorFlowNodeConfiguration": {
   "additionalProperties": false,
   "type": "object"
  },
  "ConditionFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Conditions": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/FlowCondition"
     },
     "maxItems": 5,
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "Conditions"
   ],
   "type": "object"
  },
  "DefinitionSubstitutions": {
   "additionalProperties": false,
   "maxProperties": 500,
   "minProperties": 1,
   "patternProperties": {
    "^[a-zA-Z0-9]+$": {
     "anyOf": [
      {
       "type": "string"
      },
      {
       "type": "integer"
      },
      {
       "type": "boolean"
      }
     ]
    }
   },
   "type": "object"
  },
  "FieldForReranking": {
   "additionalProperties": false,
   "properties": {
    "FieldName": {
     "maxLength": 2000,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "FieldName"
   ],
   "type": "object"
  },
  "FieldsForReranking": {
   "insertionOrder": true,
   "items": {
    "$ref": "#/definitions/FieldForReranking"
   },
   "maxItems": 100,
   "minItems": 1,
   "type": "array"
  },
  "FlowCondition": {
   "additionalProperties": false,
   "properties": {
    "Expression": {
     "maxLength": 64,
     "minLength": 1,
     "type": "string"
    },
    "Name": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    }
   },
   "required": [
    "Name"
   ],
   "type": "object"
  },
  "FlowConditionalConnectionConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Condition": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    }
   },
   "required": [
    "Condition"
   ],
   "type": "object"
  },
  "FlowConnection": {
   "additionalProperties": false,
   "properties": {
    "Configuration": {
     "$ref": "#/definitions/FlowConnectionConfiguration"
    },
    "Name": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$",
     "type": "string"
    },
    "Source": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    },
    "Target": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    },
    "Type": {
     "$ref": "#/definitions/FlowConnectionType"
    }
   },
   "required": [
    "Name",
    "Source",
    "Target",
    "Type"
   ],
   "type": "object"
  },
  "FlowConnectionConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "Data": {
       "$ref": "#/definitions/FlowDataConnectionConfiguration"
      }
     },
     "required": [
      "Data"
     ],
     "title": "Data",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Conditional": {
       "$ref": "#/definitions/FlowConditionalConnectionConfiguration"
      }
     },
     "required": [
      "Conditional"
     ],
     "title": "Conditional",
     "type": "object"
    }
   ]
  },
  "FlowConnectionType": {
   "enum": [
    "Data",
    "Conditional"
   ],
   "type": "string"
  },
  "FlowDataConnectionConfiguration": {
   "additionalProperties": false,
   "properties": {
    "SourceOutput": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    },
    "TargetInput": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    }
   },
   "required": [
    "SourceOutput",
    "TargetInput"
   ],
   "type": "object"
  },
  "FlowDefinition": {
   "additionalProperties": false,
   "properties": {
    "Connections": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/FlowConnection"
     },
     "maxItems": 100,
     "type": "array"
    },
    "Nodes": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/FlowNode"
     },
     "maxItems": 40,
     "type": "array"
    }
   },
   "type": "object"
  },
  "FlowNode": {
   "additionalProperties": false,
   "properties": {
    "Configuration": {
     "$ref": "#/definitions/FlowNodeConfiguration"
    },
    "Inputs": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/FlowNodeInput"
     },
     "maxItems": 20,
     "type": "array"
    },
    "Name": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    },
    "Outputs": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/FlowNodeOutput"
     },
     "maxItems": 5,
     "type": "array"
    },
    "Type": {
     "$ref": "#/definitions/FlowNodeType"
    }
   },
   "required": [
    "Name",
    "Type"
   ],
   "type": "object"
  },
  "FlowNodeConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "Input": {
       "$ref": "#/definitions/InputFlowNodeConfiguration"
      }
     },
     "required": [
      "Input"
     ],
     "title": "Input",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Output": {
       "$ref": "#/definitions/OutputFlowNodeConfiguration"
      }
     },
     "required": [
      "Output"
     ],
     "title": "Output",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "KnowledgeBase": {
       "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration"
      }
     },
     "required": [
      "KnowledgeBase"
     ],
     "title": "KnowledgeBase",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Condition": {
       "$ref": "#/definitions/ConditionFlowNodeConfiguration"
      }
     },
     "required": [
      "Condition"
     ],
     "title": "Condition",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Lex": {
       "$ref": "#/definitions/LexFlowNodeConfiguration"
      }
     },
     "required": [
      "Lex"
     ],
     "title": "Lex",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Prompt": {
       "$ref": "#/definitions/PromptFlowNodeConfiguration"
      }
     },
     "required": [
      "Prompt"
     ],
     "title": "Prompt",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "LambdaFunction": {
       "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration"
      }
     },
     "required": [
      "LambdaFunction"
     ],
     "title": "LambdaFunction",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Agent": {
       "$ref": "#/definitions/AgentFlowNodeConfiguration"
      }
     },
     "required": [
      "Agent"
     ],
     "title": "Agent",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Storage": {
       "$ref": "#/definitions/StorageFlowNodeConfiguration"
      }
     },
     "required": [
      "Storage"
     ],
     "title": "Storage",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Iterator": {
       "$ref": "#/definitions/IteratorFlowNodeConfiguration"
      }
     },
     "required": [
      "Iterator"
     ],
     "title": "Iterator",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Collector": {
       "$ref": "#/definitions/CollectorFlowNodeConfiguration"
      }
     },
     "required": [
      "Collector"
     ],
     "title": "Collector",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Retrieval": {
       "$ref": "#/definitions/RetrievalFlowNodeConfiguration"
      }
     },
     "required": [
      "Retrieval"
     ],
     "title": "Retrieval",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "InlineCode": {
       "$ref": "#/definitions/InlineCodeFlowNodeConfiguration"
      }
     },
     "required": [
      "InlineCode"
     ],
     "title": "InlineCode",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Loop": {
       "$ref": "#/definitions/LoopFlowNodeConfiguration"
      }
     },
     "required": [
      "Loop"
     ],
     "title": "Loop",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "LoopInput": {
       "$ref": "#/definitions/LoopInputFlowNodeConfiguration"
      }
     },
     "required": [
      "LoopInput"
     ],
     "title": "LoopInput",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "LoopController": {
       "$ref": "#/definitions/LoopControllerFlowNodeConfiguration"
      }
     },
     "required": [
      "LoopController"
     ],
     "title": "LoopController",
     "type": "object"
    }
   ]
  },
  "FlowNodeIODataType": {
   "enum": [
    "String",
    "Number",
    "Boolean",
    "Object",
    "Array"
   ],
   "type": "string"
  },
  "FlowNodeInput": {
   "additionalProperties": false,
   "properties": {
    "Category": {
     "$ref": "#/definitions/FlowNodeInputCategory"
    },
    "Expression": {
     "maxLength": 64,
     "minLength": 1,
     "type": "string"
    },
    "Name": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    },
    "Type": {
     "$ref": "#/definitions/FlowNodeIODataType"
    }
   },
   "required": [
    "Expression",
    "Name",
    "Type"
   ],
   "type": "object"
  },
  "FlowNodeInputCategory": {
   "enum": [
    "LoopCondition",
    "ReturnValueToLoopStart",
    "ExitLoop"
   ],
   "type": "string"
  },
  "FlowNodeOutput": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$",
     "type": "string"
    },
    "Type": {
     "$ref": "#/definitions/FlowNodeIODataType"
    }
   },
   "required": [
    "Name",
    "Type"
   ],
   "type": "object"
  },
  "FlowNodeType": {
   "enum": [
    "Input",
    "Output",
    "KnowledgeBase",
    "Condition",
    "Lex",
    "Prompt",
    "LambdaFunction",
    "Agent",
    "Storage",
    "Retrieval",
    "Iterator",
    "Collector",
    "InlineCode",
    "Loop",
    "LoopInput",
    "LoopController"
   ],
   "type": "string"
  },
  "FlowStatus": {
   "enum": [
    "Failed",
    "Prepared",
    "Preparing",
    "NotPrepared"
   ],
   "type": "string"
  },
  "FlowValidation": {
   "additionalProperties": false,
   "properties": {
    "Message": {
     "type": "string"
    }
   },
   "required": [
    "Message"
   ],
   "type": "object"
  },
  "FlowValidations": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/FlowValidation"
   },
   "type": "array"
  },
  "GuardrailConfiguration": {
   "additionalProperties": false,
   "properties": {
    "GuardrailIdentifier": {
     "maxLength": 2048,
     "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$",
     "type": "string"
    },
    "GuardrailVersion": {
     "pattern": "^(([0-9]{1,8})|(DRAFT))$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "InlineCodeFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Code": {
     "maxLength": 5000000,
     "type": "string"
    },
    "Language": {
     "$ref": "#/definitions/SupportedLanguages"
    }
   },
   "required": [
    "Code",
    "Language"
   ],
   "type": "object"
  },
  "InputFlowNodeConfiguration": {
   "additionalProperties": false,
   "type": "object"
  },
  "IteratorFlowNodeConfiguration": {
   "additionalProperties": false,
   "type": "object"
  },
  "KnowledgeBaseFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "GuardrailConfiguration": {
     "$ref": "#/definitions/GuardrailConfiguration"
    },
    "InferenceConfiguration": {
     "$ref": "#/definitions/PromptInferenceConfiguration"
    },
    "KnowledgeBaseId": {
     "maxLength": 10,
     "pattern": "^[0-9a-zA-Z]+$",
     "type": "string"
    },
    "ModelId": {
     "maxLength": 2048,
     "minLength": 1,
     "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$",
     "type": "string"
    },
    "NumberOfResults": {
     "maximum": 100,
     "minimum": 1,
     "type": "number"
    },
    "OrchestrationConfiguration": {
     "$ref": "#/definitions/KnowledgeBaseOrchestrationConfiguration"
    },
    "PromptTemplate": {
     "$ref": "#/definitions/KnowledgeBasePromptTemplate"
    },
    "RerankingConfiguration": {
     "$ref": "#/definitions/VectorSearchRerankingConfiguration"
    }
   },
   "required": [
    "KnowledgeBaseId"
   ],
   "type": "object"
  },
  "KnowledgeBaseOrchestrationConfiguration": {
   "additionalProperties": false,
   "properties": {
    "AdditionalModelRequestFields": {
     "$ref": "#/definitions/AdditionalModelRequestFields"
    },
    "InferenceConfig": {
     "$ref": "#/definitions/PromptInferenceConfiguration"
    },
    "PerformanceConfig": {
     "$ref": "#/definitions/PerformanceConfiguration"
    },
    "PromptTemplate": {
     "$ref": "#/definitions/KnowledgeBasePromptTemplate"
    }
   },
   "title": "KnowledgeBaseOrchestrationConfiguration",
   "type": "object"
  },
  "KnowledgeBasePromptTemplate": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "TextPromptTemplate": {
       "maxLength": 100000,
       "minLength": 1,
       "type": "string"
      }
     },
     "required": [
      "TextPromptTemplate"
     ],
     "title": "Text",
     "type": "object"
    }
   ]
  },
  "LambdaFunctionFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "LambdaArn": {
     "format": "AWS::Lambda::Function.Arn",
     "maxLength": 2048,
     "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$",
     "type": "string"
    }
   },
   "required": [
    "LambdaArn"
   ],
   "type": "object"
  },
  "LexFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "BotAliasArn": {
     "maxLength": 78,
     "pattern": "^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$",
     "type": "string"
    },
    "LocaleId": {
     "maxLength": 10,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "BotAliasArn",
    "LocaleId"
   ],
   "type": "object"
  },
  "LoopControllerFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "ContinueCondition": {
     "$ref": "#/definitions/FlowCondition"
    },
    "MaxIterations": {
     "default": 10,
     "maximum": 1000,
     "minimum": 1,
     "type": "number"
    }
   },
   "required": [
    "ContinueCondition"
   ],
   "type": "object"
  },
  "LoopFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Definition": {
     "$ref": "#/definitions/FlowDefinition"
    }
   },
   "required": [
    "Definition"
   ],
   "type": "object"
  },
  "LoopInputFlowNodeConfiguration": {
   "additionalProperties": false,
   "type": "object"
  },
  "MetadataConfigurationForReranking": {
   "additionalProperties": false,
   "properties": {
    "SelectionMode": {
     "$ref": "#/definitions/RerankingMetadataSelectionMode"
    },
    "SelectiveModeConfiguration": {
     "$ref": "#/definitions/RerankingMetadataSelectiveModeConfiguration"
    }
   },
   "required": [
    "SelectionMode"
   ],
   "title": "MetadataConfigurationForReranking",
   "type": "object"
  },
  "OutputFlowNodeConfiguration": {
   "additionalProperties": false,
   "type": "object"
  },
  "PerformanceConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Latency": {
     "$ref": "#/definitions/PerformanceConfigurationLatency"
    }
   },
   "title": "PerformanceConfiguration",
   "type": "object"
  },
  "PerformanceConfigurationLatency": {
   "enum": [
    "standard",
    "optimized"
   ],
   "type": "string"
  },
  "PromptFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "GuardrailConfiguration": {
     "$ref": "#/definitions/GuardrailConfiguration"
    },
    "SourceConfiguration": {
     "$ref": "#/definitions/PromptFlowNodeSourceConfiguration"
    }
   },
   "required": [
    "SourceConfiguration"
   ],
   "type": "object"
  },
  "PromptFlowNodeInlineConfiguration": {
   "additionalProperties": false,
   "properties": {
    "InferenceConfiguration": {
     "$ref": "#/definitions/PromptInferenceConfiguration"
    },
    "ModelId": {
     "maxLength": 2048,
     "minLength": 1,
     "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$",
     "type": "string"
    },
    "TemplateConfiguration": {
     "$ref": "#/definitions/PromptTemplateConfiguration"
    },
    "TemplateType": {
     "$ref": "#/definitions/PromptTemplateType"
    }
   },
   "required": [
    "ModelId",
    "TemplateConfiguration",
    "TemplateType"
   ],
   "type": "object"
  },
  "PromptFlowNodeResourceConfiguration": {
   "additionalProperties": false,
   "properties": {
    "PromptArn": {
     "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$",
     "type": "string"
    }
   },
   "required": [
    "PromptArn"
   ],
   "type": "object"
  },
  "PromptFlowNodeSourceConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "Resource": {
       "$ref": "#/definitions/PromptFlowNodeResourceConfiguration"
      }
     },
     "required": [
      "Resource"
     ],
     "title": "Resource",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "Inline": {
       "$ref": "#/definitions/PromptFlowNodeInlineConfiguration"
      }
     },
     "required": [
      "Inline"
     ],
     "title": "Inline",
     "type": "object"
    }
   ]
  },
  "PromptInferenceConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "Text": {
       "$ref": "#/definitions/PromptModelInferenceConfiguration"
      }
     },
     "required": [
      "Text"
     ],
     "title": "Text",
     "type": "object"
    }
   ]
  },
  "PromptInputVariable": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "pattern": "^([0-9a-zA-Z][_-]?){1,100}$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "PromptModelInferenceConfiguration": {
   "additionalProperties": false,
   "properties": {
    "MaxTokens": {
     "maximum": 4096,
     "minimum": 0,
     "type": "number"
    },
    "StopSequences": {
     "insertionOrder": true,
     "items": {
      "type": "string"
     },
     "maxItems": 4,
     "minItems": 0,
     "type": "array"
    },
    "Temperature": {
     "maximum": 1,
     "minimum": 0,
     "type": "number"
    },
    "TopP": {
     "maximum": 1,
     "minimum": 0,
     "type": "number"
    }
   },
   "type": "object"
  },
  "PromptTemplateConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "Text": {
       "$ref": "#/definitions/TextPromptTemplateConfiguration"
      }
     },
     "required": [
      "Text"
     ],
     "title": "Text",
     "type": "object"
    }
   ]
  },
  "PromptTemplateType": {
   "enum": [
    "TEXT"
   ],
   "type": "string"
  },
  "RerankingMetadataSelectionMode": {
   "enum": [
    "SELECTIVE",
    "ALL"
   ],
   "type": "string"
  },
  "RerankingMetadataSelectiveModeConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "FieldsToInclude": {
       "$ref": "#/definitions/FieldsForReranking"
      }
     },
     "required": [
      "FieldsToInclude"
     ],
     "title": "FieldsToInclude",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "FieldsToExclude": {
       "$ref": "#/definitions/FieldsForReranking"
      }
     },
     "required": [
      "FieldsToExclude"
     ],
     "title": "FieldsToExclude",
     "type": "object"
    }
   ]
  },
  "RetrievalFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "ServiceConfiguration": {
     "$ref": "#/definitions/RetrievalFlowNodeServiceConfiguration"
    }
   },
   "required": [
    "ServiceConfiguration"
   ],
   "type": "object"
  },
  "RetrievalFlowNodeS3Configuration": {
   "additionalProperties": false,
   "properties": {
    "BucketName": {
     "format": "AWS::S3::Bucket.Name",
     "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$",
     "type": "string"
    }
   },
   "required": [
    "BucketName"
   ],
   "type": "object"
  },
  "RetrievalFlowNodeServiceConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "S3": {
       "$ref": "#/definitions/RetrievalFlowNodeS3Configuration"
      }
     },
     "title": "S3",
     "type": "object"
    }
   ]
  },
  "S3Location": {
   "additionalProperties": false,
   "properties": {
    "Bucket": {
     "maxLength": 63,
     "minLength": 3,
     "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$",
     "type": "string"
    },
    "Key": {
     "maxLength": 1024,
     "minLength": 1,
     "type": "string"
    },
    "Version": {
     "maxLength": 1024,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "Bucket",
    "Key"
   ],
   "type": "object"
  },
  "StorageFlowNodeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "ServiceConfiguration": {
     "$ref": "#/definitions/StorageFlowNodeServiceConfiguration"
    }
   },
   "required": [
    "ServiceConfiguration"
   ],
   "type": "object"
  },
  "StorageFlowNodeS3Configuration": {
   "additionalProperties": false,
   "properties": {
    "BucketName": {
     "format": "AWS::S3::Bucket.Name",
     "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$",
     "type": "string"
    }
   },
   "required": [
    "BucketName"
   ],
   "type": "object"
  },
  "StorageFlowNodeServiceConfiguration": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "S3": {
       "$ref": "#/definitions/StorageFlowNodeS3Configuration"
      }
     },
     "title": "S3",
     "type": "object"
    }
   ]
  },
  "SupportedLanguages": {
   "enum": [
    "Python_3"
   ],
   "type": "string"
  },
  "TagsMap": {
   "additionalProperties": false,
   "maxItems": 200,
   "minItems": 0,
   "patternProperties": {
    "^[a-zA-Z0-9\\s._:/=+@-]*$": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "TextPromptTemplateConfiguration": {
   "additionalProperties": false,
   "properties": {
    "InputVariables": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/PromptInputVariable"
     },
     "maxItems": 20,
     "minItems": 0,
     "type": "array"
    },
    "Text": {
     "maxLength": 200000,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "Text"
   ],
   "type": "object"
  },
  "VectorSearchBedrockRerankingConfiguration": {
   "additionalProperties": false,
   "properties": {
    "MetadataConfiguration": {
     "$ref": "#/definitions/MetadataConfigurationForReranking"
    },
    "ModelConfiguration": {
     "$ref": "#/definitions/VectorSearchBedrockRerankingModelConfiguration"
    },
    "NumberOfRerankedResults": {
     "maximum": 100,
     "minimum": 1,
     "type": "number"
    }
   },
   "required": [
    "ModelConfiguration"
   ],
   "title": "VectorSearchBedrockRerankingConfiguration",
   "type": "object"
  },
  "VectorSearchBedrockRerankingModelConfiguration": {
   "additionalProperties": false,
   "properties": {
    "AdditionalModelRequestFields": {
     "$ref": "#/definitions/AdditionalModelRequestFields"
    },
    "ModelArn": {
     "$ref": "#/definitions/BedrockRerankingModelArn"
    }
   },
   "required": [
    "ModelArn"
   ],
   "title": "VectorSearchBedrockRerankingModelConfiguration",
   "type": "object"
  },
  "VectorSearchRerankingConfiguration": {
   "additionalProperties": false,
   "properties": {
    "BedrockRerankingConfiguration": {
     "$ref": "#/definitions/VectorSearchBedrockRerankingConfiguration"
    },
    "Type": {
     "$ref": "#/definitions/VectorSearchRerankingConfigurationType"
    }
   },
   "required": [
    "Type"
   ],
   "title": "VectorSearchRerankingConfiguration",
   "type": "object"
  },
  "VectorSearchRerankingConfigurationType": {
   "enum": [
    "BEDROCK_RERANKING_MODEL"
   ],
   "type": "string"
  }
 },
 "primaryIdentifier": [
  "/properties/Arn"
 ],
 "properties": {
  "Arn": {
   "maxLength": 1011,
   "minLength": 20,
   "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$",
   "type": "string"
  },
  "CreatedAt": {
   "format": "date-time",
   "type": "string"
  },
  "CustomerEncryptionKeyArn": {
   "maxLength": 2048,
   "minLength": 1,
   "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$",
   "type": "string"
  },
  "Definition": {
   "$ref": "#/definitions/FlowDefinition"
  },
  "DefinitionS3Location": {
   "$ref": "#/definitions/S3Location"
  },
  "DefinitionString": {
   "maxLength": 512000,
   "type": "string"
  },
  "DefinitionSubstitutions": {
   "$ref": "#/definitions/DefinitionSubstitutions"
  },
  "Description": {
   "maxLength": 200,
   "minLength": 1,
   "type": "string"
  },
  "ExecutionRoleArn": {
   "format": "AWS::IAM::Role.Arn",
   "maxLength": 2048,
   "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$",
   "type": "string"
  },
  "Id": {
   "pattern": "^[0-9a-zA-Z]{10}$",
   "type": "string"
  },
  "Name": {
   "pattern": "^([0-9a-zA-Z][_-]?){1,100}$",
   "type": "string"
  },
  "Status": {
   "$ref": "#/definitions/FlowStatus"
  },
  "Tags": {
   "$ref": "#/definitions/TagsMap"
  },
  "TestAliasTags": {
   "$ref": "#/definitions/TagsMap"
  },
  "UpdatedAt": {
   "format": "date-time",
   "type": "string"
  },
  "Validations": {
   "$ref": "#/definitions/FlowValidations"
  },
  "Version": {
   "maxLength": 5,
   "minLength": 5,
   "pattern": "^DRAFT$",
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Arn",
  "/properties/CreatedAt",
  "/properties/Id",
  "/properties/Status",
  "/properties/UpdatedAt",
  "/properties/Version",
  "/properties/Validations"
 ],
 "required": [
  "ExecutionRoleArn",
  "Name"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows",
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::Bedrock::Flow",
 "writeOnlyProperties": [
  "/properties/DefinitionString",
  "/properties/DefinitionS3Location",
  "/properties/DefinitionSubstitutions"
 ]
}
