{
  "description": "Generator information:\n- Generated from: /compute/resource-manager/Microsoft.Compute/DiskRP/stable/2024-03-02/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"
        },
        "completionPercent": {
          "description": "CompletionPercent: Percentage complete for the background copy when a resource is created via the CopyStart operation.",
          "type": "number"
        },
        "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",
                "CopyFromSanSnapshot",
                "CopyStart",
                "Empty",
                "FromImage",
                "Import",
                "ImportSecure",
                "Restore",
                "Upload",
                "UploadPreparedSecure"
              ],
              "type": "string"
            },
            "elasticSanResourceReference": {
              "description": "ElasticSanResourceReference: Required if createOption is CopyFromSanSnapshot. This is the ARM id of the source elastic\nsan volume snapshot.",
              "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
            },
            "galleryImageReference": {
              "description": "GalleryImageReference: Required if creating from a Gallery Image. The id/sharedGalleryImageId/communityGalleryImageId of\nthe ImageDiskReference will be the ARM id of the shared galley image version from which to create a disk.",
              "properties": {
                "communityGalleryImageId": {
                  "description": "CommunityGalleryImageId: A relative uri containing a community Azure Compute Gallery 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"
                },
                "reference": {
                  "description": "Reference: A relative uri containing either a Platform Image Repository, user image, or Azure Compute Gallery image\nreference.",
                  "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
                },
                "sharedGalleryImageId": {
                  "description": "SharedGalleryImageId: A relative uri containing a direct shared Azure Compute Gallery image reference.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "imageReference": {
              "description": "ImageReference: Disk source information for PIR or user images.",
              "properties": {
                "communityGalleryImageId": {
                  "description": "CommunityGalleryImageId: A relative uri containing a community Azure Compute Gallery 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"
                },
                "reference": {
                  "description": "Reference: A relative uri containing either a Platform Image Repository, user image, or Azure Compute Gallery image\nreference.",
                  "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
                },
                "sharedGalleryImageId": {
                  "description": "SharedGalleryImageId: A relative uri containing a direct shared Azure Compute Gallery image reference.",
                  "type": "string"
                }
              },
              "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"
            },
            "performancePlus": {
              "description": "PerformancePlus: Set this flag to true to get a boost on the performance target of the disk deployed, see here on the\nrespective performance target. This flag can only be set on disk creation time and cannot be disabled after enabled.",
              "type": "boolean"
            },
            "provisionedBandwidthCopySpeed": {
              "description": "ProvisionedBandwidthCopySpeed: If this field is set on a snapshot and createOption is CopyStart, the snapshot will be\ncopied at a quicker speed.",
              "enum": [
                "Enhanced",
                "None"
              ],
              "type": "string"
            },
            "securityDataUri": {
              "description": "SecurityDataUri: If createOption is ImportSecure, this is the URI of a blob to be imported into VM guest state.",
              "type": "string"
            },
            "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
        },
        "dataAccessAuthMode": {
          "description": "DataAccessAuthMode: Additional authentication requirements when exporting or uploading to a disk or snapshot.",
          "enum": [
            "AzureActiveDirectory",
            "None"
          ],
          "type": "string"
        },
        "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
        },
        "optimizedForFrequentAttach": {
          "description": "OptimizedForFrequentAttach: Setting this property to true improves reliability and performance of data disks that are\nfrequently (more than 5 times a day) by detached from one virtual machine and attached to another. This property should\nnot be set for disks that are not detached and attached frequently as it causes the disks to not align with the fault\ndomain of the virtual machine.",
          "type": "boolean"
        },
        "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
        },
        "publicNetworkAccess": {
          "description": "PublicNetworkAccess: Policy for controlling export on the disk.",
          "enum": [
            "Disabled",
            "Enabled"
          ],
          "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"
            }
          },
          "required": [
            "name",
            "product",
            "publisher"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "securityProfile": {
          "description": "SecurityProfile: Contains the security related information for the resource.",
          "properties": {
            "secureVMDiskEncryptionSetReference": {
              "description": "SecureVMDiskEncryptionSetReference: ResourceId of the disk encryption set associated to Confidential VM supported disk\nencrypted with customer managed key",
              "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
            },
            "securityType": {
              "description": "SecurityType: Specifies the SecurityType of the VM. Applicable for OS disks only.",
              "enum": [
                "ConfidentialVM_DiskEncryptedWithCustomerKey",
                "ConfidentialVM_DiskEncryptedWithPlatformKey",
                "ConfidentialVM_NonPersistedTPM",
                "ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey",
                "TrustedLaunch"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sku": {
          "description": "Sku: The disks sku name. Can be Standard_LRS, Premium_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, StandardSSD_ZRS,\nor  PremiumV2_LRS.",
          "properties": {
            "name": {
              "description": "Name: The sku name.",
              "enum": [
                "PremiumV2_LRS",
                "Premium_LRS",
                "Premium_ZRS",
                "StandardSSD_LRS",
                "StandardSSD_ZRS",
                "Standard_LRS",
                "UltraSSD_LRS"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "supportedCapabilities": {
          "description": "SupportedCapabilities: List of supported capabilities for the image from which the OS disk was created.",
          "properties": {
            "acceleratedNetwork": {
              "description": "AcceleratedNetwork: True if the image from which the OS disk is created supports accelerated networking.",
              "type": "boolean"
            },
            "architecture": {
              "description": "Architecture: CPU architecture supported by an OS disk.",
              "enum": [
                "Arm64",
                "x64"
              ],
              "type": "string"
            },
            "diskControllerTypes": {
              "description": "DiskControllerTypes: The disk controllers that an OS disk supports. If set it can be SCSI or SCSI, NVME or NVME, SCSI.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "supportsHibernation": {
          "description": "SupportsHibernation: Indicates the OS on a disk supports hibernation.",
          "type": "boolean"
        },
        "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": {
        "LastOwnershipUpdateTime": {
          "description": "LastOwnershipUpdateTime: The UTC time when the ownership state of the disk was last changed i.e., the time the disk was\nlast attached or detached from a VM or the time when the VM to which the disk was attached was deallocated or started.",
          "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"
        },
        "burstingEnabledTime": {
          "description": "BurstingEnabledTime: Latest time when bursting was last enabled on a disk.",
          "type": "string"
        },
        "completionPercent": {
          "description": "CompletionPercent: Percentage complete for the background copy when a resource is created via the CopyStart operation.",
          "type": "number"
        },
        "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"
            },
            "elasticSanResourceId": {
              "description": "ElasticSanResourceId: Required if createOption is CopyFromSanSnapshot. This is the ARM id of the source elastic san\nvolume snapshot.",
              "type": "string"
            },
            "galleryImageReference": {
              "description": "GalleryImageReference: Required if creating from a Gallery Image. The id/sharedGalleryImageId/communityGalleryImageId of\nthe ImageDiskReference will be the ARM id of the shared galley image version from which to create a disk.",
              "properties": {
                "communityGalleryImageId": {
                  "description": "CommunityGalleryImageId: A relative uri containing a community Azure Compute Gallery image reference.",
                  "type": "string"
                },
                "id": {
                  "description": "Id: A relative uri containing either a Platform Image Repository, user image, or Azure Compute Gallery 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"
                },
                "sharedGalleryImageId": {
                  "description": "SharedGalleryImageId: A relative uri containing a direct shared Azure Compute Gallery image reference.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "imageReference": {
              "description": "ImageReference: Disk source information for PIR or user images.",
              "properties": {
                "communityGalleryImageId": {
                  "description": "CommunityGalleryImageId: A relative uri containing a community Azure Compute Gallery image reference.",
                  "type": "string"
                },
                "id": {
                  "description": "Id: A relative uri containing either a Platform Image Repository, user image, or Azure Compute Gallery 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"
                },
                "sharedGalleryImageId": {
                  "description": "SharedGalleryImageId: A relative uri containing a direct shared Azure Compute Gallery image reference.",
                  "type": "string"
                }
              },
              "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"
            },
            "performancePlus": {
              "description": "PerformancePlus: Set this flag to true to get a boost on the performance target of the disk deployed, see here on the\nrespective performance target. This flag can only be set on disk creation time and cannot be disabled after enabled.",
              "type": "boolean"
            },
            "provisionedBandwidthCopySpeed": {
              "description": "ProvisionedBandwidthCopySpeed: If this field is set on a snapshot and createOption is CopyStart, the snapshot will be\ncopied at a quicker speed.",
              "type": "string"
            },
            "securityDataUri": {
              "description": "SecurityDataUri: If createOption is ImportSecure, this is the URI of a blob to be imported into VM guest state.",
              "type": "string"
            },
            "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
        },
        "dataAccessAuthMode": {
          "description": "DataAccessAuthMode: Additional authentication requirements when exporting or uploading to a disk or snapshot.",
          "type": "string"
        },
        "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"
        },
        "optimizedForFrequentAttach": {
          "description": "OptimizedForFrequentAttach: Setting this property to true improves reliability and performance of data disks that are\nfrequently (more than 5 times a day) by detached from one virtual machine and attached to another. This property should\nnot be set for disks that are not detached and attached frequently as it causes the disks to not align with the fault\ndomain of the virtual machine.",
          "type": "boolean"
        },
        "osType": {
          "description": "OsType: The Operating System type.",
          "type": "string"
        },
        "propertyUpdatesInProgress": {
          "description": "PropertyUpdatesInProgress: Properties of the disk for which update is pending.",
          "properties": {
            "targetTier": {
              "description": "TargetTier: The target performance tier of the disk if a tier change operation is in progress.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "provisioningState": {
          "description": "ProvisioningState: The disk provisioning state.",
          "type": "string"
        },
        "publicNetworkAccess": {
          "description": "PublicNetworkAccess: Policy for controlling export on the disk.",
          "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
        },
        "securityProfile": {
          "description": "SecurityProfile: Contains the security related information for the resource.",
          "properties": {
            "secureVMDiskEncryptionSetId": {
              "description": "SecureVMDiskEncryptionSetId: ResourceId of the disk encryption set associated to Confidential VM supported disk\nencrypted with customer managed key",
              "type": "string"
            },
            "securityType": {
              "description": "SecurityType: Specifies the SecurityType of the VM. Applicable for OS disks only.",
              "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, UltraSSD_LRS, Premium_ZRS, StandardSSD_ZRS,\nor  PremiumV2_LRS.",
          "properties": {
            "name": {
              "description": "Name: The sku name.",
              "type": "string"
            },
            "tier": {
              "description": "Tier: The sku tier.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "supportedCapabilities": {
          "description": "SupportedCapabilities: List of supported capabilities for the image from which the OS disk was created.",
          "properties": {
            "acceleratedNetwork": {
              "description": "AcceleratedNetwork: True if the image from which the OS disk is created supports accelerated networking.",
              "type": "boolean"
            },
            "architecture": {
              "description": "Architecture: CPU architecture supported by an OS disk.",
              "type": "string"
            },
            "diskControllerTypes": {
              "description": "DiskControllerTypes: The disk controllers that an OS disk supports. If set it can be SCSI or SCSI, NVME or NVME, SCSI.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "supportsHibernation": {
          "description": "SupportsHibernation: Indicates the OS on a disk supports hibernation.",
          "type": "boolean"
        },
        "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"
}
