BEDROCK-AGENT

AssociateAgentKnowledgeBase

enum_KnowledgeBaseState := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.description == STRING
    input.Body.knowledgeBaseId == STRING
    input.Body.knowledgeBaseState == enum_KnowledgeBaseState[_]
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAgent

enum_CreationMode := [ "DEFAULT", "OVERRIDDEN" ]
enum_MemoryType := [ "SESSION_SUMMARY" ]
enum_PromptState := [ "ENABLED", "DISABLED" ]
enum_PromptType := [ "PRE_PROCESSING", "ORCHESTRATION", "POST_PROCESSING", "KNOWLEDGE_BASE_RESPONSE_GENERATION" ]

valid {
    input.Body.agentName == STRING
    input.Body.agentResourceRoleArn == STRING
    input.Body.clientToken == STRING
    input.Body.customerEncryptionKeyArn == STRING
    input.Body.description == STRING
    input.Body.foundationModel == STRING
    input.Body.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.guardrailConfiguration.guardrailVersion == STRING
    input.Body.idleSessionTTLInSeconds == INTEGER
    input.Body.instruction == STRING
    input.Body.memoryConfiguration.enabledMemoryTypes[_] == enum_MemoryType[_]
    input.Body.memoryConfiguration.storageDays == INTEGER
    input.Body.promptOverrideConfiguration.overrideLambda == STRING
    input.Body.promptOverrideConfiguration.promptConfigurations[_].basePromptTemplate == STRING
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.maximumLength == INTEGER
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.stopSequences[_] == STRING
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.temperature == FLOAT
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.topK == INTEGER
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.topP == FLOAT
    input.Body.promptOverrideConfiguration.promptConfigurations[_].parserMode == enum_CreationMode[_]
    input.Body.promptOverrideConfiguration.promptConfigurations[_].promptCreationMode == enum_CreationMode[_]
    input.Body.promptOverrideConfiguration.promptConfigurations[_].promptState == enum_PromptState[_]
    input.Body.promptOverrideConfiguration.promptConfigurations[_].promptType == enum_PromptType[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAgentActionGroup

enum_ActionGroupSignature := [ "AMAZON.UserInput", "AMAZON.CodeInterpreter" ]
enum_ActionGroupState := [ "ENABLED", "DISABLED" ]
enum_CustomControlMethod := [ "RETURN_CONTROL" ]
enum_RequireConfirmation := [ "ENABLED", "DISABLED" ]
enum_Type := [ "string", "number", "integer", "boolean", "array" ]

valid {
    input.Body.actionGroupExecutor.customControl == enum_CustomControlMethod[_]
    input.Body.actionGroupExecutor.lambda == STRING
    input.Body.actionGroupName == STRING
    input.Body.actionGroupState == enum_ActionGroupState[_]
    input.Body.apiSchema.payload == STRING
    input.Body.apiSchema.s3.s3BucketName == STRING
    input.Body.apiSchema.s3.s3ObjectKey == STRING
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.functionSchema.functions[_].description == STRING
    input.Body.functionSchema.functions[_].name == STRING
    input.Body.functionSchema.functions[_].parameters.STRING.description == STRING
    input.Body.functionSchema.functions[_].parameters.STRING.required == BOOLEAN
    input.Body.functionSchema.functions[_].parameters.STRING.type == enum_Type[_]
    input.Body.functionSchema.functions[_].requireConfirmation == enum_RequireConfirmation[_]
    input.Body.parentActionGroupSignature == enum_ActionGroupSignature[_]
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAgentAlias

valid {
    input.Body.agentAliasName == STRING
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.routingConfiguration[_].agentVersion == STRING
    input.Body.routingConfiguration[_].provisionedThroughput == STRING
    input.Body.tags.STRING == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateDataSource

enum_ChunkingStrategy := [ "FIXED_SIZE", "NONE", "HIERARCHICAL", "SEMANTIC" ]
enum_ConfluenceAuthType := [ "BASIC", "OAUTH2_CLIENT_CREDENTIALS" ]
enum_ConfluenceHostType := [ "SAAS" ]
enum_CrawlFilterConfigurationType := [ "PATTERN" ]
enum_DataDeletionPolicy := [ "RETAIN", "DELETE" ]
enum_DataSourceType := [ "S3", "WEB", "CONFLUENCE", "SALESFORCE", "SHAREPOINT" ]
enum_ParsingStrategy := [ "BEDROCK_FOUNDATION_MODEL" ]
enum_SalesforceAuthType := [ "OAUTH2_CLIENT_CREDENTIALS" ]
enum_SharePointAuthType := [ "OAUTH2_CLIENT_CREDENTIALS" ]
enum_SharePointHostType := [ "ONLINE" ]
enum_StepType := [ "POST_CHUNKING" ]
enum_WebScopeType := [ "HOST_ONLY", "SUBDOMAINS" ]

valid {
    input.Body.clientToken == STRING
    input.Body.dataDeletionPolicy == enum_DataDeletionPolicy[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].objectType == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.type == enum_CrawlFilterConfigurationType[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.authType == enum_ConfluenceAuthType[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.credentialsSecretArn == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.hostType == enum_ConfluenceHostType[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.hostUrl == STRING
    input.Body.dataSourceConfiguration.s3Configuration.bucketArn == STRING
    input.Body.dataSourceConfiguration.s3Configuration.bucketOwnerAccountId == STRING
    input.Body.dataSourceConfiguration.s3Configuration.inclusionPrefixes[_] == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].objectType == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.type == enum_CrawlFilterConfigurationType[_]
    input.Body.dataSourceConfiguration.salesforceConfiguration.sourceConfiguration.authType == enum_SalesforceAuthType[_]
    input.Body.dataSourceConfiguration.salesforceConfiguration.sourceConfiguration.credentialsSecretArn == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.sourceConfiguration.hostUrl == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].objectType == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.type == enum_CrawlFilterConfigurationType[_]
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.authType == enum_SharePointAuthType[_]
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.credentialsSecretArn == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.domain == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.hostType == enum_SharePointHostType[_]
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.siteUrls[_] == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.tenantId == STRING
    input.Body.dataSourceConfiguration.type == enum_DataSourceType[_]
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.crawlerLimits.rateLimit == INTEGER
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.scope == enum_WebScopeType[_]
    input.Body.dataSourceConfiguration.webConfiguration.sourceConfiguration.urlConfiguration.seedUrls[_].url == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.serverSideEncryptionConfiguration.kmsKeyArn == STRING
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.chunkingStrategy == enum_ChunkingStrategy[_]
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.fixedSizeChunkingConfiguration.maxTokens == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.fixedSizeChunkingConfiguration.overlapPercentage == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.hierarchicalChunkingConfiguration.levelConfigurations[_].maxTokens == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.hierarchicalChunkingConfiguration.overlapTokens == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.semanticChunkingConfiguration.breakpointPercentileThreshold == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.semanticChunkingConfiguration.bufferSize == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.semanticChunkingConfiguration.maxTokens == INTEGER
    input.Body.vectorIngestionConfiguration.customTransformationConfiguration.intermediateStorage.s3Location.uri == STRING
    input.Body.vectorIngestionConfiguration.customTransformationConfiguration.transformations[_].stepToApply == enum_StepType[_]
    input.Body.vectorIngestionConfiguration.customTransformationConfiguration.transformations[_].transformationFunction.transformationLambdaConfiguration.lambdaArn == STRING
    input.Body.vectorIngestionConfiguration.parsingConfiguration.bedrockFoundationModelConfiguration.modelArn == STRING
    input.Body.vectorIngestionConfiguration.parsingConfiguration.bedrockFoundationModelConfiguration.parsingPrompt.parsingPromptText == STRING
    input.Body.vectorIngestionConfiguration.parsingConfiguration.parsingStrategy == enum_ParsingStrategy[_]
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFlow

enum_ConversationRole := [ "user", "assistant" ]
enum_FlowConnectionType := [ "Data", "Conditional" ]
enum_FlowNodeIODataType := [ "String", "Number", "Boolean", "Object", "Array" ]
enum_FlowNodeType := [ "Input", "Output", "KnowledgeBase", "Condition", "Lex", "Prompt", "LambdaFunction", "Storage", "Agent", "Retrieval", "Iterator", "Collector" ]
enum_PromptTemplateType := [ "TEXT", "CHAT" ]

valid {
    input.Body.clientToken == STRING
    input.Body.customerEncryptionKeyArn == STRING
    input.Body.definition.connections[_].configuration.conditional.condition == STRING
    input.Body.definition.connections[_].configuration.data.sourceOutput == STRING
    input.Body.definition.connections[_].configuration.data.targetInput == STRING
    input.Body.definition.connections[_].name == STRING
    input.Body.definition.connections[_].source == STRING
    input.Body.definition.connections[_].target == STRING
    input.Body.definition.connections[_].type == enum_FlowConnectionType[_]
    input.Body.definition.nodes[_].configuration.agent.agentAliasArn == STRING
    input.Body.definition.nodes[_].configuration.collector == {}
    input.Body.definition.nodes[_].configuration.condition.conditions[_].expression == STRING
    input.Body.definition.nodes[_].configuration.condition.conditions[_].name == STRING
    input.Body.definition.nodes[_].configuration.input == {}
    input.Body.definition.nodes[_].configuration.iterator == {}
    input.Body.definition.nodes[_].configuration.knowledgeBase.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.guardrailConfiguration.guardrailVersion == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.knowledgeBaseId == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.modelId == STRING
    input.Body.definition.nodes[_].configuration.lambdaFunction.lambdaArn == STRING
    input.Body.definition.nodes[_].configuration.lex.botAliasArn == STRING
    input.Body.definition.nodes[_].configuration.lex.localeId == STRING
    input.Body.definition.nodes[_].configuration.output == {}
    input.Body.definition.nodes[_].configuration.prompt.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.definition.nodes[_].configuration.prompt.guardrailConfiguration.guardrailVersion == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.additionalModelRequestFields == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.maxTokens == INTEGER
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.stopSequences[_] == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.temperature == FLOAT
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.topP == FLOAT
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.modelId == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.inputVariables[_].name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.messages[_].content[_].text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.messages[_].role == enum_ConversationRole[_]
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.system[_].text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.any == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.auto == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.tool.name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.description == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.inputSchema.json == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.text.inputVariables[_].name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.text.text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateType == enum_PromptTemplateType[_]
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.resource.promptArn == STRING
    input.Body.definition.nodes[_].configuration.retrieval.serviceConfiguration.s3.bucketName == STRING
    input.Body.definition.nodes[_].configuration.storage.serviceConfiguration.s3.bucketName == STRING
    input.Body.definition.nodes[_].inputs[_].expression == STRING
    input.Body.definition.nodes[_].inputs[_].name == STRING
    input.Body.definition.nodes[_].inputs[_].type == enum_FlowNodeIODataType[_]
    input.Body.definition.nodes[_].name == STRING
    input.Body.definition.nodes[_].outputs[_].name == STRING
    input.Body.definition.nodes[_].outputs[_].type == enum_FlowNodeIODataType[_]
    input.Body.definition.nodes[_].type == enum_FlowNodeType[_]
    input.Body.description == STRING
    input.Body.executionRoleArn == STRING
    input.Body.name == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFlowAlias

valid {
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.routingConfiguration[_].flowVersion == STRING
    input.Body.tags.STRING == STRING
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFlowVersion

valid {
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateKnowledgeBase

enum_KnowledgeBaseStorageType := [ "OPENSEARCH_SERVERLESS", "PINECONE", "REDIS_ENTERPRISE_CLOUD", "RDS", "MONGO_DB_ATLAS" ]
enum_KnowledgeBaseType := [ "VECTOR" ]

valid {
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.knowledgeBaseConfiguration.type == enum_KnowledgeBaseType[_]
    input.Body.knowledgeBaseConfiguration.vectorKnowledgeBaseConfiguration.embeddingModelArn == STRING
    input.Body.knowledgeBaseConfiguration.vectorKnowledgeBaseConfiguration.embeddingModelConfiguration.bedrockEmbeddingModelConfiguration.dimensions == INTEGER
    input.Body.name == STRING
    input.Body.roleArn == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.collectionName == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.databaseName == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.endpoint == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.endpointServiceName == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.vectorIndexName == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.collectionArn == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.vectorIndexName == STRING
    input.Body.storageConfiguration.pineconeConfiguration.connectionString == STRING
    input.Body.storageConfiguration.pineconeConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.pineconeConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.pineconeConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.pineconeConfiguration.namespace == STRING
    input.Body.storageConfiguration.rdsConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.rdsConfiguration.databaseName == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.primaryKeyField == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.rdsConfiguration.resourceArn == STRING
    input.Body.storageConfiguration.rdsConfiguration.tableName == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.endpoint == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.vectorIndexName == STRING
    input.Body.storageConfiguration.type == enum_KnowledgeBaseStorageType[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePrompt

enum_ConversationRole := [ "user", "assistant" ]
enum_PromptTemplateType := [ "TEXT", "CHAT" ]

valid {
    input.Body.clientToken == STRING
    input.Body.customerEncryptionKeyArn == STRING
    input.Body.defaultVariant == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.tags.STRING == STRING
    input.Body.variants[_].additionalModelRequestFields == {}
    input.Body.variants[_].genAiResource.agent.agentIdentifier == STRING
    input.Body.variants[_].inferenceConfiguration.text.maxTokens == INTEGER
    input.Body.variants[_].inferenceConfiguration.text.stopSequences[_] == STRING
    input.Body.variants[_].inferenceConfiguration.text.temperature == FLOAT
    input.Body.variants[_].inferenceConfiguration.text.topP == FLOAT
    input.Body.variants[_].metadata[_].key == STRING
    input.Body.variants[_].metadata[_].value == STRING
    input.Body.variants[_].modelId == STRING
    input.Body.variants[_].name == STRING
    input.Body.variants[_].templateConfiguration.chat.inputVariables[_].name == STRING
    input.Body.variants[_].templateConfiguration.chat.messages[_].content[_].text == STRING
    input.Body.variants[_].templateConfiguration.chat.messages[_].role == enum_ConversationRole[_]
    input.Body.variants[_].templateConfiguration.chat.system[_].text == STRING
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.toolChoice.any == {}
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.toolChoice.auto == {}
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.toolChoice.tool.name == STRING
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.description == STRING
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.inputSchema.json == {}
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.name == STRING
    input.Body.variants[_].templateConfiguration.text.inputVariables[_].name == STRING
    input.Body.variants[_].templateConfiguration.text.text == STRING
    input.Body.variants[_].templateType == enum_PromptTemplateType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePromptVersion

valid {
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.tags.STRING == STRING
    input.ReqMap.promptIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAgent

valid {
    input.ReqMap.agentId == STRING
    input.Qs.skipResourceInUseCheck == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAgentActionGroup

valid {
    input.ReqMap.actionGroupId == STRING
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.Qs.skipResourceInUseCheck == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAgentAlias

valid {
    input.ReqMap.agentAliasId == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAgentVersion

valid {
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.Qs.skipResourceInUseCheck == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteDataSource

valid {
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteFlow

valid {
    input.ReqMap.flowIdentifier == STRING
    input.Qs.skipResourceInUseCheck == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteFlowAlias

valid {
    input.ReqMap.aliasIdentifier == STRING
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteFlowVersion

valid {
    input.ReqMap.flowIdentifier == STRING
    input.ReqMap.flowVersion == STRING
    input.Qs.skipResourceInUseCheck == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteKnowledgeBase

valid {
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeletePrompt

valid {
    input.ReqMap.promptIdentifier == STRING
    input.Qs.promptVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateAgentKnowledgeBase

valid {
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAgent

valid {
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAgentActionGroup

valid {
    input.ReqMap.actionGroupId == STRING
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAgentAlias

valid {
    input.ReqMap.agentAliasId == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAgentKnowledgeBase

valid {
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAgentVersion

valid {
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetDataSource

valid {
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetFlow

valid {
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetFlowAlias

valid {
    input.ReqMap.aliasIdentifier == STRING
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetFlowVersion

valid {
    input.ReqMap.flowIdentifier == STRING
    input.ReqMap.flowVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIngestionJob

valid {
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.ingestionJobId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetKnowledgeBase

valid {
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetPrompt

valid {
    input.ReqMap.promptIdentifier == STRING
    input.Qs.promptVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAgentActionGroups

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAgentAliases

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAgentKnowledgeBases

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAgentVersions

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAgents

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDataSources

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFlowAliases

valid {
    input.ReqMap.flowIdentifier == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFlowVersions

valid {
    input.ReqMap.flowIdentifier == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFlows

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListIngestionJobs

enum_IngestionJobFilterAttribute := [ "STATUS" ]
enum_IngestionJobFilterOperator := [ "EQ" ]
enum_IngestionJobSortByAttribute := [ "STATUS", "STARTED_AT" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.filters[_].attribute == enum_IngestionJobFilterAttribute[_]
    input.Body.filters[_].operator == enum_IngestionJobFilterOperator[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.sortBy.attribute == enum_IngestionJobSortByAttribute[_]
    input.Body.sortBy.order == enum_SortOrder[_]
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListKnowledgeBases

valid {
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListPrompts

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.Qs.promptIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.ReqMap.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PrepareAgent

valid {
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PrepareFlow

valid {
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartIngestionJob

valid {
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopIngestionJob

valid {
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.ingestionJobId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.tags.STRING == STRING
    input.ReqMap.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

valid {
    input.ReqMap.resourceArn == STRING
    input.Qs.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAgent

enum_CreationMode := [ "DEFAULT", "OVERRIDDEN" ]
enum_MemoryType := [ "SESSION_SUMMARY" ]
enum_PromptState := [ "ENABLED", "DISABLED" ]
enum_PromptType := [ "PRE_PROCESSING", "ORCHESTRATION", "POST_PROCESSING", "KNOWLEDGE_BASE_RESPONSE_GENERATION" ]

valid {
    input.Body.agentName == STRING
    input.Body.agentResourceRoleArn == STRING
    input.Body.customerEncryptionKeyArn == STRING
    input.Body.description == STRING
    input.Body.foundationModel == STRING
    input.Body.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.guardrailConfiguration.guardrailVersion == STRING
    input.Body.idleSessionTTLInSeconds == INTEGER
    input.Body.instruction == STRING
    input.Body.memoryConfiguration.enabledMemoryTypes[_] == enum_MemoryType[_]
    input.Body.memoryConfiguration.storageDays == INTEGER
    input.Body.promptOverrideConfiguration.overrideLambda == STRING
    input.Body.promptOverrideConfiguration.promptConfigurations[_].basePromptTemplate == STRING
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.maximumLength == INTEGER
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.stopSequences[_] == STRING
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.temperature == FLOAT
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.topK == INTEGER
    input.Body.promptOverrideConfiguration.promptConfigurations[_].inferenceConfiguration.topP == FLOAT
    input.Body.promptOverrideConfiguration.promptConfigurations[_].parserMode == enum_CreationMode[_]
    input.Body.promptOverrideConfiguration.promptConfigurations[_].promptCreationMode == enum_CreationMode[_]
    input.Body.promptOverrideConfiguration.promptConfigurations[_].promptState == enum_PromptState[_]
    input.Body.promptOverrideConfiguration.promptConfigurations[_].promptType == enum_PromptType[_]
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAgentActionGroup

enum_ActionGroupSignature := [ "AMAZON.UserInput", "AMAZON.CodeInterpreter" ]
enum_ActionGroupState := [ "ENABLED", "DISABLED" ]
enum_CustomControlMethod := [ "RETURN_CONTROL" ]
enum_RequireConfirmation := [ "ENABLED", "DISABLED" ]
enum_Type := [ "string", "number", "integer", "boolean", "array" ]

valid {
    input.Body.actionGroupExecutor.customControl == enum_CustomControlMethod[_]
    input.Body.actionGroupExecutor.lambda == STRING
    input.Body.actionGroupName == STRING
    input.Body.actionGroupState == enum_ActionGroupState[_]
    input.Body.apiSchema.payload == STRING
    input.Body.apiSchema.s3.s3BucketName == STRING
    input.Body.apiSchema.s3.s3ObjectKey == STRING
    input.Body.description == STRING
    input.Body.functionSchema.functions[_].description == STRING
    input.Body.functionSchema.functions[_].name == STRING
    input.Body.functionSchema.functions[_].parameters.STRING.description == STRING
    input.Body.functionSchema.functions[_].parameters.STRING.required == BOOLEAN
    input.Body.functionSchema.functions[_].parameters.STRING.type == enum_Type[_]
    input.Body.functionSchema.functions[_].requireConfirmation == enum_RequireConfirmation[_]
    input.Body.parentActionGroupSignature == enum_ActionGroupSignature[_]
    input.ReqMap.actionGroupId == STRING
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAgentAlias

valid {
    input.Body.agentAliasName == STRING
    input.Body.description == STRING
    input.Body.routingConfiguration[_].agentVersion == STRING
    input.Body.routingConfiguration[_].provisionedThroughput == STRING
    input.ReqMap.agentAliasId == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAgentKnowledgeBase

enum_KnowledgeBaseState := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.description == STRING
    input.Body.knowledgeBaseState == enum_KnowledgeBaseState[_]
    input.ReqMap.agentId == STRING
    input.ReqMap.agentVersion == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateDataSource

enum_ChunkingStrategy := [ "FIXED_SIZE", "NONE", "HIERARCHICAL", "SEMANTIC" ]
enum_ConfluenceAuthType := [ "BASIC", "OAUTH2_CLIENT_CREDENTIALS" ]
enum_ConfluenceHostType := [ "SAAS" ]
enum_CrawlFilterConfigurationType := [ "PATTERN" ]
enum_DataDeletionPolicy := [ "RETAIN", "DELETE" ]
enum_DataSourceType := [ "S3", "WEB", "CONFLUENCE", "SALESFORCE", "SHAREPOINT" ]
enum_ParsingStrategy := [ "BEDROCK_FOUNDATION_MODEL" ]
enum_SalesforceAuthType := [ "OAUTH2_CLIENT_CREDENTIALS" ]
enum_SharePointAuthType := [ "OAUTH2_CLIENT_CREDENTIALS" ]
enum_SharePointHostType := [ "ONLINE" ]
enum_StepType := [ "POST_CHUNKING" ]
enum_WebScopeType := [ "HOST_ONLY", "SUBDOMAINS" ]

valid {
    input.Body.dataDeletionPolicy == enum_DataDeletionPolicy[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].objectType == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.crawlerConfiguration.filterConfiguration.type == enum_CrawlFilterConfigurationType[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.authType == enum_ConfluenceAuthType[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.credentialsSecretArn == STRING
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.hostType == enum_ConfluenceHostType[_]
    input.Body.dataSourceConfiguration.confluenceConfiguration.sourceConfiguration.hostUrl == STRING
    input.Body.dataSourceConfiguration.s3Configuration.bucketArn == STRING
    input.Body.dataSourceConfiguration.s3Configuration.bucketOwnerAccountId == STRING
    input.Body.dataSourceConfiguration.s3Configuration.inclusionPrefixes[_] == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].objectType == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.crawlerConfiguration.filterConfiguration.type == enum_CrawlFilterConfigurationType[_]
    input.Body.dataSourceConfiguration.salesforceConfiguration.sourceConfiguration.authType == enum_SalesforceAuthType[_]
    input.Body.dataSourceConfiguration.salesforceConfiguration.sourceConfiguration.credentialsSecretArn == STRING
    input.Body.dataSourceConfiguration.salesforceConfiguration.sourceConfiguration.hostUrl == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.patternObjectFilter.filters[_].objectType == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.crawlerConfiguration.filterConfiguration.type == enum_CrawlFilterConfigurationType[_]
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.authType == enum_SharePointAuthType[_]
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.credentialsSecretArn == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.domain == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.hostType == enum_SharePointHostType[_]
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.siteUrls[_] == STRING
    input.Body.dataSourceConfiguration.sharePointConfiguration.sourceConfiguration.tenantId == STRING
    input.Body.dataSourceConfiguration.type == enum_DataSourceType[_]
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.crawlerLimits.rateLimit == INTEGER
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.exclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.inclusionFilters[_] == STRING
    input.Body.dataSourceConfiguration.webConfiguration.crawlerConfiguration.scope == enum_WebScopeType[_]
    input.Body.dataSourceConfiguration.webConfiguration.sourceConfiguration.urlConfiguration.seedUrls[_].url == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.serverSideEncryptionConfiguration.kmsKeyArn == STRING
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.chunkingStrategy == enum_ChunkingStrategy[_]
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.fixedSizeChunkingConfiguration.maxTokens == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.fixedSizeChunkingConfiguration.overlapPercentage == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.hierarchicalChunkingConfiguration.levelConfigurations[_].maxTokens == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.hierarchicalChunkingConfiguration.overlapTokens == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.semanticChunkingConfiguration.breakpointPercentileThreshold == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.semanticChunkingConfiguration.bufferSize == INTEGER
    input.Body.vectorIngestionConfiguration.chunkingConfiguration.semanticChunkingConfiguration.maxTokens == INTEGER
    input.Body.vectorIngestionConfiguration.customTransformationConfiguration.intermediateStorage.s3Location.uri == STRING
    input.Body.vectorIngestionConfiguration.customTransformationConfiguration.transformations[_].stepToApply == enum_StepType[_]
    input.Body.vectorIngestionConfiguration.customTransformationConfiguration.transformations[_].transformationFunction.transformationLambdaConfiguration.lambdaArn == STRING
    input.Body.vectorIngestionConfiguration.parsingConfiguration.bedrockFoundationModelConfiguration.modelArn == STRING
    input.Body.vectorIngestionConfiguration.parsingConfiguration.bedrockFoundationModelConfiguration.parsingPrompt.parsingPromptText == STRING
    input.Body.vectorIngestionConfiguration.parsingConfiguration.parsingStrategy == enum_ParsingStrategy[_]
    input.ReqMap.dataSourceId == STRING
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFlow

enum_ConversationRole := [ "user", "assistant" ]
enum_FlowConnectionType := [ "Data", "Conditional" ]
enum_FlowNodeIODataType := [ "String", "Number", "Boolean", "Object", "Array" ]
enum_FlowNodeType := [ "Input", "Output", "KnowledgeBase", "Condition", "Lex", "Prompt", "LambdaFunction", "Storage", "Agent", "Retrieval", "Iterator", "Collector" ]
enum_PromptTemplateType := [ "TEXT", "CHAT" ]

valid {
    input.Body.customerEncryptionKeyArn == STRING
    input.Body.definition.connections[_].configuration.conditional.condition == STRING
    input.Body.definition.connections[_].configuration.data.sourceOutput == STRING
    input.Body.definition.connections[_].configuration.data.targetInput == STRING
    input.Body.definition.connections[_].name == STRING
    input.Body.definition.connections[_].source == STRING
    input.Body.definition.connections[_].target == STRING
    input.Body.definition.connections[_].type == enum_FlowConnectionType[_]
    input.Body.definition.nodes[_].configuration.agent.agentAliasArn == STRING
    input.Body.definition.nodes[_].configuration.collector == {}
    input.Body.definition.nodes[_].configuration.condition.conditions[_].expression == STRING
    input.Body.definition.nodes[_].configuration.condition.conditions[_].name == STRING
    input.Body.definition.nodes[_].configuration.input == {}
    input.Body.definition.nodes[_].configuration.iterator == {}
    input.Body.definition.nodes[_].configuration.knowledgeBase.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.guardrailConfiguration.guardrailVersion == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.knowledgeBaseId == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.modelId == STRING
    input.Body.definition.nodes[_].configuration.lambdaFunction.lambdaArn == STRING
    input.Body.definition.nodes[_].configuration.lex.botAliasArn == STRING
    input.Body.definition.nodes[_].configuration.lex.localeId == STRING
    input.Body.definition.nodes[_].configuration.output == {}
    input.Body.definition.nodes[_].configuration.prompt.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.definition.nodes[_].configuration.prompt.guardrailConfiguration.guardrailVersion == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.additionalModelRequestFields == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.maxTokens == INTEGER
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.stopSequences[_] == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.temperature == FLOAT
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.topP == FLOAT
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.modelId == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.inputVariables[_].name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.messages[_].content[_].text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.messages[_].role == enum_ConversationRole[_]
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.system[_].text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.any == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.auto == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.tool.name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.description == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.inputSchema.json == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.text.inputVariables[_].name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.text.text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateType == enum_PromptTemplateType[_]
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.resource.promptArn == STRING
    input.Body.definition.nodes[_].configuration.retrieval.serviceConfiguration.s3.bucketName == STRING
    input.Body.definition.nodes[_].configuration.storage.serviceConfiguration.s3.bucketName == STRING
    input.Body.definition.nodes[_].inputs[_].expression == STRING
    input.Body.definition.nodes[_].inputs[_].name == STRING
    input.Body.definition.nodes[_].inputs[_].type == enum_FlowNodeIODataType[_]
    input.Body.definition.nodes[_].name == STRING
    input.Body.definition.nodes[_].outputs[_].name == STRING
    input.Body.definition.nodes[_].outputs[_].type == enum_FlowNodeIODataType[_]
    input.Body.definition.nodes[_].type == enum_FlowNodeType[_]
    input.Body.description == STRING
    input.Body.executionRoleArn == STRING
    input.Body.name == STRING
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFlowAlias

valid {
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.routingConfiguration[_].flowVersion == STRING
    input.ReqMap.aliasIdentifier == STRING
    input.ReqMap.flowIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateKnowledgeBase

enum_KnowledgeBaseStorageType := [ "OPENSEARCH_SERVERLESS", "PINECONE", "REDIS_ENTERPRISE_CLOUD", "RDS", "MONGO_DB_ATLAS" ]
enum_KnowledgeBaseType := [ "VECTOR" ]

valid {
    input.Body.description == STRING
    input.Body.knowledgeBaseConfiguration.type == enum_KnowledgeBaseType[_]
    input.Body.knowledgeBaseConfiguration.vectorKnowledgeBaseConfiguration.embeddingModelArn == STRING
    input.Body.knowledgeBaseConfiguration.vectorKnowledgeBaseConfiguration.embeddingModelConfiguration.bedrockEmbeddingModelConfiguration.dimensions == INTEGER
    input.Body.name == STRING
    input.Body.roleArn == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.collectionName == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.databaseName == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.endpoint == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.endpointServiceName == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.mongoDbAtlasConfiguration.vectorIndexName == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.collectionArn == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.opensearchServerlessConfiguration.vectorIndexName == STRING
    input.Body.storageConfiguration.pineconeConfiguration.connectionString == STRING
    input.Body.storageConfiguration.pineconeConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.pineconeConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.pineconeConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.pineconeConfiguration.namespace == STRING
    input.Body.storageConfiguration.rdsConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.rdsConfiguration.databaseName == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.primaryKeyField == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.rdsConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.rdsConfiguration.resourceArn == STRING
    input.Body.storageConfiguration.rdsConfiguration.tableName == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.credentialsSecretArn == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.endpoint == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.fieldMapping.metadataField == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.fieldMapping.textField == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.fieldMapping.vectorField == STRING
    input.Body.storageConfiguration.redisEnterpriseCloudConfiguration.vectorIndexName == STRING
    input.Body.storageConfiguration.type == enum_KnowledgeBaseStorageType[_]
    input.ReqMap.knowledgeBaseId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdatePrompt

enum_ConversationRole := [ "user", "assistant" ]
enum_PromptTemplateType := [ "TEXT", "CHAT" ]

valid {
    input.Body.customerEncryptionKeyArn == STRING
    input.Body.defaultVariant == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.variants[_].additionalModelRequestFields == {}
    input.Body.variants[_].genAiResource.agent.agentIdentifier == STRING
    input.Body.variants[_].inferenceConfiguration.text.maxTokens == INTEGER
    input.Body.variants[_].inferenceConfiguration.text.stopSequences[_] == STRING
    input.Body.variants[_].inferenceConfiguration.text.temperature == FLOAT
    input.Body.variants[_].inferenceConfiguration.text.topP == FLOAT
    input.Body.variants[_].metadata[_].key == STRING
    input.Body.variants[_].metadata[_].value == STRING
    input.Body.variants[_].modelId == STRING
    input.Body.variants[_].name == STRING
    input.Body.variants[_].templateConfiguration.chat.inputVariables[_].name == STRING
    input.Body.variants[_].templateConfiguration.chat.messages[_].content[_].text == STRING
    input.Body.variants[_].templateConfiguration.chat.messages[_].role == enum_ConversationRole[_]
    input.Body.variants[_].templateConfiguration.chat.system[_].text == STRING
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.toolChoice.any == {}
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.toolChoice.auto == {}
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.toolChoice.tool.name == STRING
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.description == STRING
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.inputSchema.json == {}
    input.Body.variants[_].templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.name == STRING
    input.Body.variants[_].templateConfiguration.text.inputVariables[_].name == STRING
    input.Body.variants[_].templateConfiguration.text.text == STRING
    input.Body.variants[_].templateType == enum_PromptTemplateType[_]
    input.ReqMap.promptIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ValidateFlowDefinition

enum_ConversationRole := [ "user", "assistant" ]
enum_FlowConnectionType := [ "Data", "Conditional" ]
enum_FlowNodeIODataType := [ "String", "Number", "Boolean", "Object", "Array" ]
enum_FlowNodeType := [ "Input", "Output", "KnowledgeBase", "Condition", "Lex", "Prompt", "LambdaFunction", "Storage", "Agent", "Retrieval", "Iterator", "Collector" ]
enum_PromptTemplateType := [ "TEXT", "CHAT" ]

valid {
    input.Body.definition.connections[_].configuration.conditional.condition == STRING
    input.Body.definition.connections[_].configuration.data.sourceOutput == STRING
    input.Body.definition.connections[_].configuration.data.targetInput == STRING
    input.Body.definition.connections[_].name == STRING
    input.Body.definition.connections[_].source == STRING
    input.Body.definition.connections[_].target == STRING
    input.Body.definition.connections[_].type == enum_FlowConnectionType[_]
    input.Body.definition.nodes[_].configuration.agent.agentAliasArn == STRING
    input.Body.definition.nodes[_].configuration.collector == {}
    input.Body.definition.nodes[_].configuration.condition.conditions[_].expression == STRING
    input.Body.definition.nodes[_].configuration.condition.conditions[_].name == STRING
    input.Body.definition.nodes[_].configuration.input == {}
    input.Body.definition.nodes[_].configuration.iterator == {}
    input.Body.definition.nodes[_].configuration.knowledgeBase.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.guardrailConfiguration.guardrailVersion == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.knowledgeBaseId == STRING
    input.Body.definition.nodes[_].configuration.knowledgeBase.modelId == STRING
    input.Body.definition.nodes[_].configuration.lambdaFunction.lambdaArn == STRING
    input.Body.definition.nodes[_].configuration.lex.botAliasArn == STRING
    input.Body.definition.nodes[_].configuration.lex.localeId == STRING
    input.Body.definition.nodes[_].configuration.output == {}
    input.Body.definition.nodes[_].configuration.prompt.guardrailConfiguration.guardrailIdentifier == STRING
    input.Body.definition.nodes[_].configuration.prompt.guardrailConfiguration.guardrailVersion == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.additionalModelRequestFields == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.maxTokens == INTEGER
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.stopSequences[_] == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.temperature == FLOAT
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.inferenceConfiguration.text.topP == FLOAT
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.modelId == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.inputVariables[_].name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.messages[_].content[_].text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.messages[_].role == enum_ConversationRole[_]
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.system[_].text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.any == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.auto == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.toolChoice.tool.name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.description == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.inputSchema.json == {}
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.chat.toolConfiguration.tools[_].toolSpec.name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.text.inputVariables[_].name == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateConfiguration.text.text == STRING
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.inline.templateType == enum_PromptTemplateType[_]
    input.Body.definition.nodes[_].configuration.prompt.sourceConfiguration.resource.promptArn == STRING
    input.Body.definition.nodes[_].configuration.retrieval.serviceConfiguration.s3.bucketName == STRING
    input.Body.definition.nodes[_].configuration.storage.serviceConfiguration.s3.bucketName == STRING
    input.Body.definition.nodes[_].inputs[_].expression == STRING
    input.Body.definition.nodes[_].inputs[_].name == STRING
    input.Body.definition.nodes[_].inputs[_].type == enum_FlowNodeIODataType[_]
    input.Body.definition.nodes[_].name == STRING
    input.Body.definition.nodes[_].outputs[_].name == STRING
    input.Body.definition.nodes[_].outputs[_].type == enum_FlowNodeIODataType[_]
    input.Body.definition.nodes[_].type == enum_FlowNodeType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}