{
  "typeName" : "AWS::SageMaker::StudioLifecycleConfig",
  "description" : "Resource Type definition for AWS::SageMaker::StudioLifecycleConfig",
  "additionalProperties" : false,
  "properties" : {
    "StudioLifecycleConfigArn" : {
      "type" : "string",
      "description" : "The Amazon Resource Name (ARN) of the Lifecycle Configuration.",
      "minLength" : 1,
      "maxLength" : 256,
      "pattern" : "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*"
    },
    "StudioLifecycleConfigAppType" : {
      "type" : "string",
      "description" : "The App type that the Lifecycle Configuration is attached to.",
      "enum" : [ "JupyterServer", "KernelGateway", "CodeEditor", "JupyterLab" ]
    },
    "StudioLifecycleConfigContent" : {
      "type" : "string",
      "description" : "The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded.",
      "minLength" : 1,
      "maxLength" : 16384,
      "pattern" : "[\\S\\s]+"
    },
    "StudioLifecycleConfigName" : {
      "type" : "string",
      "description" : "The name of the Amazon SageMaker Studio Lifecycle Configuration.",
      "minLength" : 1,
      "maxLength" : 63,
      "pattern" : "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}"
    },
    "Tags" : {
      "type" : "array",
      "description" : "Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API.",
      "uniqueItems" : false,
      "insertionOrder" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      },
      "minItems" : 0,
      "maxItems" : 50
    }
  },
  "definitions" : {
    "Tag" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 128
        },
        "Key" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 128
        }
      },
      "required" : [ "Key", "Value" ]
    }
  },
  "required" : [ "StudioLifecycleConfigAppType", "StudioLifecycleConfigContent", "StudioLifecycleConfigName" ],
  "createOnlyProperties" : [ "/properties/StudioLifecycleConfigAppType", "/properties/StudioLifecycleConfigContent", "/properties/StudioLifecycleConfigName", "/properties/Tags" ],
  "readOnlyProperties" : [ "/properties/StudioLifecycleConfigArn" ],
  "primaryIdentifier" : [ "/properties/StudioLifecycleConfigName" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "sagemaker:CreateStudioLifecycleConfig", "sagemaker:DescribeStudioLifecycleConfig", "sagemaker:AddTags", "sagemaker:ListTags" ]
    },
    "read" : {
      "permissions" : [ "sagemaker:DescribeStudioLifecycleConfig", "sagemaker:ListTags" ]
    },
    "delete" : {
      "permissions" : [ "sagemaker:DeleteStudioLifecycleConfig", "sagemaker:DescribeStudioLifecycleConfig", "sagemaker:DeleteTags", "sagemaker:ListTags" ]
    },
    "list" : {
      "permissions" : [ "sagemaker:ListStudioLifecycleConfigs", "sagemaker:ListTags" ]
    }
  },
  "tagging" : {
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : false,
    "cloudFormationSystemTags" : false,
    "tagProperty" : "/properties/Tags",
    "permissions" : [ "sagemaker:AddTags", "sagemaker:ListTags", "sagemaker:DeleteTags" ]
  },
  "propertyTransform" : {
    "/properties/StudioLifecycleConfigName" : "$lowercase(StudioLifecycleConfigName) $OR StudioLifecycleConfigName"
  }
}