{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "The Compute Management Client.",
    "title": "ComputeManagementClient",
    "version": "2015-06-15",
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/compute/resource-manager/Microsoft.Compute/stable/2015-06-15/compute.json",
        "version": "2.0"
      }
    ],
    "x-preferred": false,
    "x-providerName": "azure.com",
    "x-serviceName": "compute",
    "x-tags": [
      "Azure",
      "Microsoft"
    ]
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "azure_auth": {
      "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
      "description": "Azure Active Directory OAuth2 Flow",
      "flow": "implicit",
      "scopes": {
        "user_impersonation": "impersonate your user account"
      },
      "type": "oauth2"
    }
  },
  "security": [
    {
      "azure_auth": [
        "user_impersonation"
      ]
    }
  ],
  "parameters": {
    "ApiVersionParameter": {
      "description": "Client Api Version.",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string"
    },
    "SubscriptionIdParameter": {
      "description": "Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string"
    }
  },
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers": {
      "get": {
        "description": "Gets a list of virtual machine image publishers for the specified Azure location.",
        "operationId": "VirtualMachineImages_ListPublishers",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/VirtualMachineImageResource"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "VirtualMachineImages"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types": {
      "get": {
        "description": "Gets a list of virtual machine extension image types.",
        "operationId": "VirtualMachineExtensionImages_ListTypes",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/VirtualMachineExtensionImage"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "VirtualMachineExtensionImages"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions": {
      "get": {
        "description": "Gets a list of virtual machine extension image versions.",
        "operationId": "VirtualMachineExtensionImages_ListVersions",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "type",
            "required": true,
            "type": "string"
          },
          {
            "description": "The filter to apply on the operation.",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "format": "int32",
            "in": "query",
            "name": "$top",
            "required": false,
            "type": "integer"
          },
          {
            "in": "query",
            "name": "$orderby",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/VirtualMachineExtensionImage"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "VirtualMachineExtensionImages"
        ],
        "x-ms-odata": "#/definitions/VirtualMachineExtensionImage"
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions/{version}": {
      "get": {
        "description": "Gets a virtual machine extension image.",
        "operationId": "VirtualMachineExtensionImages_Get",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "type",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "version",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtensionImage"
            }
          }
        },
        "tags": [
          "VirtualMachineExtensionImages"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers": {
      "get": {
        "description": "Gets a list of virtual machine image offers for the specified location and publisher.",
        "operationId": "VirtualMachineImages_ListOffers",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher.",
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/VirtualMachineImageResource"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "VirtualMachineImages"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus": {
      "get": {
        "description": "Gets a list of virtual machine image SKUs for the specified location, publisher, and offer.",
        "operationId": "VirtualMachineImages_ListSkus",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher.",
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher offer.",
            "in": "path",
            "name": "offer",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/VirtualMachineImageResource"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "VirtualMachineImages"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions": {
      "get": {
        "description": "Gets a list of all virtual machine image versions for the specified location, publisher, offer, and SKU.",
        "operationId": "VirtualMachineImages_List",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher.",
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher offer.",
            "in": "path",
            "name": "offer",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image SKU.",
            "in": "path",
            "name": "skus",
            "required": true,
            "type": "string"
          },
          {
            "description": "The filter to apply on the operation.",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "format": "int32",
            "in": "query",
            "name": "$top",
            "required": false,
            "type": "integer"
          },
          {
            "in": "query",
            "name": "$orderby",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/VirtualMachineImageResource"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "VirtualMachineImages"
        ],
        "x-ms-odata": "#/definitions/VirtualMachineImageResource"
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions/{version}": {
      "get": {
        "description": "Gets a virtual machine image.",
        "operationId": "VirtualMachineImages_Get",
        "parameters": [
          {
            "description": "The name of a supported Azure region.",
            "in": "path",
            "name": "location",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher.",
            "in": "path",
            "name": "publisherName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image publisher offer.",
            "in": "path",
            "name": "offer",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image SKU.",
            "in": "path",
            "name": "skus",
            "required": true,
            "type": "string"
          },
          {
            "description": "A valid image SKU version.",
            "in": "path",
            "name": "version",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineImage"
            }
          }
        },
        "tags": [
          "VirtualMachineImages"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/usages": {
      "get": {
        "description": "Gets, for the specified location, the current compute resource usage information as well as the limits for compute resources under the subscription.",
        "operationId": "Usage_List",
        "parameters": [
          {
            "description": "The location for which resource usage is queried.",
            "in": "path",
            "name": "location",
            "pattern": "^[-\\w\\._]+$",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ListUsagesResult"
            }
          }
        },
        "tags": [
          "Usage"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/vmSizes": {
      "get": {
        "description": "Lists all available virtual machine sizes for a subscription in a location.",
        "operationId": "VirtualMachineSizes_List",
        "parameters": [
          {
            "description": "The location upon which virtual-machine-sizes is queried.",
            "in": "path",
            "name": "location",
            "pattern": "^[-\\w\\._]+$",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineSizeListResult"
            }
          }
        },
        "tags": [
          "VirtualMachineSizes"
        ],
        "x-ms-pageable": {
          "nextLinkName": null
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachineScaleSets": {
      "get": {
        "description": "Gets a list of all VM Scale Sets in the subscription, regardless of the associated resource group. Use nextLink property in the response to get the next page of VM Scale Sets. Do this till nextLink is null to fetch all the VM Scale Sets.",
        "operationId": "VirtualMachineScaleSets_ListAll",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetListWithLinkResult"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines": {
      "get": {
        "description": "Lists all of the virtual machines in the specified subscription. Use the nextLink property in the response to get the next page of virtual machines.",
        "operationId": "VirtualMachines_ListAll",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineListResult"
            }
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets": {
      "get": {
        "description": "Lists all availability sets in a resource group.",
        "operationId": "AvailabilitySets_List",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AvailabilitySetListResult"
            }
          }
        },
        "tags": [
          "AvailabilitySets"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}": {
      "delete": {
        "description": "Delete an availability set.",
        "operationId": "AvailabilitySets_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the availability set.",
            "in": "path",
            "name": "availabilitySetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "204": {
            "description": "No Content"
          }
        },
        "tags": [
          "AvailabilitySets"
        ]
      },
      "get": {
        "description": "Retrieves information about an availability set.",
        "operationId": "AvailabilitySets_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the availability set.",
            "in": "path",
            "name": "availabilitySetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AvailabilitySet"
            }
          }
        },
        "tags": [
          "AvailabilitySets"
        ]
      },
      "put": {
        "description": "Create or update an availability set.",
        "operationId": "AvailabilitySets_CreateOrUpdate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the availability set.",
            "in": "path",
            "name": "availabilitySetName",
            "required": true,
            "type": "string",
            "x-ms-client-name": "name"
          },
          {
            "description": "Parameters supplied to the Create Availability Set operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AvailabilitySet"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AvailabilitySet"
            }
          }
        },
        "tags": [
          "AvailabilitySets"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/vmSizes": {
      "get": {
        "description": "Lists all available virtual machine sizes that can be used to create a new virtual machine in an existing availability set.",
        "operationId": "AvailabilitySets_ListAvailableSizes",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the availability set.",
            "in": "path",
            "name": "availabilitySetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineSizeListResult"
            }
          }
        },
        "tags": [
          "AvailabilitySets"
        ],
        "x-ms-pageable": {
          "nextLinkName": null
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets": {
      "get": {
        "description": "Gets a list of all VM scale sets under a resource group.",
        "operationId": "VirtualMachineScaleSets_List",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetListResult"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines": {
      "get": {
        "description": "Gets a list of all virtual machines in a VM scale sets.",
        "operationId": "VirtualMachineScaleSetVMs_List",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "virtualMachineScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The filter to apply to the operation.",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "description": "The list parameters.",
            "in": "query",
            "name": "$select",
            "required": false,
            "type": "string"
          },
          {
            "description": "The expand expression to apply to the operation.",
            "in": "query",
            "name": "$expand",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMListResult"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-odata": "#/definitions/VirtualMachineScaleSetVM",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}": {
      "delete": {
        "description": "Deletes a VM scale set.",
        "operationId": "VirtualMachineScaleSets_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          },
          "204": {
            "description": "No Content"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Display information about a virtual machine scale set.",
        "operationId": "VirtualMachineScaleSets_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSet"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ]
      },
      "put": {
        "description": "Create or update a VM scale set.",
        "operationId": "VirtualMachineScaleSets_CreateOrUpdate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set to create or update.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string",
            "x-ms-client-name": "name"
          },
          {
            "description": "The scale set object.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSet"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSet"
            }
          },
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSet"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/deallocate": {
      "post": {
        "description": "Deallocates specific virtual machines in a VM scale set. Shuts down the virtual machines and releases the compute resources. You are not billed for the compute resources that this virtual machine scale set deallocates.",
        "operationId": "VirtualMachineScaleSets_Deallocate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A list of virtual machine instance IDs from the VM scale set.",
            "in": "body",
            "name": "vmInstanceIDs",
            "required": false,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceIDs"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/delete": {
      "post": {
        "description": "Deletes virtual machines in a VM scale set.",
        "operationId": "VirtualMachineScaleSets_DeleteInstances",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A list of virtual machine instance IDs from the VM scale set.",
            "in": "body",
            "name": "vmInstanceIDs",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceRequiredIDs"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView": {
      "get": {
        "description": "Gets the status of a VM scale set instance.",
        "operationId": "VirtualMachineScaleSets_GetInstanceView",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetInstanceView"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/manualupgrade": {
      "post": {
        "description": "Upgrades one or more virtual machines to the latest SKU set in the VM scale set model.",
        "operationId": "VirtualMachineScaleSets_UpdateInstances",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A list of virtual machine instance IDs from the VM scale set.",
            "in": "body",
            "name": "vmInstanceIDs",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceRequiredIDs"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/poweroff": {
      "post": {
        "description": "Power off (stop) one or more virtual machines in a VM scale set. Note that resources are still attached and you are getting charged for the resources. Instead, use deallocate to release resources and avoid charges.",
        "operationId": "VirtualMachineScaleSets_PowerOff",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A list of virtual machine instance IDs from the VM scale set.",
            "in": "body",
            "name": "vmInstanceIDs",
            "required": false,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceIDs"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/reimage": {
      "post": {
        "description": "Reimages (upgrade the operating system) one or more virtual machines in a VM scale set.",
        "operationId": "VirtualMachineScaleSets_Reimage",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/restart": {
      "post": {
        "description": "Restarts one or more virtual machines in a VM scale set.",
        "operationId": "VirtualMachineScaleSets_Restart",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A list of virtual machine instance IDs from the VM scale set.",
            "in": "body",
            "name": "vmInstanceIDs",
            "required": false,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceIDs"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/skus": {
      "get": {
        "description": "Gets a list of SKUs available for your VM scale set, including the minimum and maximum VM instances allowed for each SKU.",
        "operationId": "VirtualMachineScaleSets_ListSkus",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetListSkusResult"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/start": {
      "post": {
        "description": "Starts one or more virtual machines in a VM scale set.",
        "operationId": "VirtualMachineScaleSets_Start",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "A list of virtual machine instance IDs from the VM scale set.",
            "in": "body",
            "name": "vmInstanceIDs",
            "required": false,
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceIDs"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSets"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}": {
      "delete": {
        "description": "Deletes a virtual machine from a VM scale set.",
        "operationId": "VirtualMachineScaleSetVMs_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          },
          "204": {
            "description": "No Content"
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets a virtual machine from a VM scale set.",
        "operationId": "VirtualMachineScaleSetVMs_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVM"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/deallocate": {
      "post": {
        "description": "Deallocates a specific virtual machine in a VM scale set. Shuts down the virtual machine and releases the compute resources it uses. You are not billed for the compute resources of this virtual machine once it is deallocated.",
        "operationId": "VirtualMachineScaleSetVMs_Deallocate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/instanceView": {
      "get": {
        "description": "Gets the status of a virtual machine from a VM scale set.",
        "operationId": "VirtualMachineScaleSetVMs_GetInstanceView",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceView"
            }
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/poweroff": {
      "post": {
        "description": "Power off (stop) a virtual machine in a VM scale set. Note that resources are still attached and you are getting charged for the resources. Instead, use deallocate to release resources and avoid charges.",
        "operationId": "VirtualMachineScaleSetVMs_PowerOff",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/reimage": {
      "post": {
        "description": "Reimages (upgrade the operating system) a specific virtual machine in a VM scale set.",
        "operationId": "VirtualMachineScaleSetVMs_Reimage",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/restart": {
      "post": {
        "description": "Restarts a virtual machine in a VM scale set.",
        "operationId": "VirtualMachineScaleSetVMs_Restart",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/start": {
      "post": {
        "description": "Starts a virtual machine in a VM scale set.",
        "operationId": "VirtualMachineScaleSetVMs_Start",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the VM scale set.",
            "in": "path",
            "name": "vmScaleSetName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The instance ID of the virtual machine.",
            "in": "path",
            "name": "instanceId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachineScaleSetVMs"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines": {
      "get": {
        "description": "Lists all of the virtual machines in the specified resource group. Use the nextLink property in the response to get the next page of virtual machines.",
        "operationId": "VirtualMachines_List",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineListResult"
            }
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}": {
      "delete": {
        "description": "The operation to delete a virtual machine.",
        "operationId": "VirtualMachines_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          },
          "204": {
            "description": "No Content"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Retrieves information about the model view or the instance view of a virtual machine.",
        "operationId": "VirtualMachines_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The expand expression to apply on the operation.",
            "enum": [
              "instanceView"
            ],
            "in": "query",
            "name": "$expand",
            "required": false,
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "InstanceViewTypes"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachine"
            }
          }
        },
        "tags": [
          "VirtualMachines"
        ]
      },
      "put": {
        "description": "The operation to create or update a virtual machine.",
        "operationId": "VirtualMachines_CreateOrUpdate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Parameters supplied to the Create Virtual Machine operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachine"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachine"
            }
          },
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/VirtualMachine"
            }
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/capture": {
      "post": {
        "description": "Captures the VM by copying virtual hard disks of the VM and outputs a template that can be used to create similar VMs.",
        "operationId": "VirtualMachines_Capture",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Parameters supplied to the Capture Virtual Machine operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachineCaptureParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineCaptureResult"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate": {
      "post": {
        "description": "Shuts down the virtual machine and releases the compute resources. You are not billed for the compute resources that this virtual machine uses.",
        "operationId": "VirtualMachines_Deallocate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}": {
      "delete": {
        "description": "The operation to delete the extension.",
        "operationId": "VirtualMachineExtensions_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine where the extension should be deleted.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine extension.",
            "in": "path",
            "name": "vmExtensionName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          },
          "204": {
            "description": "No Content"
          }
        },
        "tags": [
          "VirtualMachineExtensions"
        ],
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "The operation to get the extension.",
        "operationId": "VirtualMachineExtensions_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine containing the extension.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine extension.",
            "in": "path",
            "name": "vmExtensionName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The expand expression to apply on the operation.",
            "in": "query",
            "name": "$expand",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtension"
            }
          }
        },
        "tags": [
          "VirtualMachineExtensions"
        ]
      },
      "patch": {
        "description": "The operation to update the extension.",
        "operationId": "VirtualMachineExtensions_Update",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine where the extension should be updated.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine extension.",
            "in": "path",
            "name": "vmExtensionName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Parameters supplied to the Update Virtual Machine Extension operation.",
            "in": "body",
            "name": "extensionParameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtensionUpdate"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtension"
            }
          }
        },
        "tags": [
          "VirtualMachineExtensions"
        ],
        "x-ms-long-running-operation": true
      },
      "put": {
        "description": "The operation to create or update the extension.",
        "operationId": "VirtualMachineExtensions_CreateOrUpdate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine where the extension should be created or updated.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine extension.",
            "in": "path",
            "name": "vmExtensionName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Parameters supplied to the Create Virtual Machine Extension operation.",
            "in": "body",
            "name": "extensionParameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtension"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtension"
            }
          },
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/VirtualMachineExtension"
            }
          }
        },
        "tags": [
          "VirtualMachineExtensions"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/generalize": {
      "post": {
        "description": "Sets the state of the virtual machine to generalized.",
        "operationId": "VirtualMachines_Generalize",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          }
        },
        "tags": [
          "VirtualMachines"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/powerOff": {
      "post": {
        "description": "The operation to power off (stop) a virtual machine. The virtual machine can be restarted with the same provisioned resources. You are still charged for this virtual machine.",
        "operationId": "VirtualMachines_PowerOff",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/redeploy": {
      "post": {
        "description": "Shuts down the virtual machine, moves it to a new node, and powers it back on.",
        "operationId": "VirtualMachines_Redeploy",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/restart": {
      "post": {
        "description": "The operation to restart a virtual machine.",
        "operationId": "VirtualMachines_Restart",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start": {
      "post": {
        "description": "The operation to start a virtual machine.",
        "operationId": "VirtualMachines_Start",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OperationStatusResponse"
            }
          },
          "202": {
            "description": "Accepted"
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/vmSizes": {
      "get": {
        "description": "Lists all available virtual machine sizes to which the specified virtual machine can be resized.",
        "operationId": "VirtualMachines_ListAvailableSizes",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the virtual machine.",
            "in": "path",
            "name": "vmName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/VirtualMachineSizeListResult"
            }
          }
        },
        "tags": [
          "VirtualMachines"
        ],
        "x-ms-pageable": {
          "nextLinkName": null
        }
      }
    }
  },
  "definitions": {
    "AdditionalUnattendContent": {
      "description": "Specifies additional XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup. Contents are defined by setting name, component name, and the pass in which the content is applied.",
      "properties": {
        "componentName": {
          "description": "The component name. Currently, the only allowable value is Microsoft-Windows-Shell-Setup.",
          "enum": [
            "Microsoft-Windows-Shell-Setup"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "ComponentNames"
          }
        },
        "content": {
          "description": "Specifies the XML formatted content that is added to the unattend.xml file for the specified path and component. The XML must be less than 4KB and must include the root element for the setting or feature that is being inserted.",
          "type": "string"
        },
        "passName": {
          "description": "The pass name. Currently, the only allowable value is OobeSystem.",
          "enum": [
            "OobeSystem"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "PassNames"
          }
        },
        "settingName": {
          "description": "Specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands and AutoLogon.",
          "enum": [
            "AutoLogon",
            "FirstLogonCommands"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SettingNames"
          }
        }
      }
    },
    "ApiEntityReference": {
      "description": "The API entity reference.",
      "properties": {
        "id": {
          "description": "The ARM resource id in the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/...",
          "type": "string"
        }
      }
    },
    "ApiError": {
      "description": "Api error.",
      "properties": {
        "code": {
          "description": "The error code.",
          "type": "string"
        },
        "details": {
          "description": "The Api error details",
          "items": {
            "$ref": "#/definitions/ApiErrorBase"
          },
          "type": "array"
        },
        "innererror": {
          "$ref": "#/definitions/InnerError",
          "description": "The Api inner error"
        },
        "message": {
          "description": "The error message.",
          "type": "string"
        },
        "target": {
          "description": "The target of the particular error.",
          "type": "string"
        }
      }
    },
    "ApiErrorBase": {
      "description": "Api error base.",
      "properties": {
        "code": {
          "description": "The error code.",
          "type": "string"
        },
        "message": {
          "description": "The error message.",
          "type": "string"
        },
        "target": {
          "description": "The target of the particular error.",
          "type": "string"
        }
      }
    },
    "AvailabilitySet": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/AvailabilitySetProperties",
          "x-ms-client-flatten": true
        }
      }
    },
    "AvailabilitySetListResult": {
      "description": "The List Availability Set operation response.",
      "properties": {
        "nextLink": {
          "description": "The URI to fetch the next page of AvailabilitySets. Call ListNext() with this URI to fetch the next page of AvailabilitySets.",
          "type": "string"
        },
        "value": {
          "description": "The list of availability sets",
          "items": {
            "$ref": "#/definitions/AvailabilitySet"
          },
          "type": "array"
        }
      },
      "required": [
        "value"
      ]
    },
    "AvailabilitySetProperties": {
      "description": "The instance view of a resource.",
      "properties": {
        "platformFaultDomainCount": {
          "description": "Fault Domain count.",
          "format": "int32",
          "type": "integer"
        },
        "platformUpdateDomainCount": {
          "description": "Update Domain count.",
          "format": "int32",
          "type": "integer"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "readOnly": true,
          "type": "array"
        },
        "virtualMachines": {
          "description": "A list of references to all virtual machines in the availability set.",
          "items": {
            "$ref": "#/definitions/SubResource"
          },
          "type": "array"
        }
      }
    },
    "BootDiagnostics": {
      "description": "Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. <br><br> You can easily view the output of your console log. <br><br> Azure also enables you to see a screenshot of the VM from the hypervisor.",
      "properties": {
        "enabled": {
          "description": "Whether boot diagnostics should be enabled on the Virtual Machine.",
          "type": "boolean"
        },
        "storageUri": {
          "description": "Uri of the storage account to use for placing the console output and screenshot.",
          "type": "string"
        }
      }
    },
    "BootDiagnosticsInstanceView": {
      "description": "The instance view of a virtual machine boot diagnostics.",
      "properties": {
        "consoleScreenshotBlobUri": {
          "description": "The console screenshot blob URI.",
          "readOnly": true,
          "type": "string"
        },
        "serialConsoleLogBlobUri": {
          "description": "The Linux serial console log blob Uri.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "Caching": {
      "description": "Specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**",
      "enum": [
        "None",
        "ReadOnly",
        "ReadWrite"
      ],
      "type": "string",
      "x-ms-enum": {
        "modelAsString": false,
        "name": "CachingTypes"
      }
    },
    "ComputeLongRunningOperationProperties": {
      "description": "Compute-specific operation properties, including output",
      "properties": {
        "output": {
          "description": "Operation output data (raw JSON)",
          "type": "object"
        }
      }
    },
    "CreateOption": {
      "description": "Specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \\u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \\u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you  also use the plan element previously described.",
      "enum": [
        "FromImage",
        "Empty",
        "Attach"
      ],
      "type": "string",
      "x-ms-enum": {
        "modelAsString": false,
        "name": "DiskCreateOptionTypes"
      }
    },
    "DataDisk": {
      "description": "Describes a data disk.",
      "properties": {
        "caching": {
          "$ref": "#/definitions/Caching",
          "description": "Specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**"
        },
        "createOption": {
          "$ref": "#/definitions/CreateOption",
          "description": "Specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \\u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \\u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you  also use the plan element previously described."
        },
        "diskSizeGB": {
          "description": "Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB",
          "format": "int32",
          "type": "integer"
        },
        "image": {
          "$ref": "#/definitions/VirtualHardDisk",
          "description": "The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist."
        },
        "lun": {
          "description": "Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "description": "The disk name.",
          "type": "string"
        },
        "vhd": {
          "$ref": "#/definitions/VirtualHardDisk",
          "description": "The virtual hard disk."
        }
      },
      "required": [
        "lun",
        "name",
        "vhd",
        "createOption"
      ]
    },
    "DataDiskImage": {
      "description": "Contains the data disk images information.",
      "properties": {
        "lun": {
          "description": "Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.",
          "format": "int32",
          "readOnly": true,
          "type": "integer"
        }
      }
    },
    "DiagnosticsProfile": {
      "description": "Specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15.",
      "properties": {
        "bootDiagnostics": {
          "$ref": "#/definitions/BootDiagnostics",
          "description": "Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. <br><br> You can easily view the output of your console log. <br><br> Azure also enables you to see a screenshot of the VM from the hypervisor."
        }
      }
    },
    "DiskEncryptionSettings": {
      "description": "Describes a Encryption Settings for a Disk",
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/definitions/KeyVaultSecretReference",
          "description": "Specifies the location of the disk encryption key, which is a Key Vault Secret."
        },
        "enabled": {
          "description": "Specifies whether disk encryption should be enabled on the virtual machine.",
          "type": "boolean"
        },
        "keyEncryptionKey": {
          "$ref": "#/definitions/KeyVaultKeyReference",
          "description": "Specifies the location of the key encryption key in Key Vault."
        }
      },
      "required": [
        "diskEncryptionKey"
      ]
    },
    "DiskInstanceView": {
      "description": "The instance view of the disk.",
      "properties": {
        "name": {
          "description": "The disk name.",
          "type": "string"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        }
      }
    },
    "HardwareProfile": {
      "description": "Specifies the hardware settings for the virtual machine.",
      "properties": {
        "vmSize": {
          "description": "Specifies the size of the virtual machine. For more information about virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> The available VM sizes depend on region and availability set. For a list of available sizes use these APIs:  <br><br> [List all available virtual machine sizes in an availability set](https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes) <br><br> [List all available virtual machine sizes in a region](https://docs.microsoft.com/rest/api/compute/virtualmachinesizes/list) <br><br> [List all available virtual machine sizes for resizing](https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes)",
          "enum": [
            "Basic_A0",
            "Basic_A1",
            "Basic_A2",
            "Basic_A3",
            "Basic_A4",
            "Standard_A0",
            "Standard_A1",
            "Standard_A2",
            "Standard_A3",
            "Standard_A4",
            "Standard_A5",
            "Standard_A6",
            "Standard_A7",
            "Standard_A8",
            "Standard_A9",
            "Standard_A10",
            "Standard_A11",
            "Standard_D1",
            "Standard_D2",
            "Standard_D3",
            "Standard_D4",
            "Standard_D11",
            "Standard_D12",
            "Standard_D13",
            "Standard_D14",
            "Standard_D1_v2",
            "Standard_D2_v2",
            "Standard_D3_v2",
            "Standard_D4_v2",
            "Standard_D5_v2",
            "Standard_D11_v2",
            "Standard_D12_v2",
            "Standard_D13_v2",
            "Standard_D14_v2",
            "Standard_DS1",
            "Standard_DS2",
            "Standard_DS3",
            "Standard_DS4",
            "Standard_DS11",
            "Standard_DS12",
            "Standard_DS13",
            "Standard_DS14",
            "Standard_G1",
            "Standard_G2",
            "Standard_G3",
            "Standard_G4",
            "Standard_G5",
            "Standard_GS1",
            "Standard_GS2",
            "Standard_GS3",
            "Standard_GS4",
            "Standard_GS5"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "VirtualMachineSizeTypes"
          }
        }
      }
    },
    "ImageReference": {
      "description": "Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations.",
      "properties": {
        "offer": {
          "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine.",
          "type": "string"
        },
        "publisher": {
          "description": "The image publisher.",
          "type": "string"
        },
        "sku": {
          "description": "The image SKU.",
          "type": "string"
        },
        "version": {
          "description": "Specifies the version of the platform image or marketplace image used to create the virtual machine. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.",
          "type": "string"
        }
      }
    },
    "InnerError": {
      "description": "Inner error details.",
      "properties": {
        "errordetail": {
          "description": "The internal error message or exception dump.",
          "type": "string"
        },
        "exceptiontype": {
          "description": "The exception type.",
          "type": "string"
        }
      }
    },
    "InstanceViewStatus": {
      "description": "Instance view status.",
      "properties": {
        "code": {
          "description": "The status code.",
          "type": "string"
        },
        "displayStatus": {
          "description": "The short localizable label for the status.",
          "type": "string"
        },
        "level": {
          "description": "The level code.",
          "enum": [
            "Info",
            "Warning",
            "Error"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "StatusLevelTypes"
          }
        },
        "message": {
          "description": "The detailed status message, including for alerts and error messages.",
          "type": "string"
        },
        "time": {
          "description": "The time of the status.",
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "KeyVaultKeyReference": {
      "description": "Describes a reference to Key Vault Key",
      "properties": {
        "keyUrl": {
          "description": "The URL referencing a key encryption key in Key Vault.",
          "type": "string"
        },
        "sourceVault": {
          "$ref": "#/definitions/SubResource",
          "description": "The relative URL of the Key Vault containing the key."
        }
      },
      "required": [
        "keyUrl",
        "sourceVault"
      ]
    },
    "KeyVaultSecretReference": {
      "description": "Describes a reference to Key Vault Secret",
      "properties": {
        "secretUrl": {
          "description": "The URL referencing a secret in a Key Vault.",
          "type": "string"
        },
        "sourceVault": {
          "$ref": "#/definitions/SubResource",
          "description": "The relative URL of the Key Vault containing the secret."
        }
      },
      "required": [
        "secretUrl",
        "sourceVault"
      ]
    },
    "LinuxConfiguration": {
      "description": "Specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).",
      "properties": {
        "disablePasswordAuthentication": {
          "description": "Specifies whether password authentication should be disabled.",
          "type": "boolean"
        },
        "ssh": {
          "$ref": "#/definitions/SshConfiguration",
          "description": "Specifies the ssh key configuration for a Linux OS."
        }
      }
    },
    "ListUsagesResult": {
      "description": "The List Usages operation response.",
      "properties": {
        "nextLink": {
          "description": "The URI to fetch the next page of compute resource usage information. Call ListNext() with this to fetch the next page of compute resource usage information.",
          "type": "string"
        },
        "value": {
          "description": "The list of compute resource usages.",
          "items": {
            "$ref": "#/definitions/Usage"
          },
          "type": "array"
        }
      }
    },
    "NetworkInterfaceReference": {
      "allOf": [
        {
          "$ref": "#/definitions/SubResource"
        }
      ],
      "description": "Describes a network interface reference.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/NetworkInterfaceReferenceProperties",
          "x-ms-client-flatten": true
        }
      }
    },
    "NetworkInterfaceReferenceProperties": {
      "description": "Describes a network interface reference properties.",
      "properties": {
        "primary": {
          "description": "Specifies the primary network interface in case the virtual machine has more than 1 network interface.",
          "type": "boolean"
        }
      }
    },
    "NetworkProfile": {
      "description": "Specifies the network interfaces of the virtual machine.",
      "properties": {
        "networkInterfaces": {
          "description": "Specifies the list of resource Ids for the network interfaces associated with the virtual machine.",
          "items": {
            "$ref": "#/definitions/NetworkInterfaceReference"
          },
          "type": "array"
        }
      }
    },
    "OSDisk": {
      "description": "Specifies information about the operating system disk used by the virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).",
      "properties": {
        "caching": {
          "$ref": "#/definitions/Caching",
          "description": "Specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**"
        },
        "createOption": {
          "$ref": "#/definitions/CreateOption",
          "description": "Specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \\u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \\u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you  also use the plan element previously described."
        },
        "diskSizeGB": {
          "description": "Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB",
          "format": "int32",
          "type": "integer"
        },
        "encryptionSettings": {
          "$ref": "#/definitions/DiskEncryptionSettings",
          "description": "Specifies the encryption settings for the OS Disk. <br><br> Minimum api-version: 2015-06-15"
        },
        "image": {
          "$ref": "#/definitions/VirtualHardDisk",
          "description": "The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist."
        },
        "name": {
          "description": "The disk name.",
          "type": "string"
        },
        "osType": {
          "description": "This property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**",
          "enum": [
            "Windows",
            "Linux"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "OperatingSystemTypes"
          }
        },
        "vhd": {
          "$ref": "#/definitions/VirtualHardDisk",
          "description": "The virtual hard disk."
        }
      },
      "required": [
        "name",
        "vhd",
        "createOption"
      ]
    },
    "OSDiskImage": {
      "description": "Contains the os disk image information.",
      "properties": {
        "operatingSystem": {
          "description": "The operating system of the osDiskImage.",
          "enum": [
            "Windows",
            "Linux"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "OperatingSystemTypes"
          }
        }
      },
      "required": [
        "operatingSystem"
      ]
    },
    "OSProfile": {
      "description": "Specifies the operating system settings for the virtual machine.",
      "properties": {
        "adminPassword": {
          "description": "Specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\\W_]) <br><br> **Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password)",
          "type": "string"
        },
        "adminUsername": {
          "description": "Specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in \".\" <br><br> **Disallowed values:** \"administrator\", \"admin\", \"user\", \"user1\", \"test\", \"user2\", \"test1\", \"user3\", \"admin1\", \"1\", \"123\", \"a\", \"actuser\", \"adm\", \"admin2\", \"aspnet\", \"backup\", \"console\", \"david\", \"guest\", \"john\", \"owner\", \"root\", \"server\", \"sql\", \"support\", \"support_388945a0\", \"sys\", \"test2\", \"test3\", \"user4\", \"user5\". <br><br> **Minimum-length (Linux):** 1  character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters  <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)",
          "type": "string"
        },
        "computerName": {
          "description": "Specifies the host OS name of the virtual machine. <br><br> This name cannot be updated after the VM is created. <br><br> **Max-length (Windows):** 15 characters <br><br> **Max-length (Linux):** 64 characters. <br><br> For naming conventions and restrictions see [Azure infrastructure services implementation guidelines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions).",
          "type": "string"
        },
        "customData": {
          "description": "Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. <br><br> For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)",
          "type": "string"
        },
        "linuxConfiguration": {
          "$ref": "#/definitions/LinuxConfiguration",
          "description": "Specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)."
        },
        "secrets": {
          "description": "Specifies set of certificates that should be installed onto the virtual machine.",
          "items": {
            "$ref": "#/definitions/VaultSecretGroup"
          },
          "type": "array"
        },
        "windowsConfiguration": {
          "$ref": "#/definitions/WindowsConfiguration",
          "description": "Specifies Windows operating system settings on the virtual machine."
        }
      }
    },
    "OperationStatusResponse": {
      "description": "Operation status response",
      "properties": {
        "endTime": {
          "description": "End time of the operation",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "error": {
          "$ref": "#/definitions/ApiError",
          "description": "Api error",
          "readOnly": true
        },
        "name": {
          "description": "Operation ID",
          "readOnly": true,
          "type": "string"
        },
        "startTime": {
          "description": "Start time of the operation",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "status": {
          "description": "Operation status",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "Plan": {
      "description": "Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use.  In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**.",
      "properties": {
        "name": {
          "description": "The plan ID.",
          "type": "string"
        },
        "product": {
          "description": "Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.",
          "type": "string"
        },
        "promotionCode": {
          "description": "The promotion code.",
          "type": "string"
        },
        "publisher": {
          "description": "The publisher ID.",
          "type": "string"
        }
      }
    },
    "PurchasePlan": {
      "description": "Used for establishing the purchase context of any 3rd Party artifact through MarketPlace.",
      "properties": {
        "name": {
          "description": "The plan ID.",
          "type": "string"
        },
        "product": {
          "description": "Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.",
          "type": "string"
        },
        "publisher": {
          "description": "The publisher ID.",
          "type": "string"
        }
      },
      "required": [
        "publisher",
        "name",
        "product"
      ]
    },
    "Resource": {
      "description": "The Resource model definition.",
      "properties": {
        "id": {
          "description": "Resource Id",
          "readOnly": true,
          "type": "string"
        },
        "location": {
          "description": "Resource location",
          "type": "string"
        },
        "name": {
          "description": "Resource name",
          "readOnly": true,
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags",
          "type": "object"
        },
        "type": {
          "description": "Resource type",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "location"
      ],
      "x-ms-azure-resource": true
    },
    "Sku": {
      "description": "Describes a virtual machine scale set sku.",
      "properties": {
        "capacity": {
          "description": "Specifies the number of virtual machines in the scale set.",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "description": "The sku name.",
          "type": "string"
        },
        "tier": {
          "description": "Specifies the tier of virtual machines in a scale set.<br /><br /> Possible Values:<br /><br /> **Standard**<br /><br /> **Basic**",
          "type": "string"
        }
      }
    },
    "SshConfiguration": {
      "description": "SSH configuration for Linux based VMs running on Azure",
      "properties": {
        "publicKeys": {
          "description": "The list of SSH public keys used to authenticate with linux based VMs.",
          "items": {
            "$ref": "#/definitions/SshPublicKey"
          },
          "type": "array"
        }
      }
    },
    "SshPublicKey": {
      "description": "Contains information about SSH certificate public key and the path on the Linux VM where the public key is placed.",
      "properties": {
        "keyData": {
          "description": "SSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format. <br><br> For creating ssh keys, see [Create SSH keys on Linux and Mac for Linux VMs in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).",
          "type": "string"
        },
        "path": {
          "description": "Specifies the full path on the created VM where ssh public key is stored. If the file already exists, the specified key is appended to the file. Example: /home/user/.ssh/authorized_keys",
          "type": "string"
        }
      }
    },
    "StorageProfile": {
      "description": "Specifies the storage settings for the virtual machine disks.",
      "properties": {
        "dataDisks": {
          "description": "Specifies the parameters that are used to add a data disk to a virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).",
          "items": {
            "$ref": "#/definitions/DataDisk"
          },
          "type": "array"
        },
        "imageReference": {
          "$ref": "#/definitions/ImageReference",
          "description": "Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations."
        },
        "osDisk": {
          "$ref": "#/definitions/OSDisk",
          "description": "Specifies information about the operating system disk used by the virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)."
        }
      }
    },
    "SubResource": {
      "properties": {
        "id": {
          "description": "Resource Id",
          "type": "string"
        }
      },
      "x-ms-azure-resource": true
    },
    "UpdateResource": {
      "description": "The Update Resource model definition.",
      "properties": {
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags",
          "type": "object"
        }
      },
      "x-ms-azure-resource": true
    },
    "UpgradePolicy": {
      "description": "Describes an upgrade policy - automatic or manual.",
      "properties": {
        "mode": {
          "description": "Specifies the mode of an upgrade to virtual machines in the scale set.<br /><br /> Possible values are:<br /><br /> **Manual** - You  control the application of updates to virtual machines in the scale set. You do this by using the manualUpgrade action.<br /><br /> **Automatic** - All virtual machines in the scale set are  automatically updated at the same time.",
          "enum": [
            "Automatic",
            "Manual"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "UpgradeMode"
          }
        }
      }
    },
    "Usage": {
      "description": "Describes Compute Resource Usage.",
      "properties": {
        "currentValue": {
          "description": "The current usage of the resource.",
          "format": "int32",
          "type": "integer"
        },
        "limit": {
          "description": "The maximum permitted usage of the resource.",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "$ref": "#/definitions/UsageName",
          "description": "The name of the type of usage."
        },
        "unit": {
          "description": "An enum describing the unit of usage measurement.",
          "enum": [
            "Count"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "UsageUnit"
          }
        }
      },
      "required": [
        "unit",
        "currentValue",
        "limit",
        "name"
      ]
    },
    "UsageName": {
      "description": "The Usage Names.",
      "properties": {
        "localizedValue": {
          "description": "The localized name of the resource.",
          "type": "string"
        },
        "value": {
          "description": "The name of the resource.",
          "type": "string"
        }
      }
    },
    "VaultCertificate": {
      "description": "Describes a single certificate reference in a Key Vault, and where the certificate should reside on the VM.",
      "properties": {
        "certificateStore": {
          "description": "For Windows VMs, specifies the certificate store on the Virtual Machine to which the certificate should be added. The specified certificate store is implicitly in the LocalMachine account. <br><br>For Linux VMs, the certificate file is placed under the /var/lib/waagent directory, with the file name &lt;UppercaseThumbprint&gt;.crt for the X509 certificate file and &lt;UppercaseThumbprint&gt;.prv for private key. Both of these files are .pem formatted.",
          "type": "string"
        },
        "certificateUrl": {
          "description": "This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: <br><br> {<br>  \"data\":\"<Base64-encoded-certificate>\",<br>  \"dataType\":\"pfx\",<br>  \"password\":\"<pfx-file-password>\"<br>}",
          "type": "string"
        }
      }
    },
    "VaultSecretGroup": {
      "description": "Describes a set of certificates which are all in the same Key Vault.",
      "properties": {
        "sourceVault": {
          "$ref": "#/definitions/SubResource",
          "description": "The relative URL of the Key Vault containing all of the certificates in VaultCertificates."
        },
        "vaultCertificates": {
          "description": "The list of key vault references in SourceVault which contain certificates.",
          "items": {
            "$ref": "#/definitions/VaultCertificate"
          },
          "type": "array"
        }
      }
    },
    "VirtualHardDisk": {
      "description": "Describes the uri of a disk.",
      "properties": {
        "uri": {
          "description": "Specifies the virtual hard disk's uri.",
          "type": "string"
        }
      }
    },
    "VirtualMachine": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Describes a Virtual Machine.",
      "properties": {
        "plan": {
          "$ref": "#/definitions/Plan",
          "description": "Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use.  In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**."
        },
        "properties": {
          "$ref": "#/definitions/VirtualMachineProperties",
          "x-ms-client-flatten": true
        },
        "resources": {
          "description": "The virtual machine child extension resources.",
          "items": {
            "$ref": "#/definitions/VirtualMachineExtension"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "VirtualMachineAgentInstanceView": {
      "description": "The instance view of the VM Agent running on the virtual machine.",
      "properties": {
        "extensionHandlers": {
          "description": "The virtual machine extension handler instance view.",
          "items": {
            "$ref": "#/definitions/VirtualMachineExtensionHandlerInstanceView"
          },
          "type": "array"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        },
        "vmAgentVersion": {
          "description": "The VM Agent full version.",
          "type": "string"
        }
      }
    },
    "VirtualMachineCaptureParameters": {
      "description": "Capture Virtual Machine parameters.",
      "properties": {
        "destinationContainerName": {
          "description": "The destination container name.",
          "type": "string"
        },
        "overwriteVhds": {
          "description": "Specifies whether to overwrite the destination virtual hard disk, in case of conflict.",
          "type": "boolean"
        },
        "vhdPrefix": {
          "description": "The captured virtual hard disk's name prefix.",
          "type": "string"
        }
      },
      "required": [
        "vhdPrefix",
        "destinationContainerName",
        "overwriteVhds"
      ]
    },
    "VirtualMachineCaptureResult": {
      "allOf": [
        {
          "$ref": "#/definitions/SubResource"
        }
      ],
      "description": "Resource Id.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/VirtualMachineCaptureResultProperties",
          "x-ms-client-flatten": true
        }
      }
    },
    "VirtualMachineCaptureResultProperties": {
      "description": "Compute-specific operation properties, including output",
      "properties": {
        "output": {
          "description": "Operation output data (raw JSON)",
          "type": "object"
        }
      }
    },
    "VirtualMachineExtension": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Describes a Virtual Machine Extension.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/VirtualMachineExtensionProperties",
          "x-ms-client-flatten": true
        }
      }
    },
    "VirtualMachineExtensionHandlerInstanceView": {
      "description": "The instance view of a virtual machine extension handler.",
      "properties": {
        "status": {
          "$ref": "#/definitions/InstanceViewStatus",
          "description": "The extension handler status."
        },
        "type": {
          "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\".",
          "type": "string"
        },
        "typeHandlerVersion": {
          "description": "Specifies the version of the script handler.",
          "type": "string"
        }
      }
    },
    "VirtualMachineExtensionImage": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Describes a Virtual Machine Extension Image.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/VirtualMachineExtensionImageProperties",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "name",
        "location"
      ]
    },
    "VirtualMachineExtensionImageProperties": {
      "description": "Describes the properties of a Virtual Machine Extension Image.",
      "properties": {
        "computeRole": {
          "description": "The type of role (IaaS or PaaS) this extension supports.",
          "type": "string"
        },
        "handlerSchema": {
          "description": "The schema defined by publisher, where extension consumers should provide settings in a matching schema.",
          "type": "string"
        },
        "operatingSystem": {
          "description": "The operating system this extension supports.",
          "type": "string"
        },
        "supportsMultipleExtensions": {
          "description": "Whether the handler can support multiple extensions.",
          "type": "boolean"
        },
        "vmScaleSetEnabled": {
          "description": "Whether the extension can be used on xRP VMScaleSets. By default existing extensions are usable on scalesets, but there might be cases where a publisher wants to explicitly indicate the extension is only enabled for CRP VMs but not VMSS.",
          "type": "boolean"
        }
      },
      "required": [
        "operatingSystem",
        "computeRole",
        "handlerSchema"
      ]
    },
    "VirtualMachineExtensionInstanceView": {
      "description": "The instance view of a virtual machine extension.",
      "properties": {
        "name": {
          "description": "The virtual machine extension name.",
          "type": "string"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        },
        "substatuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        },
        "type": {
          "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\".",
          "type": "string"
        },
        "typeHandlerVersion": {
          "description": "Specifies the version of the script handler.",
          "type": "string"
        }
      }
    },
    "VirtualMachineExtensionProperties": {
      "description": "Describes the properties of a Virtual Machine Extension.",
      "properties": {
        "autoUpgradeMinorVersion": {
          "description": "Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true.",
          "type": "boolean"
        },
        "forceUpdateTag": {
          "description": "How the extension handler should be forced to update even if the extension configuration has not changed.",
          "type": "string"
        },
        "instanceView": {
          "$ref": "#/definitions/VirtualMachineExtensionInstanceView",
          "description": "The virtual machine extension instance view."
        },
        "protectedSettings": {
          "description": "The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.",
          "type": "object"
        },
        "provisioningState": {
          "description": "The provisioning state, which only appears in the response.",
          "readOnly": true,
          "type": "string"
        },
        "publisher": {
          "description": "The name of the extension handler publisher.",
          "type": "string"
        },
        "settings": {
          "description": "Json formatted public settings for the extension.",
          "type": "object"
        },
        "type": {
          "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\".",
          "type": "string"
        },
        "typeHandlerVersion": {
          "description": "Specifies the version of the script handler.",
          "type": "string"
        }
      }
    },
    "VirtualMachineExtensionUpdate": {
      "allOf": [
        {
          "$ref": "#/definitions/UpdateResource"
        }
      ],
      "description": "Describes a Virtual Machine Extension.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/VirtualMachineExtensionUpdateProperties",
          "x-ms-client-flatten": true
        }
      }
    },
    "VirtualMachineExtensionUpdateProperties": {
      "description": "Describes the properties of a Virtual Machine Extension.",
      "properties": {
        "autoUpgradeMinorVersion": {
          "description": "Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true.",
          "type": "boolean"
        },
        "forceUpdateTag": {
          "description": "How the extension handler should be forced to update even if the extension configuration has not changed.",
          "type": "string"
        },
        "protectedSettings": {
          "description": "The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.",
          "type": "object"
        },
        "publisher": {
          "description": "The name of the extension handler publisher.",
          "type": "string"
        },
        "settings": {
          "description": "Json formatted public settings for the extension.",
          "type": "object"
        },
        "type": {
          "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\".",
          "type": "string"
        },
        "typeHandlerVersion": {
          "description": "Specifies the version of the script handler.",
          "type": "string"
        }
      }
    },
    "VirtualMachineImage": {
      "allOf": [
        {
          "$ref": "#/definitions/VirtualMachineImageResource"
        }
      ],
      "description": "Describes a Virtual Machine Image.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/VirtualMachineImageProperties",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "name",
        "location"
      ]
    },
    "VirtualMachineImageProperties": {
      "description": "Describes the properties of a Virtual Machine Image.",
      "properties": {
        "dataDiskImages": {
          "items": {
            "$ref": "#/definitions/DataDiskImage"
          },
          "type": "array"
        },
        "osDiskImage": {
          "$ref": "#/definitions/OSDiskImage"
        },
        "plan": {
          "$ref": "#/definitions/PurchasePlan"
        }
      }
    },
    "VirtualMachineImageResource": {
      "allOf": [
        {
          "$ref": "#/definitions/SubResource"
        }
      ],
      "description": "Virtual machine image resource information.",
      "properties": {
        "location": {
          "description": "The supported Azure location of the resource.",
          "type": "string"
        },
        "name": {
          "description": "The name of the resource.",
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specifies the tags that are assigned to the virtual machine. For more information about using tags, see [Using tags to organize your Azure resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md).",
          "type": "object"
        }
      },
      "required": [
        "name",
        "location"
      ]
    },
    "VirtualMachineInstanceView": {
      "description": "The instance view of a virtual machine.",
      "properties": {
        "bootDiagnostics": {
          "$ref": "#/definitions/BootDiagnosticsInstanceView",
          "description": "Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. <br><br> You can easily view the output of your console log. <br><br> Azure also enables you to see a screenshot of the VM from the hypervisor."
        },
        "disks": {
          "description": "The virtual machine disk information.",
          "items": {
            "$ref": "#/definitions/DiskInstanceView"
          },
          "type": "array"
        },
        "extensions": {
          "description": "The extensions information.",
          "items": {
            "$ref": "#/definitions/VirtualMachineExtensionInstanceView"
          },
          "type": "array"
        },
        "platformFaultDomain": {
          "description": "Specifies the fault domain of the virtual machine.",
          "format": "int32",
          "type": "integer"
        },
        "platformUpdateDomain": {
          "description": "Specifies the update domain of the virtual machine.",
          "format": "int32",
          "type": "integer"
        },
        "rdpThumbPrint": {
          "description": "The Remote desktop certificate thumbprint.",
          "type": "string"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        },
        "vmAgent": {
          "$ref": "#/definitions/VirtualMachineAgentInstanceView",
          "description": "The VM Agent running on the virtual machine."
        }
      }
    },
    "VirtualMachineListResult": {
      "description": "The List Virtual Machine operation response.",
      "properties": {
        "nextLink": {
          "description": "The URI to fetch the next page of VMs. Call ListNext() with this URI to fetch the next page of Virtual Machines.",
          "type": "string"
        },
        "value": {
          "description": "The list of virtual machines.",
          "items": {
            "$ref": "#/definitions/VirtualMachine"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineProperties": {
      "description": "Describes the properties of a Virtual Machine.",
      "properties": {
        "availabilitySet": {
          "$ref": "#/definitions/SubResource",
          "description": "Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set."
        },
        "diagnosticsProfile": {
          "$ref": "#/definitions/DiagnosticsProfile",
          "description": "Specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15."
        },
        "hardwareProfile": {
          "$ref": "#/definitions/HardwareProfile",
          "description": "Specifies the hardware settings for the virtual machine."
        },
        "instanceView": {
          "$ref": "#/definitions/VirtualMachineInstanceView",
          "description": "The virtual machine instance view.",
          "readOnly": true
        },
        "licenseType": {
          "description": "Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15",
          "type": "string"
        },
        "networkProfile": {
          "$ref": "#/definitions/NetworkProfile",
          "description": "Specifies the network interfaces of the virtual machine."
        },
        "osProfile": {
          "$ref": "#/definitions/OSProfile",
          "description": "Specifies the operating system settings for the virtual machine."
        },
        "provisioningState": {
          "description": "The provisioning state, which only appears in the response.",
          "readOnly": true,
          "type": "string"
        },
        "storageProfile": {
          "$ref": "#/definitions/StorageProfile",
          "description": "Specifies the storage settings for the virtual machine disks."
        }
      }
    },
    "VirtualMachineScaleSet": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Describes a Virtual Machine Scale Set.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/VirtualMachineScaleSetProperties",
          "x-ms-client-flatten": true
        },
        "sku": {
          "$ref": "#/definitions/Sku",
          "description": "The virtual machine scale set sku."
        }
      }
    },
    "VirtualMachineScaleSetExtension": {
      "allOf": [
        {
          "$ref": "#/definitions/SubResource"
        }
      ],
      "description": "Describes a Virtual Machine Scale Set Extension.",
      "properties": {
        "name": {
          "description": "The name of the extension.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/VirtualMachineScaleSetExtensionProperties",
          "x-ms-client-flatten": true
        }
      }
    },
    "VirtualMachineScaleSetExtensionProfile": {
      "description": "Describes a virtual machine scale set extension profile.",
      "properties": {
        "extensions": {
          "description": "The virtual machine scale set child extension resources.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSetExtension"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetExtensionProperties": {
      "description": "Describes the properties of a Virtual Machine Scale Set Extension.",
      "properties": {
        "autoUpgradeMinorVersion": {
          "description": "Whether the extension handler should be automatically upgraded across minor versions.",
          "type": "boolean"
        },
        "protectedSettings": {
          "description": "Json formatted protected settings for the extension.",
          "type": "object"
        },
        "provisioningState": {
          "description": "The provisioning state, which only appears in the response.",
          "readOnly": true,
          "type": "string"
        },
        "publisher": {
          "description": "The name of the extension handler publisher.",
          "type": "string"
        },
        "settings": {
          "description": "Json formatted public settings for the extension.",
          "type": "object"
        },
        "type": {
          "description": "The type of the extension handler.",
          "type": "string"
        },
        "typeHandlerVersion": {
          "description": "The type version of the extension handler.",
          "type": "string"
        }
      }
    },
    "VirtualMachineScaleSetIPConfiguration": {
      "allOf": [
        {
          "$ref": "#/definitions/SubResource"
        }
      ],
      "description": "Describes a virtual machine scale set network profile's IP configuration.",
      "properties": {
        "name": {
          "description": "The IP configuration name.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/VirtualMachineScaleSetIPConfigurationProperties",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "name"
      ]
    },
    "VirtualMachineScaleSetIPConfigurationProperties": {
      "description": "Describes a virtual machine scale set network profile's IP configuration properties.",
      "properties": {
        "loadBalancerBackendAddressPools": {
          "description": "The load balancer backend address pools.",
          "items": {
            "$ref": "#/definitions/SubResource"
          },
          "type": "array"
        },
        "loadBalancerInboundNatPools": {
          "description": "The load balancer inbound nat pools.",
          "items": {
            "$ref": "#/definitions/SubResource"
          },
          "type": "array"
        },
        "subnet": {
          "$ref": "#/definitions/ApiEntityReference",
          "description": "The subnet."
        }
      },
      "required": [
        "subnet"
      ]
    },
    "VirtualMachineScaleSetInstanceView": {
      "description": "The instance view of a virtual machine scale set.",
      "properties": {
        "extensions": {
          "description": "The extensions information.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSetVMExtensionsSummary"
          },
          "readOnly": true,
          "type": "array"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        },
        "virtualMachine": {
          "$ref": "#/definitions/VirtualMachineScaleSetInstanceViewStatusesSummary",
          "description": "The instance view status summary for the virtual machine scale set.",
          "readOnly": true
        }
      }
    },
    "VirtualMachineScaleSetInstanceViewStatusesSummary": {
      "description": "Instance view statuses summary for virtual machines of a virtual machine scale set.",
      "properties": {
        "statusesSummary": {
          "description": "The extensions information.",
          "items": {
            "$ref": "#/definitions/VirtualMachineStatusCodeCount"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetListResult": {
      "description": "The List Virtual Machine operation response.",
      "properties": {
        "nextLink": {
          "description": "The URI to fetch the next page of virtual machine scale sets. Call ListNext() with this to fetch the next page of virtual machine scale sets.",
          "type": "string"
        },
        "value": {
          "description": "The list of virtual machine scale sets.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSet"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetListSkusResult": {
      "description": "The Virtual Machine Scale Set List Skus operation response.",
      "properties": {
        "nextLink": {
          "description": "The URI to fetch the next page of skus available for the virtual machine scale set. Call ListNext() with this to fetch the next page of skus available for the virtual machine scale set.",
          "type": "string"
        },
        "value": {
          "description": "The list of skus available for the virtual machine scale set.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSetSku"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetListWithLinkResult": {
      "description": "The List Virtual Machine operation response.",
      "properties": {
        "nextLink": {
          "description": "The uri to fetch the next page of Virtual Machine Scale Sets. Call ListNext() with this to fetch the next page of Virtual Machine Scale Sets.",
          "type": "string"
        },
        "value": {
          "description": "The list of virtual machine scale sets.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSet"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetNetworkConfiguration": {
      "allOf": [
        {
          "$ref": "#/definitions/SubResource"
        }
      ],
      "description": "Describes a virtual machine scale set network profile's network configurations.",
      "properties": {
        "name": {
          "description": "The network configuration name.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/VirtualMachineScaleSetNetworkConfigurationProperties",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "name"
      ]
    },
    "VirtualMachineScaleSetNetworkConfigurationProperties": {
      "description": "Describes a virtual machine scale set network profile's IP configuration.",
      "properties": {
        "ipConfigurations": {
          "description": "The virtual machine scale set IP Configuration.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSetIPConfiguration"
          },
          "type": "array"
        },
        "primary": {
          "description": "Whether this is a primary NIC on a virtual machine.",
          "type": "boolean"
        }
      },
      "required": [
        "ipConfigurations"
      ]
    },
    "VirtualMachineScaleSetNetworkProfile": {
      "description": "Describes a virtual machine scale set network profile.",
      "properties": {
        "networkInterfaceConfigurations": {
          "description": "The list of network configurations.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSetNetworkConfiguration"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetOSDisk": {
      "description": "Describes a virtual machine scale set operating system disk.",
      "properties": {
        "caching": {
          "$ref": "#/definitions/Caching",
          "description": "Specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**"
        },
        "createOption": {
          "$ref": "#/definitions/CreateOption",
          "description": "Specifies how the virtual machines in the scale set should be created.<br><br> The only allowed value is: **FromImage** \\u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you  also use the plan element previously described."
        },
        "image": {
          "$ref": "#/definitions/VirtualHardDisk",
          "description": "The Source User Image VirtualHardDisk. This VirtualHardDisk will be copied before using it to attach to the Virtual Machine. If SourceImage is provided, the destination VirtualHardDisk should not exist."
        },
        "name": {
          "description": "The disk name.",
          "type": "string"
        },
        "osType": {
          "description": "This property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**",
          "enum": [
            "Windows",
            "Linux"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "OperatingSystemTypes"
          }
        },
        "vhdContainers": {
          "description": "The list of virtual hard disk container uris.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "name",
        "createOption"
      ]
    },
    "VirtualMachineScaleSetOSProfile": {
      "description": "Describes a virtual machine scale set OS profile.",
      "properties": {
        "adminPassword": {
          "description": "Specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\\W_]) <br><br> **Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password)",
          "type": "string"
        },
        "adminUsername": {
          "description": "Specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in \".\" <br><br> **Disallowed values:** \"administrator\", \"admin\", \"user\", \"user1\", \"test\", \"user2\", \"test1\", \"user3\", \"admin1\", \"1\", \"123\", \"a\", \"actuser\", \"adm\", \"admin2\", \"aspnet\", \"backup\", \"console\", \"david\", \"guest\", \"john\", \"owner\", \"root\", \"server\", \"sql\", \"support\", \"support_388945a0\", \"sys\", \"test2\", \"test3\", \"user4\", \"user5\". <br><br> **Minimum-length (Linux):** 1  character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters  <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)",
          "type": "string"
        },
        "computerNamePrefix": {
          "description": "Specifies the computer name prefix for all of the virtual machines in the scale set. Computer name prefixes must be 1 to 15 characters long.",
          "type": "string"
        },
        "customData": {
          "description": "A base-64 encoded string of custom data.",
          "type": "string"
        },
        "linuxConfiguration": {
          "$ref": "#/definitions/LinuxConfiguration",
          "description": "The Linux Configuration of the OS profile."
        },
        "secrets": {
          "description": "The List of certificates for addition to the VM.",
          "items": {
            "$ref": "#/definitions/VaultSecretGroup"
          },
          "type": "array"
        },
        "windowsConfiguration": {
          "$ref": "#/definitions/WindowsConfiguration",
          "description": "The Windows Configuration of the OS profile."
        }
      }
    },
    "VirtualMachineScaleSetProperties": {
      "description": "Describes the properties of a Virtual Machine Scale Set.",
      "properties": {
        "overProvision": {
          "description": "Specifies whether the Virtual Machine Scale Set should be overprovisioned.",
          "type": "boolean"
        },
        "provisioningState": {
          "description": "The provisioning state, which only appears in the response.",
          "type": "string"
        },
        "upgradePolicy": {
          "$ref": "#/definitions/UpgradePolicy",
          "description": "The upgrade policy."
        },
        "virtualMachineProfile": {
          "$ref": "#/definitions/VirtualMachineScaleSetVMProfile",
          "description": "The virtual machine profile."
        }
      }
    },
    "VirtualMachineScaleSetSku": {
      "description": "Describes an available virtual machine scale set sku.",
      "properties": {
        "capacity": {
          "$ref": "#/definitions/VirtualMachineScaleSetSkuCapacity",
          "description": "Specifies the number of virtual machines in the scale set.",
          "readOnly": true
        },
        "resourceType": {
          "description": "The type of resource the sku applies to.",
          "readOnly": true,
          "type": "string"
        },
        "sku": {
          "$ref": "#/definitions/Sku",
          "description": "The Sku.",
          "readOnly": true
        }
      }
    },
    "VirtualMachineScaleSetSkuCapacity": {
      "description": "Describes scaling information of a sku.",
      "properties": {
        "defaultCapacity": {
          "description": "The default capacity.",
          "format": "int64",
          "readOnly": true,
          "type": "integer"
        },
        "maximum": {
          "description": "The maximum capacity that can be set.",
          "format": "int64",
          "readOnly": true,
          "type": "integer"
        },
        "minimum": {
          "description": "The minimum capacity.",
          "format": "int64",
          "readOnly": true,
          "type": "integer"
        },
        "scaleType": {
          "description": "The scale type applicable to the sku.",
          "enum": [
            "Automatic",
            "None"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "VirtualMachineScaleSetSkuScaleType"
          }
        }
      }
    },
    "VirtualMachineScaleSetStorageProfile": {
      "description": "Describes a virtual machine scale set storage profile.",
      "properties": {
        "imageReference": {
          "$ref": "#/definitions/ImageReference",
          "description": "The image reference."
        },
        "osDisk": {
          "$ref": "#/definitions/VirtualMachineScaleSetOSDisk",
          "description": "The OS disk."
        }
      }
    },
    "VirtualMachineScaleSetVM": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Describes a virtual machine scale set virtual machine.",
      "properties": {
        "instanceId": {
          "description": "The virtual machine instance ID.",
          "readOnly": true,
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/Plan",
          "description": "Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use.  In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**."
        },
        "properties": {
          "$ref": "#/definitions/VirtualMachineScaleSetVMProperties",
          "x-ms-client-flatten": true
        },
        "resources": {
          "description": "The virtual machine child extension resources.",
          "items": {
            "$ref": "#/definitions/VirtualMachineExtension"
          },
          "readOnly": true,
          "type": "array"
        },
        "sku": {
          "$ref": "#/definitions/Sku",
          "description": "The virtual machine SKU.",
          "readOnly": true
        }
      }
    },
    "VirtualMachineScaleSetVMExtensionsSummary": {
      "description": "Extensions summary for virtual machines of a virtual machine scale set.",
      "properties": {
        "name": {
          "description": "The extension name.",
          "readOnly": true,
          "type": "string"
        },
        "statusesSummary": {
          "description": "The extensions information.",
          "items": {
            "$ref": "#/definitions/VirtualMachineStatusCodeCount"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetVMInstanceIDs": {
      "description": "Specifies a list of virtual machine instance IDs from the VM scale set.",
      "properties": {
        "instanceIds": {
          "description": "The virtual machine scale set instance ids. Omitting the virtual machine scale set instance ids will result in the operation being performed on all virtual machines in the virtual machine scale set.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetVMInstanceRequiredIDs": {
      "description": "Specifies a list of virtual machine instance IDs from the VM scale set.",
      "properties": {
        "instanceIds": {
          "description": "The virtual machine scale set instance ids.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "instanceIds"
      ]
    },
    "VirtualMachineScaleSetVMInstanceView": {
      "description": "The instance view of a virtual machine scale set VM.",
      "properties": {
        "bootDiagnostics": {
          "$ref": "#/definitions/BootDiagnosticsInstanceView",
          "description": "Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. <br><br> You can easily view the output of your console log. <br><br> Azure also enables you to see a screenshot of the VM from the hypervisor."
        },
        "disks": {
          "description": "The disks information.",
          "items": {
            "$ref": "#/definitions/DiskInstanceView"
          },
          "type": "array"
        },
        "extensions": {
          "description": "The extensions information.",
          "items": {
            "$ref": "#/definitions/VirtualMachineExtensionInstanceView"
          },
          "type": "array"
        },
        "platformFaultDomain": {
          "description": "The Fault Domain count.",
          "format": "int32",
          "type": "integer"
        },
        "platformUpdateDomain": {
          "description": "The Update Domain count.",
          "format": "int32",
          "type": "integer"
        },
        "rdpThumbPrint": {
          "description": "The Remote desktop certificate thumbprint.",
          "type": "string"
        },
        "statuses": {
          "description": "The resource status information.",
          "items": {
            "$ref": "#/definitions/InstanceViewStatus"
          },
          "type": "array"
        },
        "vmAgent": {
          "$ref": "#/definitions/VirtualMachineAgentInstanceView",
          "description": "The VM Agent running on the virtual machine."
        }
      }
    },
    "VirtualMachineScaleSetVMListResult": {
      "description": "The List Virtual Machine Scale Set VMs operation response.",
      "properties": {
        "nextLink": {
          "description": "The URI to fetch the next page of virtual machine scale sets VMs. Call ListNext() with this to fetch the next page of virtual machine scale sets VMs.",
          "type": "string"
        },
        "value": {
          "description": "The list of virtual machine scale sets VMs.",
          "items": {
            "$ref": "#/definitions/VirtualMachineScaleSetVM"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineScaleSetVMProfile": {
      "description": "Describes a virtual machine scale set virtual machine profile.",
      "properties": {
        "extensionProfile": {
          "$ref": "#/definitions/VirtualMachineScaleSetExtensionProfile",
          "description": "The virtual machine scale set extension profile."
        },
        "networkProfile": {
          "$ref": "#/definitions/VirtualMachineScaleSetNetworkProfile",
          "description": "The virtual machine scale set network profile."
        },
        "osProfile": {
          "$ref": "#/definitions/VirtualMachineScaleSetOSProfile",
          "description": "The virtual machine scale set OS profile."
        },
        "storageProfile": {
          "$ref": "#/definitions/VirtualMachineScaleSetStorageProfile",
          "description": "The virtual machine scale set storage profile."
        }
      }
    },
    "VirtualMachineScaleSetVMProperties": {
      "description": "Describes the properties of a virtual machine scale set virtual machine.",
      "properties": {
        "availabilitySet": {
          "$ref": "#/definitions/SubResource",
          "description": "Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set."
        },
        "diagnosticsProfile": {
          "$ref": "#/definitions/DiagnosticsProfile",
          "description": "Specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15."
        },
        "hardwareProfile": {
          "$ref": "#/definitions/HardwareProfile",
          "description": "Specifies the hardware settings for the virtual machine."
        },
        "instanceView": {
          "$ref": "#/definitions/VirtualMachineScaleSetVMInstanceView",
          "description": "The virtual machine instance view.",
          "readOnly": true
        },
        "latestModelApplied": {
          "description": "Specifies whether the latest model has been applied to the virtual machine.",
          "readOnly": true,
          "type": "boolean"
        },
        "licenseType": {
          "description": "Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15",
          "type": "string"
        },
        "networkProfile": {
          "$ref": "#/definitions/NetworkProfile",
          "description": "Specifies the network interfaces of the virtual machine."
        },
        "osProfile": {
          "$ref": "#/definitions/OSProfile",
          "description": "Specifies the operating system settings for the virtual machine."
        },
        "provisioningState": {
          "description": "The provisioning state, which only appears in the response.",
          "type": "string"
        },
        "storageProfile": {
          "$ref": "#/definitions/StorageProfile",
          "description": "Specifies the storage settings for the virtual machine disks."
        }
      }
    },
    "VirtualMachineSize": {
      "description": "Describes the properties of a VM size.",
      "properties": {
        "maxDataDiskCount": {
          "description": "The maximum number of data disks that can be attached to the virtual machine size.",
          "format": "int32",
          "type": "integer"
        },
        "memoryInMB": {
          "description": "The amount of memory, in MB, supported by the virtual machine size.",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "description": "The name of the virtual machine size.",
          "type": "string"
        },
        "numberOfCores": {
          "description": "The number of cores supported by the virtual machine size.",
          "format": "int32",
          "type": "integer"
        },
        "osDiskSizeInMB": {
          "description": "The OS disk size, in MB, allowed by the virtual machine size.",
          "format": "int32",
          "type": "integer"
        },
        "resourceDiskSizeInMB": {
          "description": "The resource disk size, in MB, allowed by the virtual machine size.",
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "VirtualMachineSizeListResult": {
      "description": "The List Virtual Machine operation response.",
      "properties": {
        "value": {
          "description": "The list of virtual machine sizes.",
          "items": {
            "$ref": "#/definitions/VirtualMachineSize"
          },
          "type": "array"
        }
      }
    },
    "VirtualMachineStatusCodeCount": {
      "description": "The status code and count of the virtual machine scale set instance view status summary.",
      "properties": {
        "code": {
          "description": "The instance view status code.",
          "readOnly": true,
          "type": "string"
        },
        "count": {
          "description": "The number of instances having a particular status code.",
          "format": "int32",
          "readOnly": true,
          "type": "integer"
        }
      }
    },
    "WinRMConfiguration": {
      "description": "Describes Windows Remote Management configuration of the VM",
      "properties": {
        "listeners": {
          "description": "The list of Windows Remote Management listeners",
          "items": {
            "$ref": "#/definitions/WinRMListener"
          },
          "type": "array"
        }
      }
    },
    "WinRMListener": {
      "description": "Describes Protocol and thumbprint of Windows Remote Management listener",
      "properties": {
        "certificateUrl": {
          "description": "This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: <br><br> {<br>  \"data\":\"<Base64-encoded-certificate>\",<br>  \"dataType\":\"pfx\",<br>  \"password\":\"<pfx-file-password>\"<br>}",
          "type": "string"
        },
        "protocol": {
          "description": "Specifies the protocol of listener. <br><br> Possible values are: <br>**http** <br><br> **https**",
          "enum": [
            "Http",
            "Https"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "ProtocolTypes"
          }
        }
      }
    },
    "WindowsConfiguration": {
      "description": "Specifies Windows operating system settings on the virtual machine.",
      "properties": {
        "additionalUnattendContent": {
          "description": "Specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup.",
          "items": {
            "$ref": "#/definitions/AdditionalUnattendContent"
          },
          "type": "array"
        },
        "enableAutomaticUpdates": {
          "description": "Indicates whether virtual machine is enabled for automatic updates.",
          "type": "boolean"
        },
        "provisionVMAgent": {
          "description": "Indicates whether virtual machine agent should be provisioned on the virtual machine. <br><br> When this property is not specified in the request body, default behavior is to set it to true.  This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later.",
          "type": "boolean"
        },
        "timeZone": {
          "description": "Specifies the time zone of the virtual machine. e.g. \"Pacific Standard Time\"",
          "type": "string"
        },
        "winRM": {
          "$ref": "#/definitions/WinRMConfiguration",
          "description": "Specifies the Windows Remote Management listeners. This enables remote Windows PowerShell."
        }
      }
    }
  }
}