{
  "description": "Generator information:\n- Generated from: /compute/resource-manager/Microsoft.Compute/DiskRP/stable/2020-09-30/disk.json\n- ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}",
  "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": {
      "properties": {
        "azureName": {
          "description": "AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it\ndoesn't have to be.",
          "type": "string"
        },
        "burstingEnabled": {
          "description": "BurstingEnabled: Set to true to enable bursting beyond the provisioned performance target of the disk. Bursting is\ndisabled by default. Does not apply to Ultra disks.",
          "type": "boolean"
        },
        "creationData": {
          "description": "CreationData: Disk source information. CreationData information cannot be changed after the disk has been created.",
          "properties": {
            "createOption": {
              "description": "CreateOption: This enumerates the possible sources of a disk's creation.",
              "enum": [
                "Attach",
                "Copy",
                "Empty",
                "FromImage",
                "Import",
                "Restore",
                "Upload"
              ],
              "type": "string"
            },
            "galleryImageReference": {
              "description": "GalleryImageReference: Required if creating from a Gallery Image. The id of the ImageDiskReference will be the ARM id of\nthe shared galley image version from which to create a disk.",
              "properties": {
                "lun": {
                  "description": "Lun: If the disk is created from an image's data disk, this is an index that indicates which of the data disks in the\nimage to use. For OS disks, this field is null.",
                  "type": "integer"
                },
                "reference": {
                  "description": "Reference: A relative uri containing either a Platform Image Repository or user image reference.",
                  "properties": {
                    "armId": {
                      "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                      "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                      "type": "string"
                    },
                    "group": {
                      "description": "Group is the Kubernetes group of the resource.",
                      "type": "string"
                    },
                    "kind": {
                      "description": "Kind is the Kubernetes kind of the resource.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the Kubernetes name of the resource.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "reference"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "imageReference": {
              "description": "ImageReference: Disk source information.",
              "properties": {
                "lun": {
                  "description": "Lun: If the disk is created from an image's data disk, this is an index that indicates which of the data disks in the\nimage to use. For OS disks, this field is null.",
                  "type": "integer"
                },
                "reference": {
                  "description": "Reference: A relative uri containing either a Platform Image Repository or user image reference.",
                  "properties": {
                    "armId": {
                      "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                      "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                      "type": "string"
                    },
                    "group": {
                      "description": "Group is the Kubernetes group of the resource.",
                      "type": "string"
                    },
                    "kind": {
                      "description": "Kind is the Kubernetes kind of the resource.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the Kubernetes name of the resource.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "reference"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "logicalSectorSize": {
              "description": "LogicalSectorSize: Logical sector size in bytes for Ultra disks. Supported values are 512 ad 4096. 4096 is the default.",
              "type": "integer"
            },
            "sourceResourceReference": {
              "description": "SourceResourceReference: If createOption is Copy, this is the ARM id of the source snapshot or disk.",
              "properties": {
                "armId": {
                  "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                  "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                  "type": "string"
                },
                "group": {
                  "description": "Group is the Kubernetes group of the resource.",
                  "type": "string"
                },
                "kind": {
                  "description": "Kind is the Kubernetes kind of the resource.",
                  "type": "string"
                },
                "name": {
                  "description": "Name is the Kubernetes name of the resource.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "sourceUri": {
              "description": "SourceUri: If createOption is Import, this is the URI of a blob to be imported into a managed disk.",
              "type": "string"
            },
            "storageAccountId": {
              "description": "StorageAccountId: Required if createOption is Import. The Azure Resource Manager identifier of the storage account\ncontaining the blob to import as a disk.",
              "type": "string"
            },
            "uploadSizeBytes": {
              "description": "UploadSizeBytes: If createOption is Upload, this is the size of the contents of the upload including the VHD footer.\nThis value should be between 20972032 (20 MiB + 512 bytes for the VHD footer) and 35183298347520 bytes (32 TiB + 512\nbytes for the VHD footer).",
              "type": "integer"
            }
          },
          "required": [
            "createOption"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "diskAccessReference": {
          "description": "DiskAccessReference: ARM id of the DiskAccess resource for using private endpoints on disks.",
          "properties": {
            "armId": {
              "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
              "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
              "type": "string"
            },
            "group": {
              "description": "Group is the Kubernetes group of the resource.",
              "type": "string"
            },
            "kind": {
              "description": "Kind is the Kubernetes kind of the resource.",
              "type": "string"
            },
            "name": {
              "description": "Name is the Kubernetes name of the resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "diskIOPSReadOnly": {
          "description": "DiskIOPSReadOnly: The total number of IOPS that will be allowed across all VMs mounting the shared disk as ReadOnly. One\noperation can transfer between 4k and 256k bytes.",
          "type": "integer"
        },
        "diskIOPSReadWrite": {
          "description": "DiskIOPSReadWrite: The number of IOPS allowed for this disk; only settable for UltraSSD disks. One operation can\ntransfer between 4k and 256k bytes.",
          "type": "integer"
        },
        "diskMBpsReadOnly": {
          "description": "DiskMBpsReadOnly: The total throughput (MBps) that will be allowed across all VMs mounting the shared disk as ReadOnly.\nMBps means millions of bytes per second - MB here uses the ISO notation, of powers of 10.",
          "type": "integer"
        },
        "diskMBpsReadWrite": {
          "description": "DiskMBpsReadWrite: The bandwidth allowed for this disk; only settable for UltraSSD disks. MBps means millions of bytes\nper second - MB here uses the ISO notation, of powers of 10.",
          "type": "integer"
        },
        "diskSizeGB": {
          "description": "DiskSizeGB: If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to\ncreate. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only\nallowed if the disk is not attached to a running VM, and can only increase the disk's size.",
          "type": "integer"
        },
        "encryption": {
          "description": "Encryption: Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.",
          "properties": {
            "diskEncryptionSetReference": {
              "description": "DiskEncryptionSetReference: ResourceId of the disk encryption set to use for enabling encryption at rest.",
              "properties": {
                "armId": {
                  "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                  "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                  "type": "string"
                },
                "group": {
                  "description": "Group is the Kubernetes group of the resource.",
                  "type": "string"
                },
                "kind": {
                  "description": "Kind is the Kubernetes kind of the resource.",
                  "type": "string"
                },
                "name": {
                  "description": "Name is the Kubernetes name of the resource.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "type": {
              "description": "Type: The type of key used to encrypt the data of the disk.",
              "enum": [
                "EncryptionAtRestWithCustomerKey",
                "EncryptionAtRestWithPlatformAndCustomerKeys",
                "EncryptionAtRestWithPlatformKey"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "encryptionSettingsCollection": {
          "description": "EncryptionSettingsCollection: Encryption settings collection used for Azure Disk Encryption, can contain multiple\nencryption settings per disk or snapshot.",
          "properties": {
            "enabled": {
              "description": "Enabled: Set this flag to true and provide DiskEncryptionKey and optional KeyEncryptionKey to enable encryption. Set\nthis flag to false and remove DiskEncryptionKey and KeyEncryptionKey to disable encryption. If EncryptionSettings is\nnull in the request object, the existing settings remain unchanged.",
              "type": "boolean"
            },
            "encryptionSettings": {
              "description": "EncryptionSettings: A collection of encryption settings, one for each disk volume.",
              "items": {
                "description": "Encryption settings for one disk volume.",
                "properties": {
                  "diskEncryptionKey": {
                    "description": "DiskEncryptionKey: Key Vault Secret Url and vault id of the disk encryption key",
                    "properties": {
                      "secretUrl": {
                        "description": "SecretUrl: Url pointing to a key or secret in KeyVault",
                        "type": "string"
                      },
                      "sourceVault": {
                        "description": "SourceVault: Resource id of the KeyVault containing the key or secret",
                        "properties": {
                          "reference": {
                            "description": "Reference: Resource Id",
                            "properties": {
                              "armId": {
                                "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                                "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                                "type": "string"
                              },
                              "group": {
                                "description": "Group is the Kubernetes group of the resource.",
                                "type": "string"
                              },
                              "kind": {
                                "description": "Kind is the Kubernetes kind of the resource.",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name is the Kubernetes name of the resource.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "secretUrl",
                      "sourceVault"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "keyEncryptionKey": {
                    "description": "KeyEncryptionKey: Key Vault Key Url and vault id of the key encryption key. KeyEncryptionKey is optional and when\nprovided is used to unwrap the disk encryption key.",
                    "properties": {
                      "keyUrl": {
                        "description": "KeyUrl: Url pointing to a key or secret in KeyVault",
                        "type": "string"
                      },
                      "sourceVault": {
                        "description": "SourceVault: Resource id of the KeyVault containing the key or secret",
                        "properties": {
                          "reference": {
                            "description": "Reference: Resource Id",
                            "properties": {
                              "armId": {
                                "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                                "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                                "type": "string"
                              },
                              "group": {
                                "description": "Group is the Kubernetes group of the resource.",
                                "type": "string"
                              },
                              "kind": {
                                "description": "Kind is the Kubernetes kind of the resource.",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name is the Kubernetes name of the resource.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "keyUrl",
                      "sourceVault"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "encryptionSettingsVersion": {
              "description": "EncryptionSettingsVersion: Describes what type of encryption is used for the disks. Once this field is set, it cannot be\noverwritten. '1.0' corresponds to Azure Disk Encryption with AAD app.'1.1' corresponds to Azure Disk Encryption.",
              "type": "string"
            }
          },
          "required": [
            "enabled"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "extendedLocation": {
          "description": "ExtendedLocation: The extended location where the disk will be created. Extended location cannot be changed.",
          "properties": {
            "name": {
              "description": "Name: The name of the extended location.",
              "type": "string"
            },
            "type": {
              "description": "Type: The type of the extended location.",
              "enum": [
                "EdgeZone"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hyperVGeneration": {
          "description": "HyperVGeneration: The hypervisor generation of the Virtual Machine. Applicable to OS disks only.",
          "enum": [
            "V1",
            "V2"
          ],
          "type": "string"
        },
        "location": {
          "description": "Location: Resource location",
          "type": "string"
        },
        "maxShares": {
          "description": "MaxShares: The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a\ndisk that can be mounted on multiple VMs at the same time.",
          "type": "integer"
        },
        "networkAccessPolicy": {
          "description": "NetworkAccessPolicy: Policy for accessing the disk via network.",
          "enum": [
            "AllowAll",
            "AllowPrivate",
            "DenyAll"
          ],
          "type": "string"
        },
        "operatorSpec": {
          "description": "OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not\npassed directly to Azure",
          "properties": {
            "configMapExpressions": {
              "description": "ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "secretExpressions": {
              "description": "SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "osType": {
          "description": "OsType: The Operating System type.",
          "enum": [
            "Linux",
            "Windows"
          ],
          "type": "string"
        },
        "owner": {
          "description": "Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also\ncontrols the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a\nreference to a resources.azure.com/ResourceGroup resource",
          "properties": {
            "armId": {
              "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
              "type": "string"
            },
            "name": {
              "description": "This is the name of the Kubernetes resource to reference.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "purchasePlan": {
          "description": "PurchasePlan: Purchase plan information for the the image from which the OS disk was created. E.g. - {name:\n2019-Datacenter, publisher: MicrosoftWindowsServer, product: WindowsServer}",
          "properties": {
            "name": {
              "description": "Name: The plan ID.",
              "type": "string"
            },
            "product": {
              "description": "Product: Specifies the product of the image from the marketplace. This is the same value as Offer under the\nimageReference element.",
              "type": "string"
            },
            "promotionCode": {
              "description": "PromotionCode: The Offer Promotion Code.",
              "type": "string"
            },
            "publisher": {
              "description": "Publisher: The publisher ID.",
              "type": "string"
            }
          },
          "required": [
            "name",
            "product",
            "publisher"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "sku": {
          "description": "Sku: The disks sku name. Can be Standard_LRS, Premium_LRS, StandardSSD_LRS, or UltraSSD_LRS.",
          "properties": {
            "name": {
              "description": "Name: The sku name.",
              "enum": [
                "Premium_LRS",
                "StandardSSD_LRS",
                "Standard_LRS",
                "UltraSSD_LRS"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Resource tags",
          "type": "object"
        },
        "tier": {
          "description": "Tier: Performance tier of the disk (e.g, P4, S10) as described here:\nhttps://azure.microsoft.com/en-us/pricing/details/managed-disks/. Does not apply to Ultra disks.",
          "type": "string"
        },
        "zones": {
          "description": "Zones: The Logical zone list for Disk.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "creationData",
        "location",
        "owner"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Disk resource.",
      "properties": {
        "burstingEnabled": {
          "description": "BurstingEnabled: Set to true to enable bursting beyond the provisioned performance target of the disk. Bursting is\ndisabled by default. Does not apply to Ultra disks.",
          "type": "boolean"
        },
        "conditions": {
          "description": "Conditions: The observed state of the resource",
          "items": {
            "description": "Condition defines an extension to status (an observation) of a resource",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Message is a human readable message indicating details about the transition. This field may be empty.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration is the .metadata.generation that the condition was set based upon. For instance, if\n.metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "Reason for the condition's last transition.\nReasons are upper CamelCase (PascalCase) with no spaces. A reason is always provided, this field will not be empty.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nFor conditions which have positive polarity (Status == True is their normal/healthy state), this will be omitted when Status == True\nFor conditions which have negative polarity (Status == False is their normal/healthy state), this will be omitted when Status == False.\nThis is omitted in all cases when Status == Unknown",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "creationData": {
          "description": "CreationData: Disk source information. CreationData information cannot be changed after the disk has been created.",
          "properties": {
            "createOption": {
              "description": "CreateOption: This enumerates the possible sources of a disk's creation.",
              "type": "string"
            },
            "galleryImageReference": {
              "description": "GalleryImageReference: Required if creating from a Gallery Image. The id of the ImageDiskReference will be the ARM id of\nthe shared galley image version from which to create a disk.",
              "properties": {
                "id": {
                  "description": "Id: A relative uri containing either a Platform Image Repository or user image reference.",
                  "type": "string"
                },
                "lun": {
                  "description": "Lun: If the disk is created from an image's data disk, this is an index that indicates which of the data disks in the\nimage to use. For OS disks, this field is null.",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "imageReference": {
              "description": "ImageReference: Disk source information.",
              "properties": {
                "id": {
                  "description": "Id: A relative uri containing either a Platform Image Repository or user image reference.",
                  "type": "string"
                },
                "lun": {
                  "description": "Lun: If the disk is created from an image's data disk, this is an index that indicates which of the data disks in the\nimage to use. For OS disks, this field is null.",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "logicalSectorSize": {
              "description": "LogicalSectorSize: Logical sector size in bytes for Ultra disks. Supported values are 512 ad 4096. 4096 is the default.",
              "type": "integer"
            },
            "sourceResourceId": {
              "description": "SourceResourceId: If createOption is Copy, this is the ARM id of the source snapshot or disk.",
              "type": "string"
            },
            "sourceUniqueId": {
              "description": "SourceUniqueId: If this field is set, this is the unique id identifying the source of this resource.",
              "type": "string"
            },
            "sourceUri": {
              "description": "SourceUri: If createOption is Import, this is the URI of a blob to be imported into a managed disk.",
              "type": "string"
            },
            "storageAccountId": {
              "description": "StorageAccountId: Required if createOption is Import. The Azure Resource Manager identifier of the storage account\ncontaining the blob to import as a disk.",
              "type": "string"
            },
            "uploadSizeBytes": {
              "description": "UploadSizeBytes: If createOption is Upload, this is the size of the contents of the upload including the VHD footer.\nThis value should be between 20972032 (20 MiB + 512 bytes for the VHD footer) and 35183298347520 bytes (32 TiB + 512\nbytes for the VHD footer).",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "diskAccessId": {
          "description": "DiskAccessId: ARM id of the DiskAccess resource for using private endpoints on disks.",
          "type": "string"
        },
        "diskIOPSReadOnly": {
          "description": "DiskIOPSReadOnly: The total number of IOPS that will be allowed across all VMs mounting the shared disk as ReadOnly. One\noperation can transfer between 4k and 256k bytes.",
          "type": "integer"
        },
        "diskIOPSReadWrite": {
          "description": "DiskIOPSReadWrite: The number of IOPS allowed for this disk; only settable for UltraSSD disks. One operation can\ntransfer between 4k and 256k bytes.",
          "type": "integer"
        },
        "diskMBpsReadOnly": {
          "description": "DiskMBpsReadOnly: The total throughput (MBps) that will be allowed across all VMs mounting the shared disk as ReadOnly.\nMBps means millions of bytes per second - MB here uses the ISO notation, of powers of 10.",
          "type": "integer"
        },
        "diskMBpsReadWrite": {
          "description": "DiskMBpsReadWrite: The bandwidth allowed for this disk; only settable for UltraSSD disks. MBps means millions of bytes\nper second - MB here uses the ISO notation, of powers of 10.",
          "type": "integer"
        },
        "diskSizeBytes": {
          "description": "DiskSizeBytes: The size of the disk in bytes. This field is read only.",
          "type": "integer"
        },
        "diskSizeGB": {
          "description": "DiskSizeGB: If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to\ncreate. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only\nallowed if the disk is not attached to a running VM, and can only increase the disk's size.",
          "type": "integer"
        },
        "diskState": {
          "description": "DiskState: The state of the disk.",
          "type": "string"
        },
        "encryption": {
          "description": "Encryption: Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.",
          "properties": {
            "diskEncryptionSetId": {
              "description": "DiskEncryptionSetId: ResourceId of the disk encryption set to use for enabling encryption at rest.",
              "type": "string"
            },
            "type": {
              "description": "Type: The type of key used to encrypt the data of the disk.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "encryptionSettingsCollection": {
          "description": "EncryptionSettingsCollection: Encryption settings collection used for Azure Disk Encryption, can contain multiple\nencryption settings per disk or snapshot.",
          "properties": {
            "enabled": {
              "description": "Enabled: Set this flag to true and provide DiskEncryptionKey and optional KeyEncryptionKey to enable encryption. Set\nthis flag to false and remove DiskEncryptionKey and KeyEncryptionKey to disable encryption. If EncryptionSettings is\nnull in the request object, the existing settings remain unchanged.",
              "type": "boolean"
            },
            "encryptionSettings": {
              "description": "EncryptionSettings: A collection of encryption settings, one for each disk volume.",
              "items": {
                "description": "Encryption settings for one disk volume.",
                "properties": {
                  "diskEncryptionKey": {
                    "description": "DiskEncryptionKey: Key Vault Secret Url and vault id of the disk encryption key",
                    "properties": {
                      "secretUrl": {
                        "description": "SecretUrl: Url pointing to a key or secret in KeyVault",
                        "type": "string"
                      },
                      "sourceVault": {
                        "description": "SourceVault: Resource id of the KeyVault containing the key or secret",
                        "properties": {
                          "id": {
                            "description": "Id: Resource Id",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "keyEncryptionKey": {
                    "description": "KeyEncryptionKey: Key Vault Key Url and vault id of the key encryption key. KeyEncryptionKey is optional and when\nprovided is used to unwrap the disk encryption key.",
                    "properties": {
                      "keyUrl": {
                        "description": "KeyUrl: Url pointing to a key or secret in KeyVault",
                        "type": "string"
                      },
                      "sourceVault": {
                        "description": "SourceVault: Resource id of the KeyVault containing the key or secret",
                        "properties": {
                          "id": {
                            "description": "Id: Resource Id",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "encryptionSettingsVersion": {
              "description": "EncryptionSettingsVersion: Describes what type of encryption is used for the disks. Once this field is set, it cannot be\noverwritten. '1.0' corresponds to Azure Disk Encryption with AAD app.'1.1' corresponds to Azure Disk Encryption.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "extendedLocation": {
          "description": "ExtendedLocation: The extended location where the disk will be created. Extended location cannot be changed.",
          "properties": {
            "name": {
              "description": "Name: The name of the extended location.",
              "type": "string"
            },
            "type": {
              "description": "Type: The type of the extended location.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hyperVGeneration": {
          "description": "HyperVGeneration: The hypervisor generation of the Virtual Machine. Applicable to OS disks only.",
          "type": "string"
        },
        "id": {
          "description": "Id: Resource Id",
          "type": "string"
        },
        "location": {
          "description": "Location: Resource location",
          "type": "string"
        },
        "managedBy": {
          "description": "ManagedBy: A relative URI containing the ID of the VM that has the disk attached.",
          "type": "string"
        },
        "managedByExtended": {
          "description": "ManagedByExtended: List of relative URIs containing the IDs of the VMs that have the disk attached. maxShares should be\nset to a value greater than one for disks to allow attaching them to multiple VMs.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "maxShares": {
          "description": "MaxShares: The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a\ndisk that can be mounted on multiple VMs at the same time.",
          "type": "integer"
        },
        "name": {
          "description": "Name: Resource name",
          "type": "string"
        },
        "networkAccessPolicy": {
          "description": "NetworkAccessPolicy: Policy for accessing the disk via network.",
          "type": "string"
        },
        "osType": {
          "description": "OsType: The Operating System type.",
          "type": "string"
        },
        "provisioningState": {
          "description": "ProvisioningState: The disk provisioning state.",
          "type": "string"
        },
        "purchasePlan": {
          "description": "PurchasePlan: Purchase plan information for the the image from which the OS disk was created. E.g. - {name:\n2019-Datacenter, publisher: MicrosoftWindowsServer, product: WindowsServer}",
          "properties": {
            "name": {
              "description": "Name: The plan ID.",
              "type": "string"
            },
            "product": {
              "description": "Product: Specifies the product of the image from the marketplace. This is the same value as Offer under the\nimageReference element.",
              "type": "string"
            },
            "promotionCode": {
              "description": "PromotionCode: The Offer Promotion Code.",
              "type": "string"
            },
            "publisher": {
              "description": "Publisher: The publisher ID.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "shareInfo": {
          "description": "ShareInfo: Details of the list of all VMs that have the disk attached. maxShares should be set to a value greater than\none for disks to allow attaching them to multiple VMs.",
          "items": {
            "properties": {
              "vmUri": {
                "description": "VmUri: A relative URI containing the ID of the VM that has the disk attached.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "sku": {
          "description": "Sku: The disks sku name. Can be Standard_LRS, Premium_LRS, StandardSSD_LRS, or UltraSSD_LRS.",
          "properties": {
            "name": {
              "description": "Name: The sku name.",
              "type": "string"
            },
            "tier": {
              "description": "Tier: The sku tier.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Resource tags",
          "type": "object"
        },
        "tier": {
          "description": "Tier: Performance tier of the disk (e.g, P4, S10) as described here:\nhttps://azure.microsoft.com/en-us/pricing/details/managed-disks/. Does not apply to Ultra disks.",
          "type": "string"
        },
        "timeCreated": {
          "description": "TimeCreated: The time when the disk was created.",
          "type": "string"
        },
        "type": {
          "description": "Type: Resource type",
          "type": "string"
        },
        "uniqueId": {
          "description": "UniqueId: Unique Guid identifying the resource.",
          "type": "string"
        },
        "zones": {
          "description": "Zones: The Logical zone list for Disk.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
