{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/ConnectionIdentifier",
  "/properties/EnvironmentIdentifier",
  "/properties/DomainIdentifier",
  "/properties/ProjectIdentifier",
  "/properties/Type"
 ],
 "definitions": {
  "AccountId": {
   "maxLength": 12,
   "minLength": 12,
   "pattern": "^\\d{12}$",
   "type": "string"
  },
  "DataAccessRole": {
   "pattern": "^arn:aws[^:]*:iam::\\d{12}:role(/[a-zA-Z0-9+=,.@_-]+)*/[a-zA-Z0-9+=,.@_-]+$",
   "type": "string"
  },
  "DataSourceConfigurationInput": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "GlueRunConfiguration": {
       "$ref": "#/definitions/GlueRunConfigurationInput"
      }
     },
     "title": "GlueRunConfiguration",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "RedshiftRunConfiguration": {
       "$ref": "#/definitions/RedshiftRunConfigurationInput"
      }
     },
     "title": "RedshiftRunConfiguration",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "SageMakerRunConfiguration": {
       "$ref": "#/definitions/SageMakerRunConfigurationInput"
      }
     },
     "title": "SageMakerRunConfiguration",
     "type": "object"
    }
   ]
  },
  "DataSourceStatus": {
   "enum": [
    "CREATING",
    "FAILED_CREATION",
    "READY",
    "UPDATING",
    "FAILED_UPDATE",
    "RUNNING",
    "DELETING",
    "FAILED_DELETION"
   ],
   "type": "string"
  },
  "EnableSetting": {
   "enum": [
    "ENABLED",
    "DISABLED"
   ],
   "type": "string"
  },
  "FilterExpression": {
   "additionalProperties": false,
   "properties": {
    "Expression": {
     "maxLength": 2048,
     "minLength": 1,
     "type": "string"
    },
    "Type": {
     "$ref": "#/definitions/FilterExpressionType"
    }
   },
   "required": [
    "Expression",
    "Type"
   ],
   "type": "object"
  },
  "FilterExpressionType": {
   "enum": [
    "INCLUDE",
    "EXCLUDE"
   ],
   "type": "string"
  },
  "FormInput": {
   "additionalProperties": false,
   "properties": {
    "Content": {
     "maxLength": 75000,
     "type": "string"
    },
    "FormName": {
     "$ref": "#/definitions/FormName"
    },
    "TypeIdentifier": {
     "maxLength": 385,
     "minLength": 1,
     "pattern": "^(?!\\.)[\\w\\.]*\\w$",
     "type": "string"
    },
    "TypeRevision": {
     "$ref": "#/definitions/TypeRevision"
    }
   },
   "required": [
    "FormName"
   ],
   "type": "object"
  },
  "FormName": {
   "maxLength": 128,
   "minLength": 1,
   "pattern": "^(?![0-9_])\\w+$|^_\\w*[a-zA-Z0-9]\\w*$",
   "type": "string"
  },
  "GlueRunConfigurationInput": {
   "additionalProperties": false,
   "properties": {
    "AutoImportDataQualityResult": {
     "type": "boolean"
    },
    "CatalogName": {
     "maxLength": 128,
     "minLength": 1,
     "type": "string"
    },
    "DataAccessRole": {
     "$ref": "#/definitions/DataAccessRole"
    },
    "RelationalFilterConfigurations": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/RelationalFilterConfiguration"
     },
     "type": "array"
    }
   },
   "required": [
    "RelationalFilterConfigurations"
   ],
   "type": "object"
  },
  "RecommendationConfiguration": {
   "additionalProperties": false,
   "properties": {
    "EnableBusinessNameGeneration": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "RedshiftClusterStorage": {
   "additionalProperties": false,
   "properties": {
    "ClusterName": {
     "maxLength": 63,
     "minLength": 1,
     "pattern": "^[0-9a-z].[a-z0-9\\-]*$",
     "type": "string"
    }
   },
   "required": [
    "ClusterName"
   ],
   "type": "object"
  },
  "RedshiftCredentialConfiguration": {
   "additionalProperties": false,
   "properties": {
    "SecretManagerArn": {
     "maxLength": 256,
     "pattern": "^arn:aws[^:]*:secretsmanager:[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]:\\d{12}:secret:.*$",
     "type": "string"
    }
   },
   "required": [
    "SecretManagerArn"
   ],
   "type": "object"
  },
  "RedshiftRunConfigurationInput": {
   "additionalProperties": false,
   "properties": {
    "DataAccessRole": {
     "$ref": "#/definitions/DataAccessRole"
    },
    "RedshiftCredentialConfiguration": {
     "$ref": "#/definitions/RedshiftCredentialConfiguration"
    },
    "RedshiftStorage": {
     "$ref": "#/definitions/RedshiftStorage"
    },
    "RelationalFilterConfigurations": {
     "$ref": "#/definitions/RelationalFilterConfigurations"
    }
   },
   "required": [
    "RelationalFilterConfigurations"
   ],
   "type": "object"
  },
  "RedshiftServerlessStorage": {
   "additionalProperties": false,
   "properties": {
    "WorkgroupName": {
     "maxLength": 64,
     "minLength": 3,
     "pattern": "^[a-z0-9-]+$",
     "type": "string"
    }
   },
   "required": [
    "WorkgroupName"
   ],
   "type": "object"
  },
  "RedshiftStorage": {
   "oneOf": [
    {
     "additionalProperties": false,
     "properties": {
      "RedshiftClusterSource": {
       "$ref": "#/definitions/RedshiftClusterStorage"
      }
     },
     "required": [
      "RedshiftClusterSource"
     ],
     "title": "RedshiftClusterSource",
     "type": "object"
    },
    {
     "additionalProperties": false,
     "properties": {
      "RedshiftServerlessSource": {
       "$ref": "#/definitions/RedshiftServerlessStorage"
      }
     },
     "required": [
      "RedshiftServerlessSource"
     ],
     "title": "RedshiftServerlessSource",
     "type": "object"
    }
   ]
  },
  "Region": {
   "maxLength": 16,
   "minLength": 4,
   "pattern": "[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]",
   "type": "string"
  },
  "RelationalFilterConfiguration": {
   "additionalProperties": false,
   "properties": {
    "DatabaseName": {
     "maxLength": 128,
     "minLength": 1,
     "type": "string"
    },
    "FilterExpressions": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/FilterExpression"
     },
     "type": "array"
    },
    "SchemaName": {
     "maxLength": 128,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "DatabaseName"
   ],
   "type": "object"
  },
  "RelationalFilterConfigurations": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/RelationalFilterConfiguration"
   },
   "type": "array"
  },
  "SageMakerRunConfigurationInput": {
   "additionalProperties": false,
   "properties": {
    "TrackingAssets": {
     "$ref": "#/definitions/TrackingAssets"
    }
   },
   "required": [
    "TrackingAssets"
   ],
   "type": "object"
  },
  "ScheduleConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Schedule": {
     "maxLength": 256,
     "minLength": 1,
     "pattern": "cron\\((\\b[0-5]?[0-9]\\b) (\\b2[0-3]\\b|\\b[0-1]?[0-9]\\b) (.*){1,5} (.*){1,5} (.*){1,5} (.*){1,5}\\)",
     "type": "string"
    },
    "Timezone": {
     "$ref": "#/definitions/Timezone"
    }
   },
   "type": "object"
  },
  "Timezone": {
   "enum": [
    "AFRICA_JOHANNESBURG",
    "AMERICA_MONTREAL",
    "AMERICA_SAO_PAULO",
    "ASIA_BAHRAIN",
    "ASIA_BANGKOK",
    "ASIA_CALCUTTA",
    "ASIA_DUBAI",
    "ASIA_HONG_KONG",
    "ASIA_JAKARTA",
    "ASIA_KUALA_LUMPUR",
    "ASIA_SEOUL",
    "ASIA_SHANGHAI",
    "ASIA_SINGAPORE",
    "ASIA_TAIPEI",
    "ASIA_TOKYO",
    "AUSTRALIA_MELBOURNE",
    "AUSTRALIA_SYDNEY",
    "CANADA_CENTRAL",
    "CET",
    "CST6CDT",
    "ETC_GMT",
    "ETC_GMT0",
    "ETC_GMT_ADD_0",
    "ETC_GMT_ADD_1",
    "ETC_GMT_ADD_10",
    "ETC_GMT_ADD_11",
    "ETC_GMT_ADD_12",
    "ETC_GMT_ADD_2",
    "ETC_GMT_ADD_3",
    "ETC_GMT_ADD_4",
    "ETC_GMT_ADD_5",
    "ETC_GMT_ADD_6",
    "ETC_GMT_ADD_7",
    "ETC_GMT_ADD_8",
    "ETC_GMT_ADD_9",
    "ETC_GMT_NEG_0",
    "ETC_GMT_NEG_1",
    "ETC_GMT_NEG_10",
    "ETC_GMT_NEG_11",
    "ETC_GMT_NEG_12",
    "ETC_GMT_NEG_13",
    "ETC_GMT_NEG_14",
    "ETC_GMT_NEG_2",
    "ETC_GMT_NEG_3",
    "ETC_GMT_NEG_4",
    "ETC_GMT_NEG_5",
    "ETC_GMT_NEG_6",
    "ETC_GMT_NEG_7",
    "ETC_GMT_NEG_8",
    "ETC_GMT_NEG_9",
    "EUROPE_DUBLIN",
    "EUROPE_LONDON",
    "EUROPE_PARIS",
    "EUROPE_STOCKHOLM",
    "EUROPE_ZURICH",
    "ISRAEL",
    "MEXICO_GENERAL",
    "MST7MDT",
    "PACIFIC_AUCKLAND",
    "US_CENTRAL",
    "US_EASTERN",
    "US_MOUNTAIN",
    "US_PACIFIC",
    "UTC"
   ],
   "type": "string"
  },
  "TrackingAssets": {
   "additionalProperties": false,
   "maxProperties": 1,
   "patternProperties": {
    "^.{1,64}$": {
     "items": {
      "pattern": "^arn:aws[^:]*:sagemaker:[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]:\\d{12}:[\\w+=,.@-]{1,128}/[\\w+=,.@-]{1,256}$",
      "type": "string"
     },
     "maxItems": 500,
     "minItems": 0,
     "type": "array"
    }
   },
   "type": "object"
  },
  "TypeRevision": {
   "maxLength": 64,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9_-]+$",
   "type": "string"
  }
 },
 "primaryIdentifier": [
  "/properties/DomainId",
  "/properties/Id"
 ],
 "properties": {
  "AssetFormsInput": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/FormInput"
   },
   "maxItems": 10,
   "minItems": 0,
   "type": "array"
  },
  "Configuration": {
   "$ref": "#/definitions/DataSourceConfigurationInput"
  },
  "ConnectionId": {
   "type": "string"
  },
  "ConnectionIdentifier": {
   "pattern": "^[a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "CreatedAt": {
   "format": "date-time",
   "type": "string"
  },
  "Description": {
   "maxLength": 2048,
   "type": "string"
  },
  "DomainId": {
   "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "DomainIdentifier": {
   "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "EnableSetting": {
   "$ref": "#/definitions/EnableSetting"
  },
  "EnvironmentId": {
   "type": "string"
  },
  "EnvironmentIdentifier": {
   "pattern": "^[a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "Id": {
   "pattern": "^[a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "LastRunAssetCount": {
   "type": "number"
  },
  "LastRunAt": {
   "type": "string"
  },
  "LastRunStatus": {
   "type": "string"
  },
  "Name": {
   "maxLength": 256,
   "minLength": 1,
   "type": "string"
  },
  "ProjectId": {
   "pattern": "^[a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "ProjectIdentifier": {
   "pattern": "^[a-zA-Z0-9_-]{1,36}$",
   "type": "string"
  },
  "PublishOnImport": {
   "type": "boolean"
  },
  "Recommendation": {
   "$ref": "#/definitions/RecommendationConfiguration"
  },
  "Schedule": {
   "$ref": "#/definitions/ScheduleConfiguration"
  },
  "Status": {
   "$ref": "#/definitions/DataSourceStatus"
  },
  "Type": {
   "maxLength": 256,
   "minLength": 1,
   "type": "string"
  },
  "UpdatedAt": {
   "format": "date-time",
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/ConnectionId",
  "/properties/CreatedAt",
  "/properties/DomainId",
  "/properties/EnvironmentId",
  "/properties/Id",
  "/properties/LastRunAssetCount",
  "/properties/LastRunAt",
  "/properties/LastRunStatus",
  "/properties/ProjectId",
  "/properties/Status",
  "/properties/UpdatedAt"
 ],
 "required": [
  "Name",
  "DomainIdentifier",
  "ProjectIdentifier",
  "Type"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone",
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": false,
  "tagUpdatable": false,
  "taggable": false
 },
 "typeName": "AWS::DataZone::DataSource",
 "writeOnlyProperties": [
  "/properties/AssetFormsInput",
  "/properties/ConnectionIdentifier",
  "/properties/EnvironmentIdentifier",
  "/properties/DomainIdentifier",
  "/properties/Configuration",
  "/properties/ProjectIdentifier"
 ]
}
