{
  "Description": "(SO0276) - generative-ai-application-builder-on-aws - DeploymentPlatformStack - Version v4.1.11",
  "Metadata": {
    "AWS::CloudFormation::Interface": {
      "ParameterGroups": [
        {
          "Label": {
            "default": "Please provide admin user email"
          },
          "Parameters": [
            "AdminUserEmail"
          ]
        },
        {
          "Label": {
            "default": "Optional: If you would like to deploy the solution with a VPC Configuration"
          },
          "Parameters": [
            "VpcEnabled",
            "CreateNewVpc",
            "IPAMPoolId"
          ]
        },
        {
          "Label": {
            "default": "Optional: If you would like to deploy the solution with a Web Application"
          },
          "Parameters": [
            "DeployUI"
          ]
        },
        {
          "Label": {
            "default": "Optional: Existing VPC configuration to use, if you would like to deploy the solution in a VPC and with your existing VPC configuration."
          },
          "Parameters": [
            "ExistingVpcId",
            "ExistingPrivateSubnetIds",
            "ExistingSecurityGroupIds",
            "VpcAzs"
          ]
        },
        {
          "Label": {
            "default": "Optional: If you would like to provide a sub domain for the UserPoolClient configuration. If not provided, a hashed value using the AWS Account number, current region, and stack name, will be used as sub-domain name"
          },
          "Parameters": [
            "CognitoDomainPrefix"
          ]
        },
        {
          "Label": {
            "default": "Optional: Provide existing Cognito UserPool and UserPoolClient IDs if you want to use your own managed resources. If left empty, the solution will manage these resources for you. Note: To prevent the creation of Cognito resources within the user pool (Users/Groups), simply leave the AdminUserEmail parameter empty."
          },
          "Parameters": [
            "ExistingCognitoUserPoolId",
            "ExistingCognitoUserPoolClient"
          ]
        }
      ]
    }
  },
  "Parameters": {
    "ExistingCognitoUserPoolId": {
      "Type": "String",
      "Default": "",
      "AllowedPattern": "^$|^[0-9a-zA-Z_-]{9,24}$",
      "Description": "Optional - UserPoolId of an existing cognito user pool which this use case will be authenticated with. Typically will be provided when deploying from the deployment platform, but can be omitted when deploying this use-case stack standalone.",
      "MaxLength": 24
    },
    "ExistingCognitoUserPoolClient": {
      "Type": "String",
      "Default": "",
      "AllowedPattern": "^$|^[a-z0-9]{3,128}$",
      "Description": "Optional - Provide a User Pool Client (App Client) to use an existing one. If not provided a new User Pool Client will be created. This parameter can only be provided if an existing User Pool Id is provided",
      "MaxLength": 128
    },
    "CognitoDomainPrefix": {
      "Type": "String",
      "Default": "",
      "AllowedPattern": "^$|^[a-z0-9](?:[a-z0-9\\-]{0,61}[a-z0-9])?$",
      "ConstraintDescription": "The provided domain prefix is not a valid format. The domain prefix should be be of the following format \"^[a-z0-9](?:[a-z0-9\\-]{0,61}[a-z0-9])?$\"",
      "Description": "If you would like to provide a domain for the Cognito User Pool Client, please enter a value. If a value is not provided, the deployment will generate one",
      "MaxLength": 63
    },
    "VpcEnabled": {
      "Type": "String",
      "Default": "No",
      "AllowedPattern": "^Yes|No$",
      "AllowedValues": [
        "Yes",
        "No"
      ],
      "Description": "Should the stacks resources be deployed within a VPC"
    },
    "CreateNewVpc": {
      "Type": "String",
      "Default": "No",
      "AllowedPattern": "^Yes|No$",
      "AllowedValues": [
        "Yes",
        "No"
      ],
      "Description": "Select \"Yes\", if you would like to create a new VPC"
    },
    "IPAMPoolId": {
      "Type": "String",
      "Default": "",
      "AllowedPattern": "^$|^ipam-pool-([0-9a-zA-Z])+$",
      "ConstraintDescription": "The provided IPAM Pool Id is not a valid format. IPAM Id should be be of the following format \"^ipam-pool-([0-9a-zA-Z])+$\"",
      "Description": "If you would like to assign the CIDR range using AWS VPC IP Address Manager, please provide the IPAM pool Id to use",
      "MaxLength": 50
    },
    "DeployUI": {
      "Type": "String",
      "Default": "Yes",
      "AllowedValues": [
        "Yes",
        "No"
      ],
      "Description": "Please select the option to deploy the front end UI for this deployment. Selecting No, will only create the infrastructure to host the APIs, the authentication for the APIs, and backend processing"
    },
    "ExistingVpcId": {
      "Type": "String",
      "Default": "",
      "AllowedPattern": "^$|^vpc-\\w{8}(\\w{9})?$",
      "Description": "VPC ID of an existing VPC to be used for the use case."
    },
    "ExistingPrivateSubnetIds": {
      "Type": "CommaDelimitedList",
      "Default": "",
      "AllowedPattern": "^$|^subnet-\\w{8}(\\w{9})?$",
      "ConstraintDescription": "If using an existing VPC configuration, please provide a valid list of subnet Ids for AWS Lambda function configuration",
      "Description": "Comma separated list of subnet IDs of existing private subnets to be used to deploy the AWS Lambda function"
    },
    "VpcAzs": {
      "Type": "CommaDelimitedList",
      "Default": "",
      "AllowedPattern": "^$|^[a-z0-9-]+$",
      "ConstraintDescription": "If using an existing VPC, please provide a valid list of AZs",
      "Description": "Comma separated list of AZs in which subnets of the VPCs are created"
    },
    "ExistingSecurityGroupIds": {
      "Type": "CommaDelimitedList",
      "Default": "",
      "AllowedPattern": "^$|^sg-\\w{8}(\\w{9})?$",
      "ConstraintDescription": "If using an existing VPC, please provide a valid list of Security Group IDs for AWS Lambda function configuration",
      "Description": "Comma separated list of security groups of the existing vpc to be used for configuring lambda functions"
    },
    "AdminUserEmail": {
      "Type": "String",
      "AllowedPattern": "^$|[A-Za-z0-9_!#$%&'*+/=?`{|}~^.-]+@[A-Za-z0-9.-]+$",
      "ConstraintDescription": "Please provide a valid email",
      "Description": "Optional - Email used to create the default cognito user for the admin platform. If empty, the Cognito User, Group and Attachment will not be created."
    }
  },
  "Resources": {
    "DeploymentPlatformSetupAccessLog67D5D503": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "This S3 bucket is used as the access logging bucket for another bucket",
              "id": "AwsSolutions-S1"
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "F14",
              "reason": "This bucket is used as an access logging bucket and hence requires PublicReadWrite ACL configuration"
            },
            {
              "id": "W35",
              "reason": "The bucket is an access logging and hence it does not have an access log configured for itself"
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupAccessLogPolicy2FB262B2": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "DeploymentPlatformSetupAccessLog67D5D503"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformSetupAccessLog67D5D503",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DeploymentPlatformSetupAccessLog67D5D503",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain"
    },
    "DeploymentPlatformSetupInfraSetupCustomResourceDynamoDBPolicy9530C9CF": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:GetFunction",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":lambda:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":function:*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "logs:CreateLogGroup",
                "logs:DescribeLogGroups",
                "logs:PutRetentionPolicy"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":logs:",
                      {
                        "Ref": "AWS::Region"
                      },
                      ":",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":log-group:/aws/lambda/*"
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":logs:",
                      {
                        "Ref": "AWS::Region"
                      },
                      ":",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":log-group::log-stream:*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformSetupInfraSetupCustomResourceDynamoDBPolicy9530C9CF",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda role policy is to read and write dynamodb buckets for model info and configuration",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:lambda:<AWS::Region>:<AWS::AccountId>:function:*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group::log-stream:*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupInfraSetupCustomResource5473231F": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/assetd4cfffa6801f7922303ba90c6435d88b5380c61ead582ee99e410874fd6c7a1b.zip"
        },
        "Description": "A custom resource lambda function to perform operations based on operation type",
        "Environment": {
          "Variables": {
            "POWERTOOLS_SERVICE_NAME": "CUSTOM-RESOURCE",
            "AWS_SDK_USER_AGENT": "{ \"user_agent_extra\": \"AWSSOLUTION/SO0276/v4.1.11\" }"
          }
        },
        "Handler": "lambda_func.handler",
        "Layers": [
          {
            "Ref": "Boto3Layer463A0AEA"
          },
          {
            "Ref": "PythonUserAgentLayer6958F3C0"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
            "Arn"
          ]
        },
        "Runtime": "python3.13",
        "Timeout": 900,
        "TracingConfig": {
          "Mode": "Active"
        }
      },
      "DependsOn": [
        "DeploymentPlatformSetupCustomResourceLambdaRoleDefaultPolicy1B835079",
        "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D"
      ],
      "Metadata": {
        "aws:asset:path": "asset.d4cfffa6801f7922303ba90c6435d88b5380c61ead582ee99e410874fd6c7a1b",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC is not mandated in the solution. This lambda has no business logic but only gathers metrics. Hence is not deployed in a VPC"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using python3.13. Current version of the application is only tested until python3.13",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupInfraSetupCustomResourceLogRetention7B85E9E4": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "DeploymentPlatformSetupInfraSetupCustomResource5473231F"
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "DeploymentPlatformSetupInfraSetupScheduledMetricsC6E20F14": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/assetd4cfffa6801f7922303ba90c6435d88b5380c61ead582ee99e410874fd6c7a1b.zip"
        },
        "Description": "A lambda function that runs as per defined schedule to publish metrics",
        "Environment": {
          "Variables": {
            "POWERTOOLS_SERVICE_NAME": "CW-METRICS",
            "SOLUTION_ID": "SO0276",
            "SOLUTION_VERSION": "v4.1.11",
            "USE_CASE_UUID": {
              "Fn::GetAtt": [
                "DeploymentPlatformSetupGenUUIDE08D47F0",
                "UUID"
              ]
            },
            "REST_API_NAME": {
              "Fn::Join": [
                "",
                [
                  {
                    "Fn::Select": [
                      1,
                      {
                        "Fn::Split": [
                          "/",
                          {
                            "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                          }
                        ]
                      }
                    ]
                  },
                  "-UseCaseManagementAPI"
                ]
              ]
            },
            "AWS_SDK_USER_AGENT": "{ \"user_agent_extra\": \"AWSSOLUTION/SO0276/v4.1.11\" }"
          }
        },
        "Handler": "lambda_ops_metrics.handler",
        "Layers": [
          {
            "Ref": "Boto3Layer463A0AEA"
          },
          {
            "Ref": "PythonUserAgentLayer6958F3C0"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupScheduledMetricsLambdaRole89420F9F",
            "Arn"
          ]
        },
        "Runtime": "python3.13",
        "Timeout": 900,
        "TracingConfig": {
          "Mode": "Active"
        }
      },
      "DependsOn": [
        "DeploymentPlatformSetupScheduledMetricsLambdaRoleDefaultPolicy7CE81C15",
        "DeploymentPlatformSetupScheduledMetricsLambdaRole89420F9F"
      ],
      "Metadata": {
        "aws:asset:path": "asset.d4cfffa6801f7922303ba90c6435d88b5380c61ead582ee99e410874fd6c7a1b",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC is not mandated in the solution. This lambda has no business logic but only gathers metrics. Hence is not deployed in a VPC"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using python3.13. Current version of the application is only tested until python3.13",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupInfraSetupScheduleLogRetentionF1D0F3ED": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "DeploymentPlatformSetupInfraSetupScheduledMetricsC6E20F14"
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "DeploymentPlatformSetupInfraSetupGetMetricsDataPolicy82387FDA": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cloudwatch:GetMetricData",
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformSetupInfraSetupGetMetricsDataPolicy82387FDA",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupScheduledMetricsLambdaRole89420F9F"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda requires this permission to read metrics from CloudWatch logs",
              "id": "AwsSolutions-IAM5"
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupInfraSetupMetricsPublishFrequencyB2020316": {
      "Type": "AWS::Events::Rule",
      "Properties": {
        "ScheduleExpression": "rate(3 hours)",
        "State": "ENABLED",
        "Targets": [
          {
            "Arn": {
              "Fn::GetAtt": [
                "DeploymentPlatformSetupInfraSetupScheduledMetricsC6E20F14",
                "Arn"
              ]
            },
            "Id": "Target0"
          }
        ]
      }
    },
    "DeploymentPlatformSetupInfraSetupMetricsPublishFrequencyAllowEventRuleDeploymentPlatformStackDeploymentPlatformSetupInfraSetupScheduledMetricsA9E62FCBF4FA04D1": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupScheduledMetricsC6E20F14",
            "Arn"
          ]
        },
        "Principal": "events.amazonaws.com",
        "SourceArn": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupMetricsPublishFrequencyB2020316",
            "Arn"
          ]
        }
      }
    },
    "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupCustomResourceLambdaRoleDefaultPolicy1B835079": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "xray:PutTelemetryRecords",
                "xray:PutTraceSegments"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformSetupCustomResourceLambdaRoleDefaultPolicy1B835079",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda role policy is configured to read data from S3 bucket",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::s3:Abort*",
                "Action::s3:DeleteObject*",
                "Resource::<SetupAppConfig016B0097.Arn>/*"
              ]
            },
            {
              "reason": "The wildcard permission is required to publish events for x-ray insights",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupScheduledMetricsLambdaRole89420F9F": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            },
            {
              "reason": "This policy allows get metric data from CloudWatch and has been specified per the AWS documentation.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::*"
              ]
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupScheduledMetricsLambdaRoleDefaultPolicy7CE81C15": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "xray:PutTelemetryRecords",
                "xray:PutTraceSegments"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformSetupScheduledMetricsLambdaRoleDefaultPolicy7CE81C15",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupScheduledMetricsLambdaRole89420F9F"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The wildcard permission is required to publish events for x-ray insights",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupGenUUIDE08D47F0": {
      "Type": "Custom::GenUUID",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "Resource": "GEN_UUID"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "DeploymentPlatformSetupOpsCustomDashboardC1C0C18E": {
      "Type": "AWS::CloudWatch::Dashboard",
      "Properties": {
        "DashboardBody": {
          "Fn::Join": [
            "",
            [
              "{\"start\":\"start\",\"end\":\"end\",\"periodOverride\":\"auto\",\"widgets\":[{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"REST Endpoint Hits\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                      }
                    ]
                  }
                ]
              },
              "-UseCaseManagementAPI\",{\"color\":\"#9467bd\",\"label\":\"Count\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"AWS/ApiGateway\",\"CacheHitCount\",\"ApiName\",\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                      }
                    ]
                  }
                ]
              },
              "-UseCaseManagementAPI\",{\"color\":\"#2ca02c\",\"label\":\"CacheHitCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"AWS/ApiGateway\",\"CacheMissCount\",\"ApiName\",\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                      }
                    ]
                  }
                ]
              },
              "-UseCaseManagementAPI\",{\"color\":\"#d62728\",\"label\":\"CacheMissCount\",\"period\":3600,\"stat\":\"SampleCount\"}]],\"yAxis\":{}}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"REST Endpoint Latency Stats\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                      }
                    ]
                  }
                ]
              },
              "-UseCaseManagementAPI\",{\"color\":\"#ff7f0e\",\"label\":\"AverageLatency\",\"period\":3600}],[\"AWS/ApiGateway\",\"IntegrationLatency\",\"ApiName\",\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                      }
                    ]
                  }
                ]
              },
              "-UseCaseManagementAPI\",{\"color\":\"#1f77b4\",\"label\":\"MaxIntegrationLatency\",\"period\":3600,\"stat\":\"Maximum\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
                      }
                    ]
                  }
                ]
              },
              "-UseCaseManagementAPI\",{\"color\":\"#2ca02c\",\"label\":\"MaxLatency\",\"period\":3600,\"stat\":\"Maximum\"}]],\"yAxis\":{}}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Cognito Sign-ins & Sign-ups\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/Cognito\",\"SignInSuccesses\",\"UserPool\",\"",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
                ]
              },
              "\",\"UserPoolClient\",\"",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformCognitoSetupUserPoolClientIdFE2BD0AE"
                ]
              },
              "\",{\"color\":\"#1f77b4\",\"label\":\"SignInSuccessesCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"AWS/Cognito\",\"SignInSuccesses\",\"UserPool\",\"",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
                ]
              },
              "\",\"UserPoolClient\",\"",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformCognitoSetupUserPoolClientIdFE2BD0AE"
                ]
              },
              "\",{\"color\":\"#ff7f0e\",\"label\":\"AverageSignInSuccesses\",\"period\":3600}],[\"AWS/Cognito\",\"SignUpSuccesses\",\"UserPool\",\"",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
                ]
              },
              "\",\"UserPoolClient\",\"Admin\",{\"color\":\"#7f7f7f\",\"label\":\"SignUpSuccessesCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"AWS/Cognito\",\"SignUpSuccesses\",\"UserPool\",\"",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
                ]
              },
              "\",\"UserPoolClient\",\"Admin\",{\"color\":\"#9467bd\",\"label\":\"AverageSignUpSuccesses\",\"period\":3600}]],\"yAxis\":{}}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":18,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Stack Deployment Status Stats\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"Solution/UseCaseDeployments\",\"UCInitiationSuccess\",\"service\",\"UseCaseManagement\",{\"color\":\"#1f77b4\",\"label\":\"UCInitiationSuccessCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCInitiationFailure\",\"service\",\"UseCaseManagement\",{\"color\":\"#ff7f0e\",\"label\":\"UCInitiationFailureCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCDeletionSuccess\",\"service\",\"UseCaseManagement\",{\"color\":\"#9467bd\",\"label\":\"UCDeletionSuccessCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCDeletionFailure\",\"service\",\"UseCaseManagement\",{\"color\":\"#d62728\",\"label\":\"UCDeletionFailureCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCUpdateSuccess\",\"service\",\"UseCaseManagement\",{\"color\":\"#2ca02c\",\"label\":\"UCUpdateSuccessCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCUpdateFailure\",\"service\",\"UseCaseManagement\",{\"color\":\"#8c564b\",\"label\":\"UCUpdateFailureCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCDescribeSuccess\",\"service\",\"UseCaseManagement\",{\"color\":\"#e377c2\",\"label\":\"UCDescribeSuccessCount\",\"period\":3600,\"stat\":\"SampleCount\"}],[\"Solution/UseCaseDeployments\",\"UCDescribeFailure\",\"service\",\"UseCaseManagement\",{\"color\":\"#7f7f7f\",\"label\":\"UCDescribeFailureCount\",\"period\":3600,\"stat\":\"SampleCount\"}]],\"yAxis\":{}}}]}"
            ]
          ]
        },
        "DashboardName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-",
              {
                "Ref": "AWS::Region"
              },
              "-Dashboard"
            ]
          ]
        }
      },
      "DeletionPolicy": "Delete",
      "Condition": "DeployCustomDashboard"
    },
    "DeploymentPlatformSetupWriteToSSMBE1096BE": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "ssm:DeleteParameter",
                "ssm:GetParameter",
                "ssm:PutParameter"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":ssm:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":parameter/gaab-webconfig/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformSetupWriteToSSMBE1096BE",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Permission is required to delete old webconfig ssm parameters",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:ssm:<AWS::Region>:<AWS::AccountId>:parameter/gaab-webconfig/*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformSetupGetCognitoUserPoolInfo2A3390CD": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cognito-idp:DescribeUserPool",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":cognito-idp:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":userpool/",
                    {
                      "Fn::GetAtt": [
                        "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                        "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
                      ]
                    }
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformSetupGetCognitoUserPoolInfo2A3390CD",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D"
          }
        ]
      }
    },
    "DeploymentPlatformSetupSolutionHelperDataAE4B4879": {
      "Type": "Custom::Data",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "Resource": "METRIC",
        "SolutionId": "SO0276",
        "Version": "v4.1.11",
        "UUID": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupGenUUIDE08D47F0",
            "UUID"
          ]
        },
        "VPC_ENABLED": {
          "Ref": "VpcEnabled"
        },
        "CREATE_VPC": {
          "Ref": "CreateNewVpc"
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "CustomResourceLambdaArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
              "Arn"
            ]
          },
          "CustomResourceRoleArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
              "Arn"
            ]
          },
          "AccessLoggingBucketArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupAccessLog67D5D503",
              "Arn"
            ]
          },
          "IPAMPoolId": {
            "Ref": "IPAMPoolId"
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://solutions-reference.s3.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              "generative-ai-application-builder-on-aws/v4.1.11/DeploymentPlatformStackVPCDeploymentPlatformVPC42C65300.nested.template"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:asset:path": "DeploymentPlatformStackVPCDeploymentPlatformVPC42C65300.nested.template.json",
        "aws:asset:property": "TemplateURL"
      },
      "Condition": "DeployVPCCondition"
    },
    "WebAppNestedStackWebAppNestedStackResource4E994CA7": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "CustomResourceLambdaArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
              "Arn"
            ]
          },
          "CustomResourceRoleArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
              "Arn"
            ]
          },
          "AccessLoggingBucketArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupAccessLog67D5D503",
              "Arn"
            ]
          },
          "UseCaseUUID": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupGenUUIDE08D47F0",
              "UUID"
            ]
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://solutions-reference.s3.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              "generative-ai-application-builder-on-aws/v4.1.11/DeploymentPlatformStackWebApp990B70E2.nested.template"
            ]
          ]
        }
      },
      "DependsOn": [
        "DeploymentPlatformSetupAccessLogPolicy2FB262B2"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:asset:path": "DeploymentPlatformStackWebApp990B70E2.nested.template.json",
        "aws:asset:property": "TemplateURL"
      },
      "Condition": "DeployWebAppUIInfrastructureCondition"
    },
    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "CustomResourceLambdaArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
              "Arn"
            ]
          },
          "CustomResourceRoleArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
              "Arn"
            ]
          },
          "AccessLoggingBucketArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupAccessLog67D5D503",
              "Arn"
            ]
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://solutions-reference.s3.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              "generative-ai-application-builder-on-aws/v4.1.11/DeploymentPlatformStackDeploymentPlatformStorage5B30492E.nested.template"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:asset:path": "DeploymentPlatformStackDeploymentPlatformStorage5B30492E.nested.template.json",
        "aws:asset:property": "TemplateURL"
      }
    },
    "DeploymentPlatformStorageDeploymentApiDDBPolicy8278C911": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:Batch*",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DeleteItem",
                "dynamodb:Get*",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DArn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformStorageDeploymentApiDDBPolicy8278C911",
        "Roles": [
          {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUCMLRole7D6F4C25Ref"
            ]
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role allows the deploymentAPI Lambda function to perform DynamoDB operations. Table name is not known here.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::dynamodb:Batch*",
                "Action::dynamodb:Get*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformStorageMCPManagementDDBPolicy0D470EBF": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:Batch*",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DeleteItem",
                "dynamodb:Get*",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformStorageMCPManagementDDBPolicy0D470EBF",
        "Roles": [
          {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambdaRole0206541ERef"
            ]
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role allows the mcpManagement Lambda function to perform DynamoDB operations. Table name is not known here.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::dynamodb:Batch*",
                "Action::dynamodb:Get*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformStorageAgentManagementDDBPolicyF06476BA": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:Batch*",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DeleteItem",
                "dynamodb:Get*",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DArn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformStorageAgentManagementDDBPolicyF06476BA",
        "Roles": [
          {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaRole8283DB00Ref"
            ]
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role allows the agentManagement Lambda function to perform DynamoDB operations. Table name is not known here.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::dynamodb:Batch*",
                "Action::dynamodb:Get*"
              ]
            }
          ]
        }
      }
    },
    "DeploymentPlatformStorageWorkflowManagementDDBPolicy2311CBB4": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:Batch*",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DeleteItem",
                "dynamodb:Get*",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DArn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DeploymentPlatformStorageWorkflowManagementDDBPolicy2311CBB4",
        "Roles": [
          {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambdaRoleB1619A7ARef"
            ]
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role allows the workflowManagement Lambda function to perform DynamoDB operations. Table name is not known here.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::dynamodb:Batch*",
                "Action::dynamodb:Get*"
              ]
            }
          ]
        }
      }
    },
    "SharedECRPullThroughCacheEcrRepoPrefixGenerator4916E447": {
      "Type": "Custom::GenEcrRepoPrefix",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "Resource": "GEN_ECR_REPO_PREFIX",
        "StackName": {
          "Ref": "AWS::StackName"
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "SharedECRPullThroughCacheSharedAgentImageCacheCD7CD0E8": {
      "Type": "AWS::ECR::PullThroughCacheRule",
      "Properties": {
        "EcrRepositoryPrefix": {
          "Fn::GetAtt": [
            "SharedECRPullThroughCacheEcrRepoPrefixGenerator4916E447",
            "EcrRepoPrefix"
          ]
        },
        "UpstreamRegistry": "ecr-public",
        "UpstreamRegistryUrl": "public.ecr.aws",
        "UpstreamRepositoryPrefix": "aws-solutions"
      }
    },
    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "DefaultUserEmail": {
            "Ref": "AdminUserEmail"
          },
          "ApplicationTrademarkName": "Generative AI Application Builder on AWS",
          "WebConfigSSMKey": {
            "Fn::Join": [
              "",
              [
                "/gaab-webconfig/",
                {
                  "Ref": "AWS::StackName"
                }
              ]
            ]
          },
          "CustomResourceLambdaArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
              "Arn"
            ]
          },
          "CustomResourceRoleArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
              "Arn"
            ]
          },
          "ExistingSecurityGroupIds": {
            "Fn::If": [
              "DeployVPCCondition",
              {
                "Fn::GetAtt": [
                  "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                  "Outputs.SecurityGroupIds"
                ]
              },
              {
                "Fn::Join": [
                  ",",
                  {
                    "Ref": "ExistingSecurityGroupIds"
                  }
                ]
              }
            ]
          },
          "ExistingPrivateSubnetIds": {
            "Fn::If": [
              "DeployVPCCondition",
              {
                "Fn::GetAtt": [
                  "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                  "Outputs.PrivateSubnetIds"
                ]
              },
              {
                "Fn::Join": [
                  ",",
                  {
                    "Ref": "ExistingPrivateSubnetIds"
                  }
                ]
              }
            ]
          },
          "CognitoDomainPrefix": {
            "Ref": "CognitoDomainPrefix"
          },
          "CloudFrontUrl": {
            "Fn::If": [
              "DeployWebAppUIInfrastructureCondition",
              {
                "Fn::Join": [
                  "",
                  [
                    "https://",
                    {
                      "Fn::GetAtt": [
                        "WebAppNestedStackWebAppNestedStackResource4E994CA7",
                        "Outputs.DeploymentPlatformStackWebAppWebsiteUICloudFrontDistribution38CBCDC5DomainName"
                      ]
                    }
                  ]
                ]
              },
              {
                "Ref": "AWS::NoValue"
              }
            ]
          },
          "DeployUI": {
            "Ref": "DeployUI"
          },
          "AccessLoggingBucketArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupAccessLog67D5D503",
              "Arn"
            ]
          },
          "ExistingCognitoUserPoolId": {
            "Ref": "ExistingCognitoUserPoolId"
          },
          "ExistingCognitoUserPoolClientId": {
            "Ref": "ExistingCognitoUserPoolClient"
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Ref": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Ref"
            ]
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DRef": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DRef"
            ]
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref"
            ]
          },
          "referencetoDeploymentPlatformStackAwsNodeSdkLayer390CBFFFRef": {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          "referencetoDeploymentPlatformStackNodeUserAgentLayer24384C79Ref": {
            "Ref": "NodeUserAgentLayer02526341"
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageModelInfoStorageModelInfoStore6E739C0DArn"
            ]
          },
          "referencetoDeploymentPlatformStackStrandsToolsParameter9B1C68B6Ref": {
            "Ref": "StrandsToolsParameter969FA9B2"
          },
          "referencetoDeploymentPlatformStackUseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3BucketE8414571Ref": {
            "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
          },
          "referencetoDeploymentPlatformStackUseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableCB82D5D3Ref": {
            "Ref": "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C"
          },
          "referencetoDeploymentPlatformStackSharedECRPullThroughCacheEcrRepoPrefixGenerator0824252DEcrRepoPrefix": {
            "Fn::GetAtt": [
              "SharedECRPullThroughCacheEcrRepoPrefixGenerator4916E447",
              "EcrRepoPrefix"
            ]
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://solutions-reference.s3.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              "generative-ai-application-builder-on-aws/v4.1.11/DeploymentPlatformStackUseCaseManagementSetupUseCaseManagement4D56BB38.nested.template"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:asset:path": "DeploymentPlatformStackUseCaseManagementSetupUseCaseManagement4D56BB38.nested.template.json",
        "aws:asset:property": "TemplateURL"
      }
    },
    "UseCaseManagementSetupRequestProcessorRestAuthorizerRole9B42FEFC": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            },
            {
              "reason": "Lambda authorizer needs to describe any user pool to validate tokens from multiple user pools. Additional scoping down is found in the authorizer",
              "id": "AwsSolutions-IAM5"
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorRestAuthorizerRoleDefaultPolicy2312A063": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cognito-idp:DescribeUserPoolClient",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:cognito-idp:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":userpool/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupRequestProcessorRestAuthorizerRoleDefaultPolicy2312A063",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupRequestProcessorRestAuthorizerRole9B42FEFC"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda authorizer needs to describe any user pool to validate tokens from multiple user pools. Additional scoping down is found in the authorizer",
              "id": "AwsSolutions-IAM5"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/assete7fedfb82efb597e45948f8fb383a6888d46ec36411c00505a42a3e1665a7257.zip"
        },
        "Description": "Authorizes REST API requests based on Cognito user pool groups",
        "Environment": {
          "Variables": {
            "USER_POOL_ID": {
              "Fn::GetAtt": [
                "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
              ]
            },
            "CLIENT_ID": {
              "Fn::GetAtt": [
                "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                "Outputs.DeploymentPlatformCognitoSetupUserPoolClientIdFE2BD0AE"
              ]
            },
            "COGNITO_POLICY_TABLE_NAME": {
              "Fn::GetAtt": [
                "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                "Outputs.DeploymentPlatformCognitoSetupCognitoGroupPolicyTableName0C5E8F79"
              ]
            },
            "AWS_SDK_USER_AGENT": "{ \"customUserAgent\": [[\"AWSSOLUTION/SO0276/v4.1.11\"]] }",
            "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
          }
        },
        "Handler": "rest-authorizer.handler",
        "Layers": [
          {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          {
            "Ref": "NodeUserAgentLayer02526341"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorRestAuthorizerRole9B42FEFC",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 900
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorRestAuthorizerRoleDefaultPolicy2312A063",
        "UseCaseManagementSetupRequestProcessorRestAuthorizerRole9B42FEFC"
      ],
      "Metadata": {
        "aws:asset:path": "asset.e7fedfb82efb597e45948f8fb383a6888d46ec36411c00505a42a3e1665a7257",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC deployment is not enforced. This REST authorizer is not configured within a VPC"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using nodejs22.x. Current version of the application is only tested until nodejs22.x",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizerDeploymentPlatformStackUseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizer537B59D4Permissions3FBB7A58": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/authorizers/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
              }
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizerAPIGatewayInvoke7E420FA2": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorRestAuthLogRetention78B8FC64": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22"
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "UseCaseManagementSetupRequestProcessorLambdaPolicyTablePolicy835B4D04": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetItem",
                "dynamodb:Query"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:dynamodb:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":table/",
                    {
                      "Fn::GetAtt": [
                        "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                        "Outputs.DeploymentPlatformCognitoSetupCognitoGroupPolicyTableName0C5E8F79"
                      ]
                    }
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupRequestProcessorLambdaPolicyTablePolicy835B4D04",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupRequestProcessorRestAuthorizerRole9B42FEFC"
          }
        ]
      }
    },
    "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059": {
      "Type": "AWS::ApiGateway::Authorizer",
      "Properties": {
        "AuthorizerResultTtlInSeconds": 0,
        "AuthorizerUri": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      ":",
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22",
                          "Arn"
                        ]
                      }
                    ]
                  }
                ]
              },
              ":apigateway:",
              {
                "Fn::Select": [
                  3,
                  {
                    "Fn::Split": [
                      ":",
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22",
                          "Arn"
                        ]
                      }
                    ]
                  }
                ]
              },
              ":lambda:path/2015-03-31/functions/",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22",
                  "Arn"
                ]
              },
              "/invocations"
            ]
          ]
        },
        "IdentitySource": "method.request.header.Authorization",
        "Name": "DeploymentPlatformStackUseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizer537B59D4",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Type": "REQUEST"
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointApiAccessLogGroupFB4EFA7D": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "RetentionInDays": 3653
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W84",
              "reason": "By default CloudWatchLogs LogGroups data is encrypted using the CloudWatch server-side encryption keys (AWS Managed Keys)"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F": {
      "Type": "AWS::ApiGateway::RestApi",
      "Properties": {
        "Description": "API endpoint to access use case management functions",
        "EndpointConfiguration": {
          "Types": [
            "EDGE"
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-UseCaseManagementAPI"
            ]
          ]
        }
      },
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W87",
              "reason": "Since caching is not enabled, cache encryption is also not enabled"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeployment8CA28FB10af68cba4fc1438745cfa57722386191": {
      "Type": "AWS::ApiGateway::Deployment",
      "Properties": {
        "Description": "API endpoint to access use case management functions",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupFeedbackSetupStackNestedStackFeedbackSetupStackNestedStackResourceCA537136",
        "UseCaseManagementSetupMultimodalSetupFilesDeleteRequestModelE2855056",
        "UseCaseManagementSetupMultimodalSetupFilesDeleteResponseModelC839923D",
        "UseCaseManagementSetupMultimodalSetupFilesGetResponseModel9D560DEA",
        "UseCaseManagementSetupMultimodalSetupFilesUploadRequestModel9D7382C1",
        "UseCaseManagementSetupMultimodalSetupFilesUploadResponseModel4AE6988C",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestBodyResponseEF90EA9F",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestDefaultResponseE22C6436",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestParametersResponse97FE3D57",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentApiBodyModelADA43E68",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentResponseModelD8AEA8BE",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPApiBodyModel900147D1",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPResponseModel8CA8B5F9",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdDELETE1F46F92B",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdGET49E7D36E",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdOPTIONS34A36241",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdPATCHB08FB161",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseId1B4DA213",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdDELETEF15859A9",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdGET43B9B6D2",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdOPTIONS041CE5EB",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdPATCH754086E8",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseId105F65DC",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsGET1768F461",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsOPTIONS50BACAB1",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsPOST87343CE1",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagents2BF9A109",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsGET93EE3992",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdDELETE0D3272DF",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdGETAC05B6BD",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdOPTIONS4455D877",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdPATCH7A92CE6C",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseId618346A5",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpGET2DD8B2CF",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpOPTIONSCDB7471F",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpPOSTE231F422",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemasOPTIONSB3FF4E30",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemasPOSTE99078D3",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemas2D3892B5",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsOPTIONS226E9606",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsPOST68876F12",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDELETE21414840",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdGET7942D53C",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdOPTIONS6AFD1616",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdPATCH25F6ED17",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDBB2A467",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsGET3EC4AAFF",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsOPTIONS98E75A02",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsPOSTB21C67A8",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsE70CBE7C",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdOPTIONS144DB212",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdPOST3C555B45",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdEE4BB80E",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedback61DB2B5B",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdDELETE7CFD3F4A",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdGET30B6C757",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdOPTIONS0ACF2B8E",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdPOST3A885D54",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseId4B98F493",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifiles6DF21A56",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelIdGET1CDDE10A",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelIdOPTIONS7646D3AE",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelId88C0A3B5",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameGET6D685A8B",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameOPTIONS481D07FD",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameC996A9BE",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersGET54F880DB",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersOPTIONSDD79CF85",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersD9729BFA",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeCC855208",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfo471EE02C",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypesGETFE1D2400",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypesOPTIONSA2D8A0E9",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypes44F4208C",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseApiBodyModel2E7FF7C8",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseResponseModel053210C2",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowApiBodyModel9B7AE229",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowResponseModelCC6132B6",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointInternalServerErrorDefaultResponse973BC431",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentApiBodyModelC3B71E22",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentResponseModel3B8CD542",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPApiBodyModelE22AA355",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPResponseModel99B71EB0",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseApiBodyModel556ECDCC",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseResponseModel43C6C5F9",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowApiBodyModelB4957C24",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowResponseModelD340F849",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUploadMCPSchemasApiRequestModelF2208983",
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUploadMCPSchemasResponseModel7B8EF768",
        "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
      ],
      "Metadata": {
        "aws:cdk:do-not-refactor": true,
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W45",
              "reason": "ApiGateway has AccessLogging enabled in AWS::ApiGateway::Stage resource, but cfn_nag checks for it in AWS::ApiGateway::Deployment resource"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F": {
      "Type": "AWS::ApiGateway::Stage",
      "Properties": {
        "AccessLogSetting": {
          "DestinationArn": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointApiAccessLogGroupFB4EFA7D",
              "Arn"
            ]
          },
          "Format": "$context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime] \"$context.httpMethod $context.resourcePath $context.protocol\" $context.status $context.responseLength $context.requestId"
        },
        "DeploymentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeployment8CA28FB10af68cba4fc1438745cfa57722386191"
        },
        "MethodSettings": [
          {
            "DataTraceEnabled": false,
            "HttpMethod": "*",
            "LoggingLevel": "OFF",
            "MetricsEnabled": true,
            "ResourcePath": "/*",
            "ThrottlingBurstLimit": 5,
            "ThrottlingRateLimit": 5
          }
        ],
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "StageName": "prod",
        "TracingEnabled": true
      },
      "Metadata": {
        "guard": {
          "SuppressedRules": [
            "API_GW_CACHE_ENABLED_AND_ENCRYPTED"
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Turning off execution logs as recommended best practice in the ApiGateway service documentation",
              "id": "AwsSolutions-APIG6"
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W87",
              "reason": "Caching is not configured for this endpoint, hence CacheEncryption configurations don't apply"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F",
            "RootResourceId"
          ]
        },
        "PathPart": "deployments",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseId1B4DA213": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "PathPart": "{useCaseId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdOPTIONS34A36241": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,PATCH,DELETE,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseId1B4DA213"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLamb2FB1BC7D": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointD9FCB66E": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdGET49E7D36E": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetUseCase",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseId1B4DA213"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsPOST68876F12"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdPATCHApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLaEFA75A42": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/PATCH/deployments/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdPATCHApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoiF45B02D6": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/PATCH/deployments/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdPATCHB08FB161": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "PATCH",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseResponseModel43C6C5F9"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "UpdateUseCase",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseApiBodyModel556ECDCC"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseId1B4DA213"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdGET49E7D36E"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdDELETEApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLC92042FA": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/DELETE/deployments/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdDELETEApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoF340F832": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/DELETE/deployments/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdDELETE1F46F92B": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "DELETE",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "DeleteUseCase",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.permanent": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseId1B4DA213"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsuseCaseIdPATCHB08FB161"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsOPTIONS226E9606": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'POST,GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApi80725706": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRes1B0F83BA": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsGET93EE3992": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetUseCases",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.pageNumber": true,
          "method.request.querystring.searchFilter": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestAp2440C5F6": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/deployments"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaReB233F758": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/deployments"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsPOST68876F12": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseMgmt7269A93AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseResponseModel053210C2"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "DeployUseCase",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseApiBodyModel2E7FF7C8"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsGET93EE3992"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "PathPart": "mcp",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseId618346A5": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE"
        },
        "PathPart": "{useCaseId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdOPTIONS4455D877": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,PATCH,DELETE,POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseId618346A5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLFBD44C05": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/mcp/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPo375C6D3F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/mcp/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdGETAC05B6BD": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetMCP",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseId618346A5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpPOSTE231F422"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdPATCHApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoinF01D3BD1": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/PATCH/deployments/mcp/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdPATCHApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndDD024C34": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/PATCH/deployments/mcp/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdPATCH7A92CE6C": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "PATCH",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPResponseModel99B71EB0"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "UpdateMCP",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPApiBodyModelE22AA355"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseId618346A5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdGETAC05B6BD"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdDELETEApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoiB0D38800": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/DELETE/deployments/mcp/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdDELETEApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEn3388A443": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/DELETE/deployments/mcp/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdDELETE0D3272DF": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "DELETE",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "DeleteMCP",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.permanent": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseId618346A5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuseCaseIdPATCH7A92CE6C"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpOPTIONSCDB7471F": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRest2C80EDE0": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/mcp"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambda19028321": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/mcp"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpGET2DD8B2CF": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetMCPs",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.pageNumber": true,
          "method.request.querystring.searchFilter": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRes041DE089": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/deployments/mcp"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambd71C2BD5A": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/deployments/mcp"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpPOSTE231F422": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPResponseModel8CA8B5F9"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "DeployMCP",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPApiBodyModel900147D1"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpGET2DD8B2CF"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemas2D3892B5": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpB7027FBE"
        },
        "PathPart": "upload-schemas",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemasOPTIONSB3FF4E30": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemas2D3892B5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemasPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPA0C33F7F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/deployments/mcp/upload-schemas"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemasPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestA271236B": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/deployments/mcp/upload-schemas"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemasPOSTE99078D3": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementMCPManagementLambda4C958E9AArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUploadMCPSchemasResponseModel7B8EF768"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "UploadMCPSchemas",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUploadMCPSchemasApiRequestModelF2208983"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsmcpuploadschemas2D3892B5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagents2BF9A109": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "PathPart": "agents",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseId105F65DC": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagents2BF9A109"
        },
        "PathPart": "{useCaseId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdOPTIONS041CE5EB": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,PATCH,DELETE,POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseId105F65DC"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoiFB6E0FB5": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/agents/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEn395C3FF7": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/agents/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdGET43B9B6D2": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetAgent",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseId105F65DC"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsPOST87343CE1"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdPATCHApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPB889DA7E": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/PATCH/deployments/agents/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdPATCHApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestE4242340": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/PATCH/deployments/agents/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdPATCH754086E8": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "PATCH",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentResponseModel3B8CD542"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "UpdateAgent",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentApiBodyModelC3B71E22"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseId105F65DC"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdGET43B9B6D2"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdDELETEApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEnd55263640": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/DELETE/deployments/agents/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdDELETEApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentResA4AD6076": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/DELETE/deployments/agents/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdDELETEF15859A9": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "DELETE",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "DeleteAgent",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.permanent": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseId105F65DC"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsuseCaseIdPATCH754086E8"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsOPTIONS50BACAB1": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagents2BF9A109"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRBC920A87": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/agents"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLam15B73803": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/agents"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsGET1768F461": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetAgents",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.pageNumber": true,
          "method.request.querystring.searchFilter": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagents2BF9A109"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaA5EFE112": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/deployments/agents"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLa7CF626DD": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/deployments/agents"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsPOST87343CE1": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementAgentManagementLambdaCD4CDF7BArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentResponseModelD8AEA8BE"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "DeployAgent",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentApiBodyModelADA43E68"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagents2BF9A109"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsagentsGET1768F461"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsE70CBE7C": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsBB1D9109"
        },
        "PathPart": "workflows",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDBB2A467": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsE70CBE7C"
        },
        "PathPart": "{useCaseId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdOPTIONS6AFD1616": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,PATCH,DELETE,POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDBB2A467"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEnd1509A9A2": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/workflows/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRes00234443": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/workflows/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdGET7942D53C": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetWorkflow",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDBB2A467"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsPOSTB21C67A8"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdPATCHApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestE45CF5AEE": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/PATCH/deployments/workflows/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdPATCHApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentR151B9A5F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/PATCH/deployments/workflows/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdPATCH25F6ED17": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "PATCH",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowResponseModelD340F849"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "UpdateWorkflow",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowApiBodyModelB4957C24"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDBB2A467"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdGET7942D53C"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDELETEApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestAFC88689": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/DELETE/deployments/workflows/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDELETEApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentFAC629B5": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/DELETE/deployments/workflows/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDELETE21414840": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "DELETE",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "DeleteWorkflow",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.permanent": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdDBB2A467"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsuseCaseIdPATCH25F6ED17"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsOPTIONS98E75A02": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsE70CBE7C"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambE369318A": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/deployments/workflows"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointF1D864E6": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/deployments/workflows"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsGET3EC4AAFF": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetWorkflows",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.pageNumber": true,
          "method.request.querystring.searchFilter": false
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsE70CBE7C"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLamE5709607": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/deployments/workflows"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoinF394F858": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/deployments/workflows"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsPOSTB21C67A8": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementWorkflowManagementLambda1FC43EA0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowResponseModelCC6132B6"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "DeployWorkflow",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowApiBodyModel9B7AE229"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsE70CBE7C"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApideploymentsworkflowsGET3EC4AAFF"
      ],
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfo471EE02C": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F",
            "RootResourceId"
          ]
        },
        "PathPart": "model-info",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypes44F4208C": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfo471EE02C"
        },
        "PathPart": "use-case-types",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypesOPTIONSA2D8A0E9": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypes44F4208C"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypesGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLam318D8722": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/model-info/use-case-types"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypesGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPoin17A94506": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/model-info/use-case-types"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypesGETFE1D2400": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetUseCaseTypes",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfousecasetypes44F4208C"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeCC855208": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfo471EE02C"
        },
        "PathPart": "{useCaseType}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersD9729BFA": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeCC855208"
        },
        "PathPart": "providers",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersOPTIONSDD79CF85": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersD9729BFA"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEnd6FD79C86": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/model-info/*/providers"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRes99FB5804": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/model-info/*/providers"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersGET54F880DB": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetModelProviders",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeprovidersD9729BFA"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameC996A9BE": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeCC855208"
        },
        "PathPart": "{providerName}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameOPTIONS481D07FD": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameC996A9BE"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestB185C368": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/model-info/*/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployment5EF8DE70": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/model-info/*/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameGET6D685A8B": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetModels",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameC996A9BE"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelId88C0A3B5": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNameC996A9BE"
        },
        "PathPart": "{modelId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelIdOPTIONS7646D3AE": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelId88C0A3B5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelIdGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymAD282245": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/model-info/*/*/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelIdGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDep21F372CE": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/model-info/*/*/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelIdGET1CDDE10A": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementModelInfo57CA1403Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "GetModelInfo",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApimodelinfouseCaseTypeproviderNamemodelId88C0A3B5"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedback61DB2B5B": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F",
            "RootResourceId"
          ]
        },
        "PathPart": "feedback",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Condition": "CreateFeedbackResources"
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdEE4BB80E": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedback61DB2B5B"
        },
        "PathPart": "{useCaseId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Condition": "CreateFeedbackResources"
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdOPTIONS144DB212": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'POST,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdEE4BB80E"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Condition": "CreateFeedbackResources"
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaC894672C": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupFeedbackSetupStackNestedStackFeedbackSetupStackNestedStackResourceCA537136",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupFeedbackSetupStackFeedbackManagementLambdaD5D27D85Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/feedback/*"
            ]
          ]
        }
      },
      "Condition": "CreateFeedbackResources"
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLaA104131F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupFeedbackSetupStackNestedStackFeedbackSetupStackNestedStackResourceCA537136",
            "Outputs.DeploymentPlatformStackUseCaseManagementSetupFeedbackSetupStackFeedbackManagementLambdaD5D27D85Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/feedback/*"
            ]
          ]
        }
      },
      "Condition": "CreateFeedbackResources"
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdPOST3C555B45": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupFeedbackSetupStackNestedStackFeedbackSetupStackNestedStackResourceCA537136",
                    "Outputs.DeploymentPlatformStackUseCaseManagementSetupFeedbackSetupStackFeedbackManagementLambdaD5D27D85Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "SubmitFeedback",
        "RequestModels": {
          "application/json": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupFeedbackSetupStackNestedStackFeedbackSetupStackNestedStackResourceCA537136",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupFeedbackSetupStackProvideFeedbackApiRequestModelFAFB6D72Ref"
            ]
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifeedbackuseCaseIdEE4BB80E"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "A Custom authorizer must be used in order to authenticate using Cognito user groups",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      },
      "Condition": "CreateFeedbackResources"
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifiles6DF21A56": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F",
            "RootResourceId"
          ]
        },
        "PathPart": "files",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseId4B98F493": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifiles6DF21A56"
        },
        "PathPart": "{useCaseId}",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdOPTIONS0ACF2B8E": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'POST,DELETE,GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseId4B98F493"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdPOSTApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaResB6F7AD90": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/POST/files/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdPOSTApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdD69A5EC0": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/POST/files/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdPOST3A885D54": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupMultimodalSetupFilesUploadResponseModel4AE6988C"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "UploadFiles",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupMultimodalSetupFilesUploadRequestModel9D7382C1"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseId4B98F493"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdDELETEApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaR8F256BCF": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/DELETE/files/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdDELETEApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLam5F34A8D5": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/DELETE/files/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdDELETE7CFD3F4A": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "DELETE",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupMultimodalSetupFilesDeleteResponseModelC839923D"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "DeleteFiles",
        "RequestModels": {
          "application/json": {
            "Ref": "UseCaseManagementSetupMultimodalSetupFilesDeleteRequestModelE2855056"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseId4B98F493"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestE7778349": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/GET/files/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambda634DA8D8": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/test-invoke-stage/GET/files/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseIdGET30B6C757": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "UseCaseManagementSetupMultimodalSetupFilesGetResponseModel9D560DEA"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "GetFile",
        "RequestParameters": {
          "method.request.header.authorization": true,
          "method.request.querystring.fileName": true,
          "method.request.querystring.conversationId": true,
          "method.request.querystring.messageId": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApifilesuseCaseId4B98F493"
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The API uses a custom authorizer instead of Cognito user pool authorizer for authentication",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiUsagePlanD00ABF48": {
      "Type": "AWS::ApiGateway::UsagePlan",
      "Properties": {
        "ApiStages": [
          {
            "ApiId": {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
            },
            "Stage": {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
            },
            "Throttle": {}
          }
        ]
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiCloudWatchRole15571B15": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "apigateway.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:DescribeLogGroups",
                    "logs:DescribeLogStreams",
                    "logs:FilterLogEvents",
                    "logs:GetLogEvents",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaRestApiCloudWatchRolePolicy"
          }
        ]
      },
      "Metadata": {
        "guard": {
          "SuppressedRules": [
            "IAM_NO_INLINE_POLICY_CHECK"
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Permission generated by the ApiGatewayToLambda construct to allow CloudWatch Logs to be used",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:*"
              ]
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiAccount38FC82FE": {
      "Type": "AWS::ApiGateway::Account",
      "Properties": {
        "CloudWatchRoleArn": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiCloudWatchRole15571B15",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551": {
      "Type": "AWS::ApiGateway::RequestValidator",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-api-request-validator"
            ]
          ]
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "ValidateRequestBody": true,
        "ValidateRequestParameters": true
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentPlatformEndpointWafDeploymentPlatformEndpointWafWebACL048DBCBA": {
      "Type": "AWS::WAFv2::WebACL",
      "Properties": {
        "CustomResponseBodies": {
          "HeadersNotAllowed": {
            "Content": "One of your injected headers is not allowed",
            "ContentType": "TEXT_PLAIN"
          }
        },
        "DefaultAction": {
          "Allow": {}
        },
        "Rules": [
          {
            "Name": "AWS-AWSManagedRulesBotControlRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 0,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesBotControlRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesBotControlRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 1,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesKnownBadInputsRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesKnownBadInputsRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesCommonRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 2,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesCommonRuleSet",
                "RuleActionOverrides": [
                  {
                    "ActionToUse": {
                      "Count": {}
                    },
                    "Name": "SizeRestrictions_BODY"
                  }
                ],
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWS-AWSManagedRulesCommonRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesAnonymousIpList",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 3,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesAnonymousIpList",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesAnonymousIpList",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesAmazonIpReputationList",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 4,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesAmazonIpReputationList",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesAmazonIpReputationList",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesAdminProtectionRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 5,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesAdminProtectionRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesAdminProtectionRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesSQLiRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 6,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesSQLiRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesSQLiRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Action": {
              "Block": {
                "CustomResponse": {
                  "CustomResponseBodyKey": "HeadersNotAllowed",
                  "ResponseCode": 403
                }
              }
            },
            "Name": "Custom-BlockRequestHeaders",
            "Priority": 7,
            "Statement": {
              "SizeConstraintStatement": {
                "ComparisonOperator": "GE",
                "FieldToMatch": {
                  "SingleHeader": {
                    "Name": "x-amzn-requestid"
                  }
                },
                "Size": 0,
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "Custom-BlockRequestHeaders",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Action": {
              "Block": {}
            },
            "Name": "Custom-BlockOversizedBodyNotInDeploy",
            "Priority": 8,
            "Statement": {
              "AndStatement": {
                "Statements": [
                  {
                    "LabelMatchStatement": {
                      "Key": "awswaf:managed:aws:core-rule-set:SizeRestrictions_Body",
                      "Scope": "LABEL"
                    }
                  },
                  {
                    "NotStatement": {
                      "Statement": {
                        "OrStatement": {
                          "Statements": [
                            {
                              "RegexMatchStatement": {
                                "FieldToMatch": {
                                  "UriPath": {}
                                },
                                "RegexString": "/deployments(/mcp|/agents|/workflows)?$",
                                "TextTransformations": [
                                  {
                                    "Priority": 0,
                                    "Type": "NONE"
                                  }
                                ]
                              }
                            },
                            {
                              "RegexMatchStatement": {
                                "FieldToMatch": {
                                  "UriPath": {}
                                },
                                "RegexString": "/deployments(/mcp|/agents|/workflows)?/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                                "TextTransformations": [
                                  {
                                    "Priority": 0,
                                    "Type": "NONE"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "Custom-BlockOversizedBodyNotInDeploy",
              "SampledRequestsEnabled": true
            }
          }
        ],
        "Scope": "REGIONAL",
        "VisibilityConfig": {
          "CloudWatchMetricsEnabled": true,
          "MetricName": "webACL",
          "SampledRequestsEnabled": true
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentPlatformEndpointWafWebACLAssociation37A5F031": {
      "Type": "AWS::WAFv2::WebACLAssociation",
      "Properties": {
        "ResourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":apigateway:",
              {
                "Ref": "AWS::Region"
              },
              "::/restapis/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/stages/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              }
            ]
          ]
        },
        "WebACLArn": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentPlatformEndpointWafDeploymentPlatformEndpointWafWebACL048DBCBA",
            "Arn"
          ]
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestDefaultResponseE22C6436": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseType": "DEFAULT_4XX",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "StatusCode": "400"
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointInternalServerErrorDefaultResponse973BC431": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseType": "DEFAULT_5XX",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestDefaultResponseE22C6436"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestBodyResponseEF90EA9F": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "BAD_REQUEST_BODY",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointInternalServerErrorDefaultResponse973BC431"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestParametersResponse97FE3D57": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "BAD_REQUEST_PARAMETERS",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointBadRequestBodyResponseEF90EA9F"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseApiBodyModel2E7FF7C8": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the POST request to deploy a usecase",
        "Name": "DeployUseCaseApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "UseCaseName": {
              "type": "string",
              "description": "Friendly name of the use case to be deployed. For display purposes."
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. VPC can be either created for you, or provided by the user depending on the parameters provided.",
              "properties": {
                "VpcEnabled": {
                  "type": "boolean",
                  "description": "Should the use case stacks resources be deployed within a VPC",
                  "default": false
                },
                "CreateNewVpc": {
                  "type": "boolean",
                  "description": "If true, a new VPC will be created for the use case.",
                  "default": false
                },
                "ExistingVpcId": {
                  "type": "string",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed within the specified VPC.",
                  "pattern": "^vpc-\\w{8}(\\w{9})?$"
                },
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets.",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups.",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    }
                  },
                  "required": [
                    "ExistingVpcId",
                    "ExistingPrivateSubnetIds",
                    "ExistingSecurityGroupIds"
                  ]
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    },
                    "CreateNewVpc": {
                      "not": {}
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                }
              ],
              "required": [
                "VpcEnabled"
              ],
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Either \"Text\" or \"Agent\".",
              "enum": [
                "Text",
                "Agent"
              ]
            },
            "ConversationMemoryParams": {
              "type": "object",
              "description": "Parameters related to storing and using the chat history",
              "properties": {
                "ConversationMemoryType": {
                  "type": "string",
                  "default": "DynamoDB",
                  "enum": [
                    "DynamoDB"
                  ]
                },
                "HumanPrefix": {
                  "type": "string",
                  "description": "Prefix used in the history when storing messages sent by the user"
                },
                "AiPrefix": {
                  "type": "string",
                  "description": "Prefix used in the history when storing responses from the LLM"
                },
                "ChatHistoryLength": {
                  "type": "integer",
                  "description": "Number of messages to store in the history",
                  "minimum": 0
                }
              },
              "additionalProperties": false
            },
            "KnowledgeBaseParams": {
              "type": "object",
              "description": "Parameters related to the knowledge base. Based on KnowledgeBaseType, different nested parameters are required.",
              "properties": {
                "KnowledgeBaseType": {
                  "type": "string",
                  "description": "The type of knowledge base to use. Required.",
                  "default": "Kendra",
                  "enum": [
                    "Kendra",
                    "Bedrock"
                  ]
                },
                "NoDocsFoundResponse": {
                  "type": "string",
                  "description": "Response text message to use when the knowledge base does not return any documents",
                  "minLength": 1
                },
                "KendraKnowledgeBaseParams": {
                  "type": "object",
                  "description": "Parameters specific to Kendra",
                  "properties": {
                    "ExistingKendraIndexId": {
                      "type": "string",
                      "description": "Index ID of an existing Kendra index to be used for the use case. Required if KendraIndexName is not provided.",
                      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
                    },
                    "KendraIndexName": {
                      "type": "string",
                      "description": "Name of the new Kendra index to be created, if provided. Required if ExistingKendraIndexId is not provided.",
                      "pattern": "^[0-9a-zA-Z-]{1,64}$"
                    },
                    "QueryCapacityUnits": {
                      "type": "integer",
                      "description": "Number of additional query capacity units to provision for the new Kendra index to be created. Can only be provided if if ExistingKendraIndexId is not provided.",
                      "default": 0,
                      "minimum": 0,
                      "maximum": 100
                    },
                    "StorageCapacityUnits": {
                      "type": "integer",
                      "description": "Number of additional storage capacity units to provision for the new Kendra index to be created. Can only be provided if if ExistingKendraIndexId is not provided.",
                      "default": 0,
                      "minimum": 0,
                      "maximum": 100
                    },
                    "KendraIndexEdition": {
                      "type": "string",
                      "description": "Edition of the Kendra index to be created. Can only be provided if if ExistingKendraIndexId is not provided.",
                      "enum": [
                        "DEVELOPER_EDITION",
                        "ENTERPRISE_EDITION"
                      ],
                      "default": "DEVELOPER_EDITION"
                    },
                    "AttributeFilter": {
                      "type": "object",
                      "description": "Filter to apply when querying the Kendra index. See: https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html"
                    },
                    "RoleBasedAccessControlEnabled": {
                      "type": "boolean",
                      "description": "Whether role-based access control is enabled on the Kendra index, used to restrict Kendra queries to documents accessible by user group and id.",
                      "default": false
                    }
                  },
                  "oneOf": [
                    {
                      "required": [
                        "ExistingKendraIndexId"
                      ],
                      "properties": {
                        "KendraIndexName": {
                          "not": {}
                        },
                        "QueryCapacityUnits": {
                          "not": {}
                        },
                        "StorageCapacityUnits": {
                          "not": {}
                        },
                        "KendraIndexEdition": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "required": [
                        "KendraIndexName"
                      ],
                      "properties": {
                        "ExistingKendraIndexId": {
                          "not": {}
                        }
                      }
                    }
                  ],
                  "additionalProperties": false
                },
                "BedrockKnowledgeBaseParams": {
                  "type": "object",
                  "description": "Parameters specific to Bedrock Knowledge Bases",
                  "properties": {
                    "BedrockKnowledgeBaseId": {
                      "type": "string",
                      "description": "ID of the Bedrock knowledge base to use in a RAG use case. Required if KnowledgeBaseType is Bedrock.",
                      "pattern": "^[0-9a-zA-Z]{1,10}$"
                    },
                    "RetrievalFilter": {
                      "type": "object",
                      "description": "Filter to apply when querying the Bedrock knowledge base. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html"
                    },
                    "OverrideSearchType": {
                      "type": "string",
                      "description": "If you're using an Amazon OpenSearch Serverless vector store that contains a filterable text field, you can specify whether to query the knowledge base with a HYBRID search using both vector embeddings and raw text, or SEMANTIC search using only vector embeddings. By default (if this is not provided), Amazon Bedrock will choose for you. For other vector store types, passing this parameter will result in a validation error during retrieval. For more information, see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html",
                      "enum": [
                        "HYBRID",
                        "SEMANTIC",
                        "NONE"
                      ],
                      "default": "NONE"
                    }
                  },
                  "required": [
                    "BedrockKnowledgeBaseId"
                  ],
                  "additionalProperties": false
                },
                "NumberOfDocs": {
                  "type": "integer",
                  "description": "The number of documents returned from the knowledge base which will be used as context to be sent to the LLM",
                  "default": 2,
                  "minimum": 1,
                  "maximum": 100
                },
                "ScoreThreshold": {
                  "type": "number",
                  "description": "The minimum score a document must have to be returned from the knowledge base",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 1
                },
                "ReturnSourceDocs": {
                  "type": "boolean",
                  "description": "Whether to return information about the source of documents returned from the knowledge base",
                  "default": false
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "KnowledgeBaseType": {
                      "enum": [
                        "Kendra"
                      ]
                    },
                    "BedrockKnowledgeBaseParams": {
                      "not": {}
                    }
                  },
                  "required": [
                    "KendraKnowledgeBaseParams"
                  ]
                },
                {
                  "properties": {
                    "KnowledgeBaseType": {
                      "enum": [
                        "Bedrock"
                      ]
                    },
                    "KendraKnowledgeBaseParams": {
                      "not": {}
                    }
                  },
                  "required": [
                    "BedrockKnowledgeBaseParams"
                  ]
                }
              ],
              "required": [
                "KnowledgeBaseType"
              ],
              "additionalProperties": false
            },
            "LlmParams": {
              "type": "object",
              "description": "Parameters related to the LLM performing inferences.",
              "properties": {
                "ModelProvider": {
                  "type": "string",
                  "description": "Name of the LLM provider which the use case will use",
                  "enum": [
                    "Bedrock",
                    "SageMaker",
                    "AgentCore"
                  ]
                },
                "BedrockLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                  "properties": {
                    "ModelId": {
                      "type": "string",
                      "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                      "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                    },
                    "ModelArn": {
                      "type": "string",
                      "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                    },
                    "InferenceProfileId": {
                      "type": "string",
                      "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                      "pattern": "^[a-zA-Z0-9-:.]+$"
                    },
                    "GuardrailIdentifier": {
                      "type": "string",
                      "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                    },
                    "GuardrailVersion": {
                      "type": "string",
                      "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                    },
                    "BedrockInferenceType": {
                      "type": "string",
                      "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                      "default": "QUICK_START",
                      "enum": [
                        "QUICK_START",
                        "OTHER_FOUNDATION",
                        "INFERENCE_PROFILE",
                        "PROVISIONED"
                      ]
                    }
                  },
                  "required": [
                    "BedrockInferenceType"
                  ],
                  "allOf": [
                    {
                      "oneOf": [
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "QUICK_START",
                                "OTHER_FOUNDATION"
                              ]
                            },
                            "InferenceProfileId": {
                              "not": {}
                            }
                          },
                          "required": [
                            "ModelId"
                          ]
                        },
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "INFERENCE_PROFILE"
                              ]
                            },
                            "ModelId": {
                              "not": {}
                            }
                          },
                          "required": [
                            "InferenceProfileId"
                          ]
                        },
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "PROVISIONED"
                              ]
                            }
                          },
                          "required": [
                            "ModelArn"
                          ]
                        }
                      ]
                    },
                    {
                      "oneOf": [
                        {
                          "required": [
                            "GuardrailIdentifier",
                            "GuardrailVersion"
                          ]
                        },
                        {
                          "properties": {
                            "GuardrailIdentifier": {
                              "not": {}
                            },
                            "GuardrailVersion": {
                              "not": {}
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "additionalProperties": false
                },
                "SageMakerLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                  "properties": {
                    "EndpointName": {
                      "type": "string",
                      "description": "Endpoint for the deployed model to use from SageMaker",
                      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                    },
                    "ModelInputPayloadSchema": {
                      "type": "object",
                      "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                    },
                    "ModelOutputJSONPath": {
                      "type": "string",
                      "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                      "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                    }
                  },
                  "required": [
                    "EndpointName",
                    "ModelInputPayloadSchema",
                    "ModelOutputJSONPath"
                  ],
                  "additionalProperties": false
                },
                "ModelParams": {
                  "type": "object",
                  "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "Value": {
                        "type": "string",
                        "description": "Value of the param"
                      },
                      "Type": {
                        "type": "string",
                        "enum": [
                          "string",
                          "integer",
                          "float",
                          "boolean",
                          "list",
                          "dictionary"
                        ],
                        "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                      }
                    },
                    "required": [
                      "Value",
                      "Type"
                    ]
                  }
                },
                "PromptParams": {
                  "type": "object",
                  "description": "Parameters related to the prompt(s) used by the use case",
                  "properties": {
                    "PromptTemplate": {
                      "type": "string",
                      "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                    },
                    "UserPromptEditingEnabled": {
                      "type": "boolean",
                      "description": "Whether to allow the user of the use case to edit their own prompt",
                      "default": true
                    },
                    "MaxPromptTemplateLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the system prompt template that a user can use in the use case",
                      "minimum": 0
                    },
                    "MaxInputTextLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the input text that can be sent to the LLM.",
                      "minimum": 1
                    },
                    "RephraseQuestion": {
                      "type": "boolean",
                      "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                      "default": true
                    },
                    "DisambiguationPromptTemplate": {
                      "type": "string",
                      "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                    },
                    "DisambiguationEnabled": {
                      "type": "boolean",
                      "description": "Whether to perform disambiguation for the use case. Only applies when using RAG.",
                      "default": true
                    }
                  },
                  "additionalProperties": false
                },
                "Temperature": {
                  "type": "number",
                  "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 100
                },
                "Streaming": {
                  "type": "boolean",
                  "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                },
                "RAGEnabled": {
                  "type": "boolean",
                  "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly.",
                  "default": true
                },
                "Verbose": {
                  "type": "boolean",
                  "description": "Whether to print out debug messages to the console",
                  "default": false
                },
                "MultimodalParams": {
                  "type": "object",
                  "description": "Parameters for the multimodal capability for the LLM.",
                  "properties": {
                    "MultimodalEnabled": {
                      "type": "boolean",
                      "description": "Allow the multimodal input capability for the LLM.",
                      "default": false
                    }
                  },
                  "required": [
                    "MultimodalEnabled"
                  ],
                  "additionalProperties": false
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "Bedrock"
                      ]
                    }
                  },
                  "required": [
                    "BedrockLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "SageMaker"
                      ]
                    }
                  },
                  "required": [
                    "SageMakerLlmParams"
                  ]
                }
              ],
              "additionalProperties": false
            },
            "AgentParams": {
              "type": "object",
              "description": "Parameters for Bedrock agent invocation workflow.",
              "properties": {
                "AgentType": {
                  "type": "string",
                  "description": "The type of agent to use. Required.",
                  "enum": [
                    "Bedrock"
                  ]
                },
                "BedrockAgentParams": {
                  "type": "object",
                  "properties": {
                    "AgentId": {
                      "type": "string",
                      "description": "ID of the Bedrock agent to be invoked.",
                      "pattern": "^[0-9a-zA-Z]+$",
                      "maxLength": 10
                    },
                    "AgentAliasId": {
                      "type": "string",
                      "description": "Alias ID of the Bedrock agent to be invoked.",
                      "pattern": "^[0-9a-zA-Z]+$",
                      "maxLength": 10
                    },
                    "EnableTrace": {
                      "type": "boolean",
                      "description": "Whether to enable tracing for the agent invocation.",
                      "default": false
                    }
                  },
                  "required": [
                    "AgentId",
                    "AgentAliasId",
                    "EnableTrace"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "AgentType"
              ],
              "additionalProperties": false
            }
          },
          "oneOf": [
            {
              "properties": {
                "UseCaseType": {
                  "enum": [
                    "Text"
                  ]
                }
              },
              "required": [
                "LlmParams"
              ],
              "oneOf": [
                {
                  "properties": {
                    "LlmParams": {
                      "properties": {
                        "RAGEnabled": {
                          "enum": [
                            false
                          ]
                        }
                      }
                    },
                    "KnowledgeBaseParams": {
                      "not": {}
                    }
                  }
                },
                {
                  "properties": {
                    "LlmParams": {
                      "properties": {
                        "RAGEnabled": {
                          "enum": [
                            true
                          ]
                        }
                      }
                    }
                  },
                  "required": [
                    "KnowledgeBaseParams"
                  ]
                }
              ]
            },
            {
              "properties": {
                "UseCaseType": {
                  "enum": [
                    "Agent"
                  ]
                },
                "KnowledgeBaseParams": {
                  "not": {}
                },
                "LlmParams": {
                  "not": {}
                }
              },
              "required": [
                "AgentParams"
              ]
            }
          ],
          "required": [
            "UseCaseType",
            "UseCaseName"
          ],
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseResponseModel053210C2": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of deploying a usecase",
        "Name": "DeployUseCaseResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "ID of the use case that was created"
            }
          },
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseApiBodyModel2E7FF7C8"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseApiBodyModel556ECDCC": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the PUT request to update a usecase",
        "Name": "UpdateUseCaseApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. Note on updates it is only possible to change private subnets and security groups. It is not possible to switch the VPC a use case is deployed in, or move an existing non-VPC use case into a VPC.",
              "properties": {
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets."
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups."
                }
              },
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Either \"Text\" or \"Agent\".",
              "enum": [
                "Text",
                "Agent"
              ]
            },
            "ConversationMemoryParams": {
              "type": "object",
              "description": "Parameters related to storing and using the chat history",
              "properties": {
                "ConversationMemoryType": {
                  "type": "string",
                  "default": "DynamoDB",
                  "enum": [
                    "DynamoDB"
                  ]
                },
                "HumanPrefix": {
                  "type": "string",
                  "description": "Prefix used in the history when storing messages sent by the user"
                },
                "AiPrefix": {
                  "type": "string",
                  "description": "Prefix used in the history when storing responses from the LLM"
                },
                "ChatHistoryLength": {
                  "type": "integer",
                  "description": "Number of messages to store in the history",
                  "minimum": 0
                }
              },
              "additionalProperties": false
            },
            "KnowledgeBaseParams": {
              "type": "object",
              "description": "Parameters related to the knowledge base. Based on KnowledgeBaseType, different nested parameters are required.",
              "properties": {
                "KnowledgeBaseType": {
                  "type": "string",
                  "description": "The type of knowledge base to use. Required.",
                  "default": "Kendra",
                  "enum": [
                    "Kendra",
                    "Bedrock"
                  ]
                },
                "NoDocsFoundResponse": {
                  "type": "string",
                  "description": "Response text message to use when the knowledge base does not return any documents",
                  "minLength": 1
                },
                "KendraKnowledgeBaseParams": {
                  "type": "object",
                  "description": "Parameters specific to Kendra. Note on update we can only reference an existing Kendra index, creating a new one is not supported currently.",
                  "properties": {
                    "ExistingKendraIndexId": {
                      "type": "string",
                      "description": "Index ID of an existing Kendra index to be used for the use case. Required if KendraIndexName is not provided.",
                      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
                    },
                    "AttributeFilter": {
                      "type": "object",
                      "description": "Filter to apply when querying the Kendra index. See: https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html"
                    },
                    "RoleBasedAccessControlEnabled": {
                      "type": "boolean",
                      "description": "Whether role-based access control is enabled on the Kendra index, used to restrict Kendra queries to documents accessible by user group and id.",
                      "default": false
                    }
                  },
                  "minProperties": 1,
                  "additionalProperties": false
                },
                "BedrockKnowledgeBaseParams": {
                  "type": "object",
                  "description": "Parameters specific to Bedrock Knowledge Bases",
                  "properties": {
                    "BedrockKnowledgeBaseId": {
                      "type": "string",
                      "description": "ID of the Bedrock knowledge base to use in a RAG use case. Required if KnowledgeBaseType is Bedrock.",
                      "pattern": "^[0-9a-zA-Z]{1,10}$"
                    },
                    "RetrievalFilter": {
                      "type": "object",
                      "description": "Filter to apply when querying the Bedrock knowledge base. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html"
                    },
                    "OverrideSearchType": {
                      "type": "string",
                      "description": "If you're using an Amazon OpenSearch Serverless vector store that contains a filterable text field, you can specify whether to query the knowledge base with a HYBRID search using both vector embeddings and raw text, or SEMANTIC search using only vector embeddings. By default (if this is not provided), Amazon Bedrock will choose for you. For other vector store types, passing this parameter will result in a validation error during retrieval. For more information, see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html",
                      "enum": [
                        "HYBRID",
                        "SEMANTIC",
                        "NONE"
                      ],
                      "default": "NONE"
                    }
                  },
                  "additionalProperties": false
                },
                "NumberOfDocs": {
                  "type": "integer",
                  "description": "The number of documents returned from the knowledge base which will be used as context to be sent to the LLM",
                  "default": 2,
                  "minimum": 1,
                  "maximum": 100
                },
                "ScoreThreshold": {
                  "type": "number",
                  "description": "The minimum score a document must have to be returned from the knowledge base",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 1
                },
                "ReturnSourceDocs": {
                  "type": "boolean",
                  "description": "Whether to return information about the source of documents returned from the knowledge base",
                  "default": false
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "KnowledgeBaseType": {
                      "not": {}
                    }
                  }
                },
                {
                  "properties": {
                    "KnowledgeBaseType": {
                      "enum": [
                        "Kendra"
                      ]
                    },
                    "BedrockKnowledgeBaseParams": {
                      "not": {}
                    }
                  },
                  "required": [
                    "KendraKnowledgeBaseParams",
                    "KnowledgeBaseType"
                  ]
                },
                {
                  "properties": {
                    "KnowledgeBaseType": {
                      "enum": [
                        "Bedrock"
                      ]
                    },
                    "KendraKnowledgeBaseParams": {
                      "not": {}
                    }
                  },
                  "required": [
                    "BedrockKnowledgeBaseParams",
                    "KnowledgeBaseType"
                  ]
                }
              ],
              "additionalProperties": false
            },
            "LlmParams": {
              "type": "object",
              "properties": {
                "ModelProvider": {
                  "type": "string",
                  "description": "Name of the LLM provider which the use case will use",
                  "enum": [
                    "Bedrock",
                    "SageMaker",
                    "AgentCore"
                  ]
                },
                "BedrockLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                  "properties": {
                    "ModelId": {
                      "type": "string",
                      "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                      "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                    },
                    "ModelArn": {
                      "type": "string",
                      "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                    },
                    "InferenceProfileId": {
                      "type": "string",
                      "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                      "pattern": "^[a-zA-Z0-9-:.]+$"
                    },
                    "GuardrailIdentifier": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. To remove a guardrail set this value to 'null'. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax.",
                      "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                    },
                    "GuardrailVersion": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                    },
                    "BedrockInferenceType": {
                      "type": "string",
                      "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                      "default": "QUICK_START",
                      "enum": [
                        "QUICK_START",
                        "OTHER_FOUNDATION",
                        "INFERENCE_PROFILE",
                        "PROVISIONED"
                      ]
                    }
                  },
                  "required": [
                    "BedrockInferenceType"
                  ],
                  "oneOf": [
                    {
                      "required": [
                        "ModelId"
                      ],
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "QUICK_START",
                            "OTHER_FOUNDATION"
                          ]
                        },
                        "InferenceProfileId": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "required": [
                        "InferenceProfileId"
                      ],
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "INFERENCE_PROFILE"
                          ]
                        },
                        "ModelId": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "PROVISIONED"
                          ]
                        }
                      },
                      "required": [
                        "ModelArn"
                      ]
                    },
                    {
                      "properties": {
                        "ModelId": {
                          "not": {}
                        },
                        "InferenceProfileId": {
                          "not": {}
                        },
                        "ModelArn": {
                          "not": {}
                        }
                      }
                    }
                  ],
                  "additionalProperties": false
                },
                "SageMakerLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                  "properties": {
                    "EndpointName": {
                      "type": "string",
                      "description": "Endpoint for the deployed model to use from SageMaker",
                      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                    },
                    "ModelInputPayloadSchema": {
                      "type": "object",
                      "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                    },
                    "ModelOutputJSONPath": {
                      "type": "string",
                      "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                      "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                    }
                  },
                  "additionalProperties": false
                },
                "ModelParams": {
                  "type": "object",
                  "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "Value": {
                        "type": "string",
                        "description": "Value of the param"
                      },
                      "Type": {
                        "type": "string",
                        "enum": [
                          "string",
                          "integer",
                          "float",
                          "boolean",
                          "list",
                          "dictionary"
                        ],
                        "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                      }
                    },
                    "required": [
                      "Value",
                      "Type"
                    ]
                  }
                },
                "PromptParams": {
                  "type": "object",
                  "description": "Parameters related to the prompt(s) used by the use case",
                  "properties": {
                    "PromptTemplate": {
                      "type": "string",
                      "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                    },
                    "UserPromptEditingEnabled": {
                      "type": "boolean",
                      "description": "Whether to allow the user of the use case to edit their own prompt"
                    },
                    "MaxPromptTemplateLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the prompt template that a user can use in the use case"
                    },
                    "MaxInputTextLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the input text that can be sent to the LLM."
                    },
                    "RephraseQuestion": {
                      "type": "boolean",
                      "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                      "default": true
                    },
                    "DisambiguationPromptTemplate": {
                      "type": "string",
                      "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                    },
                    "DisambiguationEnabled": {
                      "type": "boolean",
                      "description": "Whether to disable disambiguation for the use case. Only applies when using RAG."
                    }
                  },
                  "additionalProperties": false
                },
                "Temperature": {
                  "type": "number",
                  "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 100
                },
                "Streaming": {
                  "type": "boolean",
                  "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                },
                "RAGEnabled": {
                  "type": "boolean",
                  "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly."
                },
                "Verbose": {
                  "type": "boolean",
                  "description": "Whether to print out debug messages to the console"
                },
                "MultimodalParams": {
                  "type": "object",
                  "description": "Parameters for the multimodal capability for the LLM.",
                  "properties": {
                    "MultimodalEnabled": {
                      "type": "boolean",
                      "description": "Allow the multimodal input capability for the LLM.",
                      "default": false
                    }
                  },
                  "required": [
                    "MultimodalEnabled"
                  ],
                  "additionalProperties": false
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "Bedrock"
                      ]
                    }
                  },
                  "required": [
                    "BedrockLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "SageMaker"
                      ]
                    }
                  },
                  "required": [
                    "SageMakerLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "not": {}
                    }
                  }
                }
              ],
              "additionalProperties": false
            },
            "AgentParams": {
              "type": "object",
              "description": "Parameters for Bedrock agent invocation workflow.",
              "properties": {
                "AgentType": {
                  "type": "string",
                  "description": "The type of agent to use. Required.",
                  "enum": [
                    "Bedrock"
                  ]
                },
                "BedrockAgentParams": {
                  "type": "object",
                  "properties": {
                    "AgentId": {
                      "type": "string",
                      "description": "ID of the Bedrock agent to be invoked.",
                      "pattern": "^[0-9a-zA-Z]+$",
                      "maxLength": 10
                    },
                    "AgentAliasId": {
                      "type": "string",
                      "description": "Alias ID of the Bedrock agent to be invoked.",
                      "pattern": "^[0-9a-zA-Z]+$",
                      "maxLength": 10
                    },
                    "EnableTrace": {
                      "type": "boolean",
                      "description": "Whether to enable tracing for the agent invocation.",
                      "default": false
                    }
                  },
                  "required": [
                    "AgentId",
                    "AgentAliasId"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "anyOf": [
            {
              "required": [
                "UseCaseDescription"
              ]
            },
            {
              "required": [
                "DefaultUserEmail"
              ]
            },
            {
              "required": [
                "VpcParams"
              ]
            },
            {
              "required": [
                "ConversationMemoryParams"
              ]
            },
            {
              "required": [
                "KnowledgeBaseParams"
              ]
            },
            {
              "required": [
                "LlmParams"
              ]
            },
            {
              "required": [
                "AgentParams"
              ]
            },
            {
              "required": [
                "AuthenticationParams"
              ]
            },
            {
              "required": [
                "ProvisionedConcurrencyValue"
              ]
            }
          ],
          "required": [
            "UseCaseType"
          ],
          "additionalProperties": false
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployUseCaseResponseModel053210C2"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseResponseModel43C6C5F9": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of updating a usecase",
        "Name": "UpdateUseCaseResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "ID of the use case that was updated"
            }
          },
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateUseCaseApiBodyModel556ECDCC"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPApiBodyModel900147D1": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the POST request to deploy a mcp",
        "Name": "DeployMCPApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "UseCaseName": {
              "type": "string",
              "description": "Friendly name of the use case to be deployed. For display purposes."
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. VPC can be either created for you, or provided by the user depending on the parameters provided.",
              "properties": {
                "VpcEnabled": {
                  "type": "boolean",
                  "description": "Should the use case stacks resources be deployed within a VPC",
                  "default": false
                },
                "CreateNewVpc": {
                  "type": "boolean",
                  "description": "If true, a new VPC will be created for the use case.",
                  "default": false
                },
                "ExistingVpcId": {
                  "type": "string",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed within the specified VPC.",
                  "pattern": "^vpc-\\w{8}(\\w{9})?$"
                },
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets.",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups.",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    }
                  },
                  "required": [
                    "ExistingVpcId",
                    "ExistingPrivateSubnetIds",
                    "ExistingSecurityGroupIds"
                  ]
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    },
                    "CreateNewVpc": {
                      "not": {}
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                }
              ],
              "required": [
                "VpcEnabled"
              ],
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Must be \"MCPServer\" for MCP deployments.",
              "enum": [
                "MCPServer"
              ]
            },
            "MCPParams": {
              "type": "object",
              "description": "Parameters for MCP server configuration.",
              "properties": {
                "GatewayParams": {
                  "type": "object",
                  "description": "Gateway configuration parameters for MCP servers",
                  "properties": {
                    "GatewayArn": {
                      "type": "string",
                      "description": "ARN of the MCP Gateway",
                      "pattern": "^arn:aws:bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:gateway/[a-zA-Z0-9-]+$"
                    },
                    "GatewayUrl": {
                      "type": "string",
                      "description": "URL of the MCP Gateway",
                      "pattern": "^https://[a-zA-Z0-9-]+\\.gateway\\.bedrock-agentcore\\.[a-z0-9-]+\\.amazonaws\\.com/mcp$"
                    },
                    "GatewayName": {
                      "type": "string",
                      "description": "Name of the MCP Gateway"
                    },
                    "GatewayId": {
                      "type": "string",
                      "description": "Unique identifier for the MCP Gateway",
                      "pattern": "^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)+$"
                    },
                    "TargetParams": {
                      "type": "array",
                      "description": "Array of Gateway targets (Lambda, OpenAPI, Smithy)",
                      "items": {
                        "type": "object",
                        "description": "Configuration for a Gateway target (Lambda, OpenAPI, or Smithy)",
                        "properties": {
                          "TargetName": {
                            "type": "string",
                            "description": "Unique name for the Gateway target",
                            "pattern": "([0-9a-zA-Z][-]?){1,100}",
                            "minLength": 1,
                            "maxLength": 100
                          },
                          "TargetDescription": {
                            "type": "string",
                            "description": "Description of the Gateway target",
                            "maxLength": 200
                          },
                          "TargetType": {
                            "type": "string",
                            "description": "Type of the Gateway target",
                            "enum": [
                              "openApiSchema",
                              "smithyModel",
                              "lambda",
                              "mcpServer"
                            ]
                          },
                          "TargetId": {
                            "type": "string",
                            "description": "Unique identifier for the Gateway target (10 uppercase characters)",
                            "pattern": "^[A-Z0-9]{10}$",
                            "minLength": 10,
                            "maxLength": 10
                          },
                          "LambdaArn": {
                            "type": "string",
                            "description": "ARN of the Lambda function (required for lambda target type)",
                            "pattern": "^arn:aws[a-zA-Z-]*:lambda:[a-z0-9-]+:[0-9]{12}:function:[a-zA-Z0-9-_]+(?::[a-zA-Z0-9-_]+)?$"
                          },
                          "McpEndpoint": {
                            "type": "string",
                            "description": "HTTPS endpoint URL for MCP Server (required for mcpServer target type)",
                            "pattern": "^https://[a-zA-Z\\d]([a-zA-Z\\d.-]*[a-zA-Z\\d])?(?::[1-9]\\d{0,4})?(?:/[a-zA-Z\\d._~:/?#@!$&'()*+,;=%-]*)?$",
                            "minLength": 1
                          },
                          "SchemaUri": {
                            "type": "string",
                            "description": "MCP schema key path for the target configuration",
                            "pattern": "^mcp/schemas/(lambda|openApiSchema|smithyModel)/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\\.(json|yaml|yml|smithy)$",
                            "minLength": 1
                          },
                          "OutboundAuthParams": {
                            "oneOf": [
                              {
                                "type": "object",
                                "description": "OAuth authentication configuration",
                                "properties": {
                                  "OutboundAuthProviderType": {
                                    "type": "string",
                                    "enum": [
                                      "OAUTH"
                                    ]
                                  },
                                  "OutboundAuthProviderArn": {
                                    "type": "string",
                                    "description": "ARN of the OAuth authentication provider",
                                    "pattern": "^arn:aws[a-zA-Z-]*:bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:token-vault\\/[A-Za-z0-9._-]+\\/oauth2credentialprovider\\/[A-Za-z0-9._-]+$",
                                    "minLength": 1
                                  },
                                  "AdditionalConfigParams": {
                                    "type": "object",
                                    "description": "Additional configuration parameters for authentication",
                                    "properties": {
                                      "OAuthAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional OAuth configuration",
                                        "properties": {
                                          "scopes": {
                                            "type": "array",
                                            "description": "OAuth scopes",
                                            "maxItems": 100,
                                            "items": {
                                              "type": "string",
                                              "maxLength": 64
                                            }
                                          },
                                          "customParameters": {
                                            "type": "array",
                                            "description": "Custom OAuth parameters",
                                            "maxItems": 10,
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "key": {
                                                  "type": "string",
                                                  "description": "Parameter key",
                                                  "maxLength": 256
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "Parameter value",
                                                  "maxLength": 2048
                                                }
                                              },
                                              "additionalProperties": false
                                            }
                                          }
                                        },
                                        "additionalProperties": false
                                      },
                                      "ApiKeyAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional API Key configuration",
                                        "properties": {
                                          "location": {
                                            "type": "string",
                                            "description": "Location of the API key",
                                            "enum": [
                                              "HEADER",
                                              "QUERY_PARAMETER"
                                            ]
                                          },
                                          "parameterName": {
                                            "type": "string",
                                            "description": "Name of the parameter containing the API key",
                                            "maxLength": 64
                                          },
                                          "prefix": {
                                            "type": "string",
                                            "description": "Prefix for the API key value",
                                            "maxLength": 64
                                          }
                                        },
                                        "additionalProperties": false
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "OutboundAuthProviderArn",
                                  "OutboundAuthProviderType"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "description": "API Key authentication configuration",
                                "properties": {
                                  "OutboundAuthProviderType": {
                                    "type": "string",
                                    "enum": [
                                      "API_KEY"
                                    ]
                                  },
                                  "OutboundAuthProviderArn": {
                                    "type": "string",
                                    "description": "ARN of the API Key authentication provider",
                                    "pattern": "^arn:aws[a-zA-Z-]*:bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:token-vault\\/[A-Za-z0-9._-]+\\/apikeycredentialprovider\\/[A-Za-z0-9._-]+$",
                                    "minLength": 1
                                  },
                                  "AdditionalConfigParams": {
                                    "type": "object",
                                    "description": "Additional configuration parameters for authentication",
                                    "properties": {
                                      "OAuthAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional OAuth configuration",
                                        "properties": {
                                          "scopes": {
                                            "type": "array",
                                            "description": "OAuth scopes",
                                            "maxItems": 100,
                                            "items": {
                                              "type": "string",
                                              "maxLength": 64
                                            }
                                          },
                                          "customParameters": {
                                            "type": "array",
                                            "description": "Custom OAuth parameters",
                                            "maxItems": 10,
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "key": {
                                                  "type": "string",
                                                  "description": "Parameter key",
                                                  "maxLength": 256
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "Parameter value",
                                                  "maxLength": 2048
                                                }
                                              },
                                              "additionalProperties": false
                                            }
                                          }
                                        },
                                        "additionalProperties": false
                                      },
                                      "ApiKeyAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional API Key configuration",
                                        "properties": {
                                          "location": {
                                            "type": "string",
                                            "description": "Location of the API key",
                                            "enum": [
                                              "HEADER",
                                              "QUERY_PARAMETER"
                                            ]
                                          },
                                          "parameterName": {
                                            "type": "string",
                                            "description": "Name of the parameter containing the API key",
                                            "maxLength": 64
                                          },
                                          "prefix": {
                                            "type": "string",
                                            "description": "Prefix for the API key value",
                                            "maxLength": 64
                                          }
                                        },
                                        "additionalProperties": false
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "OutboundAuthProviderArn",
                                  "OutboundAuthProviderType"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "required": [
                          "TargetName",
                          "TargetType"
                        ],
                        "oneOf": [
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "lambda"
                                ]
                              }
                            },
                            "required": [
                              "LambdaArn",
                              "SchemaUri"
                            ]
                          },
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "openApiSchema"
                                ]
                              }
                            },
                            "required": [
                              "SchemaUri",
                              "OutboundAuthParams"
                            ]
                          },
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "smithyModel"
                                ]
                              }
                            },
                            "required": [
                              "SchemaUri"
                            ]
                          },
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "mcpServer"
                                ]
                              }
                            },
                            "required": [
                              "McpEndpoint"
                            ]
                          }
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 1,
                      "maxItems": 10
                    }
                  },
                  "required": [
                    "TargetParams"
                  ],
                  "additionalProperties": false
                },
                "RuntimeParams": {
                  "type": "object",
                  "description": "Runtime-specific configuration (required for RUNTIME type)",
                  "properties": {
                    "EcrUri": {
                      "type": "string",
                      "description": "ECR Docker image URI for the MCP server runtime",
                      "pattern": "^(\\d{12})\\.dkr\\.ecr\\.([a-z\\d-]+)\\.amazonaws\\.com\\/(?=.{2,256}:)((?:[a-z\\d]+(?:[._-][a-z\\d]+)*\\/)*[a-z\\d]+(?:[._-][a-z\\d]+)*):([a-zA-Z\\d._-]{1,300})$"
                    },
                    "EnvironmentVariables": {
                      "type": "object",
                      "description": "Environment variables to pass to the MCP server runtime container",
                      "maxProperties": 50,
                      "patternProperties": {
                        "^[a-zA-Z_][a-zA-Z0-9_]*$": {
                          "type": "string",
                          "description": "Environment variable value"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "EcrUri"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "oneOf": [
            {
              "properties": {
                "MCPParams": {
                  "properties": {
                    "RuntimeParams": {
                      "not": {}
                    }
                  },
                  "required": [
                    "GatewayParams"
                  ]
                }
              }
            },
            {
              "properties": {
                "MCPParams": {
                  "properties": {
                    "GatewayParams": {
                      "not": {}
                    }
                  },
                  "required": [
                    "RuntimeParams"
                  ]
                }
              }
            }
          ],
          "required": [
            "UseCaseName",
            "UseCaseType",
            "MCPParams"
          ],
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPResponseModel8CA8B5F9": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of deploying a mcp",
        "Name": "DeployMCPResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "ID of the MCP use case that was created"
            }
          },
          "required": [
            "useCaseId"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPApiBodyModel900147D1"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPApiBodyModelE22AA355": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the PUT request to update a mcp",
        "Name": "UpdateMCPApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. Note on updates it is only possible to change private subnets and security groups. It is not possible to switch the VPC a use case is deployed in, or move an existing non-VPC use case into a VPC.",
              "properties": {
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets."
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups."
                }
              },
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be uploaded. Must be \"MCPServer\" for MCP deployments.",
              "enum": [
                "MCPServer"
              ]
            },
            "MCPParams": {
              "type": "object",
              "description": "Parameters for MCP server configuration updates.",
              "properties": {
                "GatewayParams": {
                  "type": "object",
                  "description": "Gateway configuration parameters for MCP servers",
                  "properties": {
                    "GatewayArn": {
                      "type": "string",
                      "description": "ARN of the MCP Gateway",
                      "pattern": "^arn:aws:bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:gateway/[a-zA-Z0-9-]+$"
                    },
                    "GatewayUrl": {
                      "type": "string",
                      "description": "URL of the MCP Gateway",
                      "pattern": "^https://[a-zA-Z0-9-]+\\.gateway\\.bedrock-agentcore\\.[a-z0-9-]+\\.amazonaws\\.com/mcp$"
                    },
                    "GatewayName": {
                      "type": "string",
                      "description": "Name of the MCP Gateway"
                    },
                    "GatewayId": {
                      "type": "string",
                      "description": "Unique identifier for the MCP Gateway",
                      "pattern": "^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)+$"
                    },
                    "TargetParams": {
                      "type": "array",
                      "description": "Array of Gateway targets (Lambda, OpenAPI, Smithy)",
                      "items": {
                        "type": "object",
                        "description": "Configuration for a Gateway target (Lambda, OpenAPI, or Smithy)",
                        "properties": {
                          "TargetName": {
                            "type": "string",
                            "description": "Unique name for the Gateway target",
                            "pattern": "([0-9a-zA-Z][-]?){1,100}",
                            "minLength": 1,
                            "maxLength": 100
                          },
                          "TargetDescription": {
                            "type": "string",
                            "description": "Description of the Gateway target",
                            "maxLength": 200
                          },
                          "TargetType": {
                            "type": "string",
                            "description": "Type of the Gateway target",
                            "enum": [
                              "openApiSchema",
                              "smithyModel",
                              "lambda",
                              "mcpServer"
                            ]
                          },
                          "TargetId": {
                            "type": "string",
                            "description": "Unique identifier for the Gateway target (10 uppercase characters)",
                            "pattern": "^[A-Z0-9]{10}$",
                            "minLength": 10,
                            "maxLength": 10
                          },
                          "LambdaArn": {
                            "type": "string",
                            "description": "ARN of the Lambda function (required for lambda target type)",
                            "pattern": "^arn:aws[a-zA-Z-]*:lambda:[a-z0-9-]+:[0-9]{12}:function:[a-zA-Z0-9-_]+(?::[a-zA-Z0-9-_]+)?$"
                          },
                          "McpEndpoint": {
                            "type": "string",
                            "description": "HTTPS endpoint URL for MCP Server (required for mcpServer target type)",
                            "pattern": "^https://[a-zA-Z\\d]([a-zA-Z\\d.-]*[a-zA-Z\\d])?(?::[1-9]\\d{0,4})?(?:/[a-zA-Z\\d._~:/?#@!$&'()*+,;=%-]*)?$",
                            "minLength": 1
                          },
                          "SchemaUri": {
                            "type": "string",
                            "description": "MCP schema key path for the target configuration",
                            "pattern": "^mcp/schemas/(lambda|openApiSchema|smithyModel)/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\\.(json|yaml|yml|smithy)$",
                            "minLength": 1
                          },
                          "OutboundAuthParams": {
                            "oneOf": [
                              {
                                "type": "object",
                                "description": "OAuth authentication configuration",
                                "properties": {
                                  "OutboundAuthProviderType": {
                                    "type": "string",
                                    "enum": [
                                      "OAUTH"
                                    ]
                                  },
                                  "OutboundAuthProviderArn": {
                                    "type": "string",
                                    "description": "ARN of the OAuth authentication provider",
                                    "pattern": "^arn:aws[a-zA-Z-]*:bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:token-vault\\/[A-Za-z0-9._-]+\\/oauth2credentialprovider\\/[A-Za-z0-9._-]+$",
                                    "minLength": 1
                                  },
                                  "AdditionalConfigParams": {
                                    "type": "object",
                                    "description": "Additional configuration parameters for authentication",
                                    "properties": {
                                      "OAuthAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional OAuth configuration",
                                        "properties": {
                                          "scopes": {
                                            "type": "array",
                                            "description": "OAuth scopes",
                                            "maxItems": 100,
                                            "items": {
                                              "type": "string",
                                              "maxLength": 64
                                            }
                                          },
                                          "customParameters": {
                                            "type": "array",
                                            "description": "Custom OAuth parameters",
                                            "maxItems": 10,
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "key": {
                                                  "type": "string",
                                                  "description": "Parameter key",
                                                  "maxLength": 256
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "Parameter value",
                                                  "maxLength": 2048
                                                }
                                              },
                                              "additionalProperties": false
                                            }
                                          }
                                        },
                                        "additionalProperties": false
                                      },
                                      "ApiKeyAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional API Key configuration",
                                        "properties": {
                                          "location": {
                                            "type": "string",
                                            "description": "Location of the API key",
                                            "enum": [
                                              "HEADER",
                                              "QUERY_PARAMETER"
                                            ]
                                          },
                                          "parameterName": {
                                            "type": "string",
                                            "description": "Name of the parameter containing the API key",
                                            "maxLength": 64
                                          },
                                          "prefix": {
                                            "type": "string",
                                            "description": "Prefix for the API key value",
                                            "maxLength": 64
                                          }
                                        },
                                        "additionalProperties": false
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "OutboundAuthProviderArn",
                                  "OutboundAuthProviderType"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "description": "API Key authentication configuration",
                                "properties": {
                                  "OutboundAuthProviderType": {
                                    "type": "string",
                                    "enum": [
                                      "API_KEY"
                                    ]
                                  },
                                  "OutboundAuthProviderArn": {
                                    "type": "string",
                                    "description": "ARN of the API Key authentication provider",
                                    "pattern": "^arn:aws[a-zA-Z-]*:bedrock-agentcore:[a-z0-9-]+:[0-9]{12}:token-vault\\/[A-Za-z0-9._-]+\\/apikeycredentialprovider\\/[A-Za-z0-9._-]+$",
                                    "minLength": 1
                                  },
                                  "AdditionalConfigParams": {
                                    "type": "object",
                                    "description": "Additional configuration parameters for authentication",
                                    "properties": {
                                      "OAuthAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional OAuth configuration",
                                        "properties": {
                                          "scopes": {
                                            "type": "array",
                                            "description": "OAuth scopes",
                                            "maxItems": 100,
                                            "items": {
                                              "type": "string",
                                              "maxLength": 64
                                            }
                                          },
                                          "customParameters": {
                                            "type": "array",
                                            "description": "Custom OAuth parameters",
                                            "maxItems": 10,
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "key": {
                                                  "type": "string",
                                                  "description": "Parameter key",
                                                  "maxLength": 256
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "Parameter value",
                                                  "maxLength": 2048
                                                }
                                              },
                                              "additionalProperties": false
                                            }
                                          }
                                        },
                                        "additionalProperties": false
                                      },
                                      "ApiKeyAdditionalConfig": {
                                        "type": "object",
                                        "description": "Additional API Key configuration",
                                        "properties": {
                                          "location": {
                                            "type": "string",
                                            "description": "Location of the API key",
                                            "enum": [
                                              "HEADER",
                                              "QUERY_PARAMETER"
                                            ]
                                          },
                                          "parameterName": {
                                            "type": "string",
                                            "description": "Name of the parameter containing the API key",
                                            "maxLength": 64
                                          },
                                          "prefix": {
                                            "type": "string",
                                            "description": "Prefix for the API key value",
                                            "maxLength": 64
                                          }
                                        },
                                        "additionalProperties": false
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "OutboundAuthProviderArn",
                                  "OutboundAuthProviderType"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "required": [
                          "TargetName",
                          "TargetType"
                        ],
                        "oneOf": [
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "lambda"
                                ]
                              }
                            },
                            "required": [
                              "LambdaArn",
                              "SchemaUri"
                            ]
                          },
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "openApiSchema"
                                ]
                              }
                            },
                            "required": [
                              "SchemaUri",
                              "OutboundAuthParams"
                            ]
                          },
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "smithyModel"
                                ]
                              }
                            },
                            "required": [
                              "SchemaUri"
                            ]
                          },
                          {
                            "properties": {
                              "TargetType": {
                                "enum": [
                                  "mcpServer"
                                ]
                              }
                            },
                            "required": [
                              "McpEndpoint"
                            ]
                          }
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 1,
                      "maxItems": 10
                    }
                  },
                  "required": [
                    "TargetParams"
                  ],
                  "additionalProperties": false
                },
                "RuntimeParams": {
                  "type": "object",
                  "description": "Runtime-specific configuration updates (only for RUNTIME type)",
                  "properties": {
                    "EcrUri": {
                      "type": "string",
                      "description": "ECR Docker image URI for the MCP server runtime",
                      "pattern": "^(\\d{12})\\.dkr\\.ecr\\.([a-z\\d-]+)\\.amazonaws\\.com\\/(?=.{2,256}:)((?:[a-z\\d]+(?:[._-][a-z\\d]+)*\\/)*[a-z\\d]+(?:[._-][a-z\\d]+)*):([a-zA-Z\\d._-]{1,300})$"
                    },
                    "EnvironmentVariables": {
                      "type": "object",
                      "description": "Environment variables to pass to the MCP server runtime container",
                      "maxProperties": 50,
                      "patternProperties": {
                        "^[a-zA-Z_][a-zA-Z0-9_]*$": {
                          "type": "string",
                          "description": "Environment variable value"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "anyOf": [
                {
                  "required": [
                    "GatewayParams"
                  ]
                },
                {
                  "required": [
                    "RuntimeParams"
                  ]
                }
              ],
              "additionalProperties": false
            }
          },
          "oneOf": [
            {
              "properties": {
                "MCPParams": {
                  "properties": {
                    "RuntimeParams": {
                      "not": {}
                    }
                  }
                }
              }
            },
            {
              "properties": {
                "MCPParams": {
                  "properties": {
                    "GatewayParams": {
                      "not": {}
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "MCPParams"
          ],
          "additionalProperties": false
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployMCPResponseModel8CA8B5F9"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPResponseModel99B71EB0": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of updating a mcp",
        "Name": "UpdateMCPResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "ID of the MCP use case that was updated"
            }
          },
          "required": [
            "useCaseId"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateMCPApiBodyModelE22AA355"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUploadMCPSchemasApiRequestModelF2208983": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure for uploading MCP schemas",
        "Name": "UploadMCPSchemasApiRequestModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "files": {
              "type": "array",
              "description": "Array of files to be uploaded for MCP schema processing",
              "minItems": 1,
              "maxItems": 10,
              "items": {
                "type": "object",
                "properties": {
                  "schemaType": {
                    "type": "string",
                    "description": "Type of schema being uploaded. Determines allowed file extensions and validation rules.",
                    "enum": [
                      "openApiSchema",
                      "smithyModel",
                      "lambda",
                      "mcpServer"
                    ]
                  },
                  "fileName": {
                    "type": "string",
                    "description": "Name of the file being uploaded. Must have appropriate extension for the schema type. Detailed validation is performed at the Lambda level.",
                    "pattern": "^.+\\.(json|yaml|yml|smithy)$",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "required": [
                  "schemaType",
                  "fileName"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "files"
          ],
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUploadMCPSchemasResponseModel7B8EF768": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the response structure for MCP schema upload requests",
        "Name": "UploadMCPSchemasResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "uploads": {
              "type": "array",
              "description": "Array of presigned POST responses for uploading schema files",
              "items": {
                "type": "object",
                "properties": {
                  "uploadUrl": {
                    "type": "string",
                    "description": "The S3 presigned POST URL for uploading the file",
                    "format": "uri"
                  },
                  "formFields": {
                    "type": "object",
                    "description": "Form fields required for the S3 presigned POST request",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "fileName": {
                    "type": "string",
                    "description": "Original name of the file to be uploaded"
                  },
                  "expiresIn": {
                    "type": "integer",
                    "description": "Number of seconds until the presigned URL expires",
                    "minimum": 1
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 timestamp when the presigned URL was created",
                    "format": "date-time"
                  }
                },
                "required": [
                  "uploadUrl",
                  "formFields",
                  "fileName",
                  "expiresIn",
                  "createdAt"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "uploads"
          ],
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentApiBodyModelADA43E68": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the POST request to deploy a agent",
        "Name": "DeployAgentApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "description": "Schema for deploying an agent use case",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "UseCaseName": {
              "type": "string",
              "description": "Friendly name of the use case to be deployed. For display purposes."
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. VPC can be either created for you, or provided by the user depending on the parameters provided.",
              "properties": {
                "VpcEnabled": {
                  "type": "boolean",
                  "description": "Should the use case stacks resources be deployed within a VPC",
                  "default": false
                },
                "CreateNewVpc": {
                  "type": "boolean",
                  "description": "If true, a new VPC will be created for the use case.",
                  "default": false
                },
                "ExistingVpcId": {
                  "type": "string",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed within the specified VPC.",
                  "pattern": "^vpc-\\w{8}(\\w{9})?$"
                },
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets.",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups.",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    }
                  },
                  "required": [
                    "ExistingVpcId",
                    "ExistingPrivateSubnetIds",
                    "ExistingSecurityGroupIds"
                  ]
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    },
                    "CreateNewVpc": {
                      "not": {}
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                }
              ],
              "required": [
                "VpcEnabled"
              ],
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Must be \"AgentBuilder\" for agent deployments.",
              "enum": [
                "AgentBuilder"
              ]
            },
            "LlmParams": {
              "type": "object",
              "description": "Parameters related to the LLM performing inferences.",
              "properties": {
                "ModelProvider": {
                  "type": "string",
                  "description": "Name of the LLM provider which the use case will use",
                  "enum": [
                    "Bedrock",
                    "SageMaker",
                    "AgentCore"
                  ]
                },
                "BedrockLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                  "properties": {
                    "ModelId": {
                      "type": "string",
                      "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                      "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                    },
                    "ModelArn": {
                      "type": "string",
                      "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                    },
                    "InferenceProfileId": {
                      "type": "string",
                      "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                      "pattern": "^[a-zA-Z0-9-:.]+$"
                    },
                    "GuardrailIdentifier": {
                      "type": "string",
                      "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                    },
                    "GuardrailVersion": {
                      "type": "string",
                      "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                    },
                    "BedrockInferenceType": {
                      "type": "string",
                      "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                      "default": "QUICK_START",
                      "enum": [
                        "QUICK_START",
                        "OTHER_FOUNDATION",
                        "INFERENCE_PROFILE",
                        "PROVISIONED"
                      ]
                    }
                  },
                  "required": [
                    "BedrockInferenceType"
                  ],
                  "allOf": [
                    {
                      "oneOf": [
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "QUICK_START",
                                "OTHER_FOUNDATION"
                              ]
                            },
                            "InferenceProfileId": {
                              "not": {}
                            }
                          },
                          "required": [
                            "ModelId"
                          ]
                        },
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "INFERENCE_PROFILE"
                              ]
                            },
                            "ModelId": {
                              "not": {}
                            }
                          },
                          "required": [
                            "InferenceProfileId"
                          ]
                        },
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "PROVISIONED"
                              ]
                            }
                          },
                          "required": [
                            "ModelArn"
                          ]
                        }
                      ]
                    },
                    {
                      "oneOf": [
                        {
                          "required": [
                            "GuardrailIdentifier",
                            "GuardrailVersion"
                          ]
                        },
                        {
                          "properties": {
                            "GuardrailIdentifier": {
                              "not": {}
                            },
                            "GuardrailVersion": {
                              "not": {}
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "additionalProperties": false
                },
                "SageMakerLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                  "properties": {
                    "EndpointName": {
                      "type": "string",
                      "description": "Endpoint for the deployed model to use from SageMaker",
                      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                    },
                    "ModelInputPayloadSchema": {
                      "type": "object",
                      "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                    },
                    "ModelOutputJSONPath": {
                      "type": "string",
                      "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                      "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                    }
                  },
                  "required": [
                    "EndpointName",
                    "ModelInputPayloadSchema",
                    "ModelOutputJSONPath"
                  ],
                  "additionalProperties": false
                },
                "ModelParams": {
                  "type": "object",
                  "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "Value": {
                        "type": "string",
                        "description": "Value of the param"
                      },
                      "Type": {
                        "type": "string",
                        "enum": [
                          "string",
                          "integer",
                          "float",
                          "boolean",
                          "list",
                          "dictionary"
                        ],
                        "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                      }
                    },
                    "required": [
                      "Value",
                      "Type"
                    ]
                  }
                },
                "PromptParams": {
                  "type": "object",
                  "description": "Parameters related to the prompt(s) used by the use case",
                  "properties": {
                    "PromptTemplate": {
                      "type": "string",
                      "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                    },
                    "UserPromptEditingEnabled": {
                      "type": "boolean",
                      "description": "Whether to allow the user of the use case to edit their own prompt",
                      "default": true
                    },
                    "MaxPromptTemplateLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the system prompt template that a user can use in the use case",
                      "minimum": 0
                    },
                    "MaxInputTextLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the input text that can be sent to the LLM.",
                      "minimum": 1
                    },
                    "RephraseQuestion": {
                      "type": "boolean",
                      "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                      "default": true
                    },
                    "DisambiguationPromptTemplate": {
                      "type": "string",
                      "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                    },
                    "DisambiguationEnabled": {
                      "type": "boolean",
                      "description": "Whether to perform disambiguation for the use case. Only applies when using RAG.",
                      "default": true
                    }
                  },
                  "additionalProperties": false
                },
                "Temperature": {
                  "type": "number",
                  "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 100
                },
                "Streaming": {
                  "type": "boolean",
                  "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                },
                "RAGEnabled": {
                  "type": "boolean",
                  "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly.",
                  "default": true
                },
                "Verbose": {
                  "type": "boolean",
                  "description": "Whether to print out debug messages to the console",
                  "default": false
                },
                "MultimodalParams": {
                  "type": "object",
                  "description": "Parameters for the multimodal capability for the LLM.",
                  "properties": {
                    "MultimodalEnabled": {
                      "type": "boolean",
                      "description": "Allow the multimodal input capability for the LLM.",
                      "default": false
                    }
                  },
                  "required": [
                    "MultimodalEnabled"
                  ],
                  "additionalProperties": false
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "Bedrock"
                      ]
                    }
                  },
                  "required": [
                    "BedrockLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "SageMaker"
                      ]
                    }
                  },
                  "required": [
                    "SageMakerLlmParams"
                  ]
                }
              ],
              "additionalProperties": false
            },
            "AgentParams": {
              "type": "object",
              "description": "Core agent configuration parameters",
              "properties": {
                "SystemPrompt": {
                  "type": "string",
                  "description": "System prompt template for the agent",
                  "minLength": 1,
                  "maxLength": 60000
                },
                "MCPServers": {
                  "type": "array",
                  "description": "MCP servers to integrate with the agent (no AWS service limits)",
                  "items": {
                    "type": "object",
                    "properties": {
                      "UseCaseId": {
                        "type": "string",
                        "description": "MCP server deployment use case ID",
                        "minLength": 1
                      },
                      "UseCaseName": {
                        "type": "string",
                        "description": "Human-readable name of the MCP server",
                        "minLength": 1
                      },
                      "Url": {
                        "type": "string",
                        "description": "MCP server endpoint URL",
                        "minLength": 1
                      },
                      "Type": {
                        "type": "string",
                        "description": "MCP server type",
                        "enum": [
                          "gateway",
                          "runtime"
                        ]
                      }
                    },
                    "required": [
                      "UseCaseId",
                      "UseCaseName",
                      "Url",
                      "Type"
                    ],
                    "additionalProperties": false
                  }
                },
                "Tools": {
                  "type": "array",
                  "description": "Built-in Strands tools for the agent (no AWS service limits)",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ToolId": {
                        "type": "string",
                        "description": "Tool identifier",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "ToolId"
                    ],
                    "additionalProperties": false
                  }
                },
                "MemoryConfig": {
                  "type": "object",
                  "description": "Agent memory configuration parameters",
                  "properties": {
                    "LongTermEnabled": {
                      "type": "boolean",
                      "description": "Enable long-term memory for the agent",
                      "default": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "required": [
                "SystemPrompt"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "UseCaseName",
            "UseCaseType",
            "LlmParams",
            "AgentParams"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentResponseModelD8AEA8BE": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of deploying a agent",
        "Name": "DeployAgentResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "Unique identifier for the deployed agent use case"
            }
          },
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentApiBodyModelADA43E68"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentApiBodyModelC3B71E22": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the PUT request to update a agent",
        "Name": "UpdateAgentApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "description": "Schema for updating an agent use case",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. Note on updates it is only possible to change private subnets and security groups. It is not possible to switch the VPC a use case is deployed in, or move an existing non-VPC use case into a VPC.",
              "properties": {
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets."
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups."
                }
              },
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Must be \"AgentBuilder\" for agent deployments.",
              "enum": [
                "AgentBuilder"
              ]
            },
            "LlmParams": {
              "type": "object",
              "properties": {
                "ModelProvider": {
                  "type": "string",
                  "description": "Name of the LLM provider which the use case will use",
                  "enum": [
                    "Bedrock",
                    "SageMaker",
                    "AgentCore"
                  ]
                },
                "BedrockLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                  "properties": {
                    "ModelId": {
                      "type": "string",
                      "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                      "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                    },
                    "ModelArn": {
                      "type": "string",
                      "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                    },
                    "InferenceProfileId": {
                      "type": "string",
                      "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                      "pattern": "^[a-zA-Z0-9-:.]+$"
                    },
                    "GuardrailIdentifier": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. To remove a guardrail set this value to 'null'. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax.",
                      "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                    },
                    "GuardrailVersion": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                    },
                    "BedrockInferenceType": {
                      "type": "string",
                      "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                      "default": "QUICK_START",
                      "enum": [
                        "QUICK_START",
                        "OTHER_FOUNDATION",
                        "INFERENCE_PROFILE",
                        "PROVISIONED"
                      ]
                    }
                  },
                  "required": [
                    "BedrockInferenceType"
                  ],
                  "oneOf": [
                    {
                      "required": [
                        "ModelId"
                      ],
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "QUICK_START",
                            "OTHER_FOUNDATION"
                          ]
                        },
                        "InferenceProfileId": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "required": [
                        "InferenceProfileId"
                      ],
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "INFERENCE_PROFILE"
                          ]
                        },
                        "ModelId": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "PROVISIONED"
                          ]
                        }
                      },
                      "required": [
                        "ModelArn"
                      ]
                    },
                    {
                      "properties": {
                        "ModelId": {
                          "not": {}
                        },
                        "InferenceProfileId": {
                          "not": {}
                        },
                        "ModelArn": {
                          "not": {}
                        }
                      }
                    }
                  ],
                  "additionalProperties": false
                },
                "SageMakerLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                  "properties": {
                    "EndpointName": {
                      "type": "string",
                      "description": "Endpoint for the deployed model to use from SageMaker",
                      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                    },
                    "ModelInputPayloadSchema": {
                      "type": "object",
                      "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                    },
                    "ModelOutputJSONPath": {
                      "type": "string",
                      "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                      "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                    }
                  },
                  "additionalProperties": false
                },
                "ModelParams": {
                  "type": "object",
                  "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "Value": {
                        "type": "string",
                        "description": "Value of the param"
                      },
                      "Type": {
                        "type": "string",
                        "enum": [
                          "string",
                          "integer",
                          "float",
                          "boolean",
                          "list",
                          "dictionary"
                        ],
                        "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                      }
                    },
                    "required": [
                      "Value",
                      "Type"
                    ]
                  }
                },
                "PromptParams": {
                  "type": "object",
                  "description": "Parameters related to the prompt(s) used by the use case",
                  "properties": {
                    "PromptTemplate": {
                      "type": "string",
                      "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                    },
                    "UserPromptEditingEnabled": {
                      "type": "boolean",
                      "description": "Whether to allow the user of the use case to edit their own prompt"
                    },
                    "MaxPromptTemplateLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the prompt template that a user can use in the use case"
                    },
                    "MaxInputTextLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the input text that can be sent to the LLM."
                    },
                    "RephraseQuestion": {
                      "type": "boolean",
                      "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                      "default": true
                    },
                    "DisambiguationPromptTemplate": {
                      "type": "string",
                      "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                    },
                    "DisambiguationEnabled": {
                      "type": "boolean",
                      "description": "Whether to disable disambiguation for the use case. Only applies when using RAG."
                    }
                  },
                  "additionalProperties": false
                },
                "Temperature": {
                  "type": "number",
                  "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 100
                },
                "Streaming": {
                  "type": "boolean",
                  "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                },
                "RAGEnabled": {
                  "type": "boolean",
                  "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly."
                },
                "Verbose": {
                  "type": "boolean",
                  "description": "Whether to print out debug messages to the console"
                },
                "MultimodalParams": {
                  "type": "object",
                  "description": "Parameters for the multimodal capability for the LLM.",
                  "properties": {
                    "MultimodalEnabled": {
                      "type": "boolean",
                      "description": "Allow the multimodal input capability for the LLM.",
                      "default": false
                    }
                  },
                  "required": [
                    "MultimodalEnabled"
                  ],
                  "additionalProperties": false
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "Bedrock"
                      ]
                    }
                  },
                  "required": [
                    "BedrockLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "SageMaker"
                      ]
                    }
                  },
                  "required": [
                    "SageMakerLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "not": {}
                    }
                  }
                }
              ],
              "additionalProperties": false
            },
            "AgentParams": {
              "type": "object",
              "description": "Core agent configuration parameters",
              "properties": {
                "SystemPrompt": {
                  "type": "string",
                  "description": "System prompt template for the agent",
                  "minLength": 1,
                  "maxLength": 60000
                },
                "MCPServers": {
                  "type": "array",
                  "description": "MCP servers to integrate with the agent (no AWS service limits)",
                  "items": {
                    "type": "object",
                    "properties": {
                      "UseCaseId": {
                        "type": "string",
                        "description": "MCP server deployment use case ID",
                        "minLength": 1
                      },
                      "UseCaseName": {
                        "type": "string",
                        "description": "Human-readable name of the MCP server",
                        "minLength": 1
                      },
                      "Url": {
                        "type": "string",
                        "description": "MCP server endpoint URL",
                        "minLength": 1
                      },
                      "Type": {
                        "type": "string",
                        "description": "MCP server type",
                        "enum": [
                          "gateway",
                          "runtime"
                        ]
                      }
                    },
                    "required": [
                      "UseCaseId",
                      "UseCaseName",
                      "Url",
                      "Type"
                    ],
                    "additionalProperties": false
                  }
                },
                "Tools": {
                  "type": "array",
                  "description": "Built-in Strands tools for the agent (no AWS service limits)",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ToolId": {
                        "type": "string",
                        "description": "Tool identifier",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "ToolId"
                    ],
                    "additionalProperties": false
                  }
                },
                "MemoryConfig": {
                  "type": "object",
                  "description": "Agent memory configuration parameters",
                  "properties": {
                    "LongTermEnabled": {
                      "type": "boolean",
                      "description": "Enable long-term memory for the agent",
                      "default": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployAgentResponseModelD8AEA8BE"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentResponseModel3B8CD542": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of updating a agent",
        "Name": "UpdateAgentResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "Unique identifier for the updated agent use case"
            }
          },
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateAgentApiBodyModelC3B71E22"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowApiBodyModel9B7AE229": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the POST request to deploy a workflow",
        "Name": "DeployWorkflowApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "description": "Schema for deploying a workflow use case",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "UseCaseName": {
              "type": "string",
              "description": "Friendly name of the use case to be deployed. For display purposes."
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. VPC can be either created for you, or provided by the user depending on the parameters provided.",
              "properties": {
                "VpcEnabled": {
                  "type": "boolean",
                  "description": "Should the use case stacks resources be deployed within a VPC",
                  "default": false
                },
                "CreateNewVpc": {
                  "type": "boolean",
                  "description": "If true, a new VPC will be created for the use case.",
                  "default": false
                },
                "ExistingVpcId": {
                  "type": "string",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed within the specified VPC.",
                  "pattern": "^vpc-\\w{8}(\\w{9})?$"
                },
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets.",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups.",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    }
                  },
                  "required": [
                    "ExistingVpcId",
                    "ExistingPrivateSubnetIds",
                    "ExistingSecurityGroupIds"
                  ]
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "CreateNewVpc": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                },
                {
                  "properties": {
                    "VpcEnabled": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    },
                    "CreateNewVpc": {
                      "not": {}
                    },
                    "ExistingVpcId": {
                      "not": {}
                    },
                    "ExistingPrivateSubnetIds": {
                      "not": {}
                    },
                    "ExistingSecurityGroupIds": {
                      "not": {}
                    }
                  }
                }
              ],
              "required": [
                "VpcEnabled"
              ],
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Must be \"Workflow\" for workflow deployments.",
              "enum": [
                "Workflow"
              ]
            },
            "LlmParams": {
              "type": "object",
              "description": "Parameters related to the LLM performing inferences.",
              "properties": {
                "ModelProvider": {
                  "type": "string",
                  "description": "Name of the LLM provider which the use case will use",
                  "enum": [
                    "Bedrock",
                    "SageMaker",
                    "AgentCore"
                  ]
                },
                "BedrockLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                  "properties": {
                    "ModelId": {
                      "type": "string",
                      "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                      "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                    },
                    "ModelArn": {
                      "type": "string",
                      "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                    },
                    "InferenceProfileId": {
                      "type": "string",
                      "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                      "pattern": "^[a-zA-Z0-9-:.]+$"
                    },
                    "GuardrailIdentifier": {
                      "type": "string",
                      "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                    },
                    "GuardrailVersion": {
                      "type": "string",
                      "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                    },
                    "BedrockInferenceType": {
                      "type": "string",
                      "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                      "default": "QUICK_START",
                      "enum": [
                        "QUICK_START",
                        "OTHER_FOUNDATION",
                        "INFERENCE_PROFILE",
                        "PROVISIONED"
                      ]
                    }
                  },
                  "required": [
                    "BedrockInferenceType"
                  ],
                  "allOf": [
                    {
                      "oneOf": [
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "QUICK_START",
                                "OTHER_FOUNDATION"
                              ]
                            },
                            "InferenceProfileId": {
                              "not": {}
                            }
                          },
                          "required": [
                            "ModelId"
                          ]
                        },
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "INFERENCE_PROFILE"
                              ]
                            },
                            "ModelId": {
                              "not": {}
                            }
                          },
                          "required": [
                            "InferenceProfileId"
                          ]
                        },
                        {
                          "properties": {
                            "BedrockInferenceType": {
                              "enum": [
                                "PROVISIONED"
                              ]
                            }
                          },
                          "required": [
                            "ModelArn"
                          ]
                        }
                      ]
                    },
                    {
                      "oneOf": [
                        {
                          "required": [
                            "GuardrailIdentifier",
                            "GuardrailVersion"
                          ]
                        },
                        {
                          "properties": {
                            "GuardrailIdentifier": {
                              "not": {}
                            },
                            "GuardrailVersion": {
                              "not": {}
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "additionalProperties": false
                },
                "SageMakerLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                  "properties": {
                    "EndpointName": {
                      "type": "string",
                      "description": "Endpoint for the deployed model to use from SageMaker",
                      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                    },
                    "ModelInputPayloadSchema": {
                      "type": "object",
                      "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                    },
                    "ModelOutputJSONPath": {
                      "type": "string",
                      "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                      "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                    }
                  },
                  "required": [
                    "EndpointName",
                    "ModelInputPayloadSchema",
                    "ModelOutputJSONPath"
                  ],
                  "additionalProperties": false
                },
                "ModelParams": {
                  "type": "object",
                  "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "Value": {
                        "type": "string",
                        "description": "Value of the param"
                      },
                      "Type": {
                        "type": "string",
                        "enum": [
                          "string",
                          "integer",
                          "float",
                          "boolean",
                          "list",
                          "dictionary"
                        ],
                        "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                      }
                    },
                    "required": [
                      "Value",
                      "Type"
                    ]
                  }
                },
                "PromptParams": {
                  "type": "object",
                  "description": "Parameters related to the prompt(s) used by the use case",
                  "properties": {
                    "PromptTemplate": {
                      "type": "string",
                      "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                    },
                    "UserPromptEditingEnabled": {
                      "type": "boolean",
                      "description": "Whether to allow the user of the use case to edit their own prompt",
                      "default": true
                    },
                    "MaxPromptTemplateLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the system prompt template that a user can use in the use case",
                      "minimum": 0
                    },
                    "MaxInputTextLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the input text that can be sent to the LLM.",
                      "minimum": 1
                    },
                    "RephraseQuestion": {
                      "type": "boolean",
                      "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                      "default": true
                    },
                    "DisambiguationPromptTemplate": {
                      "type": "string",
                      "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                    },
                    "DisambiguationEnabled": {
                      "type": "boolean",
                      "description": "Whether to perform disambiguation for the use case. Only applies when using RAG.",
                      "default": true
                    }
                  },
                  "additionalProperties": false
                },
                "Temperature": {
                  "type": "number",
                  "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 100
                },
                "Streaming": {
                  "type": "boolean",
                  "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                },
                "RAGEnabled": {
                  "type": "boolean",
                  "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly.",
                  "default": true
                },
                "Verbose": {
                  "type": "boolean",
                  "description": "Whether to print out debug messages to the console",
                  "default": false
                },
                "MultimodalParams": {
                  "type": "object",
                  "description": "Parameters for the multimodal capability for the LLM.",
                  "properties": {
                    "MultimodalEnabled": {
                      "type": "boolean",
                      "description": "Allow the multimodal input capability for the LLM.",
                      "default": false
                    }
                  },
                  "required": [
                    "MultimodalEnabled"
                  ],
                  "additionalProperties": false
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "Bedrock"
                      ]
                    }
                  },
                  "required": [
                    "BedrockLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "SageMaker"
                      ]
                    }
                  },
                  "required": [
                    "SageMakerLlmParams"
                  ]
                }
              ],
              "additionalProperties": false
            },
            "WorkflowParams": {
              "type": "object",
              "description": "Core workflow configuration parameters",
              "properties": {
                "SystemPrompt": {
                  "type": "string",
                  "description": "System prompt template for the client agent that orchestrates specialized agents",
                  "minLength": 1,
                  "maxLength": 60000
                },
                "OrchestrationPattern": {
                  "type": "string",
                  "description": "Orchestration pattern used for multi-agent coordination",
                  "enum": [
                    "agents-as-tools"
                  ]
                },
                "AgentsAsToolsParams": {
                  "type": "object",
                  "description": "Parameters related to the orchestration pattern Agents as Tools",
                  "properties": {
                    "Agents": {
                      "type": "array",
                      "description": "List of agents to include in this workflow",
                      "items": {
                        "type": "object",
                        "properties": {
                          "UseCaseId": {
                            "type": "string",
                            "description": "Unique identifier for the selected use case",
                            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
                          },
                          "UseCaseType": {
                            "type": "string",
                            "description": "Underlying use case type of this Agent. Supported types are [\"AgentBuilder\"]",
                            "enum": [
                              "AgentBuilder"
                            ]
                          },
                          "UseCaseName": {
                            "type": "string",
                            "description": "Friendly name of the use case to be deployed. For display purposes."
                          },
                          "UseCaseDescription": {
                            "type": "string",
                            "description": "Description of the use case to be deployed. For display purposes"
                          },
                          "LlmParams": {
                            "type": "object",
                            "description": "Parameters related to the LLM performing inferences.",
                            "properties": {
                              "ModelProvider": {
                                "type": "string",
                                "description": "Name of the LLM provider which the use case will use",
                                "enum": [
                                  "Bedrock",
                                  "SageMaker",
                                  "AgentCore"
                                ]
                              },
                              "BedrockLlmParams": {
                                "type": "object",
                                "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                                "properties": {
                                  "ModelId": {
                                    "type": "string",
                                    "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                                    "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                                  },
                                  "ModelArn": {
                                    "type": "string",
                                    "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                                    "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                                  },
                                  "InferenceProfileId": {
                                    "type": "string",
                                    "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                                    "pattern": "^[a-zA-Z0-9-:.]+$"
                                  },
                                  "GuardrailIdentifier": {
                                    "type": "string",
                                    "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                                    "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                                  },
                                  "GuardrailVersion": {
                                    "type": "string",
                                    "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                                    "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                                  },
                                  "BedrockInferenceType": {
                                    "type": "string",
                                    "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                                    "default": "QUICK_START",
                                    "enum": [
                                      "QUICK_START",
                                      "OTHER_FOUNDATION",
                                      "INFERENCE_PROFILE",
                                      "PROVISIONED"
                                    ]
                                  }
                                },
                                "required": [
                                  "BedrockInferenceType"
                                ],
                                "allOf": [
                                  {
                                    "oneOf": [
                                      {
                                        "properties": {
                                          "BedrockInferenceType": {
                                            "enum": [
                                              "QUICK_START",
                                              "OTHER_FOUNDATION"
                                            ]
                                          },
                                          "InferenceProfileId": {
                                            "not": {}
                                          }
                                        },
                                        "required": [
                                          "ModelId"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "BedrockInferenceType": {
                                            "enum": [
                                              "INFERENCE_PROFILE"
                                            ]
                                          },
                                          "ModelId": {
                                            "not": {}
                                          }
                                        },
                                        "required": [
                                          "InferenceProfileId"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "BedrockInferenceType": {
                                            "enum": [
                                              "PROVISIONED"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "ModelArn"
                                        ]
                                      }
                                    ]
                                  },
                                  {
                                    "oneOf": [
                                      {
                                        "required": [
                                          "GuardrailIdentifier",
                                          "GuardrailVersion"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "GuardrailIdentifier": {
                                            "not": {}
                                          },
                                          "GuardrailVersion": {
                                            "not": {}
                                          }
                                        }
                                      }
                                    ]
                                  }
                                ],
                                "additionalProperties": false
                              },
                              "SageMakerLlmParams": {
                                "type": "object",
                                "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                                "properties": {
                                  "EndpointName": {
                                    "type": "string",
                                    "description": "Endpoint for the deployed model to use from SageMaker",
                                    "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                                  },
                                  "ModelInputPayloadSchema": {
                                    "type": "object",
                                    "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                                  },
                                  "ModelOutputJSONPath": {
                                    "type": "string",
                                    "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                                    "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                                  }
                                },
                                "required": [
                                  "EndpointName",
                                  "ModelInputPayloadSchema",
                                  "ModelOutputJSONPath"
                                ],
                                "additionalProperties": false
                              },
                              "ModelParams": {
                                "type": "object",
                                "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                                "additionalProperties": {
                                  "type": "object",
                                  "properties": {
                                    "Value": {
                                      "type": "string",
                                      "description": "Value of the param"
                                    },
                                    "Type": {
                                      "type": "string",
                                      "enum": [
                                        "string",
                                        "integer",
                                        "float",
                                        "boolean",
                                        "list",
                                        "dictionary"
                                      ],
                                      "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                                    }
                                  },
                                  "required": [
                                    "Value",
                                    "Type"
                                  ]
                                }
                              },
                              "PromptParams": {
                                "type": "object",
                                "description": "Parameters related to the prompt(s) used by the use case",
                                "properties": {
                                  "PromptTemplate": {
                                    "type": "string",
                                    "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                                  },
                                  "UserPromptEditingEnabled": {
                                    "type": "boolean",
                                    "description": "Whether to allow the user of the use case to edit their own prompt",
                                    "default": true
                                  },
                                  "MaxPromptTemplateLength": {
                                    "type": "integer",
                                    "description": "Maximum length (in characters) of the system prompt template that a user can use in the use case",
                                    "minimum": 0
                                  },
                                  "MaxInputTextLength": {
                                    "type": "integer",
                                    "description": "Maximum length (in characters) of the input text that can be sent to the LLM.",
                                    "minimum": 1
                                  },
                                  "RephraseQuestion": {
                                    "type": "boolean",
                                    "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                                    "default": true
                                  },
                                  "DisambiguationPromptTemplate": {
                                    "type": "string",
                                    "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                                  },
                                  "DisambiguationEnabled": {
                                    "type": "boolean",
                                    "description": "Whether to perform disambiguation for the use case. Only applies when using RAG.",
                                    "default": true
                                  }
                                },
                                "additionalProperties": false
                              },
                              "Temperature": {
                                "type": "number",
                                "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                                "default": 0,
                                "minimum": 0,
                                "maximum": 100
                              },
                              "Streaming": {
                                "type": "boolean",
                                "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                              },
                              "RAGEnabled": {
                                "type": "boolean",
                                "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly.",
                                "default": true
                              },
                              "Verbose": {
                                "type": "boolean",
                                "description": "Whether to print out debug messages to the console",
                                "default": false
                              },
                              "MultimodalParams": {
                                "type": "object",
                                "description": "Parameters for the multimodal capability for the LLM.",
                                "properties": {
                                  "MultimodalEnabled": {
                                    "type": "boolean",
                                    "description": "Allow the multimodal input capability for the LLM.",
                                    "default": false
                                  }
                                },
                                "required": [
                                  "MultimodalEnabled"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "oneOf": [
                              {
                                "properties": {
                                  "ModelProvider": {
                                    "enum": [
                                      "Bedrock"
                                    ]
                                  }
                                },
                                "required": [
                                  "BedrockLlmParams"
                                ]
                              },
                              {
                                "properties": {
                                  "ModelProvider": {
                                    "enum": [
                                      "SageMaker"
                                    ]
                                  }
                                },
                                "required": [
                                  "SageMakerLlmParams"
                                ]
                              }
                            ],
                            "additionalProperties": false
                          },
                          "AgentBuilderParams": {
                            "type": "object",
                            "description": "Core agent configuration parameters",
                            "properties": {
                              "SystemPrompt": {
                                "type": "string",
                                "description": "System prompt template for the agent",
                                "minLength": 1,
                                "maxLength": 60000
                              },
                              "MCPServers": {
                                "type": "array",
                                "description": "MCP servers to integrate with the agent (no AWS service limits)",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "UseCaseId": {
                                      "type": "string",
                                      "description": "MCP server deployment use case ID",
                                      "minLength": 1
                                    },
                                    "UseCaseName": {
                                      "type": "string",
                                      "description": "Human-readable name of the MCP server",
                                      "minLength": 1
                                    },
                                    "Url": {
                                      "type": "string",
                                      "description": "MCP server endpoint URL",
                                      "minLength": 1
                                    },
                                    "Type": {
                                      "type": "string",
                                      "description": "MCP server type",
                                      "enum": [
                                        "gateway",
                                        "runtime"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "UseCaseId",
                                    "UseCaseName",
                                    "Url",
                                    "Type"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "Tools": {
                                "type": "array",
                                "description": "Built-in Strands tools for the agent (no AWS service limits)",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "ToolId": {
                                      "type": "string",
                                      "description": "Tool identifier",
                                      "minLength": 1
                                    }
                                  },
                                  "required": [
                                    "ToolId"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "MemoryConfig": {
                                "type": "object",
                                "description": "Agent memory configuration parameters",
                                "properties": {
                                  "LongTermEnabled": {
                                    "type": "boolean",
                                    "description": "Enable long-term memory for the agent",
                                    "default": false
                                  }
                                },
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "SystemPrompt"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "UseCaseId",
                          "UseCaseType",
                          "UseCaseName",
                          "LlmParams",
                          "AgentBuilderParams"
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 1,
                      "maxItems": 10
                    }
                  },
                  "required": [
                    "Agents"
                  ],
                  "additionalProperties": false
                },
                "MemoryConfig": {
                  "type": "object",
                  "description": "Agent memory configuration parameters",
                  "properties": {
                    "LongTermEnabled": {
                      "type": "boolean",
                      "description": "Enable long-term memory for the agent",
                      "default": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "oneOf": [
                {
                  "properties": {
                    "OrchestrationPattern": {
                      "enum": [
                        "agents-as-tools"
                      ]
                    }
                  },
                  "required": [
                    "AgentsAsToolsParams"
                  ]
                }
              ],
              "required": [
                "SystemPrompt",
                "OrchestrationPattern"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "UseCaseName",
            "UseCaseType",
            "LlmParams",
            "WorkflowParams"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      }
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowResponseModelCC6132B6": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of deploying a workflow",
        "Name": "DeployWorkflowResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "description": "Response schema for workflow deployment",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "Unique identifier for the deployed workflow use case"
            }
          },
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowApiBodyModel9B7AE229"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowApiBodyModelB4957C24": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure of the PUT request to update a workflow",
        "Name": "UpdateWorkflowApiBodyModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "description": "Schema for updating a workflow use case",
          "properties": {
            "UseCaseDescription": {
              "type": "string",
              "description": "Description of the use case to be deployed. For display purposes"
            },
            "DefaultUserEmail": {
              "type": "string",
              "description": "Email address of the user who will be created with permissions to use the deployed use-case",
              "format": "email"
            },
            "DeployUI": {
              "type": "boolean",
              "description": "Deploy the CloudFront based UI for the use case",
              "default": true
            },
            "FeedbackParams": {
              "type": "object",
              "description": "Parameters for the feedback capability for the use case.",
              "properties": {
                "FeedbackEnabled": {
                  "type": "boolean",
                  "description": "Allow the feedback capability for the use case.",
                  "default": false
                }
              },
              "required": [
                "FeedbackEnabled"
              ],
              "additionalProperties": false
            },
            "ExistingRestApiId": {
              "type": "string",
              "description": "Rest API ID which will be used to invoke UseCaseDetails (and Feedback, if enabled)."
            },
            "ProvisionedConcurrencyValue": {
              "type": "integer",
              "description": "Number of execution environments to keep warm. Set to 0 to disable provisioned concurrency, or 1-5 to enable.",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "AuthenticationParams": {
              "type": "object",
              "description": "Parameters related to the Authentication.",
              "properties": {
                "AuthenticationProvider": {
                  "type": "string",
                  "description": "Supported authentication provider.",
                  "enum": [
                    "Cognito"
                  ]
                },
                "CognitoParams": {
                  "type": "object",
                  "description": "Cognito user pool related parameters.",
                  "properties": {
                    "ExistingUserPoolId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Id.",
                      "pattern": "^[\\w-]+_[0-9a-zA-Z]+$",
                      "minLength": 1,
                      "maxLength": 55
                    },
                    "ExistingUserPoolClientId": {
                      "type": "string",
                      "description": "Existing Cognito User Pool Client Id.",
                      "pattern": "^[\\w+]+$",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "ExistingUserPoolId"
                  ]
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "AuthenticationProvider": {
                      "enum": [
                        "Cognito"
                      ]
                    }
                  },
                  "required": [
                    "CognitoParams"
                  ]
                }
              ],
              "required": [
                "AuthenticationProvider"
              ]
            },
            "VpcParams": {
              "type": "object",
              "description": "Parameters for the use case VPC. Note on updates it is only possible to change private subnets and security groups. It is not possible to switch the VPC a use case is deployed in, or move an existing non-VPC use case into a VPC.",
              "properties": {
                "ExistingPrivateSubnetIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^subnet-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 16,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified subnets."
                },
                "ExistingSecurityGroupIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^sg-\\w{8}(\\w{9})?$"
                  },
                  "maxItems": 5,
                  "uniqueItems": true,
                  "description": "If VpcEnabled is true and CreateNewVpc is false, the use case will be deployed using the specified security groups."
                }
              },
              "additionalProperties": false
            },
            "UseCaseType": {
              "type": "string",
              "description": "Type of the use case to be deployed. Must be \"Workflow\" for workflow deployments.",
              "enum": [
                "Workflow"
              ]
            },
            "LlmParams": {
              "type": "object",
              "properties": {
                "ModelProvider": {
                  "type": "string",
                  "description": "Name of the LLM provider which the use case will use",
                  "enum": [
                    "Bedrock",
                    "SageMaker",
                    "AgentCore"
                  ]
                },
                "BedrockLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                  "properties": {
                    "ModelId": {
                      "type": "string",
                      "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                      "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                    },
                    "ModelArn": {
                      "type": "string",
                      "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                    },
                    "InferenceProfileId": {
                      "type": "string",
                      "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                      "pattern": "^[a-zA-Z0-9-:.]+$"
                    },
                    "GuardrailIdentifier": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. To remove a guardrail set this value to 'null'. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax.",
                      "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                    },
                    "GuardrailVersion": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                      "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                    },
                    "BedrockInferenceType": {
                      "type": "string",
                      "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                      "default": "QUICK_START",
                      "enum": [
                        "QUICK_START",
                        "OTHER_FOUNDATION",
                        "INFERENCE_PROFILE",
                        "PROVISIONED"
                      ]
                    }
                  },
                  "required": [
                    "BedrockInferenceType"
                  ],
                  "oneOf": [
                    {
                      "required": [
                        "ModelId"
                      ],
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "QUICK_START",
                            "OTHER_FOUNDATION"
                          ]
                        },
                        "InferenceProfileId": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "required": [
                        "InferenceProfileId"
                      ],
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "INFERENCE_PROFILE"
                          ]
                        },
                        "ModelId": {
                          "not": {}
                        }
                      }
                    },
                    {
                      "properties": {
                        "BedrockInferenceType": {
                          "enum": [
                            "PROVISIONED"
                          ]
                        }
                      },
                      "required": [
                        "ModelArn"
                      ]
                    },
                    {
                      "properties": {
                        "ModelId": {
                          "not": {}
                        },
                        "InferenceProfileId": {
                          "not": {}
                        },
                        "ModelArn": {
                          "not": {}
                        }
                      }
                    }
                  ],
                  "additionalProperties": false
                },
                "SageMakerLlmParams": {
                  "type": "object",
                  "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                  "properties": {
                    "EndpointName": {
                      "type": "string",
                      "description": "Endpoint for the deployed model to use from SageMaker",
                      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                    },
                    "ModelInputPayloadSchema": {
                      "type": "object",
                      "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                    },
                    "ModelOutputJSONPath": {
                      "type": "string",
                      "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                      "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                    }
                  },
                  "additionalProperties": false
                },
                "ModelParams": {
                  "type": "object",
                  "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "Value": {
                        "type": "string",
                        "description": "Value of the param"
                      },
                      "Type": {
                        "type": "string",
                        "enum": [
                          "string",
                          "integer",
                          "float",
                          "boolean",
                          "list",
                          "dictionary"
                        ],
                        "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                      }
                    },
                    "required": [
                      "Value",
                      "Type"
                    ]
                  }
                },
                "PromptParams": {
                  "type": "object",
                  "description": "Parameters related to the prompt(s) used by the use case",
                  "properties": {
                    "PromptTemplate": {
                      "type": "string",
                      "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                    },
                    "UserPromptEditingEnabled": {
                      "type": "boolean",
                      "description": "Whether to allow the user of the use case to edit their own prompt"
                    },
                    "MaxPromptTemplateLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the prompt template that a user can use in the use case"
                    },
                    "MaxInputTextLength": {
                      "type": "integer",
                      "description": "Maximum length (in characters) of the input text that can be sent to the LLM."
                    },
                    "RephraseQuestion": {
                      "type": "boolean",
                      "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                      "default": true
                    },
                    "DisambiguationPromptTemplate": {
                      "type": "string",
                      "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                    },
                    "DisambiguationEnabled": {
                      "type": "boolean",
                      "description": "Whether to disable disambiguation for the use case. Only applies when using RAG."
                    }
                  },
                  "additionalProperties": false
                },
                "Temperature": {
                  "type": "number",
                  "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                  "default": 0,
                  "minimum": 0,
                  "maximum": 100
                },
                "Streaming": {
                  "type": "boolean",
                  "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                },
                "RAGEnabled": {
                  "type": "boolean",
                  "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly."
                },
                "Verbose": {
                  "type": "boolean",
                  "description": "Whether to print out debug messages to the console"
                },
                "MultimodalParams": {
                  "type": "object",
                  "description": "Parameters for the multimodal capability for the LLM.",
                  "properties": {
                    "MultimodalEnabled": {
                      "type": "boolean",
                      "description": "Allow the multimodal input capability for the LLM.",
                      "default": false
                    }
                  },
                  "required": [
                    "MultimodalEnabled"
                  ],
                  "additionalProperties": false
                }
              },
              "anyOf": [
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "Bedrock"
                      ]
                    }
                  },
                  "required": [
                    "BedrockLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "enum": [
                        "SageMaker"
                      ]
                    }
                  },
                  "required": [
                    "SageMakerLlmParams"
                  ]
                },
                {
                  "properties": {
                    "ModelProvider": {
                      "not": {}
                    }
                  }
                }
              ],
              "additionalProperties": false
            },
            "WorkflowParams": {
              "type": "object",
              "description": "Core workflow configuration parameters",
              "properties": {
                "SystemPrompt": {
                  "type": "string",
                  "description": "System prompt template for the client agent that orchestrates specialized agents",
                  "minLength": 1,
                  "maxLength": 60000
                },
                "OrchestrationPattern": {
                  "type": "string",
                  "description": "Orchestration pattern used for multi-agent coordination",
                  "enum": [
                    "agents-as-tools"
                  ]
                },
                "AgentsAsToolsParams": {
                  "type": "object",
                  "description": "Parameters related to the orchestration pattern Agents as Tools",
                  "properties": {
                    "Agents": {
                      "type": "array",
                      "description": "List of agents to include in this workflow",
                      "items": {
                        "type": "object",
                        "properties": {
                          "UseCaseId": {
                            "type": "string",
                            "description": "Unique identifier for the selected use case",
                            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
                          },
                          "UseCaseType": {
                            "type": "string",
                            "description": "Underlying use case type of this Agent. Supported types are [\"AgentBuilder\"]",
                            "enum": [
                              "AgentBuilder"
                            ]
                          },
                          "UseCaseName": {
                            "type": "string",
                            "description": "Friendly name of the use case to be deployed. For display purposes."
                          },
                          "UseCaseDescription": {
                            "type": "string",
                            "description": "Description of the use case to be deployed. For display purposes"
                          },
                          "LlmParams": {
                            "type": "object",
                            "description": "Parameters related to the LLM performing inferences.",
                            "properties": {
                              "ModelProvider": {
                                "type": "string",
                                "description": "Name of the LLM provider which the use case will use",
                                "enum": [
                                  "Bedrock",
                                  "SageMaker",
                                  "AgentCore"
                                ]
                              },
                              "BedrockLlmParams": {
                                "type": "object",
                                "description": "Parameters specific to use cases using Bedrock as an LLM provider. Can only be provided when \"ModelProvider\" is Bedrock",
                                "properties": {
                                  "ModelId": {
                                    "type": "string",
                                    "description": "Depending on whether ModelArn is provided, this will either be used to select the on-demand model to invoke or be used to specify the base model that the selected provisioned/custom model is based on.",
                                    "pattern": "^([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"
                                  },
                                  "ModelArn": {
                                    "type": "string",
                                    "description": "ARN of the provisioned/custom model to use from Amazon Bedrock. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                                    "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-:]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63})([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))$"
                                  },
                                  "InferenceProfileId": {
                                    "type": "string",
                                    "description": "The identifier of the Bedrock inference profile to use when invoking the model. When provided, a ModelId and ModelArn should not be provided. All inference requests will be mapped to the specified inference profile, which can be configured in the Bedrock console. This enables cross region model invocation. See: https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-use.html",
                                    "pattern": "^[a-zA-Z0-9-:.]+$"
                                  },
                                  "GuardrailIdentifier": {
                                    "type": "string",
                                    "description": "The unique identifier of the Bedrock guardrail that you want to be applied to all LLM invocations. If you don't provide a value, no guardrail is applied to the invocation. If provided, you must also provide a GuardrailVersion. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                                    "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$"
                                  },
                                  "GuardrailVersion": {
                                    "type": "string",
                                    "description": "Version of the guardrail to be used. Must be provided if GuardrailIdentifier is provided. See: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax",
                                    "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$"
                                  },
                                  "BedrockInferenceType": {
                                    "type": "string",
                                    "description": "The type of Bedrock inference to use. Required for Bedrock LLM params.",
                                    "default": "QUICK_START",
                                    "enum": [
                                      "QUICK_START",
                                      "OTHER_FOUNDATION",
                                      "INFERENCE_PROFILE",
                                      "PROVISIONED"
                                    ]
                                  }
                                },
                                "required": [
                                  "BedrockInferenceType"
                                ],
                                "allOf": [
                                  {
                                    "oneOf": [
                                      {
                                        "properties": {
                                          "BedrockInferenceType": {
                                            "enum": [
                                              "QUICK_START",
                                              "OTHER_FOUNDATION"
                                            ]
                                          },
                                          "InferenceProfileId": {
                                            "not": {}
                                          }
                                        },
                                        "required": [
                                          "ModelId"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "BedrockInferenceType": {
                                            "enum": [
                                              "INFERENCE_PROFILE"
                                            ]
                                          },
                                          "ModelId": {
                                            "not": {}
                                          }
                                        },
                                        "required": [
                                          "InferenceProfileId"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "BedrockInferenceType": {
                                            "enum": [
                                              "PROVISIONED"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "ModelArn"
                                        ]
                                      }
                                    ]
                                  },
                                  {
                                    "oneOf": [
                                      {
                                        "required": [
                                          "GuardrailIdentifier",
                                          "GuardrailVersion"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "GuardrailIdentifier": {
                                            "not": {}
                                          },
                                          "GuardrailVersion": {
                                            "not": {}
                                          }
                                        }
                                      }
                                    ]
                                  }
                                ],
                                "additionalProperties": false
                              },
                              "SageMakerLlmParams": {
                                "type": "object",
                                "description": "Parameters specific to use cases using a SageMaker model as an LLM provider. Can only be provided when \"ModelProvider\" is SageMaker",
                                "properties": {
                                  "EndpointName": {
                                    "type": "string",
                                    "description": "Endpoint for the deployed model to use from SageMaker",
                                    "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$"
                                  },
                                  "ModelInputPayloadSchema": {
                                    "type": "object",
                                    "description": "An object defining the schema to be used to populate model params for SageMaker endpoint models"
                                  },
                                  "ModelOutputJSONPath": {
                                    "type": "string",
                                    "description": "JSON path where the response should be retrieved from the model output payload. Applicable only to SageMaker endpoints.",
                                    "pattern": "^\\$[\\w\\.\\,\\[\\]:\\'\\\"\\-\\(\\)\\*\\?\\@]*$"
                                  }
                                },
                                "required": [
                                  "EndpointName",
                                  "ModelInputPayloadSchema",
                                  "ModelOutputJSONPath"
                                ],
                                "additionalProperties": false
                              },
                              "ModelParams": {
                                "type": "object",
                                "description": "Additional model params to be passed to the model, whose keys are as defined in the LLM documentation",
                                "additionalProperties": {
                                  "type": "object",
                                  "properties": {
                                    "Value": {
                                      "type": "string",
                                      "description": "Value of the param"
                                    },
                                    "Type": {
                                      "type": "string",
                                      "enum": [
                                        "string",
                                        "integer",
                                        "float",
                                        "boolean",
                                        "list",
                                        "dictionary"
                                      ],
                                      "description": "Python type of the param, as a string. Will be cast to this type before being fed to LLM."
                                    }
                                  },
                                  "required": [
                                    "Value",
                                    "Type"
                                  ]
                                }
                              },
                              "PromptParams": {
                                "type": "object",
                                "description": "Parameters related to the prompt(s) used by the use case",
                                "properties": {
                                  "PromptTemplate": {
                                    "type": "string",
                                    "description": "Default prompt template which will be fed to the LLM, barring any overrides by users"
                                  },
                                  "UserPromptEditingEnabled": {
                                    "type": "boolean",
                                    "description": "Whether to allow the user of the use case to edit their own prompt",
                                    "default": true
                                  },
                                  "MaxPromptTemplateLength": {
                                    "type": "integer",
                                    "description": "Maximum length (in characters) of the system prompt template that a user can use in the use case",
                                    "minimum": 0
                                  },
                                  "MaxInputTextLength": {
                                    "type": "integer",
                                    "description": "Maximum length (in characters) of the input text that can be sent to the LLM.",
                                    "minimum": 1
                                  },
                                  "RephraseQuestion": {
                                    "type": "boolean",
                                    "description": "Whether to use the disambiguated query instead of the original user input in the final prompt. Only appluies when using RAG.",
                                    "default": true
                                  },
                                  "DisambiguationPromptTemplate": {
                                    "type": "string",
                                    "description": "Prompt which will be internally used to disambiguate new queries in combination with the chat history. Only applies when using RAG."
                                  },
                                  "DisambiguationEnabled": {
                                    "type": "boolean",
                                    "description": "Whether to perform disambiguation for the use case. Only applies when using RAG.",
                                    "default": true
                                  }
                                },
                                "additionalProperties": false
                              },
                              "Temperature": {
                                "type": "number",
                                "description": "Temperature value which will be fed to the LLM. Scale should be chosen based on the supported range of the model provider.",
                                "default": 0,
                                "minimum": 0,
                                "maximum": 100
                              },
                              "Streaming": {
                                "type": "boolean",
                                "description": "Whether to stream the LLM responses back to the user or not. Note some providers do not support streaming."
                              },
                              "RAGEnabled": {
                                "type": "boolean",
                                "description": "If true, the use case will reference a knowledge base when responding to the user. Otherwise provides chat with the LLM directly.",
                                "default": true
                              },
                              "Verbose": {
                                "type": "boolean",
                                "description": "Whether to print out debug messages to the console",
                                "default": false
                              },
                              "MultimodalParams": {
                                "type": "object",
                                "description": "Parameters for the multimodal capability for the LLM.",
                                "properties": {
                                  "MultimodalEnabled": {
                                    "type": "boolean",
                                    "description": "Allow the multimodal input capability for the LLM.",
                                    "default": false
                                  }
                                },
                                "required": [
                                  "MultimodalEnabled"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "oneOf": [
                              {
                                "properties": {
                                  "ModelProvider": {
                                    "enum": [
                                      "Bedrock"
                                    ]
                                  }
                                },
                                "required": [
                                  "BedrockLlmParams"
                                ]
                              },
                              {
                                "properties": {
                                  "ModelProvider": {
                                    "enum": [
                                      "SageMaker"
                                    ]
                                  }
                                },
                                "required": [
                                  "SageMakerLlmParams"
                                ]
                              }
                            ],
                            "additionalProperties": false
                          },
                          "AgentBuilderParams": {
                            "type": "object",
                            "description": "Core agent configuration parameters",
                            "properties": {
                              "SystemPrompt": {
                                "type": "string",
                                "description": "System prompt template for the agent",
                                "minLength": 1,
                                "maxLength": 60000
                              },
                              "MCPServers": {
                                "type": "array",
                                "description": "MCP servers to integrate with the agent (no AWS service limits)",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "UseCaseId": {
                                      "type": "string",
                                      "description": "MCP server deployment use case ID",
                                      "minLength": 1
                                    },
                                    "UseCaseName": {
                                      "type": "string",
                                      "description": "Human-readable name of the MCP server",
                                      "minLength": 1
                                    },
                                    "Url": {
                                      "type": "string",
                                      "description": "MCP server endpoint URL",
                                      "minLength": 1
                                    },
                                    "Type": {
                                      "type": "string",
                                      "description": "MCP server type",
                                      "enum": [
                                        "gateway",
                                        "runtime"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "UseCaseId",
                                    "UseCaseName",
                                    "Url",
                                    "Type"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "Tools": {
                                "type": "array",
                                "description": "Built-in Strands tools for the agent (no AWS service limits)",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "ToolId": {
                                      "type": "string",
                                      "description": "Tool identifier",
                                      "minLength": 1
                                    }
                                  },
                                  "required": [
                                    "ToolId"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "MemoryConfig": {
                                "type": "object",
                                "description": "Agent memory configuration parameters",
                                "properties": {
                                  "LongTermEnabled": {
                                    "type": "boolean",
                                    "description": "Enable long-term memory for the agent",
                                    "default": false
                                  }
                                },
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "SystemPrompt"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "UseCaseId",
                          "UseCaseType",
                          "UseCaseName",
                          "LlmParams",
                          "AgentBuilderParams"
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 1,
                      "maxItems": 10
                    }
                  },
                  "required": [
                    "Agents"
                  ],
                  "additionalProperties": false
                },
                "MemoryConfig": {
                  "type": "object",
                  "description": "Agent memory configuration parameters",
                  "properties": {
                    "LongTermEnabled": {
                      "type": "boolean",
                      "description": "Enable long-term memory for the agent",
                      "default": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeployWorkflowResponseModelCC6132B6"
      ]
    },
    "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowResponseModelD340F849": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model to describe response of updating a workflow",
        "Name": "UpdateWorkflowResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "type": "object",
          "description": "Response schema for workflow updates",
          "properties": {
            "useCaseId": {
              "type": "string",
              "description": "Unique identifier for the updated workflow use case"
            }
          },
          "$schema": "http://json-schema.org/draft-04/schema#"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointUpdateWorkflowApiBodyModelB4957C24"
      ]
    },
    "UseCaseManagementSetupRequestProcessorCognitoAdminGroupPolicyTableWriterB481B347": {
      "Type": "Custom::CognitoAdminGroupPolicyTableWriter",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "Resource": "ADMIN_POLICY",
        "API_ARN": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/*/*/*"
            ]
          ]
        },
        "POLICY_TABLE_NAME": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformCognitoSetupCognitoGroupPolicyTableName0C5E8F79"
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupRequestProcessorCognitoAdminGroupPolicyFA8C586D",
        "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizerAPIGatewayInvoke7E420FA2",
        "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizerDeploymentPlatformStackUseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizer537B59D4Permissions3FBB7A58",
        "UseCaseManagementSetupRequestProcessorDeploymentRestAuthorizer2B81EC22"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "UseCaseManagementSetupRequestProcessorCognitoAdminGroupPolicyFA8C586D": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:PutItem"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:dynamodb:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":table/",
                    {
                      "Fn::GetAtt": [
                        "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                        "Outputs.DeploymentPlatformCognitoSetupCognitoGroupPolicyTableName0C5E8F79"
                      ]
                    }
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupRequestProcessorCognitoAdminGroupPolicyFA8C586D",
        "Roles": [
          {
            "Fn::Select": [
              1,
              {
                "Fn::Split": [
                  "/",
                  {
                    "Fn::Select": [
                      5,
                      {
                        "Fn::Split": [
                          ":",
                          {
                            "Fn::GetAtt": [
                              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
                              "Arn"
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDlq4B523B54": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": "alias/aws/sqs"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDlqPolicy4A6E7CAA": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDlq4B523B54",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Queues": [
          {
            "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDlq4B523B54"
          }
        ]
      }
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRole5FD36A48": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:*ssignPrivateIpAddresses",
                    "ec2:CreateNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":network-interface/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":security-group/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":subnet/*"
                        ]
                      ]
                    }
                  ]
                },
                {
                  "Action": [
                    "ec2:De*NetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "VPCPolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            },
            {
              "reason": "Networking resources are not known and hence \"*\". Also there are additional conditions to scope it down",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:subnet/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:security-group/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:instance*",
                "Resource::*"
              ]
            },
            {
              "reason": "Permission generated by the ApiGatewayToLambda construct to allow CloudWatch Logs to be used",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:*"
              ]
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRoleDefaultPolicy872BE672": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:SendMessage",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDlq4B523B54",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "xray:PutTelemetryRecords",
                "xray:PutTraceSegments"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:Scan"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":dynamodb:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":table/",
                    {
                      "Fn::GetAtt": [
                        "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                        "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref"
                      ]
                    }
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRoleDefaultPolicy872BE672",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRole5FD36A48"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role requires access to multiple resources with dynamic names. The permissions are scoped to specific use case resources.",
              "id": "AwsSolutions-IAM5"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsLambdaB2D6F726": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/assetf25d7ec2cc781ff8fd1c2998eced92639174d27167187c7d75bef349a84bc0ba.zip"
        },
        "DeadLetterConfig": {
          "TargetArn": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDlq4B523B54",
              "Arn"
            ]
          }
        },
        "Description": "Lambda function for use case details",
        "Environment": {
          "Variables": {
            "LLM_CONFIG_TABLE": {
              "Fn::GetAtt": [
                "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref"
              ]
            },
            "AWS_SDK_USER_AGENT": "{ \"customUserAgent\": [[\"AWSSOLUTION/SO0276/v4.1.11\"]] }",
            "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
          }
        },
        "Handler": "index.handler",
        "Layers": [
          {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          {
            "Ref": "NodeUserAgentLayer02526341"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRole5FD36A48",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 900,
        "TracingConfig": {
          "Mode": "Active"
        },
        "VpcConfig": {
          "Fn::If": [
            "UseCaseManagementSetupUseCaseEndpointSetupDeployVPCIfLambdaExistsFE27E265",
            {
              "SubnetIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.PrivateSubnetIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingPrivateSubnetIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "SecurityGroupIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.SecurityGroupIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingSecurityGroupIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            {
              "Ref": "AWS::NoValue"
            }
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRoleDefaultPolicy872BE672",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRole5FD36A48"
      ],
      "Metadata": {
        "aws:asset:path": "asset.f25d7ec2cc781ff8fd1c2998eced92639174d27167187c7d75bef349a84bc0ba",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC deployment is not enforced. If the solution is deployed in a VPC, this lambda function will be deployed with VPC enabled configuration"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using nodejs22.x. Current version of the application is only tested until nodejs22.x",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsLogRetention79CC6C50": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsLambdaB2D6F726",
            "Arn"
          ]
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleB2D1238D": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:*ssignPrivateIpAddresses",
                    "ec2:CreateNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":network-interface/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":security-group/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":subnet/*"
                        ]
                      ]
                    }
                  ]
                },
                {
                  "Action": [
                    "ec2:De*NetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "VPCPolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            },
            {
              "reason": "Networking resources are not known and hence \"*\". Also there are additional conditions to scope it down",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:subnet/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:security-group/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:instance*",
                "Resource::*"
              ]
            },
            {
              "reason": "Lambda authorizer needs to describe any user pool to validate tokens from multiple user pools. Additional scoping down is found in the authorizer",
              "id": "AwsSolutions-IAM5"
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleDefaultPolicy3FCFD071": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cognito-idp:DescribeUserPoolClient",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:cognito-idp:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":userpool/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleDefaultPolicy3FCFD071",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleB2D1238D"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda authorizer needs to describe any user pool to validate tokens from multiple user pools. Additional scoping down is found in the authorizer",
              "id": "AwsSolutions-IAM5"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointLambdaPolicyTablePolicyB5251E29": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetItem",
                "dynamodb:Query"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:dynamodb:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":table/"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointLambdaPolicyTablePolicyB5251E29",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleB2D1238D"
          }
        ]
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/assete7fedfb82efb597e45948f8fb383a6888d46ec36411c00505a42a3e1665a7257.zip"
        },
        "Description": "Authorizes REST API requests based on Cognito user pool groups",
        "Environment": {
          "Variables": {
            "USER_POOL_ID": "",
            "CLIENT_ID": "",
            "COGNITO_POLICY_TABLE_NAME": "",
            "AWS_SDK_USER_AGENT": "{ \"customUserAgent\": [[\"AWSSOLUTION/SO0276/v4.1.11\"]] }",
            "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
          }
        },
        "Handler": "rest-authorizer.handler",
        "Layers": [
          {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          {
            "Ref": "NodeUserAgentLayer02526341"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleB2D1238D",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 900,
        "VpcConfig": {
          "Fn::If": [
            "DeployVPCCondition",
            {
              "SubnetIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.PrivateSubnetIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingPrivateSubnetIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "SecurityGroupIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.SecurityGroupIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingSecurityGroupIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            {
              "Ref": "AWS::NoValue"
            }
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleDefaultPolicy3FCFD071",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleB2D1238D"
      ],
      "Metadata": {
        "aws:asset:path": "asset.e7fedfb82efb597e45948f8fb383a6888d46ec36411c00505a42a3e1665a7257",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC deployment is not enforced. This REST authorizer is not configured within a VPC"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using nodejs22.x. Current version of the application is only tested until nodejs22.x",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambdaDeploymentPlatformStackUseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer40331405Permissions0CF8AA64": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
              },
              "/authorizers/",
              {
                "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer0B1A9B7A"
              }
            ]
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambdaAPIGatewayInvokeCA3CC2A3": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
              },
              "/*"
            ]
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLogRetention393EC774": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14"
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer0B1A9B7A": {
      "Type": "AWS::ApiGateway::Authorizer",
      "Properties": {
        "AuthorizerResultTtlInSeconds": 0,
        "AuthorizerUri": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      ":",
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14",
                          "Arn"
                        ]
                      }
                    ]
                  }
                ]
              },
              ":apigateway:",
              {
                "Fn::Select": [
                  3,
                  {
                    "Fn::Split": [
                      ":",
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14",
                          "Arn"
                        ]
                      }
                    ]
                  }
                ]
              },
              ":lambda:path/2015-03-31/functions/",
              {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizerLambda67002B14",
                  "Arn"
                ]
              },
              "/invocations"
            ]
          ]
        },
        "IdentitySource": "method.request.header.Authorization",
        "Name": "DeploymentPlatformStackUseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer40331405",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "Type": "REQUEST"
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointApiAccessLogGroup58F53936": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "RetentionInDays": 3653
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W84",
              "reason": "By default CloudWatchLogs LogGroups data is encrypted using the CloudWatch server-side encryption keys (AWS Managed Keys)"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7": {
      "Type": "AWS::ApiGateway::RestApi",
      "Properties": {
        "Description": "API endpoint to access use case related resources",
        "EndpointConfiguration": {
          "Types": [
            "EDGE"
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-UseCasesAPI"
            ]
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiDeployment46B8C9B6114c3ff5f7acb3e06b654608a11dfc54": {
      "Type": "AWS::ApiGateway::Deployment",
      "Properties": {
        "Description": "API endpoint to access use case related resources",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestBodyResponse0F38C01A",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestDefaultResponse63BE5DCD",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestParametersResponse73682B10",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiGET54EC4772",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointInternalServerErrorDefaultResponseFE8D9460",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer0B1A9B7A",
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRequestValidator2EA7C91E"
      ],
      "Metadata": {
        "aws:cdk:do-not-refactor": true,
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W45",
              "reason": "ApiGateway has AccessLogging enabled in AWS::ApiGateway::Stage resource, but cfn_nag checks for it in AWS::ApiGateway::Deployment resource"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodDFECD10F": {
      "Type": "AWS::ApiGateway::Stage",
      "Properties": {
        "AccessLogSetting": {
          "DestinationArn": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointApiAccessLogGroup58F53936",
              "Arn"
            ]
          },
          "Format": "$context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime] \"$context.httpMethod $context.resourcePath $context.protocol\" $context.status $context.responseLength $context.requestId"
        },
        "DeploymentId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiDeployment46B8C9B6114c3ff5f7acb3e06b654608a11dfc54"
        },
        "MethodSettings": [
          {
            "DataTraceEnabled": false,
            "HttpMethod": "*",
            "LoggingLevel": "OFF",
            "MetricsEnabled": true,
            "ResourcePath": "/*",
            "ThrottlingBurstLimit": 5,
            "ThrottlingRateLimit": 5
          }
        ],
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "StageName": "prod",
        "TracingEnabled": true
      },
      "Metadata": {
        "guard": {
          "SuppressedRules": [
            "API_GW_CACHE_ENABLED_AND_ENCRYPTED"
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Turning off execution logs as recommended best practice in the ApiGateway service documentation",
              "id": "AwsSolutions-APIG6"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiGET54EC4772": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer0B1A9B7A"
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Content-Type": "'application/json'",
                "method.response.header.Access-Control-Allow-Origin": "'*'"
              },
              "StatusCode": "400"
            }
          ],
          "PassthroughBehavior": "NEVER",
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Content-Type": true,
              "method.response.header.Access-Control-Allow-Origin": true
            },
            "StatusCode": "400"
          }
        ],
        "OperationName": "UseCaseMockMethod",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRequestValidator2EA7C91E"
        },
        "ResourceId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7",
            "RootResourceId"
          ]
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "A Custom authorizer must be used in order to authenticate using Cognito user groups",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiUsagePlan0C45CF7E": {
      "Type": "AWS::ApiGateway::UsagePlan",
      "Properties": {
        "ApiStages": [
          {
            "ApiId": {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
            },
            "Stage": {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodDFECD10F"
            },
            "Throttle": {}
          }
        ]
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiCloudWatchRoleBA34DD55": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "apigateway.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:DescribeLogGroups",
                    "logs:DescribeLogStreams",
                    "logs:FilterLogEvents",
                    "logs:GetLogEvents",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaRestApiCloudWatchRolePolicy"
          }
        ]
      },
      "Metadata": {
        "guard": {
          "SuppressedRules": [
            "IAM_NO_INLINE_POLICY_CHECK"
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Permission generated by the ApiGatewayToLambda construct to allow CloudWatch Logs to be used",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:*"
              ]
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiAccount80CB17CE": {
      "Type": "AWS::ApiGateway::Account",
      "Properties": {
        "CloudWatchRoleArn": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiCloudWatchRoleBA34DD55",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
      ],
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRequestValidator2EA7C91E": {
      "Type": "AWS::ApiGateway::RequestValidator",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-api-request-validator"
            ]
          ]
        },
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "ValidateRequestBody": true,
        "ValidateRequestParameters": true
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointWafUseCaseEndpointWafWebACL3FBA7C55": {
      "Type": "AWS::WAFv2::WebACL",
      "Properties": {
        "CustomResponseBodies": {
          "HeadersNotAllowed": {
            "Content": "One of your injected headers is not allowed",
            "ContentType": "TEXT_PLAIN"
          }
        },
        "DefaultAction": {
          "Allow": {}
        },
        "Rules": [
          {
            "Name": "AWS-AWSManagedRulesBotControlRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 0,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesBotControlRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesBotControlRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 1,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesKnownBadInputsRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesKnownBadInputsRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesCommonRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 2,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesCommonRuleSet",
                "RuleActionOverrides": [
                  {
                    "ActionToUse": {
                      "Count": {}
                    },
                    "Name": "SizeRestrictions_BODY"
                  }
                ],
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWS-AWSManagedRulesCommonRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesAnonymousIpList",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 3,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesAnonymousIpList",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesAnonymousIpList",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesAmazonIpReputationList",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 4,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesAmazonIpReputationList",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesAmazonIpReputationList",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesAdminProtectionRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 5,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesAdminProtectionRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesAdminProtectionRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Name": "AWS-AWSManagedRulesSQLiRuleSet",
            "OverrideAction": {
              "None": {}
            },
            "Priority": 6,
            "Statement": {
              "ManagedRuleGroupStatement": {
                "Name": "AWSManagedRulesSQLiRuleSet",
                "VendorName": "AWS"
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "AWSManagedRulesSQLiRuleSet",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Action": {
              "Block": {
                "CustomResponse": {
                  "CustomResponseBodyKey": "HeadersNotAllowed",
                  "ResponseCode": 403
                }
              }
            },
            "Name": "Custom-BlockRequestHeaders",
            "Priority": 7,
            "Statement": {
              "SizeConstraintStatement": {
                "ComparisonOperator": "GE",
                "FieldToMatch": {
                  "SingleHeader": {
                    "Name": "x-amzn-requestid"
                  }
                },
                "Size": 0,
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "Custom-BlockRequestHeaders",
              "SampledRequestsEnabled": true
            }
          },
          {
            "Action": {
              "Block": {}
            },
            "Name": "Custom-BlockOversizedBodyNotInDeploy",
            "Priority": 8,
            "Statement": {
              "AndStatement": {
                "Statements": [
                  {
                    "LabelMatchStatement": {
                      "Key": "awswaf:managed:aws:core-rule-set:SizeRestrictions_Body",
                      "Scope": "LABEL"
                    }
                  },
                  {
                    "NotStatement": {
                      "Statement": {
                        "OrStatement": {
                          "Statements": [
                            {
                              "RegexMatchStatement": {
                                "FieldToMatch": {
                                  "UriPath": {}
                                },
                                "RegexString": "/deployments(/mcp|/agents|/workflows)?$",
                                "TextTransformations": [
                                  {
                                    "Priority": 0,
                                    "Type": "NONE"
                                  }
                                ]
                              }
                            },
                            {
                              "RegexMatchStatement": {
                                "FieldToMatch": {
                                  "UriPath": {}
                                },
                                "RegexString": "/deployments(/mcp|/agents|/workflows)?/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                                "TextTransformations": [
                                  {
                                    "Priority": 0,
                                    "Type": "NONE"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            },
            "VisibilityConfig": {
              "CloudWatchMetricsEnabled": true,
              "MetricName": "Custom-BlockOversizedBodyNotInDeploy",
              "SampledRequestsEnabled": true
            }
          }
        ],
        "Scope": "REGIONAL",
        "VisibilityConfig": {
          "CloudWatchMetricsEnabled": true,
          "MetricName": "webACL",
          "SampledRequestsEnabled": true
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointWafWebACLAssociation3ACF4622": {
      "Type": "AWS::WAFv2::WebACLAssociation",
      "Properties": {
        "ResourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":apigateway:",
              {
                "Ref": "AWS::Region"
              },
              "::/restapis/",
              {
                "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
              },
              "/stages/",
              {
                "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodDFECD10F"
              }
            ]
          ]
        },
        "WebACLArn": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointWafUseCaseEndpointWafWebACL3FBA7C55",
            "Arn"
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestDefaultResponse63BE5DCD": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseType": "DEFAULT_4XX",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "StatusCode": "400"
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointInternalServerErrorDefaultResponseFE8D9460": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseType": "DEFAULT_5XX",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestDefaultResponse63BE5DCD"
      ],
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestBodyResponse0F38C01A": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "BAD_REQUEST_BODY",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointInternalServerErrorDefaultResponseFE8D9460"
      ],
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestParametersResponse73682B10": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "BAD_REQUEST_PARAMETERS",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointBadRequestBodyResponse0F38C01A"
      ],
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetails554F399A": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Fn::GetAtt": [
                "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7",
                "RootResourceId"
              ]
            },
            {
              "Fn::GetAtt": [
                "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F",
                "RootResourceId"
              ]
            }
          ]
        },
        "PathPart": "details",
        "RestApiId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
            },
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyEF5B18C2": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetails554F399A"
        },
        "PathPart": "{useCaseConfigKey}",
        "RestApiId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
            },
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyOPTIONS0A3DA395": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type, Access-Control-Allow-Headers, X-Requested-With, Authorization'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'GET,OPTIONS'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyEF5B18C2"
        },
        "RestApiId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
            },
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyGETApiPermissionDeploymentPlatformStackUseCaseManagementSetupUseCaseEndpointSetupUseCaseApi3645B980GETdetailsuseCaseConfigKey414322C3": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsLambdaB2D6F726",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Fn::If": [
                  "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
                  {
                    "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
                  },
                  {
                    "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
                  }
                ]
              },
              "/*/GET/details/*"
            ]
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyGETApiPermissionTestDeploymentPlatformStackUseCaseManagementSetupUseCaseEndpointSetupUseCaseApi3645B980GETdetailsuseCaseConfigKeyCF030818": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsLambdaB2D6F726",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Fn::If": [
                  "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
                  {
                    "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
                  },
                  {
                    "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
                  }
                ]
              },
              "/test-invoke-stage/GET/details/*"
            ]
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyGET9A40C024": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseEndpointAuthorizer0B1A9B7A"
            },
            {
              "Ref": "UseCaseManagementSetupRequestProcessorRestCustomRequestAuthorizerCDD89059"
            }
          ]
        },
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsLambdaB2D6F726",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "OperationName": "UseCaseDetails",
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRequestValidator2EA7C91E"
            },
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointRequestValidator38E09551"
            }
          ]
        },
        "ResourceId": {
          "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseApidetailsuseCaseConfigKeyEF5B18C2"
        },
        "RestApiId": {
          "Fn::If": [
            "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85",
            {
              "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentRestEndPointLambdaRestApi9C23F7C7"
            },
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
            }
          ]
        }
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "A Custom authorizer must be used in order to authenticate using Cognito user groups",
              "id": "AwsSolutions-COG4"
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "UseCaseManagementSetupFeedbackSetupStackNestedStackFeedbackSetupStackNestedStackResourceCA537136": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "ExistingPrivateSubnetIds": {
            "Fn::If": [
              "DeployVPCCondition",
              {
                "Fn::GetAtt": [
                  "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                  "Outputs.PrivateSubnetIds"
                ]
              },
              {
                "Fn::Join": [
                  ",",
                  {
                    "Ref": "ExistingPrivateSubnetIds"
                  }
                ]
              }
            ]
          },
          "ExistingSecurityGroupIds": {
            "Fn::If": [
              "DeployVPCCondition",
              {
                "Fn::GetAtt": [
                  "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                  "Outputs.SecurityGroupIds"
                ]
              },
              {
                "Fn::Join": [
                  ",",
                  {
                    "Ref": "ExistingSecurityGroupIds"
                  }
                ]
              }
            ]
          },
          "CustomResourceLambdaArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
              "Arn"
            ]
          },
          "CustomResourceRoleArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
              "Arn"
            ]
          },
          "AccessLoggingBucketArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupAccessLog67D5D503",
              "Arn"
            ]
          },
          "FeedbackEnabled": "Yes",
          "ExistingRestApiId": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
          },
          "ExistingApiRootResourceId": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F",
              "RootResourceId"
            ]
          },
          "StackDeploymentSource": "DeploymentPlatform",
          "referencetoDeploymentPlatformStackUseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource1C4303B0OutputsDeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseManagementDLQ5E4F3FEAArn": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseManagementDLQ5E4F3FEAArn"
            ]
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn"
            ]
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn"
            ]
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref"
            ]
          },
          "referencetoDeploymentPlatformStackDeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResource0080A447OutputsDeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Ref": {
            "Fn::GetAtt": [
              "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
              "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Ref"
            ]
          },
          "referencetoDeploymentPlatformStackAwsNodeSdkLayer390CBFFFRef": {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          "referencetoDeploymentPlatformStackNodeUserAgentLayer24384C79Ref": {
            "Ref": "NodeUserAgentLayer02526341"
          },
          "referencetoDeploymentPlatformStackUseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApi854B9E90Ref": {
            "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://solutions-reference.s3.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              "generative-ai-application-builder-on-aws/v4.1.11/DeploymentPlatformStackUseCaseManagementSetupFeedbackSetupStack5DB20D5D.nested.template"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:asset:path": "DeploymentPlatformStackUseCaseManagementSetupFeedbackSetupStack5DB20D5D.nested.template.json",
        "aws:asset:property": "TemplateURL"
      }
    },
    "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "fileKey",
            "AttributeType": "S"
          },
          {
            "AttributeName": "fileName",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "fileKey",
            "KeyType": "HASH"
          },
          {
            "AttributeName": "fileName",
            "KeyType": "RANGE"
          }
        ],
        "SSESpecification": {
          "SSEEnabled": true
        },
        "TimeToLiveSpecification": {
          "AttributeName": "ttl",
          "Enabled": true
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W78",
              "reason": "Enabling point-in-time recovery is recommended in the implementation guide, but is not enforced"
            },
            {
              "id": "W74",
              "reason": "The table is configured with AWS Managed key"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucket2380A01F": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W35",
              "reason": "This S3 bucket is used as the access logging bucket for another bucket"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucketPolicy66B813FA": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucket2380A01F"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucket2380A01F",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucket2380A01F",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "s3:PutObject",
              "Condition": {
                "ArnLike": {
                  "aws:SourceArn": {
                    "Fn::GetAtt": [
                      "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                      "Arn"
                    ]
                  }
                },
                "StringEquals": {
                  "aws:SourceAccount": {
                    "Ref": "AWS::AccountId"
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Service": "logging.s3.amazonaws.com"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucket2380A01F",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "CorsConfiguration": {
          "CorsRules": [
            {
              "AllowedHeaders": [
                "*"
              ],
              "AllowedMethods": [
                "POST"
              ],
              "AllowedOrigins": [
                "*"
              ],
              "MaxAge": 3600
            }
          ]
        },
        "LifecycleConfiguration": {
          "Rules": [
            {
              "ExpirationInDays": 2,
              "Id": "DeleteFilesAfter48Hours",
              "Status": "Enabled"
            }
          ]
        },
        "LoggingConfiguration": {
          "DestinationBucketName": {
            "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3LoggingBucket2380A01F"
          }
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W35",
              "reason": "Access logging is configured with a separate access logging bucket"
            },
            {
              "id": "W51",
              "reason": "Bucket policy is not required as the bucket uses IAM roles for access control"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3BucketPolicyBA41811B": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupBucketNotificationsCustomResource990C16D6": {
      "Type": "Custom::MultimodalBucketNotifications",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "Resource": "MULTIMODAL_BUCKET_NOTIFICATIONS",
        "MULTIMODAL_DATA_BUCKET": {
          "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "UseCaseManagementSetupMultimodalSetupCustomResourceS3EventsNotificationsPolicyDF664575": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "s3:PutBucketNotification",
                "s3:PutBucketNotificationConfiguration"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupMultimodalSetupCustomResourceS3EventsNotificationsPolicyDF664575",
        "Roles": [
          {
            "Fn::Select": [
              1,
              {
                "Fn::Split": [
                  "/",
                  {
                    "Fn::Select": [
                      5,
                      {
                        "Fn::Split": [
                          ":",
                          {
                            "Fn::GetAtt": [
                              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
                              "Arn"
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRole6524CDA9": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:*ssignPrivateIpAddresses",
                    "ec2:CreateNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":network-interface/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":security-group/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":subnet/*"
                        ]
                      ]
                    }
                  ]
                },
                {
                  "Action": [
                    "ec2:De*NetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "VPCPolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            },
            {
              "reason": "Networking resources are not known and hence \"*\". Also there are additional conditions to scope it down",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:subnet/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:security-group/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:instance*",
                "Resource::*"
              ]
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRoleDefaultPolicyDD7A6FD7": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:SendMessage",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseManagementDLQ5E4F3FEAArn"
                ]
              }
            },
            {
              "Action": [
                "xray:PutTelemetryRecords",
                "xray:PutTraceSegments"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "s3:Abort*",
                "s3:DeleteObject*",
                "s3:GetBucket*",
                "s3:GetObject*",
                "s3:List*",
                "s3:PutObject",
                "s3:PutObjectLegalHold",
                "s3:PutObjectRetention",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionTagging"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "dynamodb:GetItem",
                "dynamodb:Query"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Arn"
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                    "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRoleDefaultPolicyDD7A6FD7",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRole6524CDA9"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role allows the Lambda function to perform x-ray tracing and access DynamoDB tables with wildcards for use case management",
              "id": "AwsSolutions-IAM5"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/asset7c442cba28e81d999b18fee86b2b43025a1662cece5df20113e4f8f7b40f4ac5.zip"
        },
        "DeadLetterConfig": {
          "TargetArn": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseManagementDLQ5E4F3FEAArn"
            ]
          }
        },
        "Description": "Lambda function backing the REST API for file management operations",
        "Environment": {
          "Variables": {
            "POWERTOOLS_SERVICE_NAME": "FILES_MANAGEMENT",
            "MULTIMODAL_DATA_BUCKET": {
              "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
            },
            "MULTIMODAL_METADATA_TABLE_NAME": {
              "Ref": "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C"
            },
            "USE_CASE_CONFIG_TABLE_NAME": {
              "Fn::GetAtt": [
                "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref"
              ]
            },
            "USE_CASES_TABLE_NAME": {
              "Fn::GetAtt": [
                "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
                "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Ref"
              ]
            },
            "AWS_SDK_USER_AGENT": "{ \"customUserAgent\": [[\"AWSSOLUTION/SO0276/v4.1.11\"]] }",
            "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
          }
        },
        "Handler": "index.handler",
        "Layers": [
          {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          {
            "Ref": "NodeUserAgentLayer02526341"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRole6524CDA9",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 900,
        "TracingConfig": {
          "Mode": "Active"
        },
        "VpcConfig": {
          "Fn::If": [
            "DeployVPCCondition",
            {
              "SubnetIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.PrivateSubnetIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingPrivateSubnetIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "SecurityGroupIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.SecurityGroupIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingSecurityGroupIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            {
              "Ref": "AWS::NoValue"
            }
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRoleDefaultPolicyDD7A6FD7",
        "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRole6524CDA9"
      ],
      "Metadata": {
        "aws:asset:path": "asset.7c442cba28e81d999b18fee86b2b43025a1662cece5df20113e4f8f7b40f4ac5",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC deployment is not enforced. If the solution is deployed in a VPC, this lambda function will be deployed with VPC enabled configuration"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using nodejs22.x. Current version of the application is only tested until nodejs22.x",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaAPIGatewayInvokeDEAA65B5": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              "/*"
            ]
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesHandlerLambdaLogRetention07A6DC82": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaB1238446"
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "UseCaseManagementSetupMultimodalSetupFilesUploadRequestModel9D7382C1": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure for file upload requests",
        "Name": "FilesUploadRequestModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "type": "object",
          "required": [
            "fileNames",
            "conversationId",
            "messageId"
          ],
          "properties": {
            "fileNames": {
              "type": "array",
              "description": "Array of file names to upload",
              "minItems": 1,
              "maxItems": 25,
              "items": {
                "type": "string",
                "description": "Filename with supported extension (png|jpeg|jpg|gif|webp|pdf|csv|doc|docx|xls|xlsx|html|txt|md)",
                "minLength": 1,
                "maxLength": 255,
                "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]|[ ](?=[a-zA-Z0-9_-]))*.(png|jpeg|jpg|gif|webp|pdf|csv|doc|docx|xls|xlsx|html|txt|md)$"
              }
            },
            "conversationId": {
              "type": "string",
              "description": "Unique identifier for the conversation",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
            },
            "messageId": {
              "type": "string",
              "description": "Unique identifier for the message",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
            }
          },
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesUploadResponseModel4AE6988C": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model for file upload operations",
        "Name": "FilesUploadResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "type": "object",
          "required": [
            "uploads"
          ],
          "properties": {
            "uploads": {
              "type": "array",
              "description": "Array of upload information for each file",
              "items": {
                "type": "object",
                "required": [
                  "uploadUrl",
                  "formFields",
                  "fileName",
                  "fileKey",
                  "expiresIn",
                  "createdAt"
                ],
                "properties": {
                  "uploadUrl": {
                    "type": "string",
                    "description": "The S3 presigned POST URL for uploading the file",
                    "format": "uri",
                    "minLength": 1
                  },
                  "formFields": {
                    "type": "object",
                    "description": "Form fields required for the S3 presigned POST request",
                    "minProperties": 1,
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "fileName": {
                    "type": "string",
                    "description": "Original name of the file to be uploaded",
                    "minLength": 1
                  },
                  "fileKey": {
                    "type": "string",
                    "description": "Unique file key for tracking: user-uuid/conversation-uuid/message-uuid/file-uuid",
                    "minLength": 1
                  },
                  "expiresIn": {
                    "type": "integer",
                    "description": "Number of seconds until the presigned URL expires",
                    "minimum": 1
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 timestamp when the presigned URL was created",
                    "format": "date-time"
                  },
                  "error": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Error message if deletion failed (null if no error details available)"
                  }
                },
                "additionalProperties": false
              }
            }
          },
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesDeleteRequestModelE2855056": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Defines the required JSON structure for file deletion requests",
        "Name": "FilesDeleteRequestModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "type": "object",
          "required": [
            "fileNames",
            "conversationId",
            "messageId"
          ],
          "properties": {
            "fileNames": {
              "type": "array",
              "description": "Array of filenames to delete",
              "minItems": 1,
              "maxItems": 25,
              "items": {
                "type": "string",
                "description": "Filename to delete with supported extension (png|jpeg|jpg|gif|webp|pdf|csv|doc|docx|xls|xlsx|html|txt|md)",
                "minLength": 1,
                "maxLength": 255,
                "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]|[ ](?=[a-zA-Z0-9_-]))*.(png|jpeg|jpg|gif|webp|pdf|csv|doc|docx|xls|xlsx|html|txt|md)$"
              }
            },
            "conversationId": {
              "type": "string",
              "description": "Unique identifier for the conversation",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
            },
            "messageId": {
              "type": "string",
              "description": "Unique identifier for the message",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
            }
          },
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesDeleteResponseModelC839923D": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model for file deletion operations",
        "Name": "FilesDeleteResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "type": "object",
          "required": [
            "deletions",
            "allSuccessful",
            "failureCount"
          ],
          "properties": {
            "deletions": {
              "type": "array",
              "description": "Array of deletion results for each file",
              "minItems": 1,
              "items": {
                "type": "object",
                "required": [
                  "success",
                  "fileName"
                ],
                "properties": {
                  "success": {
                    "type": "boolean",
                    "description": "Whether the deletion was successful"
                  },
                  "fileName": {
                    "type": "string",
                    "description": "Filename that was processed",
                    "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]|[ ](?=[a-zA-Z0-9_-]))*.(png|jpeg|jpg|gif|webp|pdf|csv|doc|docx|xls|xlsx|html|txt|md)$",
                    "minLength": 1
                  },
                  "error": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Error message if deletion failed (null if no error details available)"
                  }
                },
                "additionalProperties": false
              }
            },
            "allSuccessful": {
              "type": "boolean",
              "description": "Whether all deletions were successful"
            },
            "failureCount": {
              "type": "integer",
              "description": "Number of failed deletions",
              "minimum": 0
            }
          },
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupFilesGetResponseModel9D560DEA": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response model for file retrieval operations",
        "Name": "FilesGetResponseModel",
        "RestApiId": {
          "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
        },
        "Schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "type": "object",
          "required": [
            "downloadUrl"
          ],
          "properties": {
            "downloadUrl": {
              "type": "string",
              "description": "Presigned URL for file download from S3",
              "format": "uri",
              "minLength": 1
            }
          },
          "additionalProperties": false
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRole8450E439": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "logs:PutLogEvents",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*:log-stream:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaFunctionServiceRolePolicy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:*ssignPrivateIpAddresses",
                    "ec2:CreateNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":network-interface/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":security-group/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":ec2:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":subnet/*"
                        ]
                      ]
                    }
                  ]
                },
                {
                  "Action": [
                    "ec2:De*NetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "VPCPolicy"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ]
            },
            {
              "reason": "Lambda function has the required permission to write CloudWatch Log streams. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*:log-stream:*"
              ]
            },
            {
              "reason": "Even though the resource is \"*\", the actions have been scoped down only to the ones required by the solution",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Action::ec2:*ssignPrivateIpAddresses",
                "Action::ec2:De*NetworkInterface"
              ]
            },
            {
              "reason": "Networking resources are not known and hence \"*\". Also there are additional conditions to scope it down",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:subnet/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:security-group/*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:instance*",
                "Resource::*"
              ]
            }
          ]
        },
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W11",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W12",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "W13",
              "reason": "The exact resource arn is unknown at this time. Hence wildcard. The arns are have been restricted to the account and region where possible, except for \"ec2:Describe\" calls which require the arn to be a wildcard"
            },
            {
              "id": "F10",
              "reason": "The inline policy avoids a rare race condition between the lambda, Role and the policy resource creation."
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRoleDefaultPolicy4765B1A0": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:SendMessage",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
                  "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseManagementDLQ5E4F3FEAArn"
                ]
              }
            },
            {
              "Action": [
                "xray:PutTelemetryRecords",
                "xray:PutTraceSegments"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "s3:GetBucket*",
                "s3:GetObject*",
                "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRoleDefaultPolicy4765B1A0",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRole8450E439"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The IAM role allows the Lambda function to perform x-ray tracing and access DynamoDB tables for file metadata management",
              "id": "AwsSolutions-IAM5"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaC85C1B40": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/asset7c0665b5c42070141ac622e31ac4e82f5ebd62e430170163cf4bb9870253dde7.zip"
        },
        "DeadLetterConfig": {
          "TargetArn": {
            "Fn::GetAtt": [
              "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
              "Outputs.DeploymentPlatformStackUseCaseManagementSetupUseCaseManagementUseCaseManagementDLQ5E4F3FEAArn"
            ]
          }
        },
        "Description": "Lambda function that updates multimodal files metadata when files are uploaded to S3",
        "Environment": {
          "Variables": {
            "POWERTOOLS_SERVICE_NAME": "FILES_METADATA_MANAGEMENT",
            "MULTIMODAL_METADATA_TABLE_NAME": {
              "Ref": "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C"
            },
            "MULTIMODAL_DATA_BUCKET": {
              "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
            },
            "AWS_SDK_USER_AGENT": "{ \"customUserAgent\": [[\"AWSSOLUTION/SO0276/v4.1.11\"]] }",
            "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
          }
        },
        "Handler": "index.handler",
        "Layers": [
          {
            "Ref": "AwsNodeSdkLayer42C7A59C"
          },
          {
            "Ref": "NodeUserAgentLayer02526341"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRole8450E439",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 900,
        "TracingConfig": {
          "Mode": "Active"
        },
        "VpcConfig": {
          "Fn::If": [
            "DeployVPCCondition",
            {
              "SubnetIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.PrivateSubnetIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingPrivateSubnetIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "SecurityGroupIds": {
                "Fn::Split": [
                  ",",
                  {
                    "Fn::If": [
                      "DeployVPCCondition",
                      {
                        "Fn::GetAtt": [
                          "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
                          "Outputs.SecurityGroupIds"
                        ]
                      },
                      {
                        "Fn::Join": [
                          ",",
                          {
                            "Ref": "ExistingSecurityGroupIds"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            {
              "Ref": "AWS::NoValue"
            }
          ]
        }
      },
      "DependsOn": [
        "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRoleDefaultPolicy4765B1A0",
        "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRole8450E439"
      ],
      "Metadata": {
        "aws:asset:path": "asset.7c0665b5c42070141ac622e31ac4e82f5ebd62e430170163cf4bb9870253dde7",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Code",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W89",
              "reason": "VPC deployment is not enforced. If the solution is deployed in a VPC, this lambda function will be deployed with VPC enabled configuration"
            },
            {
              "id": "W92",
              "reason": "The solution does not enforce reserved concurrency"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "The lambda function is using nodejs22.x. Current version of the application is only tested until nodejs22.x",
              "id": "AwsSolutions-L1"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaEventBridgeInvokeECECCB73": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaC85C1B40",
            "Arn"
          ]
        },
        "Principal": "events.amazonaws.com",
        "SourceArn": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupS3ObjectCreatedRule2084341F",
            "Arn"
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaLogRetention77046C52": {
      "Type": "Custom::CW_LOG_RETENTION",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaC85C1B40"
        },
        "Resource": "CW_LOG_RETENTION"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "UseCaseManagementSetupMultimodalSetupS3ObjectCreatedRule2084341F": {
      "Type": "AWS::Events::Rule",
      "Properties": {
        "Description": "Trigger metadata update when files are uploaded to multimodal bucket",
        "EventPattern": {
          "source": [
            "aws.s3"
          ],
          "detail-type": [
            "Object Created"
          ],
          "detail": {
            "bucket": {
              "name": [
                {
                  "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
                }
              ]
            }
          }
        },
        "State": "ENABLED",
        "Targets": [
          {
            "Arn": {
              "Fn::GetAtt": [
                "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaC85C1B40",
                "Arn"
              ]
            },
            "Id": "Target0"
          }
        ]
      },
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W92",
              "reason": "EventBridge rules do not require reserved concurrency"
            }
          ]
        }
      }
    },
    "UseCaseManagementSetupMultimodalSetupS3ObjectCreatedRuleAllowEventRuleDeploymentPlatformStackUseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaB5CC29635F27AAA3": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaC85C1B40",
            "Arn"
          ]
        },
        "Principal": "events.amazonaws.com",
        "SourceArn": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupMultimodalSetupS3ObjectCreatedRule2084341F",
            "Arn"
          ]
        }
      }
    },
    "StrandsToolsParameter969FA9B2": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "Available Strands SDK tools for Agent Builder and Workflow use cases",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/gaab/",
              {
                "Ref": "AWS::StackName"
              },
              "/strands-tools"
            ]
          ]
        },
        "Type": "String",
        "Value": "[{\"name\":\"Calculator\",\"description\":\"Perform mathematical calculations and operations\",\"value\":\"calculator\",\"category\":\"Math\",\"isDefault\":true},{\"name\":\"Current Time\",\"description\":\"Get current date and time information\",\"value\":\"current_time\",\"category\":\"Utilities\",\"isDefault\":true},{\"name\":\"Environment\",\"description\":\"Access environment variables and system information\",\"value\":\"environment\",\"category\":\"System\",\"isDefault\":false}]"
      }
    },
    "WebConfig": {
      "Type": "Custom::WriteWebConfig",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
            "Arn"
          ]
        },
        "Resource": "WEBCONFIG",
        "SSMKey": {
          "Fn::Join": [
            "",
            [
              "/gaab-webconfig/",
              {
                "Ref": "AWS::StackName"
              }
            ]
          ]
        },
        "UserPoolId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
          ]
        },
        "UserPoolClientId": {
          "Fn::GetAtt": [
            "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
            "Outputs.DeploymentPlatformCognitoSetupUserPoolClientIdFE2BD0AE"
          ]
        },
        "CognitoRedirectUrl": {
          "Fn::If": [
            "DeployWebAppUIInfrastructureCondition",
            {
              "Fn::Join": [
                "",
                [
                  "https://",
                  {
                    "Fn::GetAtt": [
                      "WebAppNestedStackWebAppNestedStackResource4E994CA7",
                      "Outputs.DeploymentPlatformStackWebAppWebsiteUICloudFrontDistribution38CBCDC5DomainName"
                    ]
                  }
                ]
              ]
            },
            {
              "Ref": "AWS::NoValue"
            }
          ]
        },
        "IsInternalUser": {
          "Fn::If": [
            "IsInternalUserCondition",
            true,
            false
          ]
        },
        "RestApiEndpoint": {
          "Fn::Join": [
            "",
            [
              "https://",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
              },
              ".execute-api.",
              {
                "Ref": "AWS::Region"
              },
              ".",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              {
                "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
              },
              "/"
            ]
          ]
        }
      },
      "DependsOn": [
        "DeploymentPlatformSetupGetCognitoUserPoolInfo2A3390CD",
        "DeploymentPlatformSetupWriteToSSMBE1096BE",
        "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "CopyUICustomResourceNestedStackCopyUICustomResourceNestedStackResource298D3A15": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "CustomResourceRoleArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D",
              "Arn"
            ]
          },
          "CustomResourceLambdaArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupInfraSetupCustomResource5473231F",
              "Arn"
            ]
          },
          "WebConfigKey": {
            "Fn::Join": [
              "",
              [
                "/gaab-webconfig/",
                {
                  "Ref": "AWS::StackName"
                }
              ]
            ]
          },
          "WebS3BucketArn": {
            "Fn::GetAtt": [
              "WebAppNestedStackWebAppNestedStackResource4E994CA7",
              "Outputs.DeploymentPlatformStackWebAppWebsiteBucketF87806D4Arn"
            ]
          },
          "AccessLoggingBucketArn": {
            "Fn::GetAtt": [
              "DeploymentPlatformSetupAccessLog67D5D503",
              "Arn"
            ]
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://solutions-reference.s3.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              "generative-ai-application-builder-on-aws/v4.1.11/DeploymentPlatformStackCopyUICustomResource964AC335.nested.template"
            ]
          ]
        }
      },
      "DependsOn": [
        "DeploymentPlatformSetupAccessLogPolicy2FB262B2",
        "WebConfig"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:asset:path": "DeploymentPlatformStackCopyUICustomResource964AC335.nested.template.json",
        "aws:asset:property": "TemplateURL"
      },
      "Condition": "DeployWebAppUIInfrastructureCondition"
    },
    "CustomMetricsPolicyFE11102D": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cloudwatch:PutMetricData",
              "Condition": {
                "StringEquals": {
                  "cloudwatch:namespace": [
                    "AWS/ApiGateway",
                    "AWS/Kendra",
                    "AWS/Cognito",
                    "Langchain/LLM",
                    "AWS/Bedrock"
                  ]
                }
              },
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "CustomMetricsPolicyFE11102D",
        "Roles": [
          {
            "Ref": "DeploymentPlatformSetupCustomResourceLambdaRole3C444A9D"
          },
          {
            "Ref": "DeploymentPlatformSetupScheduledMetricsLambdaRole89420F9F"
          },
          {
            "Ref": "UseCaseManagementSetupRequestProcessorRestAuthorizerRole9B42FEFC"
          },
          {
            "Ref": "UseCaseManagementSetupMultimodalSetupFilesManagementLambdaRole6524CDA9"
          },
          {
            "Ref": "UseCaseManagementSetupMultimodalSetupUpdateFilesMetadataLambdaRole8450E439"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "This policy allows put metric data to CloudWatch. The policy is restricted using policy conditions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "PythonUserAgentLayer6958F3C0": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "CompatibleRuntimes": [
          "python3.11",
          "python3.13"
        ],
        "Content": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/asset0adf4e9f12272cbdc3f860f7a3c02c9d8032f6297bcac2860507da7b0d98cce7.zip"
        },
        "Description": "This layer configures AWS Python SDK initialization to send user-agent information"
      },
      "Metadata": {
        "aws:asset:path": "asset.0adf4e9f12272cbdc3f860f7a3c02c9d8032f6297bcac2860507da7b0d98cce7",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Content"
      }
    },
    "Boto3Layer463A0AEA": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "CompatibleRuntimes": [
          "python3.11",
          "python3.13"
        ],
        "Content": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/asset12da5a2c58434d65d844a401b113d4cc919a87f60f2e959d4614123fe5c6073d.zip"
        },
        "Description": "Boto3 layer to be bundled with python lambda functions"
      },
      "Metadata": {
        "aws:asset:path": "asset.12da5a2c58434d65d844a401b113d4cc919a87f60f2e959d4614123fe5c6073d",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Content"
      }
    },
    "NodeUserAgentLayer02526341": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "CompatibleRuntimes": [
          "nodejs18.x",
          "nodejs22.x"
        ],
        "Content": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/asset68e48da494f85f919b77bd39a49bf1dcdd2da4fe8273f6e03fcd9698acf55acf.zip"
        },
        "Description": "This layer configures AWS Node SDK initialization to send user-agent information"
      },
      "Metadata": {
        "aws:asset:path": "asset.68e48da494f85f919b77bd39a49bf1dcdd2da4fe8273f6e03fcd9698acf55acf",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Content"
      }
    },
    "AwsNodeSdkLayer42C7A59C": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "CompatibleRuntimes": [
          "nodejs18.x",
          "nodejs22.x"
        ],
        "Content": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "generative-ai-application-builder-on-aws/v4.1.11/asset68d84a4e7d207421d65acb2ad61f87842b3ad3e9fd03d43ef1bd9072f2f02b42.zip"
        },
        "Description": "AWS Javascript SDK v3 to be bundled with lambda functions as a layer"
      },
      "Metadata": {
        "aws:asset:path": "asset.68d84a4e7d207421d65acb2ad61f87842b3ad3e9fd03d43ef1bd9072f2f02b42",
        "aws:asset:is-bundled": true,
        "aws:asset:property": "Content"
      }
    },
    "CustomMetricsPolicyCreateApiRoutesConditionF3852927": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cloudwatch:PutMetricData",
              "Condition": {
                "StringEquals": {
                  "cloudwatch:namespace": [
                    "AWS/ApiGateway",
                    "AWS/Kendra",
                    "AWS/Cognito",
                    "Langchain/LLM",
                    "AWS/Bedrock"
                  ]
                }
              },
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "CustomMetricsPolicyCreateApiRoutesConditionF3852927",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseDetailsRole5FD36A48"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "This policy allows put metric data to CloudWatch. The policy is restricted using policy conditions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::*"
              ]
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
    },
    "CustomMetricsPolicyCreateApiResourcesCondition3E7A1DEA": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cloudwatch:PutMetricData",
              "Condition": {
                "StringEquals": {
                  "cloudwatch:namespace": [
                    "AWS/ApiGateway",
                    "AWS/Kendra",
                    "AWS/Cognito",
                    "Langchain/LLM",
                    "AWS/Bedrock"
                  ]
                }
              },
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "CustomMetricsPolicyCreateApiResourcesCondition3E7A1DEA",
        "Roles": [
          {
            "Ref": "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointUseCaseRestAuthorizerRoleB2D1238D"
          }
        ]
      },
      "Metadata": {
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "reason": "This policy allows put metric data to CloudWatch. The policy is restricted using policy conditions.",
              "id": "AwsSolutions-IAM5",
              "applies_to": [
                "Resource::*"
              ]
            }
          ]
        }
      },
      "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
    },
    "CDKMetadata": {
      "Type": "AWS::CDK::Metadata",
      "Properties": {
        "Analytics": "v2:deflate64:H4sIAAAAAAAA/4VTTU/jMBD9Ldwd0y1IaG9bUsGlaLuhC0c0caaJwbGDx6bqRvnvK9tJG9BKe4nfG0/my2+WvF9e3/DFBRwoE9VbpmTJ+0cH4o3le70FCy06tAwO9NLTFe9vvXhDFy5HlI6tUVIcz+aRJ3ILhAOT0PL+7DeiwigMNJwDU9CWFfD+zmvhpNHhZo63aFtJFNhkDsHZBo5on9DS6DfnA6OrFyBCR3wVDoYfqB3xvvBjbh9yC2V8dQAnGt6vgZrSgK3C9YkMDIXloQyv1K6xxtdNDqLBGAg6WYPDAxx5X+C7R3Ir7xpj5R+0Ic6MbWKfRXDpZCxhhGvslDm2qOOIZ+zRQR2LTaBAMt4KjN1PZAyU8AO6xsT6R/SboMatgjigT2QlhPHasbHqJ1CyAmdsivfFdp96LJA6oynm/Gp6MBWqmDmCsbekAmVq4v3G1PfW+C6+1YgHdoD9x5L3+V4/Y7nKN+yEVkRGSHDpOd+J9788+pg8gfg9i2tGB1YdNbSmKnm/g1KlkUUUPCMYGFEbdG+lrs+in2/AMLAonjB+qWuWe3Km/efk873Oja7kJNpJZqe1+uld5+MDP0DXhWjTvwO7ueaLix9hHckoH0JQJowmZ71wdBku+rQl2amvpKadWUfD+nYmxWzcqFUnx1fameQepn3AEoTKZsp9now7c/5lYN+X/Nt/qjrTbA/CGSuReH4y3k22gWlTIX+ly4/lgi8XfHHxSlJm1msnW+RFOv8CHVCxXJoEAAA="
      },
      "Condition": "CDKMetadataAvailable"
    }
  },
  "Conditions": {
    "VPCEnabledCondition": {
      "Fn::Equals": [
        {
          "Ref": "VpcEnabled"
        },
        "Yes"
      ]
    },
    "CreateNewVPCCondition": {
      "Fn::Equals": [
        {
          "Ref": "CreateNewVpc"
        },
        "Yes"
      ]
    },
    "DeployVPCCondition": {
      "Fn::And": [
        {
          "Condition": "CreateNewVPCCondition"
        },
        {
          "Condition": "VPCEnabledCondition"
        }
      ]
    },
    "IPAMPoolIdProvidedCondition": {
      "Fn::Not": [
        {
          "Fn::Equals": [
            {
              "Ref": "IPAMPoolId"
            },
            ""
          ]
        }
      ]
    },
    "IsInternalUserCondition": {
      "Fn::Equals": [
        {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                ".",
                {
                  "Fn::Select": [
                    1,
                    {
                      "Fn::Split": [
                        "@",
                        {
                          "Fn::Join": [
                            "",
                            [
                              {
                                "Ref": "AdminUserEmail"
                              },
                              "@example.com"
                            ]
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        "amazon"
      ]
    },
    "DeployWebAppUIInfrastructureCondition": {
      "Fn::Equals": [
        {
          "Ref": "DeployUI"
        },
        "Yes"
      ]
    },
    "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85": {
      "Fn::Equals": [
        "true",
        "false"
      ]
    },
    "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A": {
      "Fn::Or": [
        {
          "Fn::Equals": [
            "DeploymentPlatform",
            "DeploymentPlatform"
          ]
        },
        {
          "Condition": "UseCaseManagementSetupCreateApiResourcesConditionF9F71A85"
        }
      ]
    },
    "UseCaseManagementSetupUseCaseEndpointSetupDeployVPCIfLambdaExistsFE27E265": {
      "Fn::And": [
        {
          "Condition": "DeployVPCCondition"
        },
        {
          "Condition": "UseCaseManagementSetupUseCaseEndpointSetupCreateApiRoutesCondition0060F23A"
        }
      ]
    },
    "UseCaseManagementSetupUseCaseEndpointSetupUseCaseRestEndpointDeploymentConditionE2E28337": {
      "Fn::Equals": [
        "true",
        "false"
      ]
    },
    "CreateFeedbackResources": {
      "Fn::Equals": [
        "true",
        "true"
      ]
    },
    "DeployCustomDashboard": {
      "Fn::Equals": [
        {
          "Fn::FindInMap": [
            "FeaturesToDeploy",
            "Deploy",
            "CustomDashboard"
          ]
        },
        "Yes"
      ]
    },
    "CDKMetadataAvailable": {
      "Fn::Or": [
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "af-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-3"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-4"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-northwest-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-2"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "il-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "sa-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-1"
              ]
            }
          ]
        },
        {
          "Fn::Equals": [
            {
              "Ref": "AWS::Region"
            },
            "us-west-2"
          ]
        }
      ]
    }
  },
  "Rules": {
    "CheckIfVPCParamsProvided": {
      "RuleCondition": {
        "Fn::And": [
          {
            "Fn::Equals": [
              {
                "Ref": "VpcEnabled"
              },
              "Yes"
            ]
          },
          {
            "Fn::Equals": [
              {
                "Ref": "CreateNewVpc"
              },
              "No"
            ]
          }
        ]
      },
      "Assertions": [
        {
          "Assert": {
            "Fn::Not": [
              {
                "Fn::Equals": [
                  {
                    "Ref": "ExistingVpcId"
                  },
                  ""
                ]
              }
            ]
          },
          "AssertDescription": "To use existing VPC, you must provide a value for parameter ExistingVpcId"
        },
        {
          "Assert": {
            "Fn::Not": [
              {
                "Fn::Contains": [
                  {
                    "Ref": "ExistingPrivateSubnetIds"
                  },
                  ""
                ]
              }
            ]
          },
          "AssertDescription": "To use existing VPC, private subnet Ids should be provided."
        },
        {
          "Assert": {
            "Fn::Not": [
              {
                "Fn::Contains": [
                  {
                    "Ref": "ExistingSecurityGroupIds"
                  },
                  ""
                ]
              }
            ]
          },
          "AssertDescription": "To use existing VPC, SecurityGroups associated with the subnets should be provided."
        }
      ]
    },
    "CheckIfExistingVPCParamsAreProvidedWhenNotAllowed": {
      "RuleCondition": {
        "Fn::Or": [
          {
            "Fn::And": [
              {
                "Fn::Equals": [
                  {
                    "Ref": "VpcEnabled"
                  },
                  "Yes"
                ]
              },
              {
                "Fn::Equals": [
                  {
                    "Ref": "CreateNewVpc"
                  },
                  "Yes"
                ]
              }
            ]
          },
          {
            "Fn::Equals": [
              {
                "Ref": "VpcEnabled"
              },
              "No"
            ]
          }
        ]
      },
      "Assertions": [
        {
          "Assert": {
            "Fn::Equals": [
              {
                "Ref": "ExistingVpcId"
              },
              ""
            ]
          },
          "AssertDescription": "When creating a new VPC, you can not provide an existing VPC ID"
        },
        {
          "Assert": {
            "Fn::Contains": [
              {
                "Ref": "ExistingPrivateSubnetIds"
              },
              ""
            ]
          },
          "AssertDescription": "If you are not using a VPC or \"CreateNewVpc\" is set as \"Yes\", you can not provide existing subnet IDs"
        },
        {
          "Assert": {
            "Fn::Contains": [
              {
                "Ref": "VpcAzs"
              },
              ""
            ]
          },
          "AssertDescription": "If you are not using a VPC or \"CreateNewVpc\" is set as \"Yes\", you can not provide AZs."
        },
        {
          "Assert": {
            "Fn::Contains": [
              {
                "Ref": "ExistingSecurityGroupIds"
              },
              ""
            ]
          },
          "AssertDescription": "If you are not using a VPC or \"CreateNewVpc\" is set as \"Yes\", you can not provide SecurityGroups"
        }
      ]
    },
    "CheckIfDeloyVpcNotSetIfVpcEnabledIsFalse": {
      "RuleCondition": {
        "Fn::Equals": [
          {
            "Ref": "VpcEnabled"
          },
          "No"
        ]
      },
      "Assertions": [
        {
          "Assert": {
            "Fn::Equals": [
              {
                "Ref": "CreateNewVpc"
              },
              "No"
            ]
          },
          "AssertDescription": "Deployment is not VPC enabled, first select \"VpcEnabled\" to \"Yes\", and then select \"CreateNewVpc\" to \"Yes\" to create a new VPC"
        }
      ]
    },
    "CheckIfIPAMPoolIdCanBeProvided": {
      "RuleCondition": {
        "Fn::Or": [
          {
            "Fn::And": [
              {
                "Fn::Equals": [
                  {
                    "Ref": "VpcEnabled"
                  },
                  "Yes"
                ]
              },
              {
                "Fn::Equals": [
                  {
                    "Ref": "CreateNewVpc"
                  },
                  "No"
                ]
              }
            ]
          },
          {
            "Fn::And": [
              {
                "Fn::Equals": [
                  {
                    "Ref": "VpcEnabled"
                  },
                  "No"
                ]
              },
              {
                "Fn::Equals": [
                  {
                    "Ref": "CreateNewVpc"
                  },
                  "No"
                ]
              }
            ]
          }
        ]
      },
      "Assertions": [
        {
          "Assert": {
            "Fn::Equals": [
              {
                "Ref": "IPAMPoolId"
              },
              ""
            ]
          },
          "AssertDescription": "To use AWS VPC IP Address Manager, first select \"VpcEnabled\" to \"Yes\", and then select \"CreateNewVpc\" to \"Yes\""
        }
      ]
    },
    "CognitoUserPoolAndClientRule": {
      "RuleCondition": {
        "Fn::Not": [
          {
            "Fn::Equals": [
              {
                "Ref": "ExistingCognitoUserPoolId"
              },
              ""
            ]
          }
        ]
      },
      "Assertions": [
        {
          "Assert": {
            "Fn::Not": [
              {
                "Fn::Equals": [
                  {
                    "Ref": "ExistingCognitoUserPoolClient"
                  },
                  ""
                ]
              }
            ]
          },
          "AssertDescription": "If an existing User Pool Id is provided, then an existing User Pool Client Id must also be provided."
        }
      ]
    },
    "CognitoDomainNotProvidedIfPoolIsRule": {
      "RuleCondition": {
        "Fn::Not": [
          {
            "Fn::Equals": [
              {
                "Ref": "ExistingCognitoUserPoolId"
              },
              ""
            ]
          }
        ]
      },
      "Assertions": [
        {
          "Assert": {
            "Fn::Equals": [
              {
                "Ref": "CognitoDomainPrefix"
              },
              ""
            ]
          },
          "AssertDescription": "If an existing User Pool Id is provided, then a domain name for the User Pool Client must not be provided."
        }
      ]
    }
  },
  "Outputs": {
    "VpcId": {
      "Description": "The ID of the VPC",
      "Value": {
        "Fn::If": [
          "DeployVPCCondition",
          {
            "Fn::GetAtt": [
              "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
              "Outputs.VpcId"
            ]
          },
          {
            "Ref": "ExistingVpcId"
          }
        ]
      },
      "Condition": "VPCEnabledCondition"
    },
    "PrivateSubnetIds": {
      "Description": "Comma separated list of private subnet ids",
      "Value": {
        "Fn::If": [
          "DeployVPCCondition",
          {
            "Fn::GetAtt": [
              "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
              "Outputs.PrivateSubnetIds"
            ]
          },
          {
            "Fn::Join": [
              ",",
              {
                "Ref": "ExistingPrivateSubnetIds"
              }
            ]
          }
        ]
      },
      "Condition": "VPCEnabledCondition"
    },
    "SecurityGroupIds": {
      "Description": "Security group for the lambda functions in the VPC",
      "Value": {
        "Fn::If": [
          "DeployVPCCondition",
          {
            "Fn::GetAtt": [
              "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
              "Outputs.SecurityGroupIds"
            ]
          },
          {
            "Fn::Join": [
              ",",
              {
                "Ref": "ExistingSecurityGroupIds"
              }
            ]
          }
        ]
      },
      "Condition": "VPCEnabledCondition"
    },
    "AvailabilityZones": {
      "Description": "Comma separated list of AZs in which subnets of the VPCs are created",
      "Value": {
        "Fn::If": [
          "DeployVPCCondition",
          {
            "Fn::GetAtt": [
              "VPCDeploymentPlatformVPCNestedStackDeploymentPlatformVPCNestedStackResource186D2208",
              "Outputs.AvailabilityZones"
            ]
          },
          {
            "Fn::Join": [
              ",",
              {
                "Ref": "VpcAzs"
              }
            ]
          }
        ]
      },
      "Condition": "VPCEnabledCondition"
    },
    "WebConfigKey": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "/gaab-webconfig/",
            {
              "Ref": "AWS::StackName"
            }
          ]
        ]
      }
    },
    "CloudFrontWebUrl": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Fn::GetAtt": [
                "WebAppNestedStackWebAppNestedStackResource4E994CA7",
                "Outputs.DeploymentPlatformStackWebAppWebsiteUICloudFrontDistribution38CBCDC5DomainName"
              ]
            }
          ]
        ]
      },
      "Condition": "DeployWebAppUIInfrastructureCondition"
    },
    "SharedECRCachePrefix": {
      "Description": "Shared ECR Pull-Through Cache repository prefix for AgentCore images",
      "Value": {
        "Fn::GetAtt": [
          "SharedECRPullThroughCacheEcrRepoPrefixGenerator4916E447",
          "EcrRepoPrefix"
        ]
      }
    },
    "CognitoClientId": {
      "Value": {
        "Fn::GetAtt": [
          "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
          "Outputs.DeploymentPlatformCognitoSetupUserPoolClientIdFE2BD0AE"
        ]
      }
    },
    "CognitoUserPoolId": {
      "Value": {
        "Fn::GetAtt": [
          "UseCaseManagementSetupUseCaseManagementNestedStackUseCaseManagementNestedStackResource7ED7E421",
          "Outputs.DeploymentPlatformCognitoSetupUserPoolId0A73EB1C"
        ]
      }
    },
    "RestEndpointUrl": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiF86B015F"
            },
            ".execute-api.",
            {
              "Ref": "AWS::Region"
            },
            ".",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "UseCaseManagementSetupRequestProcessorDeploymentRestEndpointDeploymentRestEndPointLambdaRestApiDeploymentStageprodE2564A5F"
            },
            "/"
          ]
        ]
      }
    },
    "LLMConfigTableName": {
      "Value": {
        "Fn::GetAtt": [
          "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
          "Outputs.DeploymentPlatformStackDeploymentPlatformStorageLLMConfigTable9EB214F1Ref"
        ]
      }
    },
    "UseCasesTableName": {
      "Value": {
        "Fn::GetAtt": [
          "DeploymentPlatformStorageDeploymentPlatformStorageNestedStackDeploymentPlatformStorageNestedStackResourceF56260D3",
          "Outputs.DeploymentPlatformStackDeploymentPlatformStorageUseCasesTable8AE1DCF5Ref"
        ]
      }
    },
    "MultimodalDataBucketName": {
      "Description": "S3 bucket for storing multimodal files",
      "Value": {
        "Ref": "UseCaseManagementSetupMultimodalSetupFactoriesMultimodalDataBucketS3Bucket43015298"
      }
    },
    "MultimodalDataMetadataTable": {
      "Description": "DynamoDB table for storing multimodal files metadata",
      "Value": {
        "Ref": "UseCaseManagementSetupMultimodalSetupMultimodalDataMetadataTableABF8F96C"
      }
    }
  },
  "Mappings": {
    "Solution": {
      "Data": {
        "ID": "SO0276",
        "Version": "v4.1.11",
        "SolutionName": "generative-ai-application-builder-on-aws"
      }
    },
    "FeaturesToDeploy": {
      "Deploy": {
        "CustomDashboard": "Yes"
      }
    },
    "SourceCode": {
      "General": {
        "S3Bucket": "solutions",
        "KeyPrefix": "generative-ai-application-builder-on-aws/v4.1.11",
        "SolNamePrefix": "generative-ai-application-builder-on-aws"
      }
    }
  }
}