{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/DefinitionUri",
  "/properties/Engine",
  "/properties/Main",
  "/properties/ParameterTemplate",
  "/properties/StorageCapacity",
  "/properties/Accelerators",
  "/properties/DefinitionRepository",
  "/properties/ParameterTemplatePath",
  "/properties/readmePath",
  "/properties/readmeUri",
  "/properties/WorkflowBucketOwnerId",
  "/properties/ContainerRegistryMap",
  "/properties/ContainerRegistryMapUri"
 ],
 "definitions": {
  "Accelerators": {
   "enum": [
    "GPU"
   ],
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  },
  "ContainerRegistryMap": {
   "additionalProperties": false,
   "properties": {
    "ImageMappings": {
     "items": {
      "$ref": "#/definitions/ImageMapping"
     },
     "type": "array"
    },
    "RegistryMappings": {
     "items": {
      "$ref": "#/definitions/RegistryMapping"
     },
     "type": "array"
    }
   },
   "type": "object"
  },
  "DefinitionRepository": {
   "properties": {
    "connectionArn": {
     "maxLength": 256,
     "minLength": 1,
     "pattern": "^arn:aws(-[\\\\w]+)*:.+:.+:[0-9]{12}:.+$",
     "type": "string"
    },
    "excludeFilePatterns": {
     "items": {
      "type": "string"
     },
     "maxItems": 50,
     "minItems": 1,
     "type": "array"
    },
    "fullRepositoryId": {
     "pattern": ".+/.+",
     "type": "string"
    },
    "sourceReference": {
     "$ref": "#/definitions/SourceReference"
    }
   },
   "type": "object"
  },
  "ImageMapping": {
   "additionalProperties": false,
   "properties": {
    "DestinationImage": {
     "maxLength": 750,
     "minLength": 1,
     "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
     "type": "string"
    },
    "SourceImage": {
     "maxLength": 750,
     "minLength": 1,
     "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "RegistryMapping": {
   "additionalProperties": false,
   "properties": {
    "EcrAccountId": {
     "maxLength": 12,
     "minLength": 12,
     "pattern": "^[0-9]+$",
     "type": "string"
    },
    "EcrRepositoryPrefix": {
     "maxLength": 256,
     "minLength": 1,
     "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
     "type": "string"
    },
    "UpstreamRegistryUrl": {
     "maxLength": 750,
     "minLength": 1,
     "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
     "type": "string"
    },
    "UpstreamRepositoryPrefix": {
     "maxLength": 30,
     "minLength": 2,
     "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "SourceReference": {
   "properties": {
    "type": {
     "enum": [
      "BRANCH",
      "TAG",
      "COMMIT"
     ],
     "type": "string"
    },
    "value": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "StorageType": {
   "enum": [
    "STATIC",
    "DYNAMIC"
   ],
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  },
  "TagMap": {
   "additionalProperties": false,
   "patternProperties": {
    ".+": {
     "maxLength": 256,
     "minLength": 0,
     "type": "string"
    }
   },
   "type": "object"
  },
  "Uuid": {
   "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}$",
   "type": "string"
  },
  "WorkflowEngine": {
   "enum": [
    "WDL",
    "NEXTFLOW",
    "CWL"
   ],
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  },
  "WorkflowParameter": {
   "additionalProperties": false,
   "properties": {
    "Description": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
     "type": "string"
    },
    "Optional": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "WorkflowParameterTemplate": {
   "additionalProperties": false,
   "maxProperties": 1000,
   "minProperties": 1,
   "patternProperties": {
    "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$": {
     "$ref": "#/definitions/WorkflowParameter"
    }
   },
   "type": "object"
  },
  "WorkflowStatus": {
   "enum": [
    "CREATING",
    "ACTIVE",
    "UPDATING",
    "DELETED",
    "FAILED"
   ],
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  },
  "WorkflowType": {
   "enum": [
    "PRIVATE"
   ],
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "Accelerators": {
   "$ref": "#/definitions/Accelerators"
  },
  "Arn": {
   "maxLength": 128,
   "minLength": 1,
   "pattern": "^arn:.+$",
   "type": "string"
  },
  "ContainerRegistryMap": {
   "$ref": "#/definitions/ContainerRegistryMap"
  },
  "ContainerRegistryMapUri": {
   "maxLength": 750,
   "minLength": 1,
   "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
   "type": "string"
  },
  "CreationTime": {
   "format": "date-time",
   "type": "string"
  },
  "DefinitionRepository": {
   "$ref": "#/definitions/DefinitionRepository"
  },
  "DefinitionUri": {
   "maxLength": 256,
   "minLength": 1,
   "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
   "type": "string"
  },
  "Description": {
   "maxLength": 256,
   "minLength": 1,
   "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
   "type": "string"
  },
  "Engine": {
   "$ref": "#/definitions/WorkflowEngine"
  },
  "Id": {
   "maxLength": 18,
   "minLength": 1,
   "pattern": "^[0-9]+$",
   "type": "string"
  },
  "Main": {
   "maxLength": 128,
   "minLength": 1,
   "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
   "type": "string"
  },
  "Name": {
   "maxLength": 128,
   "minLength": 1,
   "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
   "type": "string"
  },
  "ParameterTemplate": {
   "$ref": "#/definitions/WorkflowParameterTemplate"
  },
  "ParameterTemplatePath": {
   "maxLength": 128,
   "minLength": 1,
   "pattern": "^[\\S]+$",
   "type": "string"
  },
  "Status": {
   "$ref": "#/definitions/WorkflowStatus"
  },
  "StorageCapacity": {
   "maximum": 100000,
   "minimum": 0,
   "type": "number"
  },
  "StorageType": {
   "$ref": "#/definitions/StorageType"
  },
  "Tags": {
   "$ref": "#/definitions/TagMap"
  },
  "Type": {
   "$ref": "#/definitions/WorkflowType"
  },
  "Uuid": {
   "$ref": "#/definitions/Uuid"
  },
  "WorkflowBucketOwnerId": {
   "pattern": "^[0-9]{12}$",
   "type": "string"
  },
  "readmeMarkdown": {
   "type": "string"
  },
  "readmePath": {
   "maxLength": 128,
   "minLength": 1,
   "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$",
   "type": "string"
  },
  "readmeUri": {
   "pattern": "^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/((.{1,1024}))$",
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Arn",
  "/properties/CreationTime",
  "/properties/Id",
  "/properties/Status",
  "/properties/Type",
  "/properties/Uuid"
 ],
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::Omics::Workflow",
 "writeOnlyProperties": [
  "/properties/DefinitionUri",
  "/properties/WorkflowBucketOwnerId",
  "/properties/ParameterTemplatePath",
  "/properties/DefinitionRepository",
  "/properties/readmeUri",
  "/properties/readmeMarkdown",
  "/properties/ContainerRegistryMapUri"
 ]
}
