{
  "description": "NotebookInstance is the Schema for the NotebookInstances API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "NotebookInstanceSpec defines the desired state of NotebookInstance.",
      "properties": {
        "acceleratorTypes": {
          "description": "This parameter is no longer supported. Elastic Inference (EI) is no longer\navailable.\n\nThis parameter was used to specify a list of EI instance types to associate\nwith this notebook instance.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "additionalCodeRepositories": {
          "description": "An array of up to three Git repositories to associate with the notebook instance.\nThese can be either the names of Git repositories stored as resources in\nyour account, or the URL of Git repositories in Amazon Web Services CodeCommit\n(https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or\nin any other Git repository. These repositories are cloned at the same level\nas the default repository of your notebook instance. For more information,\nsee Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "defaultCodeRepository": {
          "description": "A Git repository to associate with the notebook instance as its default code\nrepository. This can be either the name of a Git repository stored as a resource\nin your account, or the URL of a Git repository in Amazon Web Services CodeCommit\n(https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or\nin any other Git repository. When you open a notebook instance, it opens\nin the directory that contains this repository. For more information, see\nAssociating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html).\n\nRegex Pattern: `^https://([^/]+)/?(.*)$|^[a-zA-Z0-9](-*[a-zA-Z0-9])*$`",
          "type": "string"
        },
        "directInternetAccess": {
          "description": "Sets whether SageMaker AI provides internet access to the notebook instance.\nIf you set this to Disabled this notebook instance is able to access resources\nonly in your VPC, and is not be able to connect to SageMaker AI training\nand endpoint services unless you configure a NAT Gateway in your VPC.\n\nFor more information, see Notebook Instances Are Internet-Enabled by Default\n(https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access).\nYou can set the value of this parameter to Disabled only if you set a value\nfor the SubnetId parameter.",
          "type": "string"
        },
        "instanceType": {
          "description": "The type of ML compute instance to launch for the notebook instance.",
          "type": "string"
        },
        "ipAddressType": {
          "description": "The IP address type for the notebook instance. Specify ipv4 for IPv4-only\nconnectivity or dualstack for both IPv4 and IPv6 connectivity. When you specify\ndualstack, the subnet must support IPv6 CIDR blocks. If not specified, defaults\nto ipv4.",
          "type": "string"
        },
        "kmsKeyID": {
          "description": "The Amazon Resource Name (ARN) of a Amazon Web Services Key Management Service\nkey that SageMaker AI uses to encrypt data on the storage volume attached\nto your notebook instance. The KMS key you provide must be enabled. For information,\nsee Enabling and Disabling Keys (https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)\nin the Amazon Web Services Key Management Service Developer Guide.\n\nRegex Pattern: `^[a-zA-Z0-9:/_-]*$`",
          "type": "string"
        },
        "lifecycleConfigName": {
          "description": "The name of a lifecycle configuration to associate with the notebook instance.\nFor information about lifestyle configurations, see Step 2.1: (Optional)\nCustomize a Notebook Instance (https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html).\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9])*$`",
          "type": "string"
        },
        "notebookInstanceName": {
          "description": "The name of the new notebook instance.\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9])*$`",
          "type": "string"
        },
        "platformIdentifier": {
          "description": "The platform identifier of the notebook instance runtime environment.\n\nRegex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3|notebook-al2023-v1)$`",
          "type": "string"
        },
        "roleARN": {
          "description": "When you send any requests to Amazon Web Services resources from the notebook\ninstance, SageMaker AI assumes this role to perform tasks on your behalf.\nYou must grant this role necessary permissions so SageMaker AI can perform\nthese tasks. The policy must allow the SageMaker AI service principal (sagemaker.amazonaws.com)\npermissions to assume this role. For more information, see SageMaker AI Roles\n(https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).\n\nTo be able to pass this role to SageMaker AI, the caller of this API must\nhave the iam:PassRole permission.\n\nRegex Pattern: `^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$`",
          "type": "string"
        },
        "rootAccess": {
          "description": "Whether root access is enabled or disabled for users of the notebook instance.\nThe default value is Enabled.\n\nLifecycle configurations need root access to be able to set up a notebook\ninstance. Because of this, lifecycle configurations associated with a notebook\ninstance always run with root access even if you disable root access for\nusers.",
          "type": "string"
        },
        "securityGroupIDs": {
          "description": "The VPC security group IDs, in the form sg-xxxxxxxx. The security groups\nmust be for the same VPC as specified in the subnet.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "subnetID": {
          "description": "The ID of the subnet in a VPC to which you would like to have a connectivity\nfrom your ML compute instance.\n\nRegex Pattern: `^[-0-9a-zA-Z]+$`",
          "type": "string"
        },
        "tags": {
          "description": "An array of key-value pairs. You can use tags to categorize your Amazon Web\nServices resources in different ways, for example, by purpose, owner, or\nenvironment. For more information, see Tagging Amazon Web Services Resources\n(https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).",
          "items": {
            "description": "A tag object that consists of a key and an optional value, used to manage\nmetadata for SageMaker Amazon Web Services resources.\n\nYou can add tags to notebook instances, training jobs, hyperparameter tuning\njobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations,\nand endpoints. For more information on adding tags to SageMaker resources,\nsee AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html).\n\nFor more information on adding metadata to your Amazon Web Services resources\nwith tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).\nFor advice on best practices for managing Amazon Web Services resources with\ntagging, see Tagging Best Practices: Implement an Effective Amazon Web Services\nResource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf).",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "volumeSizeInGB": {
          "description": "The size, in GB, of the ML storage volume to attach to the notebook instance.\nThe default value is 5 GB.",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "instanceType",
        "notebookInstanceName",
        "roleARN"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "NotebookInstanceStatus defines the observed state of NotebookInstance",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "failureReason": {
          "description": "If status is Failed, the reason it failed.",
          "type": "string"
        },
        "notebookInstanceStatus": {
          "description": "The status of the notebook instance.",
          "type": "string"
        },
        "stoppedByControllerMetadata": {
          "description": "The URL that you use to connect to the Jupyter notebook that is running in\nyour notebook instance.",
          "type": "string"
        },
        "url": {
          "description": "The URL that you use to connect to the Jupyter notebook that is running in\nyour notebook instance.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
