{
  "description": "NotebookInstance is the Schema for the NotebookInstance API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More 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": {
        "acceleratorConfig": {
          "description": "The hardware accelerator used on this instance. If you use accelerators, make sure that your configuration has [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).",
          "properties": {
            "coreCount": {
              "description": "Count of cores of this accelerator.",
              "format": "int64",
              "type": "integer"
            },
            "type": {
              "description": "Type of this accelerator.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "bootDiskSizeGB": {
          "description": "Input only. The size of the boot disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). The minimum recommended value is 100 GB. If not specified, this defaults to 100.",
          "format": "int64",
          "type": "integer"
        },
        "bootDiskType": {
          "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
          "type": "string"
        },
        "canIPForward": {
          "description": "Optional. Flag to enable ip forwarding or not, default false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward",
          "type": "boolean"
        },
        "containerImage": {
          "description": "Use a container image to start the notebook instance.",
          "properties": {
            "repository": {
              "description": "Required. The path to the container image repository. For example: `gcr.io/{project_id}/{image_name}`",
              "type": "string"
            },
            "tag": {
              "description": "The tag of the container image. If not specified, this defaults to the latest tag.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "customGpuDriverPath": {
          "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers.",
          "type": "string"
        },
        "dataDiskSizeGB": {
          "description": "Input only. The size of the data disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). You can choose the size of the data disk based on how big your notebooks and data are. If not specified, this defaults to 100.",
          "format": "int64",
          "type": "integer"
        },
        "dataDiskType": {
          "description": "Input only. The type of the data disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
          "type": "string"
        },
        "diskEncryption": {
          "description": "Input only. Disk encryption method used on the boot and data disks, defaults to GMEK.",
          "type": "string"
        },
        "installGpuDriver": {
          "description": "Whether the end user authorizes Google Cloud to install GPU driver on this instance. If this field is empty or set to false, the GPU driver won't be installed. Only applicable to instances with GPUs.",
          "type": "boolean"
        },
        "instanceOwners": {
          "description": "Input only. The owner of this instance after creation. Format: `alias@example.com`\n\n Currently supports one owner only. If not specified, all of the service\n account users of your VM instance's service account can use\n the instance.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "kmsKeyRef": {
          "description": "Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Learn more about [using your own encryption keys](/kms/docs/quickstart).",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "A reference to an externally managed KMSCryptoKey. Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.",
              "type": "string"
            },
            "name": {
              "description": "The `name` of a `KMSCryptoKey` resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The `namespace` of a `KMSCryptoKey` resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
          "type": "object"
        },
        "machineType": {
          "description": "Required. The [Compute Engine machine type](https://cloud.google.com/compute/docs/machine-types) of this instance.",
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to this instance.",
          "type": "object"
        },
        "networkRef": {
          "description": "The name of the VPC that this instance is in.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The value of an externally managed ComputeNetwork resource. Should be in the format \"https://www.googleapis.com/compute/{{version}}/projects/{{projectId}}/global/networks/{{networkId}}\" or \"projects/{{projectId}}/global/networks/{{networkId}}\"",
              "type": "string"
            },
            "name": {
              "description": "The name of a ComputeNetwork resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The namespace of a ComputeNetwork resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "nicType": {
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
          "type": "string"
        },
        "noProxyAccess": {
          "description": "If true, the notebook instance will not register with the proxy.",
          "type": "boolean"
        },
        "noPublicIP": {
          "description": "If true, no public IP will be assigned to this instance.",
          "type": "boolean"
        },
        "noRemoveDataDisk": {
          "description": "Input only. If true, the data disk will not be auto deleted when deleting the instance.",
          "type": "boolean"
        },
        "postStartupScript": {
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`).",
          "type": "string"
        },
        "projectRef": {
          "description": "The project that this resource belongs to.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The `projectID` field of a project, when not managed by Config Connector.",
              "type": "string"
            },
            "kind": {
              "description": "The kind of the Project resource; optional but must be `Project` if provided.",
              "type": "string"
            },
            "name": {
              "description": "The `name` field of a `Project` resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The `namespace` field of a `Project` resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "reservationAffinity": {
          "description": "Optional. The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this notebook instance.",
          "properties": {
            "consumeReservationType": {
              "description": "Optional. Type of reservation to consume",
              "type": "string"
            },
            "key": {
              "description": "Optional. Corresponds to the label key of reservation resource.",
              "type": "string"
            },
            "values": {
              "description": "Optional. Corresponds to the label values of reservation resource.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "resourceID": {
          "description": "The NotebookInstance name. If not given, the metadata.name will be used.",
          "type": "string"
        },
        "serviceAccountRef": {
          "description": "The service account on this instance, giving access to other Google\n Cloud services.\n You can use any service account within the same project, but you\n must have the service account user permission to use the instance.\n\n If not specified, the [Compute Engine default service\n account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account)\n is used.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The `email` field of an `IAMServiceAccount` resource.",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "serviceAccountScopes": {
          "description": "Optional. The URIs of service account scopes to be included in\n Compute Engine instances.\n\n If not specified, the following\n [scopes](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam)\n are defined:\n  - https://www.googleapis.com/auth/cloud-platform\n  - https://www.googleapis.com/auth/userinfo.email\n If not using default scopes, you need at least:\n    https://www.googleapis.com/auth/compute",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "shieldedInstanceConfig": {
          "description": "Optional. Shielded VM configuration. [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).",
          "properties": {
            "enableIntegrityMonitoring": {
              "description": "Defines whether the instance has integrity monitoring enabled.\n\n Enables monitoring and attestation of the boot integrity of the instance.\n The attestation is performed against the integrity policy baseline. This\n baseline is initially derived from the implicitly trusted boot image when\n the instance is created. Enabled by default.",
              "type": "boolean"
            },
            "enableSecureBoot": {
              "description": "Defines whether the instance has Secure Boot enabled.\n\n Secure Boot helps ensure that the system only runs authentic software by\n verifying the digital signature of all boot components, and halting the\n boot process if signature verification fails. Disabled by default.",
              "type": "boolean"
            },
            "enableVTPM": {
              "description": "Defines whether the instance has the vTPM enabled. Enabled by default.",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "subnetRef": {
          "description": "The name of the subnet that this instance is in.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The ComputeSubnetwork selflink of form \"projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\", when not managed by Config Connector.",
              "type": "string"
            },
            "name": {
              "description": "The `name` field of a `ComputeSubnetwork` resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The `namespace` field of a `ComputeSubnetwork` resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "upgradeHistory": {
          "description": "The upgrade history of this instance.",
          "items": {
            "properties": {
              "action": {
                "description": "Action. Rolloback or Upgrade.",
                "type": "string"
              },
              "containerImage": {
                "description": "The container image before this instance upgrade.",
                "type": "string"
              },
              "createTime": {
                "description": "The time that this instance upgrade history entry is created.",
                "type": "string"
              },
              "framework": {
                "description": "The framework of this notebook instance.",
                "type": "string"
              },
              "snapshot": {
                "description": "The snapshot of the boot disk of this notebook instance before upgrade.",
                "type": "string"
              },
              "state": {
                "description": "The state of this instance upgrade history entry.",
                "type": "string"
              },
              "targetImage": {
                "description": "Target VM Image. Format: `ainotebooks-vm/project/image-name/name`.",
                "type": "string"
              },
              "targetVersion": {
                "description": "Target VM Version, like m63.",
                "type": "string"
              },
              "version": {
                "description": "The version of the notebook instance before this upgrade.",
                "type": "string"
              },
              "vmImage": {
                "description": "The VM image before this instance upgrade.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "vmImage": {
          "description": "Use a Compute Engine VM image to start the notebook instance.",
          "properties": {
            "imageFamily": {
              "description": "Use this VM image family to find the image; the newest image in this family will be used.",
              "type": "string"
            },
            "imageName": {
              "description": "Use VM image name to find the image.",
              "type": "string"
            },
            "project": {
              "description": "Required. The name of the Google Cloud project that this VM image belongs to. Format: `{project_id}`",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "zone": {
          "description": "Immutable. The location where the notebook instance should reside.",
          "type": "string"
        }
      },
      "required": [
        "projectRef",
        "zone"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "NotebookInstanceStatus defines the config connector machine state of NotebookInstance",
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observations of the object's current state.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message indicating details about last transition.",
                "type": "string"
              },
              "reason": {
                "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status is the status of the condition. Can be True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "externalRef": {
          "description": "A unique specifier for the NotebookInstance resource in GCP.",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.",
          "format": "int64",
          "type": "integer"
        },
        "observedState": {
          "description": "ObservedState is the state of the resource as most recently observed in GCP.",
          "properties": {
            "createTime": {
              "description": "Output only. Instance creation time.",
              "type": "string"
            },
            "creator": {
              "description": "Output only. Email address of entity that sent original CreateInstance request.",
              "type": "string"
            },
            "disks": {
              "description": "Output only. Attached disks to notebook instance.",
              "items": {
                "properties": {
                  "autoDelete": {
                    "description": "Indicates whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).",
                    "type": "boolean"
                  },
                  "boot": {
                    "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.",
                    "type": "boolean"
                  },
                  "deviceName": {
                    "description": "Indicates a unique device name of your choice that is reflected into the\n `/dev/disk/by-id/google-*` tree of a Linux operating system running\n within the instance. This name can be used to reference the device for\n mounting, resizing, and so on, from within the instance.\n\n If not specified, the server chooses a default device name to apply to\n this disk, in the form persistent-disk-x, where x is a number assigned by\n Google Compute Engine.This field is only applicable for persistent disks.",
                    "type": "string"
                  },
                  "diskSizeGB": {
                    "description": "Indicates the size of the disk in base-2 GB.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "guestOSFeatures": {
                    "description": "Indicates a list of features to enable on the guest operating system. Applicable only for bootable images. Read  Enabling guest operating system features to see a list of available options.",
                    "items": {
                      "properties": {
                        "type": {
                          "description": "The ID of a supported feature. Read  Enabling guest operating system\n features to see a list of available options.\n Valid values:\n\n * `FEATURE_TYPE_UNSPECIFIED`\n * `MULTI_IP_SUBNET`\n * `SECURE_BOOT`\n * `UEFI_COMPATIBLE`\n * `VIRTIO_SCSI_MULTIQUEUE`\n * `WINDOWS`",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "index": {
                    "description": "A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "interface": {
                    "description": "Indicates the disk interface to use for attaching this disk, which is\n either SCSI or NVME. The default is SCSI. Persistent disks must always\n use SCSI and the request will fail if you attempt to attach a persistent\n disk in any other format than SCSI. Local SSDs can use either NVME or\n SCSI. For performance characteristics of SCSI over NVMe, see Local SSD\n performance.\n Valid values:\n\n * `NVME`\n * `SCSI`",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Type of the resource. Always compute#attachedDisk for attached disks.",
                    "type": "string"
                  },
                  "licenses": {
                    "description": "A list of publicly visible licenses. Reserved for Google's use. A License represents billing and aggregate usage data for public and marketplace images.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "mode": {
                    "description": "The mode in which to attach this disk, either `READ_WRITE` or\n `READ_ONLY`. If not specified, the default is to attach the disk in\n `READ_WRITE` mode. Valid values:\n\n * `READ_ONLY`\n * `READ_WRITE`",
                    "type": "string"
                  },
                  "source": {
                    "description": "Indicates a valid partial or full URL to an existing Persistent Disk resource.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Indicates the type of the disk, either `SCRATCH` or `PERSISTENT`.\n Valid values:\n\n * `PERSISTENT`\n * `SCRATCH`",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "name": {
              "description": "Output only. The name of this notebook instance. Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`",
              "type": "string"
            },
            "proxyURI": {
              "description": "Output only. The proxy endpoint that is used to access the Jupyter notebook.",
              "type": "string"
            },
            "state": {
              "description": "Output only. The state of this instance.",
              "type": "string"
            },
            "updateTime": {
              "description": "Output only. Instance update time.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
