{
  "typeName" : "AWS::Bedrock::DataAutomationProject",
  "description" : "Definition of AWS::Bedrock::DataAutomationProject Resource Type",
  "definitions" : {
    "Tag" : {
      "type" : "object",
      "description" : "Definition of the key/value pair for a tag",
      "properties" : {
        "Key" : {
          "type" : "string",
          "description" : "Key for the tag",
          "minLength" : 1,
          "maxLength" : 128,
          "pattern" : "^[a-zA-Z0-9\\s._:/=+@-]*$"
        },
        "Value" : {
          "type" : "string",
          "description" : "Value for the tag",
          "minLength" : 0,
          "maxLength" : 256,
          "pattern" : "^[a-zA-Z0-9\\s._:/=+@-]*$"
        }
      },
      "required" : [ "Key", "Value" ],
      "additionalProperties" : false
    },
    "AudioExtractionCategory" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        },
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/AudioExtractionCategoryType"
          }
        },
        "TypeConfiguration" : {
          "$ref" : "#/definitions/AudioExtractionCategoryTypeConfiguration"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "AudioExtractionCategoryTypeConfiguration" : {
      "type" : "object",
      "properties" : {
        "Transcript" : {
          "$ref" : "#/definitions/TranscriptConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "TranscriptConfiguration" : {
      "type" : "object",
      "properties" : {
        "SpeakerLabeling" : {
          "$ref" : "#/definitions/SpeakerLabelingConfiguration"
        },
        "ChannelLabeling" : {
          "$ref" : "#/definitions/ChannelLabelingConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "SpeakerLabelingConfiguration" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "ChannelLabelingConfiguration" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "AudioExtractionCategoryType" : {
      "type" : "string",
      "enum" : [ "AUDIO_CONTENT_MODERATION", "TRANSCRIPT", "TOPIC_CONTENT_MODERATION" ]
    },
    "AudioStandardExtraction" : {
      "type" : "object",
      "properties" : {
        "Category" : {
          "$ref" : "#/definitions/AudioExtractionCategory"
        }
      },
      "required" : [ "Category" ],
      "additionalProperties" : false
    },
    "AudioStandardGenerativeField" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        },
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/AudioStandardGenerativeFieldType"
          }
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "AudioStandardGenerativeFieldType" : {
      "type" : "string",
      "enum" : [ "AUDIO_SUMMARY", "IAB", "TOPIC_SUMMARY" ]
    },
    "AudioStandardOutputConfiguration" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/AudioStandardExtraction"
        },
        "GenerativeField" : {
          "$ref" : "#/definitions/AudioStandardGenerativeField"
        }
      },
      "additionalProperties" : false
    },
    "BlueprintItem" : {
      "type" : "object",
      "properties" : {
        "BlueprintArn" : {
          "type" : "string",
          "maxLength" : 128,
          "pattern" : "^arn:aws(|-cn|-us-gov|-iso|-iso-[a-z]):bedrock:[a-zA-Z0-9-]*:(aws|[0-9]{12}):blueprint/(bedrock-data-automation-public-[a-zA-Z0-9-_]{1,30}|[a-zA-Z0-9-]{12,36})$",
          "description" : "ARN of a Blueprint"
        },
        "BlueprintVersion" : {
          "type" : "string",
          "maxLength" : 128,
          "minLength" : 1,
          "pattern" : "^[0-9]*$",
          "description" : "Blueprint Version"
        },
        "BlueprintStage" : {
          "$ref" : "#/definitions/BlueprintStage"
        }
      },
      "required" : [ "BlueprintArn" ],
      "additionalProperties" : false
    },
    "BlueprintStage" : {
      "type" : "string",
      "description" : "Stage of the Blueprint",
      "enum" : [ "DEVELOPMENT", "LIVE" ]
    },
    "CustomOutputConfiguration" : {
      "type" : "object",
      "description" : "Custom output configuration",
      "properties" : {
        "Blueprints" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/BlueprintItem"
          }
        }
      },
      "additionalProperties" : false
    },
    "DataAutomationProjectStage" : {
      "type" : "string",
      "description" : "Stage of the Project",
      "enum" : [ "DEVELOPMENT", "LIVE" ]
    },
    "DataAutomationProjectStatus" : {
      "type" : "string",
      "enum" : [ "COMPLETED", "IN_PROGRESS", "FAILED" ]
    },
    "DocumentBoundingBox" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "DocumentExtractionGranularity" : {
      "type" : "object",
      "properties" : {
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/DocumentExtractionGranularityType"
          }
        }
      },
      "additionalProperties" : false
    },
    "DocumentExtractionGranularityType" : {
      "type" : "string",
      "enum" : [ "DOCUMENT", "PAGE", "ELEMENT", "WORD", "LINE" ]
    },
    "DocumentOutputAdditionalFileFormat" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "DocumentOutputFormat" : {
      "type" : "object",
      "properties" : {
        "TextFormat" : {
          "$ref" : "#/definitions/DocumentOutputTextFormat"
        },
        "AdditionalFileFormat" : {
          "$ref" : "#/definitions/DocumentOutputAdditionalFileFormat"
        }
      },
      "required" : [ "AdditionalFileFormat", "TextFormat" ],
      "additionalProperties" : false
    },
    "DocumentOutputTextFormat" : {
      "type" : "object",
      "properties" : {
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/DocumentOutputTextFormatType"
          }
        }
      },
      "additionalProperties" : false
    },
    "DocumentOutputTextFormatType" : {
      "type" : "string",
      "enum" : [ "PLAIN_TEXT", "MARKDOWN", "HTML", "CSV" ]
    },
    "DocumentOverrideConfiguration" : {
      "type" : "object",
      "properties" : {
        "Splitter" : {
          "$ref" : "#/definitions/SplitterConfiguration"
        },
        "ModalityProcessing" : {
          "$ref" : "#/definitions/ModalityProcessingConfiguration"
        },
        "SensitiveDataConfiguration" : {
          "$ref" : "#/definitions/SensitiveDataConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "AudioOverrideConfiguration" : {
      "type" : "object",
      "properties" : {
        "ModalityProcessing" : {
          "$ref" : "#/definitions/ModalityProcessingConfiguration"
        },
        "LanguageConfiguration" : {
          "$ref" : "#/definitions/AudioLanguageConfiguration"
        },
        "SensitiveDataConfiguration" : {
          "$ref" : "#/definitions/SensitiveDataConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "VideoOverrideConfiguration" : {
      "type" : "object",
      "properties" : {
        "ModalityProcessing" : {
          "$ref" : "#/definitions/ModalityProcessingConfiguration"
        },
        "SensitiveDataConfiguration" : {
          "$ref" : "#/definitions/SensitiveDataConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "ImageOverrideConfiguration" : {
      "type" : "object",
      "properties" : {
        "ModalityProcessing" : {
          "$ref" : "#/definitions/ModalityProcessingConfiguration"
        },
        "SensitiveDataConfiguration" : {
          "$ref" : "#/definitions/SensitiveDataConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "DocumentStandardExtraction" : {
      "type" : "object",
      "properties" : {
        "Granularity" : {
          "$ref" : "#/definitions/DocumentExtractionGranularity"
        },
        "BoundingBox" : {
          "$ref" : "#/definitions/DocumentBoundingBox"
        }
      },
      "required" : [ "BoundingBox", "Granularity" ],
      "additionalProperties" : false
    },
    "DocumentStandardGenerativeField" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "DocumentStandardOutputConfiguration" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/DocumentStandardExtraction"
        },
        "GenerativeField" : {
          "$ref" : "#/definitions/DocumentStandardGenerativeField"
        },
        "OutputFormat" : {
          "$ref" : "#/definitions/DocumentOutputFormat"
        }
      },
      "additionalProperties" : false
    },
    "ImageBoundingBox" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "ImageExtractionCategory" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        },
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/ImageExtractionCategoryType"
          }
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "ImageExtractionCategoryType" : {
      "type" : "string",
      "enum" : [ "CONTENT_MODERATION", "TEXT_DETECTION", "LOGOS" ]
    },
    "ImageStandardExtraction" : {
      "type" : "object",
      "properties" : {
        "Category" : {
          "$ref" : "#/definitions/ImageExtractionCategory"
        },
        "BoundingBox" : {
          "$ref" : "#/definitions/ImageBoundingBox"
        }
      },
      "required" : [ "BoundingBox", "Category" ],
      "additionalProperties" : false
    },
    "ImageStandardGenerativeField" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        },
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/ImageStandardGenerativeFieldType"
          }
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "ImageStandardGenerativeFieldType" : {
      "type" : "string",
      "enum" : [ "IMAGE_SUMMARY", "IAB" ]
    },
    "ImageStandardOutputConfiguration" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/ImageStandardExtraction"
        },
        "GenerativeField" : {
          "$ref" : "#/definitions/ImageStandardGenerativeField"
        }
      },
      "additionalProperties" : false
    },
    "OverrideConfiguration" : {
      "type" : "object",
      "description" : "Override configuration",
      "properties" : {
        "Document" : {
          "$ref" : "#/definitions/DocumentOverrideConfiguration"
        },
        "Audio" : {
          "$ref" : "#/definitions/AudioOverrideConfiguration"
        },
        "Video" : {
          "$ref" : "#/definitions/VideoOverrideConfiguration"
        },
        "Image" : {
          "$ref" : "#/definitions/ImageOverrideConfiguration"
        },
        "ModalityRouting" : {
          "$ref" : "#/definitions/ModalityRoutingConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "ModalityRoutingConfiguration" : {
      "type" : "object",
      "description" : "Modality routing configuration",
      "properties" : {
        "jpeg" : {
          "$ref" : "#/definitions/DesiredModality"
        },
        "png" : {
          "$ref" : "#/definitions/DesiredModality"
        },
        "mp4" : {
          "$ref" : "#/definitions/DesiredModality"
        },
        "mov" : {
          "$ref" : "#/definitions/DesiredModality"
        }
      },
      "additionalProperties" : false
    },
    "DesiredModality" : {
      "type" : "string",
      "enum" : [ "DOCUMENT", "IMAGE", "VIDEO", "AUDIO" ]
    },
    "SplitterConfiguration" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "additionalProperties" : false
    },
    "ModalityProcessingConfiguration" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "additionalProperties" : false
    },
    "AudioLanguageConfiguration" : {
      "type" : "object",
      "properties" : {
        "InputLanguages" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Language"
          }
        },
        "GenerativeOutputLanguage" : {
          "$ref" : "#/definitions/AudioGenerativeOutputLanguage"
        },
        "IdentifyMultipleLanguages" : {
          "type" : "boolean"
        }
      },
      "additionalProperties" : false
    },
    "SensitiveDataConfiguration" : {
      "type" : "object",
      "properties" : {
        "DetectionMode" : {
          "$ref" : "#/definitions/SensitiveDataDetectionMode"
        },
        "DetectionScope" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/SensitiveDataDetectionScope"
          }
        },
        "PiiEntitiesConfiguration" : {
          "$ref" : "#/definitions/PIIEntitiesConfiguration"
        }
      }
    },
    "SensitiveDataDetectionMode" : {
      "type" : "string",
      "enum" : [ "DETECTION", "DETECTION_AND_REDACTION" ]
    },
    "SensitiveDataDetectionScope" : {
      "type" : "string",
      "enum" : [ "STANDARD", "CUSTOM" ]
    },
    "PIIEntitiesConfiguration" : {
      "type" : "object",
      "properties" : {
        "PiiEntityTypes" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/PIIEntityTypes"
          }
        },
        "RedactionMaskMode" : {
          "$ref" : "#/definitions/PIIRedactionMaskMode"
        }
      }
    },
    "PIIRedactionMaskMode" : {
      "type" : "string",
      "enum" : [ "PII", "ENTITY_TYPE" ]
    },
    "PIIEntityTypes" : {
      "type" : "string",
      "enum" : [ "ALL", "ADDRESS", "AGE", "NAME", "EMAIL", "PHONE", "USERNAME", "PASSWORD", "DRIVER_ID", "LICENSE_PLATE", "VEHICLE_IDENTIFICATION_NUMBER", "CREDIT_DEBIT_CARD_CVV", "CREDIT_DEBIT_CARD_EXPIRY", "CREDIT_DEBIT_CARD_NUMBER", "PIN", "INTERNATIONAL_BANK_ACCOUNT_NUMBER", "SWIFT_CODE", "IP_ADDRESS", "MAC_ADDRESS", "URL", "AWS_ACCESS_KEY", "AWS_SECRET_KEY", "US_BANK_ACCOUNT_NUMBER", "US_BANK_ROUTING_NUMBER", "US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER", "US_PASSPORT_NUMBER", "US_SOCIAL_SECURITY_NUMBER", "CA_HEALTH_NUMBER", "CA_SOCIAL_INSURANCE_NUMBER", "UK_NATIONAL_HEALTH_SERVICE_NUMBER", "UK_NATIONAL_INSURANCE_NUMBER", "UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER" ]
    },
    "AudioGenerativeOutputLanguage" : {
      "type" : "string",
      "enum" : [ "DEFAULT", "EN" ]
    },
    "Language" : {
      "type" : "string",
      "enum" : [ "EN", "DE", "ES", "FR", "IT", "PT", "JA", "KO", "CN", "TW", "HK" ]
    },
    "StandardOutputConfiguration" : {
      "type" : "object",
      "description" : "Standard output configuration",
      "properties" : {
        "Document" : {
          "$ref" : "#/definitions/DocumentStandardOutputConfiguration"
        },
        "Image" : {
          "$ref" : "#/definitions/ImageStandardOutputConfiguration"
        },
        "Video" : {
          "$ref" : "#/definitions/VideoStandardOutputConfiguration"
        },
        "Audio" : {
          "$ref" : "#/definitions/AudioStandardOutputConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "State" : {
      "type" : "string",
      "enum" : [ "ENABLED", "DISABLED" ]
    },
    "Unit" : {
      "type" : "object",
      "additionalProperties" : false
    },
    "VideoBoundingBox" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "VideoExtractionCategory" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        },
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/VideoExtractionCategoryType"
          }
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "VideoExtractionCategoryType" : {
      "type" : "string",
      "enum" : [ "CONTENT_MODERATION", "TEXT_DETECTION", "TRANSCRIPT", "LOGOS" ]
    },
    "VideoStandardExtraction" : {
      "type" : "object",
      "properties" : {
        "Category" : {
          "$ref" : "#/definitions/VideoExtractionCategory"
        },
        "BoundingBox" : {
          "$ref" : "#/definitions/VideoBoundingBox"
        }
      },
      "required" : [ "BoundingBox", "Category" ],
      "additionalProperties" : false
    },
    "VideoStandardGenerativeField" : {
      "type" : "object",
      "properties" : {
        "State" : {
          "$ref" : "#/definitions/State"
        },
        "Types" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/VideoStandardGenerativeFieldType"
          }
        }
      },
      "required" : [ "State" ],
      "additionalProperties" : false
    },
    "VideoStandardGenerativeFieldType" : {
      "type" : "string",
      "enum" : [ "VIDEO_SUMMARY", "IAB", "CHAPTER_SUMMARY" ]
    },
    "VideoStandardOutputConfiguration" : {
      "type" : "object",
      "properties" : {
        "Extraction" : {
          "$ref" : "#/definitions/VideoStandardExtraction"
        },
        "GenerativeField" : {
          "$ref" : "#/definitions/VideoStandardGenerativeField"
        }
      },
      "additionalProperties" : false
    }
  },
  "properties" : {
    "CreationTime" : {
      "type" : "string",
      "description" : "Time Stamp",
      "format" : "date-time"
    },
    "CustomOutputConfiguration" : {
      "$ref" : "#/definitions/CustomOutputConfiguration"
    },
    "LastModifiedTime" : {
      "type" : "string",
      "description" : "Time Stamp",
      "format" : "date-time"
    },
    "OverrideConfiguration" : {
      "$ref" : "#/definitions/OverrideConfiguration"
    },
    "ProjectArn" : {
      "type" : "string",
      "maxLength" : 128,
      "pattern" : "^arn:aws(|-cn|-us-gov|-iso|-iso-[a-z]):bedrock:[a-zA-Z0-9-]*:(aws|[0-9]{12}):data-automation-project/[a-zA-Z0-9-]{12,36}$",
      "description" : "ARN of a DataAutomationProject"
    },
    "ProjectDescription" : {
      "type" : "string",
      "description" : "Description of the DataAutomationProject"
    },
    "ProjectName" : {
      "type" : "string",
      "maxLength" : 128,
      "minLength" : 1,
      "pattern" : "^[a-zA-Z0-9-_]+$",
      "description" : "Name of the DataAutomationProject"
    },
    "ProjectType" : {
      "type" : "string",
      "description" : "Type of the DataAutomationProject - Sync or Async",
      "enum" : [ "ASYNC", "SYNC" ]
    },
    "ProjectStage" : {
      "$ref" : "#/definitions/DataAutomationProjectStage"
    },
    "StandardOutputConfiguration" : {
      "$ref" : "#/definitions/StandardOutputConfiguration"
    },
    "Status" : {
      "$ref" : "#/definitions/DataAutomationProjectStatus"
    },
    "KmsKeyId" : {
      "type" : "string",
      "description" : "KMS key identifier",
      "minLength" : 1,
      "maxLength" : 2048
    },
    "KmsEncryptionContext" : {
      "type" : "object",
      "description" : "KMS encryption context",
      "patternProperties" : {
        "^.*$" : {
          "type" : "string"
        }
      },
      "additionalProperties" : false,
      "dependencies" : {
        "KmsEncryptionContext" : [ "KmsKeyId" ]
      }
    },
    "Tags" : {
      "description" : "List of Tags",
      "type" : "array",
      "insertionOrder" : false,
      "minItems" : 0,
      "maxItems" : 200,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    }
  },
  "required" : [ "ProjectName" ],
  "readOnlyProperties" : [ "/properties/CreationTime", "/properties/LastModifiedTime", "/properties/ProjectArn", "/properties/ProjectStage", "/properties/Status" ],
  "createOnlyProperties" : [ "/properties/ProjectName", "/properties/ProjectType" ],
  "primaryIdentifier" : [ "/properties/ProjectArn" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "bedrock:CreateDataAutomationProject", "bedrock:GetDataAutomationProject", "bedrock:TagResource", "bedrock:ListTagsForResource", "kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKey" ]
    },
    "read" : {
      "permissions" : [ "bedrock:GetDataAutomationProject", "bedrock:ListTagsForResource", "kms:DescribeKey", "kms:Decrypt" ]
    },
    "update" : {
      "permissions" : [ "bedrock:UpdateDataAutomationProject", "bedrock:GetDataAutomationProject", "bedrock:TagResource", "bedrock:UntagResource", "bedrock:ListTagsForResource", "kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKey" ]
    },
    "delete" : {
      "permissions" : [ "bedrock:DeleteDataAutomationProject", "bedrock:GetDataAutomationProject", "kms:DescribeKey", "kms:Decrypt" ]
    },
    "list" : {
      "permissions" : [ "bedrock:ListDataAutomationProjects" ]
    }
  },
  "tagging" : {
    "cloudFormationSystemTags" : false,
    "tagOnCreate" : true,
    "tagProperty" : "/properties/Tags",
    "tagUpdatable" : true,
    "taggable" : true,
    "permissions" : [ "bedrock:TagResource", "bedrock:UntagResource", "bedrock:ListTagsForResource" ]
  },
  "additionalProperties" : false
}