{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/DomainId",
  "/properties/SpaceName",
  "/properties/SpaceSharingSettings",
  "/properties/OwnershipSettings"
 ],
 "definitions": {
  "AppType": {
   "enum": [
    "JupyterServer",
    "KernelGateway",
    "TensorBoard",
    "RStudioServerPro",
    "RSessionGateway",
    "JupyterLab",
    "CodeEditor"
   ],
   "type": "string"
  },
  "CodeRepository": {
   "additionalProperties": false,
   "properties": {
    "RepositoryUrl": {
     "maxLength": 256,
     "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$",
     "type": "string"
    }
   },
   "required": [
    "RepositoryUrl"
   ],
   "type": "object"
  },
  "CustomFileSystem": {
   "additionalProperties": false,
   "properties": {
    "EFSFileSystem": {
     "$ref": "#/definitions/EFSFileSystem"
    },
    "FSxLustreFileSystem": {
     "$ref": "#/definitions/FSxLustreFileSystem"
    }
   },
   "type": "object"
  },
  "CustomFileSystems": {
   "items": {
    "$ref": "#/definitions/CustomFileSystem"
   },
   "maxItems": 1,
   "minItems": 0,
   "type": "array",
   "uniqueItems": true
  },
  "CustomImage": {
   "additionalProperties": false,
   "properties": {
    "AppImageConfigName": {
     "maxLength": 63,
     "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}",
     "type": "string"
    },
    "ImageName": {
     "maxLength": 63,
     "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$",
     "type": "string"
    },
    "ImageVersionNumber": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "required": [
    "AppImageConfigName",
    "ImageName"
   ],
   "type": "object"
  },
  "EFSFileSystem": {
   "additionalProperties": false,
   "properties": {
    "FileSystemId": {
     "maxLength": 21,
     "minLength": 11,
     "pattern": "^(fs-[0-9a-f]{8,})$",
     "type": "string"
    }
   },
   "required": [
    "FileSystemId"
   ],
   "type": "object"
  },
  "EbsStorageSettings": {
   "additionalProperties": false,
   "properties": {
    "EbsVolumeSizeInGb": {
     "$ref": "#/definitions/SpaceEbsVolumeSizeInGb"
    }
   },
   "required": [
    "EbsVolumeSizeInGb"
   ],
   "type": "object"
  },
  "FSxLustreFileSystem": {
   "additionalProperties": false,
   "properties": {
    "FileSystemId": {
     "maxLength": 21,
     "minLength": 11,
     "pattern": "^(fs-[0-9a-f]{8,})$",
     "type": "string"
    }
   },
   "required": [
    "FileSystemId"
   ],
   "type": "object"
  },
  "JupyterServerAppSettings": {
   "additionalProperties": false,
   "properties": {
    "DefaultResourceSpec": {
     "$ref": "#/definitions/ResourceSpec"
    },
    "LifecycleConfigArns": {
     "items": {
      "$ref": "#/definitions/StudioLifecycleConfigArn"
     },
     "maxItems": 30,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "KernelGatewayAppSettings": {
   "additionalProperties": false,
   "properties": {
    "CustomImages": {
     "items": {
      "$ref": "#/definitions/CustomImage"
     },
     "maxItems": 30,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    },
    "DefaultResourceSpec": {
     "$ref": "#/definitions/ResourceSpec"
    },
    "LifecycleConfigArns": {
     "items": {
      "$ref": "#/definitions/StudioLifecycleConfigArn"
     },
     "maxItems": 30,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "OwnershipSettings": {
   "additionalProperties": false,
   "properties": {
    "OwnerUserProfileName": {
     "maxLength": 63,
     "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}",
     "type": "string"
    }
   },
   "required": [
    "OwnerUserProfileName"
   ],
   "type": "object"
  },
  "ResourceSpec": {
   "additionalProperties": false,
   "properties": {
    "InstanceType": {
     "enum": [
      "system",
      "ml.t3.micro",
      "ml.t3.small",
      "ml.t3.medium",
      "ml.t3.large",
      "ml.t3.xlarge",
      "ml.t3.2xlarge",
      "ml.m5.large",
      "ml.m5.xlarge",
      "ml.m5.2xlarge",
      "ml.m5.4xlarge",
      "ml.m5.8xlarge",
      "ml.m5.12xlarge",
      "ml.m5.16xlarge",
      "ml.m5.24xlarge",
      "ml.c5.large",
      "ml.c5.xlarge",
      "ml.c5.2xlarge",
      "ml.c5.4xlarge",
      "ml.c5.9xlarge",
      "ml.c5.12xlarge",
      "ml.c5.18xlarge",
      "ml.c5.24xlarge",
      "ml.p3.2xlarge",
      "ml.p3.8xlarge",
      "ml.p3.16xlarge",
      "ml.g4dn.xlarge",
      "ml.g4dn.2xlarge",
      "ml.g4dn.4xlarge",
      "ml.g4dn.8xlarge",
      "ml.g4dn.12xlarge",
      "ml.g4dn.16xlarge",
      "ml.r5.large",
      "ml.r5.xlarge",
      "ml.r5.2xlarge",
      "ml.r5.4xlarge",
      "ml.r5.8xlarge",
      "ml.r5.12xlarge",
      "ml.r5.16xlarge",
      "ml.r5.24xlarge",
      "ml.p3dn.24xlarge",
      "ml.m5d.large",
      "ml.m5d.xlarge",
      "ml.m5d.2xlarge",
      "ml.m5d.4xlarge",
      "ml.m5d.8xlarge",
      "ml.m5d.12xlarge",
      "ml.m5d.16xlarge",
      "ml.m5d.24xlarge",
      "ml.g5.xlarge",
      "ml.g5.2xlarge",
      "ml.g5.4xlarge",
      "ml.g5.8xlarge",
      "ml.g5.12xlarge",
      "ml.g5.16xlarge",
      "ml.g5.24xlarge",
      "ml.g5.48xlarge",
      "ml.p4d.24xlarge",
      "ml.p4de.24xlarge",
      "ml.geospatial.interactive",
      "ml.trn1.2xlarge",
      "ml.trn1.32xlarge",
      "ml.trn1n.32xlarge"
     ],
     "type": "string"
    },
    "LifecycleConfigArn": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*",
     "type": "string"
    },
    "SageMakerImageArn": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$",
     "type": "string"
    },
    "SageMakerImageVersionArn": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "SpaceAppLifecycleManagement": {
   "additionalProperties": false,
   "properties": {
    "IdleSettings": {
     "$ref": "#/definitions/SpaceIdleSettings"
    }
   },
   "type": "object"
  },
  "SpaceCodeEditorAppSettings": {
   "additionalProperties": false,
   "properties": {
    "DefaultResourceSpec": {
     "$ref": "#/definitions/ResourceSpec"
    }
   },
   "type": "object"
  },
  "SpaceEbsVolumeSizeInGb": {
   "maximum": 16384,
   "minimum": 5,
   "type": "integer"
  },
  "SpaceIdleSettings": {
   "additionalProperties": false,
   "properties": {
    "IdleTimeoutInMinutes": {
     "maximum": 525600,
     "minimum": 60,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "SpaceJupyterLabAppSettings": {
   "additionalProperties": false,
   "properties": {
    "CodeRepositories": {
     "items": {
      "$ref": "#/definitions/CodeRepository"
     },
     "maxItems": 30,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    },
    "DefaultResourceSpec": {
     "$ref": "#/definitions/ResourceSpec"
    }
   },
   "type": "object"
  },
  "SpaceSettings": {
   "additionalProperties": false,
   "properties": {
    "AppType": {
     "$ref": "#/definitions/AppType"
    },
    "CodeEditorAppSettings": {
     "$ref": "#/definitions/SpaceCodeEditorAppSettings"
    },
    "CustomFileSystems": {
     "$ref": "#/definitions/CustomFileSystems"
    },
    "JupyterLabAppSettings": {
     "$ref": "#/definitions/SpaceJupyterLabAppSettings"
    },
    "JupyterServerAppSettings": {
     "$ref": "#/definitions/JupyterServerAppSettings"
    },
    "KernelGatewayAppSettings": {
     "$ref": "#/definitions/KernelGatewayAppSettings"
    },
    "SpaceStorageSettings": {
     "$ref": "#/definitions/SpaceStorageSettings"
    }
   },
   "type": "object"
  },
  "SpaceSharingSettings": {
   "additionalProperties": false,
   "properties": {
    "SharingType": {
     "enum": [
      "Private",
      "Shared"
     ],
     "type": "string"
    }
   },
   "required": [
    "SharingType"
   ],
   "type": "object"
  },
  "SpaceStorageSettings": {
   "additionalProperties": false,
   "properties": {
    "EbsStorageSettings": {
     "$ref": "#/definitions/EbsStorageSettings"
    }
   },
   "type": "object"
  },
  "StudioLifecycleConfigArn": {
   "maxLength": 256,
   "minLength": 0,
   "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*",
   "type": "string"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    },
    "Value": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    }
   },
   "required": [
    "Key",
    "Value"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/DomainId",
  "/properties/SpaceName"
 ],
 "properties": {
  "DomainId": {
   "maxLength": 63,
   "minLength": 1,
   "pattern": "^d-(-*[a-z0-9]){1,61}$",
   "type": "string"
  },
  "OwnershipSettings": {
   "$ref": "#/definitions/OwnershipSettings"
  },
  "SpaceArn": {
   "maxLength": 256,
   "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:space/.*",
   "type": "string"
  },
  "SpaceDisplayName": {
   "maxLength": 64,
   "minLength": 0,
   "pattern": "^(?!\\s*$).+",
   "type": "string"
  },
  "SpaceName": {
   "maxLength": 63,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$",
   "type": "string"
  },
  "SpaceSettings": {
   "$ref": "#/definitions/SpaceSettings",
   "maxItems": 50,
   "minItems": 0,
   "uniqueItems": false
  },
  "SpaceSharingSettings": {
   "$ref": "#/definitions/SpaceSharingSettings"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 50,
   "minItems": 0,
   "type": "array",
   "uniqueItems": false
  },
  "Url": {
   "maxLength": 1024,
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/SpaceArn",
  "/properties/Url"
 ],
 "required": [
  "DomainId",
  "SpaceName"
 ],
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::SageMaker::Space",
 "writeOnlyProperties": [
  "/properties/SpaceSettings"
 ]
}
