{
  "typeName" : "AWS::SageMaker::Domain",
  "description" : "Resource Type definition for AWS::SageMaker::Domain",
  "additionalProperties" : false,
  "properties" : {
    "DomainArn" : {
      "type" : "string",
      "description" : "The Amazon Resource Name (ARN) of the created domain.",
      "maxLength" : 256,
      "pattern" : "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*"
    },
    "Url" : {
      "type" : "string",
      "description" : "The URL to the created domain.",
      "maxLength" : 1024
    },
    "AppNetworkAccessType" : {
      "type" : "string",
      "description" : "Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly.",
      "enum" : [ "PublicInternetOnly", "VpcOnly" ]
    },
    "AuthMode" : {
      "type" : "string",
      "description" : "The mode of authentication that members use to access the domain.",
      "enum" : [ "SSO", "IAM" ]
    },
    "DefaultUserSettings" : {
      "$ref" : "#/definitions/UserSettings",
      "description" : "The default user settings."
    },
    "DefaultSpaceSettings" : {
      "$ref" : "#/definitions/DefaultSpaceSettings",
      "description" : "The default space settings."
    },
    "DomainName" : {
      "type" : "string",
      "description" : "A name for the domain.",
      "maxLength" : 63,
      "pattern" : "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}"
    },
    "KmsKeyId" : {
      "type" : "string",
      "description" : "SageMaker uses AWS KMS to encrypt the EFS volume attached to the domain with an AWS managed customer master key (CMK) by default.",
      "maxLength" : 2048,
      "pattern" : ".*"
    },
    "SubnetIds" : {
      "type" : "array",
      "description" : "The VPC subnets that Studio uses for communication.",
      "uniqueItems" : false,
      "insertionOrder" : false,
      "minItems" : 1,
      "maxItems" : 16,
      "items" : {
        "type" : "string",
        "maxLength" : 32,
        "pattern" : "[-0-9a-zA-Z]+"
      }
    },
    "Tags" : {
      "type" : "array",
      "description" : "A list of tags to apply to the user profile.",
      "uniqueItems" : false,
      "insertionOrder" : false,
      "minItems" : 0,
      "maxItems" : 50,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    },
    "VpcId" : {
      "type" : "string",
      "description" : "The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.",
      "maxLength" : 32,
      "pattern" : "[-0-9a-zA-Z]+"
    },
    "DomainId" : {
      "type" : "string",
      "description" : "The domain name.",
      "maxLength" : 63,
      "pattern" : "^d-(-*[a-z0-9])+"
    },
    "HomeEfsFileSystemId" : {
      "type" : "string",
      "description" : "The ID of the Amazon Elastic File System (EFS) managed by this Domain.",
      "maxLength" : 32
    },
    "SingleSignOnManagedApplicationInstanceId" : {
      "type" : "string",
      "description" : "The SSO managed application instance ID.",
      "maxLength" : 256
    },
    "SingleSignOnApplicationArn" : {
      "type" : "string",
      "description" : "The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after October 1, 2023.",
      "pattern" : "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$"
    },
    "DomainSettings" : {
      "$ref" : "#/definitions/DomainSettings"
    },
    "AppSecurityGroupManagement" : {
      "type" : "string",
      "description" : "The entity that creates and manages the required security groups for inter-app communication in VPCOnly mode. Required when CreateDomain.AppNetworkAccessType is VPCOnly and DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn is provided.",
      "enum" : [ "Service", "Customer" ]
    },
    "SecurityGroupIdForDomainBoundary" : {
      "type" : "string",
      "description" : "The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.",
      "maxLength" : 32,
      "pattern" : "[-0-9a-zA-Z]+"
    },
    "TagPropagation" : {
      "type" : "string",
      "description" : "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.",
      "enum" : [ "ENABLED", "DISABLED" ]
    }
  },
  "definitions" : {
    "UserSettings" : {
      "type" : "object",
      "description" : "A collection of settings that apply to users of Amazon SageMaker Studio. These settings are specified when the CreateUserProfile API is called, and as DefaultUserSettings when the CreateDomain API is called.",
      "additionalProperties" : false,
      "properties" : {
        "ExecutionRole" : {
          "type" : "string",
          "description" : "The execution role for the user.",
          "minLength" : 20,
          "maxLength" : 2048,
          "pattern" : "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$"
        },
        "AutoMountHomeEFS" : {
          "type" : "string",
          "description" : "Indicates whether auto-mounting of an EFS volume is supported for the user profile. ",
          "enum" : [ "Enabled", "Disabled", "DefaultAsDomain" ]
        },
        "JupyterServerAppSettings" : {
          "$ref" : "#/definitions/JupyterServerAppSettings",
          "description" : "The Jupyter server's app settings."
        },
        "KernelGatewayAppSettings" : {
          "$ref" : "#/definitions/KernelGatewayAppSettings",
          "description" : "The kernel gateway app settings."
        },
        "RStudioServerProAppSettings" : {
          "$ref" : "#/definitions/RStudioServerProAppSettings"
        },
        "RSessionAppSettings" : {
          "$ref" : "#/definitions/RSessionAppSettings"
        },
        "JupyterLabAppSettings" : {
          "$ref" : "#/definitions/JupyterLabAppSettings"
        },
        "SpaceStorageSettings" : {
          "$ref" : "#/definitions/DefaultSpaceStorageSettings"
        },
        "CodeEditorAppSettings" : {
          "$ref" : "#/definitions/CodeEditorAppSettings"
        },
        "StudioWebPortalSettings" : {
          "$ref" : "#/definitions/StudioWebPortalSettings"
        },
        "DefaultLandingUri" : {
          "type" : "string",
          "description" : "Defines which Amazon SageMaker application users are directed to by default.",
          "maxLength" : 1023
        },
        "StudioWebPortal" : {
          "type" : "string",
          "description" : "Indicates whether the Studio experience is available to users. If not, users cannot access Studio.",
          "enum" : [ "ENABLED", "DISABLED" ]
        },
        "CustomPosixUserConfig" : {
          "$ref" : "#/definitions/CustomPosixUserConfig"
        },
        "CustomFileSystemConfigs" : {
          "type" : "array",
          "uniqueItems" : true,
          "minItems" : 0,
          "maxItems" : 2,
          "items" : {
            "$ref" : "#/definitions/CustomFileSystemConfig"
          }
        },
        "SecurityGroups" : {
          "type" : "array",
          "description" : "The security groups for the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.",
          "uniqueItems" : false,
          "insertionOrder" : false,
          "minItems" : 0,
          "maxItems" : 5,
          "items" : {
            "type" : "string",
            "maxLength" : 32,
            "pattern" : "[-0-9a-zA-Z]+"
          }
        },
        "SharingSettings" : {
          "$ref" : "#/definitions/SharingSettings",
          "description" : "The sharing settings."
        }
      },
      "required" : [ "ExecutionRole" ]
    },
    "DefaultSpaceSettings" : {
      "type" : "object",
      "description" : "A collection of settings that apply to spaces of Amazon SageMaker Studio. These settings are specified when the Create/Update Domain API is called.",
      "additionalProperties" : false,
      "properties" : {
        "ExecutionRole" : {
          "type" : "string",
          "description" : "The execution role for the space.",
          "minLength" : 20,
          "maxLength" : 2048,
          "pattern" : "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$"
        },
        "JupyterServerAppSettings" : {
          "$ref" : "#/definitions/JupyterServerAppSettings",
          "description" : "The Jupyter server's app settings."
        },
        "KernelGatewayAppSettings" : {
          "$ref" : "#/definitions/KernelGatewayAppSettings",
          "description" : "The kernel gateway app settings."
        },
        "SecurityGroups" : {
          "type" : "array",
          "description" : "The security groups for the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.",
          "uniqueItems" : false,
          "insertionOrder" : false,
          "minItems" : 0,
          "maxItems" : 5,
          "items" : {
            "type" : "string",
            "maxLength" : 32,
            "pattern" : "[-0-9a-zA-Z]+"
          }
        },
        "JupyterLabAppSettings" : {
          "$ref" : "#/definitions/JupyterLabAppSettings",
          "description" : "The Jupyter lab's app settings."
        },
        "SpaceStorageSettings" : {
          "$ref" : "#/definitions/DefaultSpaceStorageSettings",
          "description" : "The Jupyter lab's space storage settings."
        },
        "CustomPosixUserConfig" : {
          "$ref" : "#/definitions/CustomPosixUserConfig",
          "description" : "The Jupyter lab's custom posix user configurations."
        },
        "CustomFileSystemConfigs" : {
          "type" : "array",
          "uniqueItems" : true,
          "minItems" : 0,
          "maxItems" : 2,
          "items" : {
            "$ref" : "#/definitions/CustomFileSystemConfig"
          }
        }
      },
      "required" : [ "ExecutionRole" ]
    },
    "JupyterServerAppSettings" : {
      "type" : "object",
      "description" : "The JupyterServer app settings.",
      "additionalProperties" : false,
      "properties" : {
        "DefaultResourceSpec" : {
          "$ref" : "#/definitions/ResourceSpec"
        },
        "LifecycleConfigArns" : {
          "type" : "array",
          "description" : "A list of LifecycleConfigArns available for use with JupyterServer apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 30,
          "items" : {
            "$ref" : "#/definitions/StudioLifecycleConfigArn"
          }
        }
      }
    },
    "ResourceSpec" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "InstanceType" : {
          "$ref" : "#/definitions/AppInstanceType"
        },
        "SageMakerImageArn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the SageMaker image that the image version belongs to.",
          "maxLength" : 256,
          "pattern" : "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$"
        },
        "SageMakerImageVersionArn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the image version created on the instance.",
          "maxLength" : 256,
          "pattern" : "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$"
        },
        "LifecycleConfigArn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.",
          "maxLength" : 256,
          "pattern" : "^(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*|None)$"
        }
      }
    },
    "KernelGatewayAppSettings" : {
      "type" : "object",
      "description" : "The kernel gateway app settings.",
      "additionalProperties" : false,
      "properties" : {
        "CustomImages" : {
          "type" : "array",
          "description" : "A list of custom SageMaker images that are configured to run as a KernelGateway app.",
          "uniqueItems" : false,
          "insertionOrder" : false,
          "minItems" : 0,
          "maxItems" : 200,
          "items" : {
            "$ref" : "#/definitions/CustomImage"
          }
        },
        "DefaultResourceSpec" : {
          "$ref" : "#/definitions/ResourceSpec",
          "description" : "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the KernelGateway app."
        },
        "LifecycleConfigArns" : {
          "type" : "array",
          "description" : "A list of LifecycleConfigArns available for use with KernelGateway apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 30,
          "items" : {
            "$ref" : "#/definitions/StudioLifecycleConfigArn"
          }
        }
      }
    },
    "JupyterLabAppSettings" : {
      "type" : "object",
      "description" : "The JupyterLab app settings.",
      "additionalProperties" : false,
      "properties" : {
        "DefaultResourceSpec" : {
          "$ref" : "#/definitions/ResourceSpec",
          "description" : "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the JupyterLab app."
        },
        "LifecycleConfigArns" : {
          "type" : "array",
          "description" : "A list of LifecycleConfigArns available for use with JupyterLab apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 30,
          "items" : {
            "$ref" : "#/definitions/StudioLifecycleConfigArn"
          }
        },
        "CodeRepositories" : {
          "type" : "array",
          "description" : "A list of CodeRepositories available for use with JupyterLab apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 30,
          "items" : {
            "$ref" : "#/definitions/CodeRepository"
          }
        },
        "CustomImages" : {
          "type" : "array",
          "description" : "A list of custom images for use for JupyterLab apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 200,
          "items" : {
            "$ref" : "#/definitions/CustomImage"
          }
        },
        "AppLifecycleManagement" : {
          "$ref" : "#/definitions/AppLifecycleManagement"
        },
        "BuiltInLifecycleConfigArn" : {
          "type" : "string",
          "description" : "The lifecycle configuration that runs before the default lifecycle configuration.",
          "maxLength" : 256,
          "pattern" : "^(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*|None)$"
        }
      }
    },
    "AppLifecycleManagement" : {
      "type" : "object",
      "properties" : {
        "IdleSettings" : {
          "$ref" : "#/definitions/IdleSettings"
        }
      },
      "additionalProperties" : false
    },
    "IdleSettings" : {
      "type" : "object",
      "properties" : {
        "LifecycleManagement" : {
          "$ref" : "#/definitions/LifecycleManagement"
        },
        "IdleTimeoutInMinutes" : {
          "$ref" : "#/definitions/IdleTimeoutInMinutes"
        },
        "MinIdleTimeoutInMinutes" : {
          "$ref" : "#/definitions/MinIdleTimeoutInMinutes"
        },
        "MaxIdleTimeoutInMinutes" : {
          "$ref" : "#/definitions/MaxIdleTimeoutInMinutes"
        }
      },
      "additionalProperties" : false
    },
    "LifecycleManagement" : {
      "type" : "string",
      "description" : "A flag to enable/disable AppLifecycleManagement settings",
      "enum" : [ "ENABLED", "DISABLED" ]
    },
    "IdleTimeoutInMinutes" : {
      "type" : "integer",
      "description" : "The idle timeout value set in minutes",
      "minimum" : 60,
      "maximum" : 525600
    },
    "MinIdleTimeoutInMinutes" : {
      "type" : "integer",
      "description" : "The minimum idle timeout value set in minutes",
      "minimum" : 60,
      "maximum" : 525600
    },
    "MaxIdleTimeoutInMinutes" : {
      "type" : "integer",
      "description" : "The maximum idle timeout value set in minutes",
      "minimum" : 60,
      "maximum" : 525600
    },
    "CodeRepository" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "RepositoryUrl" : {
          "type" : "string",
          "description" : "A CodeRepository (valid URL) to be used within Jupyter's Git extension.",
          "maxLength" : 256,
          "pattern" : "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$"
        }
      },
      "required" : [ "RepositoryUrl" ]
    },
    "DefaultSpaceStorageSettings" : {
      "type" : "object",
      "description" : "Default storage settings for a space.",
      "additionalProperties" : false,
      "properties" : {
        "DefaultEbsStorageSettings" : {
          "$ref" : "#/definitions/DefaultEbsStorageSettings"
        }
      }
    },
    "DefaultEbsStorageSettings" : {
      "type" : "object",
      "description" : "Properties related to the Amazon Elastic Block Store volume. Must be provided if storage type is Amazon EBS and must not be provided if storage type is not Amazon EBS",
      "additionalProperties" : false,
      "properties" : {
        "DefaultEbsVolumeSizeInGb" : {
          "description" : "Default size of the Amazon EBS volume in Gb",
          "$ref" : "#/definitions/SpaceEbsVolumeSizeInGb"
        },
        "MaximumEbsVolumeSizeInGb" : {
          "description" : "Maximum size of the Amazon EBS volume in Gb. Must be greater than or equal to the DefaultEbsVolumeSizeInGb.",
          "$ref" : "#/definitions/SpaceEbsVolumeSizeInGb"
        }
      },
      "required" : [ "DefaultEbsVolumeSizeInGb", "MaximumEbsVolumeSizeInGb" ]
    },
    "SpaceEbsVolumeSizeInGb" : {
      "type" : "integer",
      "minimum" : 5,
      "maximum" : 16384
    },
    "CodeEditorAppSettings" : {
      "type" : "object",
      "description" : "The CodeEditor app settings.",
      "additionalProperties" : false,
      "properties" : {
        "DefaultResourceSpec" : {
          "$ref" : "#/definitions/ResourceSpec",
          "description" : "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the CodeEditor app."
        },
        "LifecycleConfigArns" : {
          "type" : "array",
          "description" : "A list of LifecycleConfigArns available for use with CodeEditor apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 30,
          "items" : {
            "$ref" : "#/definitions/StudioLifecycleConfigArn"
          }
        },
        "CustomImages" : {
          "type" : "array",
          "description" : "A list of custom images for use for CodeEditor apps.",
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 200,
          "items" : {
            "$ref" : "#/definitions/CustomImage"
          }
        },
        "AppLifecycleManagement" : {
          "$ref" : "#/definitions/AppLifecycleManagement"
        },
        "BuiltInLifecycleConfigArn" : {
          "type" : "string",
          "description" : "The lifecycle configuration that runs before the default lifecycle configuration.",
          "maxLength" : 256,
          "pattern" : "^(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*|None)$"
        }
      }
    },
    "StudioLifecycleConfigArn" : {
      "type" : "string",
      "description" : "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.",
      "maxLength" : 256,
      "pattern" : "^(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*|None)$"
    },
    "CustomPosixUserConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Uid" : {
          "type" : "integer",
          "minimum" : 10000,
          "maximum" : 4000000
        },
        "Gid" : {
          "type" : "integer",
          "minimum" : 1001,
          "maximum" : 4000000
        }
      },
      "required" : [ "Uid", "Gid" ]
    },
    "CustomFileSystemConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "EFSFileSystemConfig" : {
          "$ref" : "#/definitions/EFSFileSystemConfig"
        },
        "FSxLustreFileSystemConfig" : {
          "$ref" : "#/definitions/FSxLustreFileSystemConfig"
        },
        "S3FileSystemConfig" : {
          "$ref" : "#/definitions/S3FileSystemConfig"
        }
      }
    },
    "EFSFileSystemConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "FileSystemPath" : {
          "type" : "string",
          "pattern" : "^\\/\\S*$",
          "minLength" : 1,
          "maxLength" : 256
        },
        "FileSystemId" : {
          "type" : "string",
          "minLength" : 11,
          "maxLength" : 21,
          "pattern" : "^(fs-[0-9a-f]{8,})$"
        }
      },
      "required" : [ "FileSystemId" ]
    },
    "FSxLustreFileSystemConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "FileSystemPath" : {
          "type" : "string",
          "pattern" : "^\\/\\S*$",
          "minLength" : 1,
          "maxLength" : 256
        },
        "FileSystemId" : {
          "type" : "string",
          "minLength" : 11,
          "maxLength" : 21,
          "pattern" : "^(fs-[0-9a-f]{8,})$"
        }
      },
      "required" : [ "FileSystemId" ]
    },
    "S3FileSystemConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "MountPath" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024
        },
        "S3Uri" : {
          "type" : "string",
          "pattern" : "(s3)://([^/]+)/?(.*)",
          "minLength" : 0,
          "maxLength" : 1024
        }
      }
    },
    "CustomImage" : {
      "type" : "object",
      "description" : "A custom SageMaker image.",
      "additionalProperties" : false,
      "properties" : {
        "AppImageConfigName" : {
          "type" : "string",
          "description" : "The Name of the AppImageConfig.",
          "maxLength" : 63,
          "pattern" : "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}"
        },
        "ImageName" : {
          "type" : "string",
          "description" : "The name of the CustomImage. Must be unique to your account.",
          "maxLength" : 63,
          "pattern" : "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$"
        },
        "ImageVersionNumber" : {
          "type" : "integer",
          "description" : "The version number of the CustomImage.",
          "minimum" : 0
        }
      },
      "required" : [ "AppImageConfigName", "ImageName" ]
    },
    "SharingSettings" : {
      "type" : "object",
      "description" : "Specifies options when sharing an Amazon SageMaker Studio notebook. These settings are specified as part of DefaultUserSettings when the CreateDomain API is called, and as part of UserSettings when the CreateUserProfile API is called.",
      "additionalProperties" : false,
      "properties" : {
        "NotebookOutputOption" : {
          "type" : "string",
          "description" : "Whether to include the notebook cell output when sharing the notebook. The default is Disabled.",
          "enum" : [ "Allowed", "Disabled" ]
        },
        "S3KmsKeyId" : {
          "type" : "string",
          "description" : "When NotebookOutputOption is Allowed, the AWS Key Management Service (KMS) encryption key ID used to encrypt the notebook cell output in the Amazon S3 bucket.",
          "maxLength" : 2048,
          "pattern" : ".*"
        },
        "S3OutputPath" : {
          "type" : "string",
          "description" : "When NotebookOutputOption is Allowed, the Amazon S3 bucket used to store the shared notebook snapshots.",
          "maxLength" : 1024,
          "pattern" : "^(https|s3)://([^/]+)/?(.*)$"
        }
      }
    },
    "Tag" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 128
        },
        "Key" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 128
        }
      },
      "required" : [ "Key", "Value" ]
    },
    "DomainSettings" : {
      "type" : "object",
      "description" : "A collection of Domain settings.",
      "additionalProperties" : false,
      "properties" : {
        "SecurityGroupIds" : {
          "type" : "array",
          "description" : "The security groups for the Amazon Virtual Private Cloud that the Domain uses for communication between Domain-level apps and user apps.",
          "uniqueItems" : false,
          "insertionOrder" : false,
          "minItems" : 1,
          "maxItems" : 3,
          "items" : {
            "type" : "string",
            "maxLength" : 32,
            "pattern" : "[-0-9a-zA-Z]+"
          }
        },
        "RStudioServerProDomainSettings" : {
          "$ref" : "#/definitions/RStudioServerProDomainSettings"
        },
        "DockerSettings" : {
          "$ref" : "#/definitions/DockerSettings"
        },
        "ExecutionRoleIdentityConfig" : {
          "type" : "string",
          "description" : "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.",
          "enum" : [ "USER_PROFILE_NAME", "DISABLED" ]
        },
        "UnifiedStudioSettings" : {
          "$ref" : "#/definitions/UnifiedStudioSettings"
        },
        "IpAddressType" : {
          "$ref" : "#/definitions/IpAddressType"
        }
      }
    },
    "DockerSettings" : {
      "type" : "object",
      "description" : "A collection of settings that are required to start docker-proxy server.",
      "additionalProperties" : false,
      "properties" : {
        "EnableDockerAccess" : {
          "type" : "string",
          "description" : "The flag to enable/disable docker-proxy server",
          "enum" : [ "ENABLED", "DISABLED" ]
        },
        "VpcOnlyTrustedAccounts" : {
          "type" : "array",
          "description" : "A list of account id's that would be used to pull images from in VpcOnly mode",
          "uniqueItems" : false,
          "insertionOrder" : false,
          "minItems" : 0,
          "maxItems" : 20,
          "items" : {
            "type" : "string",
            "minLength" : 12,
            "maxLength" : 12,
            "pattern" : "^\\d+$"
          }
        }
      }
    },
    "UnifiedStudioSettings" : {
      "type" : "object",
      "description" : "A collection of settings that apply to an Amazon SageMaker AI domain when you use it in Amazon SageMaker Unified Studio.",
      "additionalProperties" : false,
      "properties" : {
        "StudioWebPortalAccess" : {
          "type" : "string",
          "description" : "Sets whether you can access the domain in Amazon SageMaker Studio:\n\nENABLED\nYou can access the domain in Amazon SageMaker Studio. If you migrate the domain to Amazon SageMaker Unified Studio, you can access it in both studio interfaces.\nDISABLED\nYou can't access the domain in Amazon SageMaker Studio. If you migrate the domain to Amazon SageMaker Unified Studio, you can access it only in that studio interface.\n",
          "enum" : [ "ENABLED", "DISABLED" ]
        },
        "DomainAccountId" : {
          "type" : "string",
          "description" : "The ID of the AWS account that has the Amazon SageMaker Unified Studio domain. The default value, if you don't specify an ID, is the ID of the account that has the Amazon SageMaker AI domain.",
          "minLength" : 12,
          "maxLength" : 12,
          "pattern" : "^\\d+$"
        },
        "DomainRegion" : {
          "type" : "string",
          "description" : "The AWS Region where the domain is located in Amazon SageMaker Unified Studio. The default value, if you don't specify a Region, is the Region where the Amazon SageMaker AI domain is located.",
          "pattern" : "[a-zA-Z]{2}-[a-zA-Z\\-]+-\\d+"
        },
        "DomainId" : {
          "type" : "string",
          "description" : "The ID of the Amazon SageMaker Unified Studio domain associated with this domain.",
          "minLength" : 1,
          "maxLength" : 36,
          "pattern" : "^dzd[-_][a-zA-Z0-9_-]{1,36}$"
        },
        "ProjectId" : {
          "type" : "string",
          "description" : "The ID of the Amazon SageMaker Unified Studio project that corresponds to the domain.",
          "pattern" : "^[a-zA-Z0-9_-]{1,36}$"
        },
        "EnvironmentId" : {
          "type" : "string",
          "description" : "The ID of the environment that Amazon SageMaker Unified Studio associates with the domain.",
          "minLength" : 1,
          "maxLength" : 36,
          "pattern" : "^[a-zA-Z0-9_-]{1,36}$"
        },
        "ProjectS3Path" : {
          "type" : "string",
          "description" : "The location where Amazon S3 stores temporary execution data and other artifacts for the project that corresponds to the domain.",
          "minLength" : 1,
          "maxLength" : 100,
          "pattern" : "[\\w\\.-]+$"
        }
      }
    },
    "IpAddressType" : {
      "type" : "string",
      "description" : "A setting to indicate if IPv6 routing should be enabled along with IPv4 or not",
      "enum" : [ "IPV4", "DUALSTACK" ]
    },
    "RStudioServerProDomainSettings" : {
      "type" : "object",
      "description" : "A collection of settings that update the current configuration for the RStudioServerPro Domain-level app.",
      "additionalProperties" : false,
      "properties" : {
        "DomainExecutionRoleArn" : {
          "type" : "string",
          "description" : "The ARN of the execution role for the RStudioServerPro Domain-level app.",
          "minLength" : 20,
          "maxLength" : 2048,
          "pattern" : "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$"
        },
        "RStudioConnectUrl" : {
          "type" : "string",
          "description" : "A URL pointing to an RStudio Connect server.",
          "pattern" : "^(https:|http:|www\\.)\\S*"
        },
        "RStudioPackageManagerUrl" : {
          "type" : "string",
          "description" : "A URL pointing to an RStudio Package Manager server.",
          "pattern" : "^(https:|http:|www\\.)\\S*"
        },
        "DefaultResourceSpec" : {
          "$ref" : "#/definitions/ResourceSpec"
        }
      },
      "required" : [ "DomainExecutionRoleArn" ]
    },
    "RSessionAppSettings" : {
      "type" : "object",
      "description" : "A collection of settings that apply to an RSessionGateway app.",
      "additionalProperties" : false,
      "properties" : {
        "CustomImages" : {
          "type" : "array",
          "description" : "A list of custom SageMaker images that are configured to run as a KernelGateway app.",
          "insertionOrder" : false,
          "uniqueItems" : false,
          "minItems" : 0,
          "maxItems" : 200,
          "items" : {
            "$ref" : "#/definitions/CustomImage"
          }
        },
        "DefaultResourceSpec" : {
          "$ref" : "#/definitions/ResourceSpec"
        }
      }
    },
    "RStudioServerProAppSettings" : {
      "type" : "object",
      "description" : "A collection of settings that configure user interaction with the RStudioServerPro app.",
      "additionalProperties" : false,
      "properties" : {
        "AccessStatus" : {
          "type" : "string",
          "description" : "Indicates whether the current user has access to the RStudioServerPro app.",
          "enum" : [ "ENABLED", "DISABLED" ]
        },
        "UserGroup" : {
          "type" : "string",
          "description" : "The level of permissions that the user has within the RStudioServerPro app. This value defaults to User. The Admin value allows the user access to the RStudio Administrative Dashboard.",
          "enum" : [ "R_STUDIO_ADMIN", "R_STUDIO_USER" ]
        }
      }
    },
    "StudioWebPortalSettings" : {
      "type" : "object",
      "description" : "Studio settings. If these settings are applied on a user level, they take priority over the settings applied on a domain level.",
      "additionalProperties" : false,
      "properties" : {
        "HiddenMlTools" : {
          "type" : "array",
          "description" : "The machine learning tools that are hidden from the Studio left navigation pane.",
          "insertionOrder" : false,
          "uniqueItems" : true,
          "minItems" : 0,
          "items" : {
            "$ref" : "#/definitions/MlTools"
          }
        },
        "HiddenAppTypes" : {
          "type" : "array",
          "description" : "Applications supported in Studio that are hidden from the Studio left navigation pane.",
          "insertionOrder" : false,
          "uniqueItems" : true,
          "minItems" : 0,
          "items" : {
            "$ref" : "#/definitions/AppType"
          }
        },
        "HiddenInstanceTypes" : {
          "type" : "array",
          "description" : "The instance types you are hiding from the Studio user interface.",
          "insertionOrder" : false,
          "uniqueItems" : true,
          "minItems" : 0,
          "items" : {
            "$ref" : "#/definitions/AppInstanceType"
          }
        },
        "HiddenSageMakerImageVersionAliases" : {
          "type" : "array",
          "description" : "The version aliases you are hiding from the Studio user interface.",
          "insertionOrder" : false,
          "uniqueItems" : true,
          "minItems" : 0,
          "maxItems" : 5,
          "items" : {
            "$ref" : "#/definitions/HiddenSageMakerImage"
          }
        }
      }
    },
    "MlTools" : {
      "type" : "string",
      "enum" : [ "DataWrangler", "FeatureStore", "EmrClusters", "AutoMl", "Experiments", "Training", "ModelEvaluation", "Pipelines", "Models", "JumpStart", "InferenceRecommender", "Endpoints", "Projects", "InferenceOptimization", "HyperPodClusters", "Comet", "DeepchecksLLMEvaluation", "Fiddler", "LakeraGuard", "PerformanceEvaluation" ]
    },
    "AppType" : {
      "type" : "string",
      "enum" : [ "JupyterServer", "TensorBoard", "RStudioServerPro", "JupyterLab", "CodeEditor", "DetailedProfiler", "Canvas" ]
    },
    "AppInstanceType" : {
      "type" : "string",
      "description" : "The instance type that the image version runs on.",
      "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.m5d.large", "ml.m5d.xlarge", "ml.m5d.2xlarge", "ml.m5d.4xlarge", "ml.m5d.8xlarge", "ml.m5d.12xlarge", "ml.m5d.16xlarge", "ml.m5d.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.p3dn.24xlarge", "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.g5.xlarge", "ml.g5.2xlarge", "ml.g5.4xlarge", "ml.g5.8xlarge", "ml.g5.12xlarge", "ml.g5.16xlarge", "ml.g5.24xlarge", "ml.g5.48xlarge", "ml.g6.xlarge", "ml.g6.2xlarge", "ml.g6.4xlarge", "ml.g6.8xlarge", "ml.g6.12xlarge", "ml.g6.16xlarge", "ml.g6.24xlarge", "ml.g6.48xlarge", "ml.g6e.xlarge", "ml.g6e.2xlarge", "ml.g6e.4xlarge", "ml.g6e.8xlarge", "ml.g6e.12xlarge", "ml.g6e.16xlarge", "ml.g6e.24xlarge", "ml.g6e.48xlarge", "ml.geospatial.interactive", "ml.p4d.24xlarge", "ml.p4de.24xlarge", "ml.trn1.2xlarge", "ml.trn1.32xlarge", "ml.trn1n.32xlarge", "ml.p5.48xlarge", "ml.p5e.48xlarge", "ml.p5en.48xlarge", "ml.m6i.large", "ml.m6i.xlarge", "ml.m6i.2xlarge", "ml.m6i.4xlarge", "ml.m6i.8xlarge", "ml.m6i.12xlarge", "ml.m6i.16xlarge", "ml.m6i.24xlarge", "ml.m6i.32xlarge", "ml.m7i.large", "ml.m7i.xlarge", "ml.m7i.2xlarge", "ml.m7i.4xlarge", "ml.m7i.8xlarge", "ml.m7i.12xlarge", "ml.m7i.16xlarge", "ml.m7i.24xlarge", "ml.m7i.48xlarge", "ml.c6i.large", "ml.c6i.xlarge", "ml.c6i.2xlarge", "ml.c6i.4xlarge", "ml.c6i.8xlarge", "ml.c6i.12xlarge", "ml.c6i.16xlarge", "ml.c6i.24xlarge", "ml.c6i.32xlarge", "ml.c7i.large", "ml.c7i.xlarge", "ml.c7i.2xlarge", "ml.c7i.4xlarge", "ml.c7i.8xlarge", "ml.c7i.12xlarge", "ml.c7i.16xlarge", "ml.c7i.24xlarge", "ml.c7i.48xlarge", "ml.r6i.large", "ml.r6i.xlarge", "ml.r6i.2xlarge", "ml.r6i.4xlarge", "ml.r6i.8xlarge", "ml.r6i.12xlarge", "ml.r6i.16xlarge", "ml.r6i.24xlarge", "ml.r6i.32xlarge", "ml.r7i.large", "ml.r7i.xlarge", "ml.r7i.2xlarge", "ml.r7i.4xlarge", "ml.r7i.8xlarge", "ml.r7i.12xlarge", "ml.r7i.16xlarge", "ml.r7i.24xlarge", "ml.r7i.48xlarge", "ml.m6id.large", "ml.m6id.xlarge", "ml.m6id.2xlarge", "ml.m6id.4xlarge", "ml.m6id.8xlarge", "ml.m6id.12xlarge", "ml.m6id.16xlarge", "ml.m6id.24xlarge", "ml.m6id.32xlarge", "ml.c6id.large", "ml.c6id.xlarge", "ml.c6id.2xlarge", "ml.c6id.4xlarge", "ml.c6id.8xlarge", "ml.c6id.12xlarge", "ml.c6id.16xlarge", "ml.c6id.24xlarge", "ml.c6id.32xlarge", "ml.r6id.large", "ml.r6id.xlarge", "ml.r6id.2xlarge", "ml.r6id.4xlarge", "ml.r6id.8xlarge", "ml.r6id.12xlarge", "ml.r6id.16xlarge", "ml.r6id.24xlarge", "ml.r6id.32xlarge" ]
    },
    "HiddenSageMakerImage" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SageMakerImageName" : {
          "type" : "string",
          "description" : "The SageMaker image name that you are hiding from the Studio user interface.",
          "enum" : [ "sagemaker_distribution" ]
        },
        "VersionAliases" : {
          "type" : "array",
          "uniqueItems" : false,
          "insertionOrder" : false,
          "maxItems" : 20,
          "items" : {
            "type" : "string",
            "minLength" : 1,
            "maxLength" : 128,
            "pattern" : "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
          }
        }
      }
    }
  },
  "required" : [ "AuthMode", "DefaultUserSettings", "DomainName" ],
  "createOnlyProperties" : [ "/properties/AuthMode", "/properties/DomainName", "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", "/properties/KmsKeyId", "/properties/Tags" ],
  "conditionalCreateOnlyProperties" : [ "/properties/VpcId" ],
  "writeOnlyProperties" : [ "/properties/Tags" ],
  "primaryIdentifier" : [ "/properties/DomainId" ],
  "readOnlyProperties" : [ "/properties/DomainArn", "/properties/Url", "/properties/DomainId", "/properties/HomeEfsFileSystemId", "/properties/SecurityGroupIdForDomainBoundary", "/properties/SingleSignOnManagedApplicationInstanceId", "/properties/SingleSignOnApplicationArn" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "sagemaker:CreateApp", "sagemaker:CreateDomain", "sagemaker:DescribeDomain", "sagemaker:DescribeImage", "sagemaker:DescribeImageVersion", "iam:CreateServiceLinkedRole", "iam:PassRole", "efs:CreateFileSystem", "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKeyWithoutPlainText" ]
    },
    "read" : {
      "permissions" : [ "sagemaker:DescribeDomain" ]
    },
    "update" : {
      "permissions" : [ "sagemaker:CreateApp", "sagemaker:UpdateDomain", "sagemaker:DescribeDomain", "sagemaker:DescribeImage", "sagemaker:DescribeImageVersion", "iam:PassRole" ]
    },
    "delete" : {
      "permissions" : [ "sagemaker:DeleteApp", "sagemaker:DeleteDomain", "sagemaker:DescribeDomain" ]
    },
    "list" : {
      "permissions" : [ "sagemaker:ListDomains" ]
    }
  }
}