{
  "typeName" : "AWS::SageMaker::App",
  "description" : "Resource Type definition for AWS::SageMaker::App",
  "additionalProperties" : false,
  "properties" : {
    "AppArn" : {
      "type" : "string",
      "description" : "The Amazon Resource Name (ARN) of the app.",
      "minLength" : 1,
      "maxLength" : 256,
      "pattern" : "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app/.*"
    },
    "AppName" : {
      "type" : "string",
      "description" : "The name of the app.",
      "minLength" : 1,
      "maxLength" : 63,
      "pattern" : "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}"
    },
    "AppType" : {
      "type" : "string",
      "description" : "The type of app.",
      "enum" : [ "JupyterServer", "KernelGateway", "RStudioServerPro", "RSessionGateway", "Canvas" ]
    },
    "DomainId" : {
      "type" : "string",
      "description" : "The domain ID.",
      "minLength" : 1,
      "maxLength" : 63
    },
    "ResourceSpec" : {
      "$ref" : "#/definitions/ResourceSpec",
      "description" : "The instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance."
    },
    "Tags" : {
      "type" : "array",
      "description" : "A list of tags to apply to the app.",
      "uniqueItems" : false,
      "minItems" : 0,
      "maxItems" : 50,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    },
    "UserProfileName" : {
      "type" : "string",
      "description" : "The user profile name.",
      "minLength" : 1,
      "maxLength" : 63,
      "pattern" : "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}"
    }
  },
  "definitions" : {
    "ResourceSpec" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "InstanceType" : {
          "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.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" ]
        },
        "SageMakerImageArn" : {
          "type" : "string",
          "description" : "The ARN of the SageMaker image that the image version belongs to.",
          "minLength" : 1,
          "maxLength" : 256,
          "pattern" : "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$"
        },
        "SageMakerImageVersionArn" : {
          "type" : "string",
          "description" : "The ARN of the image version created on the instance.",
          "minLength" : 1,
          "maxLength" : 256,
          "pattern" : "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$"
        }
      }
    },
    "Tag" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 128
        },
        "Key" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 128
        }
      },
      "required" : [ "Key", "Value" ]
    }
  },
  "required" : [ "AppName", "AppType", "DomainId", "UserProfileName" ],
  "createOnlyProperties" : [ "/properties/AppName", "/properties/AppType", "/properties/DomainId", "/properties/UserProfileName", "/properties/Tags" ],
  "writeOnlyProperties" : [ "/properties/Tags" ],
  "primaryIdentifier" : [ "/properties/AppName", "/properties/AppType", "/properties/DomainId", "/properties/UserProfileName" ],
  "readOnlyProperties" : [ "/properties/AppArn" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "sagemaker:CreateApp", "sagemaker:DescribeApp" ]
    },
    "read" : {
      "permissions" : [ "sagemaker:DescribeApp" ]
    },
    "delete" : {
      "permissions" : [ "sagemaker:DeleteApp" ]
    },
    "list" : {
      "permissions" : [ "sagemaker:ListApps" ]
    }
  }
}