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.
