SqlVirtualMachineManagementClient icon

SqlVirtualMachineManagementClient

The SQL virtual machine management API provides a RESTful set of web APIs that interact with Azure Compute, Network & Storage services to manage your SQL Server virtual machine

COMMUNITYBEARER0 INSTALLS
OpenAPI Specificationv3.0
{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "The SQL virtual machine management API provides a RESTful set of web APIs that interact with Azure Compute, Network & Storage services to manage your SQL Server virtual machine. The API enables users to create, delete and retrieve a SQL virtual machine, SQL virtual machine group or availability group listener.",
    "title": "SqlVirtualMachineManagementClient",
    "version": "2017-03-01-preview",
    "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/sqlvirtualmachine/resource-manager/Microsoft.SqlVirtualMachine/preview/2017-03-01-preview/sqlvm.json",
        "version": "2.0"
      }
    ],
    "x-providerName": "azure.com",
    "x-serviceName": "sqlvirtualmachine-sqlvm",
    "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"
    }
  },
  "parameters": {
    "ApiVersionParameter": {
      "description": "API version to use for the request.",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "client"
    },
    "AvailabilityGroupListenerNameParameter": {
      "description": "Name of the availability group listener.",
      "in": "path",
      "name": "availabilityGroupListenerNameParameter",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ResourceGroupParameter": {
      "description": "Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.",
      "in": "path",
      "name": "resourceGroupName",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "SqlVirtualMachineGroupNameParameter": {
      "description": "Name of the SQL virtual machine group.",
      "in": "path",
      "name": "sqlVirtualMachineGroupNameParameter",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "SqlVirtualMachineNameParameter": {
      "description": "Name of the SQL virtual machine.",
      "in": "path",
      "name": "sqlVirtualMachineName",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "SubscriptionIdParameter": {
      "description": "Subscription ID that identifies an Azure subscription.",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "client"
    }
  },
  "paths": {
    "/providers/Microsoft.SqlVirtualMachine/operations": {
      "get": {
        "description": "Lists all of the available SQL Rest API operations.",
        "operationId": "Operations_List",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved operations.",
            "schema": {
              "$ref": "#/definitions/OperationListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***"
          }
        },
        "tags": [
          "Operations"
        ],
        "x-ms-examples": {
          "Lists all of the available SQL Rest API operations.": {
            "parameters": {
              "api-version": "2017-03-01-preview"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "display": {
                        "description": "Retrives details of SQL VirtualMachine Group",
                        "operation": "Get SQL VirtualMachine Group details",
                        "resource": "SQL VirtualMachine Group"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/read"
                    },
                    {
                      "display": {
                        "description": "Create a new or change properties of existing SQL VirtualMachine Group",
                        "operation": "Create a new or update existing SQL VirtualMachine Group",
                        "resource": "SQL VirtualMachine Group"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/write"
                    },
                    {
                      "display": {
                        "description": "Delete existing SQL VirtualMachine Group",
                        "operation": "Delete existing SQL VirtualMachine Group",
                        "resource": "SQL VirtualMachine Group"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/delete"
                    },
                    {
                      "display": {
                        "description": "Retrieves details of SQL AvailabilityGroup Listener on a given SQL VirtualMachine Group",
                        "operation": "Get AvailabilityGroup Listener details",
                        "resource": "SQL AvailabilityGroup Listener"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners/read"
                    },
                    {
                      "display": {
                        "description": "Create a new or change properties of existing SQL AvailabilityGroup Listener",
                        "operation": "Create new or update exising AvailabilityGroup Listener",
                        "resource": "SQL AvailabilityGroup Listener"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners/write"
                    },
                    {
                      "display": {
                        "description": "Delete existing AvailabilityGroup Listener",
                        "operation": "Delete existing AvailabilityGroup Listener",
                        "resource": "SQL AvailabilityGroup Listener"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners/delete"
                    },
                    {
                      "display": {
                        "description": "Get result of an AvailabilityGroup Listener operation",
                        "operation": "Get AvailabilityGroup Listener operation result",
                        "resource": "SQL AvailabilityGroup Listener"
                      },
                      "name": "Microsoft.SqlVirtualMachine/locations/availabilityGroupListenerOperationResults/read"
                    },
                    {
                      "display": {
                        "resource": "Available REST operations"
                      },
                      "name": "Microsoft.SqlVirtualMachine/operations/read"
                    },
                    {
                      "display": {
                        "description": "Get result of a SQL VirtualMachine Group operation",
                        "operation": "Get SQL VirtualMachine Group operation result",
                        "resource": "SQL VirtualMachine Group"
                      },
                      "name": "Microsoft.SqlVirtualMachine/locations/sqlVirtualMachineGroupOperationResults/read"
                    },
                    {
                      "display": {
                        "description": "Retrieves details of SQL VirtualMachine",
                        "operation": "Get SQL VirtualMachine Instance details"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachines/read"
                    },
                    {
                      "display": {
                        "description": "Create a new or change properties of existing SQL VirtualMachine",
                        "operation": "Create new or update existing SQL VirtualMachine"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachines/write"
                    },
                    {
                      "display": {
                        "description": "Delete exisiting SQL VirtualMachine",
                        "operation": "Delete exisiting SQL VirtualMachine"
                      },
                      "name": "Microsoft.SqlVirtualMachine/sqlVirtualMachines/delete"
                    },
                    {
                      "display": {
                        "description": "Get result of SQL VirtualMachine operation",
                        "operation": "Get SQL VirtualMachine operation result",
                        "resource": "SQL VirtualMachine"
                      },
                      "name": "Microsoft.SqlVirtualMachine/locations/sqlVirtualMachineOperationResults/read"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups": {
      "get": {
        "description": "Gets all SQL virtual machine groups in a subscription.",
        "operationId": "SqlVirtualMachineGroups_List",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved all SQL virtual machine groups in the subscription.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroupListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachineGroups"
        ],
        "x-ms-examples": {
          "Gets all SQL virtual machine groups in a subscription.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/",
                      "location": "northeurope",
                      "name": "testvmgroup",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2017-WS2016",
                        "sqlImageSku": "Enterprise",
                        "wsfcDomainProfile": {
                          "clusterBootstrapAccount": "testrpadmin",
                          "clusterOperatorAccount": "testrp@testdomain.com",
                          "domainFqdn": "testdomain.com",
                          "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                          "sqlServiceAccount": "sqlservice@testdomain.com",
                          "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                        }
                      },
                      "tags": {
                        "mytag": "myval"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg1/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/",
                      "location": "northeurope",
                      "name": "testvmgroup1",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "wsfcDomainProfile": {
                          "clusterBootstrapAccount": "testrpadmin",
                          "clusterOperatorAccount": "testrp@testdomain.com",
                          "domainFqdn": "testdomain.com",
                          "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                          "sqlServiceAccount": "sqlservice@testdomain.com",
                          "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                        }
                      },
                      "tags": {
                        "mytag": "myval"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg2/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/",
                      "location": "northeurope",
                      "name": "testvmgroup2",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "wsfcDomainProfile": {
                          "clusterBootstrapAccount": "testrpadmin",
                          "clusterOperatorAccount": "testrp@testdomain.com",
                          "domainFqdn": "testdomain.com",
                          "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                          "sqlServiceAccount": "sqlservice@testdomain.com",
                          "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                        }
                      },
                      "tags": {
                        "mytag": "myval"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines": {
      "get": {
        "description": "Gets all SQL virtual machines in a subscription.",
        "operationId": "SqlVirtualMachines_List",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved all SQL virtual machines in the subscription.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Gets all SQL virtual machines in a subscription.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                      "location": "northeurope",
                      "name": "testvm",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "sqlServerLicenseType": "PAYG",
                        "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm1",
                      "location": "northeurope",
                      "name": "testvm1",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2017-WS2016",
                        "sqlImageSku": "Enterprise",
                        "sqlServerLicenseType": "PAYG",
                        "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg1/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                      "location": "northeurope",
                      "name": "testvm2",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "sqlServerLicenseType": "PAYG",
                        "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg1/providers/Microsoft.Compute/virtualMachines/testvm2"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups": {
      "get": {
        "description": "Gets all SQL virtual machine groups in a resource group.",
        "operationId": "SqlVirtualMachineGroups_ListByResourceGroup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved all SQL virtual machine groups in the resource group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroupListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***"
          }
        },
        "tags": [
          "SqlVirtualMachineGroups"
        ],
        "x-ms-examples": {
          "Gets all SQL virtual machine groups in a resource group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                      "location": "northeurope",
                      "name": "testvmgroup",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2017-WS2016",
                        "sqlImageSku": "Enterprise",
                        "wsfcDomainProfile": {
                          "clusterBootstrapAccount": "testrpadmin",
                          "clusterOperatorAccount": "testrp@testdomain.com",
                          "domainFqdn": "testdomain.com",
                          "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                          "sqlServiceAccount": "sqlservice@testdomain.com",
                          "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                        }
                      },
                      "tags": {
                        "mytag": "myval"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup1",
                      "location": "northeurope",
                      "name": "testvmgroup1",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "wsfcDomainProfile": {
                          "clusterBootstrapAccount": "testrpadmin",
                          "clusterOperatorAccount": "testrp@testdomain.com",
                          "domainFqdn": "testdomain.com",
                          "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                          "sqlServiceAccount": "sqlservice@testdomain.com",
                          "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                        }
                      },
                      "tags": {
                        "mytag": "myval"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup2",
                      "location": "northeurope",
                      "name": "testvmgroup2",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "wsfcDomainProfile": {
                          "clusterBootstrapAccount": "testrpadmin",
                          "clusterOperatorAccount": "testrp@testdomain.com",
                          "domainFqdn": "testdomain.com",
                          "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                          "sqlServiceAccount": "sqlservice@testdomain.com",
                          "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                        }
                      },
                      "tags": {
                        "mytag": "myval"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/{sqlVirtualMachineGroupName}": {
      "delete": {
        "description": "Deletes a SQL virtual machine group.",
        "operationId": "SqlVirtualMachineGroups_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted the SQL virtual machine group."
          },
          "202": {
            "description": "Deleting the SQL virtual machine group."
          },
          "204": {
            "description": "The specified SQL virtual machine group does not exist."
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 FileShareWitnessDisAllowed - For Windows Server 2016 and beyond setup, file share witness is not allowed.\n\n * 400 InvalidStorageAccountUrl - Invalid storage account url.\n\n * 400 SqlVmGroupNameTooLong - SQL virtual machine group name cannot exceed 15 characters.\n\n * 400 InvalidSqlVmGroupName - Invalid SQL virtual machine group name.\n\n * 400 InvalidStorageAccountCredentials - The storage account credentials provided are incorrect.\n\n * 400 InvalidStorageAccountType - Only storage account of type 'General-Purpose V2' is allowed for this operation.\n\n * 400 SqlVmGroupNotEmpty - SQL virtual machine group is not empty.\n\n * 400 SqlVmGroupUpdateNotAllowed - Update to SQL virtual machine group is not allowed.\n\n * 400 SqlVmGroupUpdateFailVmAttached - SQL virtual machine group cannot be updated as it has attached a SQL virtual machine.\n\n * 400 InvalidSqlImageOffer - Provided SQL image offer is invalid.\n\n * 400 InvalidSqlSku - Provided SQL sku is invalid.\n\n * 400 OuPathAndDomainMismatch - OU path is not within the domain provided.\n\n * 400 InvalidAccountNameFormat - Account name format is invalid.\n\n * 400 CloudWitnessUnsupported - For Windows Server 2012R2 setup cloud witness is not allowed.\n\n * 403 AccessDenied - Access denied.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachineGroups"
        ],
        "x-ms-examples": {
          "Deletes a SQL virtual machine group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {},
              "202": {},
              "204": {}
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets a SQL virtual machine group.",
        "operationId": "SqlVirtualMachineGroups_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the SQL virtual machine group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroup"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachineGroups"
        ],
        "x-ms-examples": {
          "Gets a SQL virtual machine group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                  "location": "northeurope",
                  "name": "testvmgroup",
                  "properties": {
                    "provisioningState": "Succeeded",
                    "sqlImageOffer": "SQL2016-WS2016",
                    "sqlImageSku": "Enterprise",
                    "wsfcDomainProfile": {
                      "clusterBootstrapAccount": "testrpadmin",
                      "clusterOperatorAccount": "testrp@testdomain.com",
                      "domainFqdn": "testdomain.com",
                      "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                      "sqlServiceAccount": "sqlservice@testdomain.com",
                      "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                    }
                  },
                  "tags": {
                    "mytag": "myval"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                }
              }
            }
          }
        }
      },
      "patch": {
        "description": "Updates SQL virtual machine group tags.",
        "operationId": "SqlVirtualMachineGroups_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The SQL virtual machine group.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroupUpdate"
            }
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully updated the SQL virtual machine group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroup"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 FileShareWitnessDisAllowed - For Windows Server 2016 and beyond setup, file share witness is not allowed.\n\n * 400 InvalidStorageAccountUrl - Invalid storage account url.\n\n * 400 SqlVmGroupNameTooLong - SQL virtual machine group name cannot exceed 15 characters.\n\n * 400 InvalidSqlVmGroupName - Invalid SQL virtual machine group name.\n\n * 400 InvalidStorageAccountCredentials - The storage account credentials provided are incorrect.\n\n * 400 InvalidStorageAccountType - Only storage account of type 'General-Purpose V2' is allowed for this operation.\n\n * 400 SqlVmGroupNotEmpty - SQL virtual machine group is not empty.\n\n * 400 SqlVmGroupUpdateNotAllowed - Update to SQL virtual machine group is not allowed.\n\n * 400 SqlVmGroupUpdateFailVmAttached - SQL virtual machine group cannot be updated as it has attached a SQL virtual machine.\n\n * 400 InvalidSqlImageOffer - Provided SQL image offer is invalid.\n\n * 400 InvalidSqlSku - Provided SQL sku is invalid.\n\n * 400 OuPathAndDomainMismatch - OU path is not within the domain provided.\n\n * 400 InvalidAccountNameFormat - Account name format is invalid.\n\n * 400 CloudWitnessUnsupported - For Windows Server 2012R2 setup cloud witness is not allowed.\n\n * 403 AccessDenied - Access denied.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachineGroups"
        ],
        "x-ms-examples": {
          "Updates a SQL virtual machine group tags.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "tags": {
                  "mytag": "myval"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvmgroup",
                  "properties": {
                    "provisioningState": "UpdatingDomainful",
                    "sqlImageOffer": "SQL2017-WS2016",
                    "sqlImageSku": "Enterprise",
                    "wsfcDomainProfile": {
                      "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                    }
                  },
                  "tags": {
                    "mytag": "myval"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                }
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "put": {
        "description": "Creates or updates a SQL virtual machine group.",
        "operationId": "SqlVirtualMachineGroups_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The SQL virtual machine group.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroup"
            }
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully updated the SQL virtual machine group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroup"
            }
          },
          "201": {
            "description": "Successfully created the SQL virtual machine group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineGroup"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 FileShareWitnessDisAllowed - For Windows Server 2016 and beyond setup, file share witness is not allowed.\n\n * 400 InvalidStorageAccountUrl - Invalid storage account url.\n\n * 400 SqlVmGroupNameTooLong - SQL virtual machine group name cannot exceed 15 characters.\n\n * 400 InvalidSqlVmGroupName - Invalid SQL virtual machine group name.\n\n * 400 InvalidStorageAccountCredentials - The storage account credentials provided are incorrect.\n\n * 400 InvalidStorageAccountType - Only storage account of type 'General-Purpose V2' is allowed for this operation.\n\n * 400 SqlVmGroupNotEmpty - SQL virtual machine group is not empty.\n\n * 400 SqlVmGroupUpdateNotAllowed - Update to SQL virtual machine group is not allowed.\n\n * 400 SqlVmGroupUpdateFailVmAttached - SQL virtual machine group cannot be updated as it has attached a SQL virtual machine.\n\n * 400 InvalidSqlImageOffer - Provided SQL image offer is invalid.\n\n * 400 InvalidSqlSku - Provided SQL sku is invalid.\n\n * 400 OuPathAndDomainMismatch - OU path is not within the domain provided.\n\n * 400 InvalidAccountNameFormat - Account name format is invalid.\n\n * 400 CloudWitnessUnsupported - For Windows Server 2012R2 setup cloud witness is not allowed.\n\n * 403 AccessDenied - Access denied.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachineGroups"
        ],
        "x-ms-examples": {
          "Creates or updates a SQL virtual machine group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "location": "northeurope",
                "properties": {
                  "sqlImageOffer": "SQL2016-WS2016",
                  "sqlImageSku": "Enterprise",
                  "wsfcDomainProfile": {
                    "clusterBootstrapAccount": "testrpadmin",
                    "clusterOperatorAccount": "testrp@testdomain.com",
                    "domainFqdn": "testdomain.com",
                    "ouPath": "OU=WSCluster,DC=testdomain,DC=com",
                    "sqlServiceAccount": "sqlservice@testdomain.com",
                    "storageAccountPrimaryKey": "<primary storage access key>",
                    "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                  }
                },
                "tags": {
                  "mytag": "myval"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                  "location": "northeurope",
                  "name": "testvmgroup",
                  "properties": {
                    "provisioningState": "UpdatingDomainful",
                    "sqlImageOffer": "SQL2016-WS2016",
                    "sqlImageSku": "Enterprise",
                    "wsfcDomainProfile": {
                      "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                    }
                  },
                  "tags": {
                    "mytag": "myval"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                  "location": "northeurope",
                  "name": "testvmgroup",
                  "properties": {
                    "provisioningState": "ProvisioningDomainful",
                    "sqlImageOffer": "SQL2016-WS2016",
                    "sqlImageSku": "Enterprise",
                    "wsfcDomainProfile": {
                      "storageAccountUrl": "https://storgact.blob.core.windows.net/"
                    }
                  },
                  "tags": {
                    "mytag": "myval"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups"
                }
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/{sqlVirtualMachineGroupName}/availabilityGroupListeners": {
      "get": {
        "description": "Lists all availability group listeners in a SQL virtual machine group.",
        "operationId": "AvailabilityGroupListeners_ListByGroup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved all availability group listeners in a SQL virtual machine group.",
            "schema": {
              "$ref": "#/definitions/AvailabilityGroupListenerListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***"
          }
        },
        "tags": [
          "AvailabilityGroupListeners"
        ],
        "x-ms-examples": {
          "Lists all availability group listeners in a SQL virtual machine group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup/availabilityGroupListeners/agl-test",
                      "name": "agl-test",
                      "properties": {
                        "availabilityGroupName": "ag-test",
                        "loadBalancerConfigurations": [
                          {
                            "loadBalancerResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/loadBalancers/lb-test",
                            "privateIpAddress": {
                              "ipAddress": "10.1.0.112",
                              "subnetResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"
                            },
                            "probePort": 59983,
                            "sqlVirtualMachineInstances": [
                              "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm3",
                              "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2"
                            ]
                          }
                        ],
                        "port": 1433,
                        "provisioningState": "Succeeded"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/{sqlVirtualMachineGroupName}/availabilityGroupListeners/{availabilityGroupListenerName}": {
      "delete": {
        "description": "Deletes an availability group listener.",
        "operationId": "AvailabilityGroupListeners_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Name of the availability group listener.",
            "in": "path",
            "name": "availabilityGroupListenerName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted the availability group listener."
          },
          "202": {
            "description": "Deleting the availability group listener."
          },
          "204": {
            "description": "The availability group listener does not exist."
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 400 AgDoesNotExist - Availability group does not exist.\n\n * 400 AgListDoesNotMatch - SQL Availability group list does not match the list of virtual machines in SQL Virtual machine group.\n\n * 400 NoIpProvided - At least one IP needs to be provided.\n\n * 400 MoreIpProvided - Only one IP needs to be provided.\n\n * 400 SqlVmGroupDoesNotHaveAGListener - SQL virtual machine group does not have the AG listener.\n\n * 400 AgListenerUpdateNotAllowed - Only handful properties of availability group listener can be updated.\n\n * 400 SqlVmNotInGroup - SQL virtual machine is not part of the group.\n\n * 400 SqlVmListCannotBeEmpty - SQL virtual machines list cannot be empty.\n\n * 400 PublicIpNotIPv4 - Public IP must be IPv4 address.\n\n * 400 PublicIPDynamicAllocation - Public IP allocation mode must be static\n\n * 400 PublicLBInvalid - Load balancer specified is not public.\n\n * 400 SubnetMissingFromPrivateIP - Subnet must be provided with private IP.\n\n * 400 IPNotInSubnet - IP not part of subnet.\n\n * 400 NoActivePrimaryInAG - None of the nodes in AvailabilityGroup are Primary\n\n * 400 MultipleListenerSameAG - Multiple availability group listeners for same availability group are not allowed.\n\n * 400 AgListenerNotEmpty - Availability group listener not empty.\n\n * 400 AgListenerVnetMismatch - Provided VNet for Availability group listener does not match Vnet of internal load balancer.\n\n * 400 InternalLBInvalid - Load balancer specified is not internal.\n\n * 400 InvalidSqlVmResourceIdParameterValue - SQL virtual machine resource id provided is invalid.\n\n * 400 DifferentSubSqlVmList - All SQL virtual machines should be under same subscription.\n\n * 400 OnlyStandardPublicIp - Every virtual machine should have standard public IP.\n\n * 400 ListenerNameTooLong - Listener name should not exceed 15 characters.\n\n * 400 InvalidListenerName - Invalid listener name.\n\n * 400 InvalidLBResourceIdParameterValue - Load balancer resource id is invalid.\n\n * 400 InvalidPublicIpResourceIdParameterValue - Public IP resource id is invalid.\n\n * 400 InvalidSubnetIdParameterValue - Invalid resource id provided for subnet parameter.\n\n * 400 InvalidPrivateIpParameterValue - Invalid address given for private IP address.\n\n * 400 VmNicVnetMismatch - Virtual machine NIC VNet mismatch.\n\n * 400 NoAvailabilitySet - Vm is not associated with any availability set.\n\n * 400 AvailabilitySetMismatch - Availability set of virtual machines does not match.\n\n * 400 MismatchVmGroupSubscription - Subscription id for SQL virtual machine and SQL virtual machine group are different.\n\n * 400 VmNotRunning - The VM is not in running state.\n\n * 400 VmAgentNotRunning - The VM agent is not installed or in running state.\n\n * 400 NoIpAvailable - No available IP.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out.\n\n * 500 SqlVmGroupIsBusy - SQL virtual machine group is busy."
          }
        },
        "tags": [
          "AvailabilityGroupListeners"
        ],
        "x-ms-examples": {
          "Deletes an availability group listener.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "availabilityGroupListenerName": "agl-test",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {},
              "202": {},
              "204": {}
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets an availability group listener.",
        "operationId": "AvailabilityGroupListeners_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Name of the availability group listener.",
            "in": "path",
            "name": "availabilityGroupListenerName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the availability group listener.",
            "schema": {
              "$ref": "#/definitions/AvailabilityGroupListener"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 400 AgDoesNotExist - Availability group does not exist.\n\n * 400 AgListDoesNotMatch - SQL Availability group list does not match the list of virtual machines in SQL Virtual machine group.\n\n * 400 NoIpProvided - At least one IP needs to be provided.\n\n * 400 MoreIpProvided - Only one IP needs to be provided.\n\n * 400 SqlVmGroupDoesNotHaveAGListener - SQL virtual machine group does not have the AG listener.\n\n * 400 AgListenerUpdateNotAllowed - Only handful properties of availability group listener can be updated.\n\n * 400 SqlVmNotInGroup - SQL virtual machine is not part of the group.\n\n * 400 SqlVmListCannotBeEmpty - SQL virtual machines list cannot be empty.\n\n * 400 PublicIpNotIPv4 - Public IP must be IPv4 address.\n\n * 400 PublicIPDynamicAllocation - Public IP allocation mode must be static\n\n * 400 PublicLBInvalid - Load balancer specified is not public.\n\n * 400 SubnetMissingFromPrivateIP - Subnet must be provided with private IP.\n\n * 400 IPNotInSubnet - IP not part of subnet.\n\n * 400 NoActivePrimaryInAG - None of the nodes in AvailabilityGroup are Primary\n\n * 400 MultipleListenerSameAG - Multiple availability group listeners for same availability group are not allowed.\n\n * 400 AgListenerNotEmpty - Availability group listener not empty.\n\n * 400 AgListenerVnetMismatch - Provided VNet for Availability group listener does not match Vnet of internal load balancer.\n\n * 400 InternalLBInvalid - Load balancer specified is not internal.\n\n * 400 InvalidSqlVmResourceIdParameterValue - SQL virtual machine resource id provided is invalid.\n\n * 400 DifferentSubSqlVmList - All SQL virtual machines should be under same subscription.\n\n * 400 OnlyStandardPublicIp - Every virtual machine should have standard public IP.\n\n * 400 ListenerNameTooLong - Listener name should not exceed 15 characters.\n\n * 400 InvalidListenerName - Invalid listener name.\n\n * 400 InvalidLBResourceIdParameterValue - Load balancer resource id is invalid.\n\n * 400 InvalidPublicIpResourceIdParameterValue - Public IP resource id is invalid.\n\n * 400 InvalidSubnetIdParameterValue - Invalid resource id provided for subnet parameter.\n\n * 400 InvalidPrivateIpParameterValue - Invalid address given for private IP address.\n\n * 400 VmNicVnetMismatch - Virtual machine NIC VNet mismatch.\n\n * 400 NoAvailabilitySet - Vm is not associated with any availability set.\n\n * 400 AvailabilitySetMismatch - Availability set of virtual machines does not match.\n\n * 400 MismatchVmGroupSubscription - Subscription id for SQL virtual machine and SQL virtual machine group are different.\n\n * 400 VmNotRunning - The VM is not in running state.\n\n * 400 VmAgentNotRunning - The VM agent is not installed or in running state.\n\n * 400 NoIpAvailable - No available IP.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out.\n\n * 500 SqlVmGroupIsBusy - SQL virtual machine group is busy."
          }
        },
        "tags": [
          "AvailabilityGroupListeners"
        ],
        "x-ms-examples": {
          "Gets an availability group listener.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "availabilityGroupListenerName": "agl-test",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup/availabilityGroupListeners/agl-test",
                  "name": "agl-test",
                  "properties": {
                    "availabilityGroupName": "ag-test",
                    "loadBalancerConfigurations": [
                      {
                        "loadBalancerResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/loadBalancers/lb-test",
                        "privateIpAddress": {
                          "ipAddress": "10.1.0.112",
                          "subnetResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"
                        },
                        "probePort": 59983,
                        "sqlVirtualMachineInstances": [
                          "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm3",
                          "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2"
                        ]
                      }
                    ],
                    "port": 1433,
                    "provisioningState": "Succeeded"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners"
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "Creates or updates an availability group listener.",
        "operationId": "AvailabilityGroupListeners_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Name of the availability group listener.",
            "in": "path",
            "name": "availabilityGroupListenerName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The availability group listener.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AvailabilityGroupListener"
            }
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully updated the availability group listener.",
            "schema": {
              "$ref": "#/definitions/AvailabilityGroupListener"
            }
          },
          "201": {
            "description": "Successfully created the availability group listener.",
            "schema": {
              "$ref": "#/definitions/AvailabilityGroupListener"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 400 AgDoesNotExist - Availability group does not exist.\n\n * 400 AgListDoesNotMatch - SQL Availability group list does not match the list of virtual machines in SQL Virtual machine group.\n\n * 400 NoIpProvided - At least one IP needs to be provided.\n\n * 400 MoreIpProvided - Only one IP needs to be provided.\n\n * 400 SqlVmGroupDoesNotHaveAGListener - SQL virtual machine group does not have the AG listener.\n\n * 400 AgListenerUpdateNotAllowed - Only handful properties of availability group listener can be updated.\n\n * 400 SqlVmNotInGroup - SQL virtual machine is not part of the group.\n\n * 400 SqlVmListCannotBeEmpty - SQL virtual machines list cannot be empty.\n\n * 400 PublicIpNotIPv4 - Public IP must be IPv4 address.\n\n * 400 PublicIPDynamicAllocation - Public IP allocation mode must be static\n\n * 400 PublicLBInvalid - Load balancer specified is not public.\n\n * 400 SubnetMissingFromPrivateIP - Subnet must be provided with private IP.\n\n * 400 IPNotInSubnet - IP not part of subnet.\n\n * 400 NoActivePrimaryInAG - None of the nodes in AvailabilityGroup are Primary\n\n * 400 MultipleListenerSameAG - Multiple availability group listeners for same availability group are not allowed.\n\n * 400 AgListenerNotEmpty - Availability group listener not empty.\n\n * 400 AgListenerVnetMismatch - Provided VNet for Availability group listener does not match Vnet of internal load balancer.\n\n * 400 InternalLBInvalid - Load balancer specified is not internal.\n\n * 400 InvalidSqlVmResourceIdParameterValue - SQL virtual machine resource id provided is invalid.\n\n * 400 DifferentSubSqlVmList - All SQL virtual machines should be under same subscription.\n\n * 400 OnlyStandardPublicIp - Every virtual machine should have standard public IP.\n\n * 400 ListenerNameTooLong - Listener name should not exceed 15 characters.\n\n * 400 InvalidListenerName - Invalid listener name.\n\n * 400 InvalidLBResourceIdParameterValue - Load balancer resource id is invalid.\n\n * 400 InvalidPublicIpResourceIdParameterValue - Public IP resource id is invalid.\n\n * 400 InvalidSubnetIdParameterValue - Invalid resource id provided for subnet parameter.\n\n * 400 InvalidPrivateIpParameterValue - Invalid address given for private IP address.\n\n * 400 VmNicVnetMismatch - Virtual machine NIC VNet mismatch.\n\n * 400 NoAvailabilitySet - Vm is not associated with any availability set.\n\n * 400 AvailabilitySetMismatch - Availability set of virtual machines does not match.\n\n * 400 MismatchVmGroupSubscription - Subscription id for SQL virtual machine and SQL virtual machine group are different.\n\n * 400 VmNotRunning - The VM is not in running state.\n\n * 400 VmAgentNotRunning - The VM agent is not installed or in running state.\n\n * 400 NoIpAvailable - No available IP.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out.\n\n * 500 SqlVmGroupIsBusy - SQL virtual machine group is busy."
          }
        },
        "tags": [
          "AvailabilityGroupListeners"
        ],
        "x-ms-examples": {
          "Creates or updates an availability group listener.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "availabilityGroupListenerName": "agl-test",
              "parameters": {
                "properties": {
                  "availabilityGroupName": "ag-test",
                  "loadBalancerConfigurations": [
                    {
                      "loadBalancerResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/loadBalancers/lb-test",
                      "privateIpAddress": {
                        "ipAddress": "10.1.0.112",
                        "subnetResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"
                      },
                      "probePort": 59983,
                      "sqlVirtualMachineInstances": [
                        "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                        "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm3"
                      ]
                    }
                  ],
                  "port": 1433
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvmgroup",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup/availabilityGroupListeners/agl-test",
                  "name": "agl-test",
                  "properties": {
                    "loadBalancerConfigurations": [
                      {
                        "privateIpAddress": {
                          "ipAddress": "10.1.0.113",
                          "subnetResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"
                        },
                        "sqlVirtualMachineInstances": [
                          "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                          "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm3"
                        ]
                      }
                    ],
                    "port": 1433,
                    "provisioningState": "Updating"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup/availabilityGroupListeners/agl-test",
                  "name": "agl-test",
                  "properties": {
                    "loadBalancerConfigurations": [
                      {
                        "privateIpAddress": {
                          "ipAddress": "10.1.0.112",
                          "subnetResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"
                        },
                        "sqlVirtualMachineInstances": [
                          "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                          "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm3"
                        ]
                      }
                    ],
                    "port": 1433,
                    "provisioningState": "Provisioning"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/availabilityGroupListeners"
                }
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/{sqlVirtualMachineGroupName}/sqlVirtualMachines": {
      "get": {
        "description": "Gets the list of sql virtual machines in a SQL virtual machine group.",
        "operationId": "SqlVirtualMachines_ListBySqlVmGroup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine group.",
            "in": "path",
            "name": "sqlVirtualMachineGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the list of sql virtual machines in a SQL virtual machine group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 FileShareWitnessDisAllowed - For Windows Server 2016 and beyond setup, file share witness is not allowed.\n\n * 400 InvalidStorageAccountUrl - Invalid storage account url.\n\n * 400 SqlVmGroupNameTooLong - SQL virtual machine group name cannot exceed 15 characters.\n\n * 400 InvalidSqlVmGroupName - Invalid SQL virtual machine group name.\n\n * 400 InvalidStorageAccountCredentials - The storage account credentials provided are incorrect.\n\n * 400 InvalidStorageAccountType - Only storage account of type 'General-Purpose V2' is allowed for this operation.\n\n * 400 SqlVmGroupNotEmpty - SQL virtual machine group is not empty.\n\n * 400 SqlVmGroupUpdateNotAllowed - Update to SQL virtual machine group is not allowed.\n\n * 400 SqlVmGroupUpdateFailVmAttached - SQL virtual machine group cannot be updated as it has attached a SQL virtual machine.\n\n * 400 InvalidSqlImageOffer - Provided SQL image offer is invalid.\n\n * 400 InvalidSqlSku - Provided SQL sku is invalid.\n\n * 400 OuPathAndDomainMismatch - OU path is not within the domain provided.\n\n * 400 InvalidAccountNameFormat - Account name format is invalid.\n\n * 400 CloudWitnessUnsupported - For Windows Server 2012R2 setup cloud witness is not allowed.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group."
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Gets the list of sql virtual machines in a SQL virtual machine group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineGroupName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                      "location": "northeurope",
                      "name": "testvm2",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2014-WS2012R2",
                        "sqlImageSku": "Enterprise",
                        "sqlManagement": "LightWeight",
                        "sqlServerLicenseType": "PAYG",
                        "sqlVirtualMachineGroupResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                        "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm2"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines": {
      "get": {
        "description": "Gets all SQL virtual machines in a resource group.",
        "operationId": "SqlVirtualMachines_ListByResourceGroup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved all SQL virtual machines in the resource group.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineListResult"
            }
          },
          "default": {
            "description": "*** Error Responses: ***"
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Gets all SQL virtual machines in a resource group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                      "location": "northeurope",
                      "name": "testvm",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2016-WS2016",
                        "sqlImageSku": "Enterprise",
                        "sqlServerLicenseType": "PAYG",
                        "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                    },
                    {
                      "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm1",
                      "location": "northeurope",
                      "name": "testvm1",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "sqlImageOffer": "SQL2017-WS2016",
                        "sqlImageSku": "Enterprise",
                        "sqlServerLicenseType": "PAYG",
                        "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1"
                      },
                      "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/{sqlVirtualMachineName}": {
      "delete": {
        "description": "Deletes a SQL virtual machine.",
        "operationId": "SqlVirtualMachines_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine.",
            "in": "path",
            "name": "sqlVirtualMachineName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted the SQL virtual machine."
          },
          "202": {
            "description": "Deleting the SQL virtual machine."
          },
          "204": {
            "description": "The specified SQL virtual machine does not exist."
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 SqlLicenseTypeNotSupported - SqlLicenseType NotSet incorrectly provided\n\n * 400 UnsupportedSqlManagementMode - Cannot update the SQL management mode to {0}, only {1} mode is supported for Windows Server 2008.\n\n * 400 SqlSkuMismatchWithGroup - SQL sku set on the SQL virtual machine group does not match that of the SQL virtual machine.\n\n * 400 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 400 SubscriptionNotReady - Subscription not ready\n\n * 400 AutoBackupEncryptionPasswordNotSpecified - Password not provided when enabling encryption as auto backup setting.\n\n * 400 BackupScheduleTypeNotSet - Backup schedule type needs to be set.\n\n * 400 BackupStorageCredentialsNotSpecified - Backup storage credentials are not specified.\n\n * 400 KeyVaultCredentialsNotSpecified - Key vault credentials not specified.\n\n * 400 SqlCredentialsNotSpecified - SQL Server credentials are not specified.\n\n * 400 IncompleteAutoPatchingSettings - Incomplete auto patching settings specified.\n\n * 400 IncompleteAutoBackupSettings - Incomplete auto backup settings specified.\n\n * 400 IncompleteSqlStorageSettings - Incomplete SQL storage settings specified.\n\n * 400 InvalidVmResourceIdChange - Virtual machine resource id property cannot be updated.\n\n * 400 SqlVmAlreadyIncludedInGroup - SQL virtual machine cannot be moved from one group to another in same operation.\n\n * 400 SqlVmCannotRemoveFromGroup - SQL virtual machine cannot be removed from group.\n\n * 400 VmLocationMismatch - VM location does not match that of SQL virtual machine.\n\n * 400 VmInsufficientPermission - Insufficient permission to Vm.\n\n * 400 SingleNicOnVmAllowed - Only Single NIC virtual machines are allowed in a SQL VM Group.\n\n * 400 InvalidSqlVmGroupResourceIdParameterValue - SQL virtual machine group resource id is not in correct format.\n\n * 400 MismatchVmGroupSubscription - Subscription id for SQL virtual machine and SQL virtual machine group are different.\n\n * 400 IncompleteDomainCredentialsProperty - Incomplete input provided for domain credentials property.\n\n * 400 BYOLChangeToPAYGNotSupported - The conversion from AHUB to PAYG is not supported for BYOL images\n\n * 400 InvalidVmResourceIdParameterValue - Provided virtual machine resource id is not valid.\n\n * 400 MismatchInSqlVmAndVmResourceIdSubscription - Mismatch in subscription id for SQL virtual machine and virtual machine resource id property.\n\n * 400 MismatchSqlVmAndVmName - SQL virtual machine name is not same as the virtual machine name provided on VirtualMachineResourceId property.\n\n * 400 MismatchSqlVmAndVmRgName - SQL virtual machine resource group name is not same as the virtual machine resource group name provided on VirtualMachineResourceId property.\n\n * 400 NotSupportedSqlVmOSVersion - Virtual machine OS type is not Windows. Only Windows OS versions are supported\n\n * 400 VmNotRunning - The VM is not in running state.\n\n * 400 VmAgentNotRunning - The VM agent is not installed or in running state.\n\n * 400 PAYGNotSupportedForNonGalleryVM - License type PAYG is invalid for this Virtual Machine as this was not created from Azure marketplace image.\n\n * 400 CannotDetermineSqlVersionAndEditionFromVm - Sql IaaS Extension cannot determine the SQL version and edition from the vm.\n\n * 400 MismatchSqlVmSku - Sql virtual machine sku mismatch.\n\n * 400 CannotConvertToFreeBenefit - Cannot convert Free SQL editions to {0}. \n\n * 400 SqlEvaluationSkuNotSupported - SQL Evaluation version does not support licensing changes.\n\n * 400 IncompleteStorageConfigurationSettings - Incomplete Storage Configuration Settings\n\n * 400 InvalidDefaultFilePath - Invalid Default File Path \n\n * 400 InvalidLUNSpecified - Invalid Logical Unit number specified, Logical Unit number should be a non-negative number.\n\n * 400 BothStorageV1V2Specified - Invalid Request. Only one of SQL Storage Storage Setting or Storage Configuration Settings should be specified\n\n * 400 InvalidLUNsSpecifiedForSameDrive - Invalid Logical Unit numbers specified. Logical Unit number used for the same drive need to be the same.\n\n * 400 InvalidLUNsSpecifiedForDifferentDrives - Invalid Logical Unit numbers specified. Different drive could not reuse the same Logical Unit number.\n\n * 400 InvalidExtendPayload - Invalid Sql Storage Settings Extend Payload. Only support extend one drive at a time.\n\n * 400 SqlVersionMismatchWithGroup - SQL version mismatch with SQL virtual machine group.\n\n * 400 SqlLicenseTypeMissing - Please specify license type for Sql Virtual Machine. The property is 'SqlServerLicenceType' and allowed values are PAYG, AHUB and DR.\n\n * 400 VmOSVersionMismatchWithGroup - OS version mismatch with group.\n\n * 400 VmAgentIsRunningForNoAgent - Cannot create or update as NoAgent model while the Guest Agent is running.\n\n * 400 InvalidSqlManagementMode - Cannot update the SQL management mode to {0}, the current mode is {1}.\n\n * 400 CannotDetermineSqlEditionFromRequest - Cannot determine the SQL edition.\n\n * 400 SqlManagementMissing - Please specify the Management Mode for Sql Virtual Machine. The property is 'SqlManagement' and allowed values are LightWeight or Full.\n\n * 400 SqlImageSkuMissingNoAgent - Please specify the Sql Server Edition for Sql Virtual Machine in NoAgent Mode. The property is 'SqlImageSku' and allowed values are Developer, Express, Web, Standard, or Enterprise.\n\n * 400 SqlImageOfferMissingNoAgent - Please specify the Sql Server Version and OS Version for Sql Virtual Machine in NoAgent Mode. The property is 'SqlImageOffer' and allowed values are SQL2008-WS2008 and SQL2008R2-WS2008.\n\n * 400 InvalidSqlImageOfferChange - SqlImageOffer property cannot be updated.\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 SubscriptionDoesNotHaveSqlVMInResourceGroup - Subscription does not have SQL virtual machine Instance in resource group.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Deletes a SQL virtual machine.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm1",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {},
              "202": {},
              "204": {}
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets a SQL virtual machine.",
        "operationId": "SqlVirtualMachines_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine.",
            "in": "path",
            "name": "sqlVirtualMachineName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The child resources to include in the response.",
            "in": "query",
            "name": "$expand",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the SQL virtual machine.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachine"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Gets a SQL virtual machine.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {},
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Succeeded",
                    "sqlImageOffer": "SQL2016-WS2016",
                    "sqlImageSku": "Enterprise",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          }
        }
      },
      "patch": {
        "description": "Updates a SQL virtual machine.",
        "operationId": "SqlVirtualMachines_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine.",
            "in": "path",
            "name": "sqlVirtualMachineName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The SQL virtual machine.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachineUpdate"
            }
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully updated the SQL virtual machine.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachine"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 SqlLicenseTypeNotSupported - SqlLicenseType NotSet incorrectly provided\n\n * 400 UnsupportedSqlManagementMode - Cannot update the SQL management mode to {0}, only {1} mode is supported for Windows Server 2008.\n\n * 400 SqlSkuMismatchWithGroup - SQL sku set on the SQL virtual machine group does not match that of the SQL virtual machine.\n\n * 400 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 400 SubscriptionNotReady - Subscription not ready\n\n * 400 AutoBackupEncryptionPasswordNotSpecified - Password not provided when enabling encryption as auto backup setting.\n\n * 400 BackupScheduleTypeNotSet - Backup schedule type needs to be set.\n\n * 400 BackupStorageCredentialsNotSpecified - Backup storage credentials are not specified.\n\n * 400 KeyVaultCredentialsNotSpecified - Key vault credentials not specified.\n\n * 400 SqlCredentialsNotSpecified - SQL Server credentials are not specified.\n\n * 400 IncompleteAutoPatchingSettings - Incomplete auto patching settings specified.\n\n * 400 IncompleteAutoBackupSettings - Incomplete auto backup settings specified.\n\n * 400 IncompleteSqlStorageSettings - Incomplete SQL storage settings specified.\n\n * 400 InvalidVmResourceIdChange - Virtual machine resource id property cannot be updated.\n\n * 400 SqlVmAlreadyIncludedInGroup - SQL virtual machine cannot be moved from one group to another in same operation.\n\n * 400 SqlVmCannotRemoveFromGroup - SQL virtual machine cannot be removed from group.\n\n * 400 VmLocationMismatch - VM location does not match that of SQL virtual machine.\n\n * 400 VmInsufficientPermission - Insufficient permission to Vm.\n\n * 400 SingleNicOnVmAllowed - Only Single NIC virtual machines are allowed in a SQL VM Group.\n\n * 400 InvalidSqlVmGroupResourceIdParameterValue - SQL virtual machine group resource id is not in correct format.\n\n * 400 MismatchVmGroupSubscription - Subscription id for SQL virtual machine and SQL virtual machine group are different.\n\n * 400 IncompleteDomainCredentialsProperty - Incomplete input provided for domain credentials property.\n\n * 400 BYOLChangeToPAYGNotSupported - The conversion from AHUB to PAYG is not supported for BYOL images\n\n * 400 InvalidVmResourceIdParameterValue - Provided virtual machine resource id is not valid.\n\n * 400 MismatchInSqlVmAndVmResourceIdSubscription - Mismatch in subscription id for SQL virtual machine and virtual machine resource id property.\n\n * 400 MismatchSqlVmAndVmName - SQL virtual machine name is not same as the virtual machine name provided on VirtualMachineResourceId property.\n\n * 400 MismatchSqlVmAndVmRgName - SQL virtual machine resource group name is not same as the virtual machine resource group name provided on VirtualMachineResourceId property.\n\n * 400 NotSupportedSqlVmOSVersion - Virtual machine OS type is not Windows. Only Windows OS versions are supported\n\n * 400 VmNotRunning - The VM is not in running state.\n\n * 400 VmAgentNotRunning - The VM agent is not installed or in running state.\n\n * 400 PAYGNotSupportedForNonGalleryVM - License type PAYG is invalid for this Virtual Machine as this was not created from Azure marketplace image.\n\n * 400 CannotDetermineSqlVersionAndEditionFromVm - Sql IaaS Extension cannot determine the SQL version and edition from the vm.\n\n * 400 MismatchSqlVmSku - Sql virtual machine sku mismatch.\n\n * 400 CannotConvertToFreeBenefit - Cannot convert Free SQL editions to {0}. \n\n * 400 SqlEvaluationSkuNotSupported - SQL Evaluation version does not support licensing changes.\n\n * 400 IncompleteStorageConfigurationSettings - Incomplete Storage Configuration Settings\n\n * 400 InvalidDefaultFilePath - Invalid Default File Path \n\n * 400 InvalidLUNSpecified - Invalid Logical Unit number specified, Logical Unit number should be a non-negative number.\n\n * 400 BothStorageV1V2Specified - Invalid Request. Only one of SQL Storage Storage Setting or Storage Configuration Settings should be specified\n\n * 400 InvalidLUNsSpecifiedForSameDrive - Invalid Logical Unit numbers specified. Logical Unit number used for the same drive need to be the same.\n\n * 400 InvalidLUNsSpecifiedForDifferentDrives - Invalid Logical Unit numbers specified. Different drive could not reuse the same Logical Unit number.\n\n * 400 InvalidExtendPayload - Invalid Sql Storage Settings Extend Payload. Only support extend one drive at a time.\n\n * 400 SqlVersionMismatchWithGroup - SQL version mismatch with SQL virtual machine group.\n\n * 400 SqlLicenseTypeMissing - Please specify license type for Sql Virtual Machine. The property is 'SqlServerLicenceType' and allowed values are PAYG, AHUB and DR.\n\n * 400 VmOSVersionMismatchWithGroup - OS version mismatch with group.\n\n * 400 VmAgentIsRunningForNoAgent - Cannot create or update as NoAgent model while the Guest Agent is running.\n\n * 400 InvalidSqlManagementMode - Cannot update the SQL management mode to {0}, the current mode is {1}.\n\n * 400 CannotDetermineSqlEditionFromRequest - Cannot determine the SQL edition.\n\n * 400 SqlManagementMissing - Please specify the Management Mode for Sql Virtual Machine. The property is 'SqlManagement' and allowed values are LightWeight or Full.\n\n * 400 SqlImageSkuMissingNoAgent - Please specify the Sql Server Edition for Sql Virtual Machine in NoAgent Mode. The property is 'SqlImageSku' and allowed values are Developer, Express, Web, Standard, or Enterprise.\n\n * 400 SqlImageOfferMissingNoAgent - Please specify the Sql Server Version and OS Version for Sql Virtual Machine in NoAgent Mode. The property is 'SqlImageOffer' and allowed values are SQL2008-WS2008 and SQL2008R2-WS2008.\n\n * 400 InvalidSqlImageOfferChange - SqlImageOffer property cannot be updated.\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 SubscriptionDoesNotHaveSqlVMInResourceGroup - Subscription does not have SQL virtual machine Instance in resource group.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Updates a SQL virtual machine tags.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "tags": {
                  "mytag": "myval"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Updating",
                    "sqlImageSku": "Enterprise",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "tags": {
                    "mytag": "myval"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "put": {
        "description": "Creates or updates a SQL virtual machine.",
        "operationId": "SqlVirtualMachines_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupParameter"
          },
          {
            "description": "Name of the SQL virtual machine.",
            "in": "path",
            "name": "sqlVirtualMachineName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The SQL virtual machine.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachine"
            }
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully updated the SQL virtual machine.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachine"
            }
          },
          "201": {
            "description": "Successfully created the SQL virtual machine.",
            "schema": {
              "$ref": "#/definitions/SqlVirtualMachine"
            }
          },
          "default": {
            "description": "*** Error Responses: ***\n\n * 400 SqlLicenseTypeNotSupported - SqlLicenseType NotSet incorrectly provided\n\n * 400 UnsupportedSqlManagementMode - Cannot update the SQL management mode to {0}, only {1} mode is supported for Windows Server 2008.\n\n * 400 SqlSkuMismatchWithGroup - SQL sku set on the SQL virtual machine group does not match that of the SQL virtual machine.\n\n * 400 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 400 SubscriptionNotReady - Subscription not ready\n\n * 400 AutoBackupEncryptionPasswordNotSpecified - Password not provided when enabling encryption as auto backup setting.\n\n * 400 BackupScheduleTypeNotSet - Backup schedule type needs to be set.\n\n * 400 BackupStorageCredentialsNotSpecified - Backup storage credentials are not specified.\n\n * 400 KeyVaultCredentialsNotSpecified - Key vault credentials not specified.\n\n * 400 SqlCredentialsNotSpecified - SQL Server credentials are not specified.\n\n * 400 IncompleteAutoPatchingSettings - Incomplete auto patching settings specified.\n\n * 400 IncompleteAutoBackupSettings - Incomplete auto backup settings specified.\n\n * 400 IncompleteSqlStorageSettings - Incomplete SQL storage settings specified.\n\n * 400 InvalidVmResourceIdChange - Virtual machine resource id property cannot be updated.\n\n * 400 SqlVmAlreadyIncludedInGroup - SQL virtual machine cannot be moved from one group to another in same operation.\n\n * 400 SqlVmCannotRemoveFromGroup - SQL virtual machine cannot be removed from group.\n\n * 400 VmLocationMismatch - VM location does not match that of SQL virtual machine.\n\n * 400 VmInsufficientPermission - Insufficient permission to Vm.\n\n * 400 SingleNicOnVmAllowed - Only Single NIC virtual machines are allowed in a SQL VM Group.\n\n * 400 InvalidSqlVmGroupResourceIdParameterValue - SQL virtual machine group resource id is not in correct format.\n\n * 400 MismatchVmGroupSubscription - Subscription id for SQL virtual machine and SQL virtual machine group are different.\n\n * 400 IncompleteDomainCredentialsProperty - Incomplete input provided for domain credentials property.\n\n * 400 BYOLChangeToPAYGNotSupported - The conversion from AHUB to PAYG is not supported for BYOL images\n\n * 400 InvalidVmResourceIdParameterValue - Provided virtual machine resource id is not valid.\n\n * 400 MismatchInSqlVmAndVmResourceIdSubscription - Mismatch in subscription id for SQL virtual machine and virtual machine resource id property.\n\n * 400 MismatchSqlVmAndVmName - SQL virtual machine name is not same as the virtual machine name provided on VirtualMachineResourceId property.\n\n * 400 MismatchSqlVmAndVmRgName - SQL virtual machine resource group name is not same as the virtual machine resource group name provided on VirtualMachineResourceId property.\n\n * 400 NotSupportedSqlVmOSVersion - Virtual machine OS type is not Windows. Only Windows OS versions are supported\n\n * 400 VmNotRunning - The VM is not in running state.\n\n * 400 VmAgentNotRunning - The VM agent is not installed or in running state.\n\n * 400 PAYGNotSupportedForNonGalleryVM - License type PAYG is invalid for this Virtual Machine as this was not created from Azure marketplace image.\n\n * 400 CannotDetermineSqlVersionAndEditionFromVm - Sql IaaS Extension cannot determine the SQL version and edition from the vm.\n\n * 400 MismatchSqlVmSku - Sql virtual machine sku mismatch.\n\n * 400 CannotConvertToFreeBenefit - Cannot convert Free SQL editions to {0}. \n\n * 400 SqlEvaluationSkuNotSupported - SQL Evaluation version does not support licensing changes.\n\n * 400 IncompleteStorageConfigurationSettings - Incomplete Storage Configuration Settings\n\n * 400 InvalidDefaultFilePath - Invalid Default File Path \n\n * 400 InvalidLUNSpecified - Invalid Logical Unit number specified, Logical Unit number should be a non-negative number.\n\n * 400 BothStorageV1V2Specified - Invalid Request. Only one of SQL Storage Storage Setting or Storage Configuration Settings should be specified\n\n * 400 InvalidLUNsSpecifiedForSameDrive - Invalid Logical Unit numbers specified. Logical Unit number used for the same drive need to be the same.\n\n * 400 InvalidLUNsSpecifiedForDifferentDrives - Invalid Logical Unit numbers specified. Different drive could not reuse the same Logical Unit number.\n\n * 400 InvalidExtendPayload - Invalid Sql Storage Settings Extend Payload. Only support extend one drive at a time.\n\n * 400 SqlVersionMismatchWithGroup - SQL version mismatch with SQL virtual machine group.\n\n * 400 SqlLicenseTypeMissing - Please specify license type for Sql Virtual Machine. The property is 'SqlServerLicenceType' and allowed values are PAYG, AHUB and DR.\n\n * 400 VmOSVersionMismatchWithGroup - OS version mismatch with group.\n\n * 400 VmAgentIsRunningForNoAgent - Cannot create or update as NoAgent model while the Guest Agent is running.\n\n * 400 InvalidSqlManagementMode - Cannot update the SQL management mode to {0}, the current mode is {1}.\n\n * 400 CannotDetermineSqlEditionFromRequest - Cannot determine the SQL edition.\n\n * 400 SqlManagementMissing - Please specify the Management Mode for Sql Virtual Machine. The property is 'SqlManagement' and allowed values are LightWeight or Full.\n\n * 400 SqlImageSkuMissingNoAgent - Please specify the Sql Server Edition for Sql Virtual Machine in NoAgent Mode. The property is 'SqlImageSku' and allowed values are Developer, Express, Web, Standard, or Enterprise.\n\n * 400 SqlImageOfferMissingNoAgent - Please specify the Sql Server Version and OS Version for Sql Virtual Machine in NoAgent Mode. The property is 'SqlImageOffer' and allowed values are SQL2008-WS2008 and SQL2008R2-WS2008.\n\n * 400 InvalidSqlImageOfferChange - SqlImageOffer property cannot be updated.\n\n * 400 InvalidParameterValue - An invalid value was given to parameter.\n\n * 400 RPGenericUser - User Failure when calling other Resource Provider.\n\n * 400 RPResponseMissingAsyncOperationHeader - Response is missing Async operation header information\n\n * 400 InvalidArgument - Invalid argument '{0}'.\n\n * 400 ArgumentNotInRange - Argument '{0}' not in range.\n\n * 400 ResourceNotProvisioned - As the resource: {0} is not in a provisioned state, the request cannot be proceeded forward\n\n * 400 CRPNotAllowedOperation - Operation cannot be completed due to the following error: {0}\n\n * 400 InvalidRgResourceId - Invalid Resourcegroup resource id specified.\n\n * 403 AccessDenied - Access denied.\n\n * 404 SubscriptionDoesNotHaveSqlVMInResourceGroup - Subscription does not have SQL virtual machine Instance in resource group.\n\n * 404 SubscriptionDoesNotHaveSqlVMGroupInResourceGroup - Subscription does not have SQL virtual machine group in resource group.\n\n * 404 ResourceNotFound - The requested resource was not found.\n\n * 404 SubscriptionDoesNotExist - Subscription id does not exist.\n\n * 404 ResourceDoesNotExist - Resource does not exist.\n\n * 404 RPOperationNotFound - Operation not found\n\n * 404 OperationIdNotFound - Operation id could not be found.\n\n * 404 OperationTypeNotFound - Operation Type not found.\n\n * 409 ResourceAlreadyExists - Resource already exists.\n\n * 409 LBGenericErrors - LB operation failed\n\n * 409 NICGenericError - NIC operation failed\n\n * 409 SqlExtensionNotInstalled - SQL extension not installed.\n\n * 409 RPPluginSubstatusMissing - RP plugin substatus missing\n\n * 409 MissingMoveResources - Cannot move resources(s) because some resources are missing in the request.\n\n * 409 ResourceExists - There was an internal error in cleaning up of resources.\n\n * 409 SubscriptionOperationInProgress - An operation on subscription is already in progress\n\n * 409 OperationInProgress - Operation in progress on resource already.\n\n * 409 OperationCanceled - Operation Cancelled.\n\n * 500 RPGenericSystem - System Failure when calling other Resource Provider.\n\n * 500 UnExpectedErrorOccurred - Unexpected error occurred.\n\n * 500 OperationTimeout - Operation timed out."
          }
        },
        "tags": [
          "SqlVirtualMachines"
        ],
        "x-ms-examples": {
          "Creates or updates a SQL virtual machine and joins it to a SQL virtual machine group.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "location": "northeurope",
                "properties": {
                  "sqlVirtualMachineGroupResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                  "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm2",
                  "wsfcDomainCredentials": {
                    "clusterBootstrapAccountPassword": "<Password>",
                    "clusterOperatorAccountPassword": "<Password>",
                    "sqlServiceAccountPassword": "<Password>"
                  }
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                  "location": "northeurope",
                  "name": "testvm2",
                  "properties": {
                    "provisioningState": "Updating",
                    "sqlImageSku": "Enterprise",
                    "sqlServerLicenseType": "PAYG",
                    "sqlVirtualMachineGroupResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm2"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm2",
                  "location": "northeurope",
                  "name": "testvm2",
                  "properties": {
                    "provisioningState": "Provisioning",
                    "sqlImageSku": "Unknown",
                    "sqlServerLicenseType": "PAYG",
                    "sqlVirtualMachineGroupResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups/testvmgroup",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm2"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          },
          "Creates or updates a SQL virtual machine for Storage Configuration Settings to EXTEND Data, Log or TempDB storage pool.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "location": "northeurope",
                "properties": {
                  "storageConfigurationSettings": {
                    "diskConfigurationType": "EXTEND",
                    "sqlDataSettings": {
                      "luns": [
                        2
                      ]
                    }
                  },
                  "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Updating",
                    "sqlImageSku": "Enterprise",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Provisioning",
                    "sqlImageSku": "Unknown",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          },
          "Creates or updates a SQL virtual machine for Storage Configuration Settings to NEW Data, Log and TempDB storage pool.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "location": "northeurope",
                "properties": {
                  "storageConfigurationSettings": {
                    "diskConfigurationType": "NEW",
                    "sqlDataSettings": {
                      "defaultFilePath": "F:\\folderpath\\",
                      "luns": [
                        0
                      ]
                    },
                    "sqlLogSettings": {
                      "defaultFilePath": "G:\\folderpath\\",
                      "luns": [
                        1
                      ]
                    },
                    "sqlTempDbSettings": {
                      "defaultFilePath": "D:\\TEMP"
                    },
                    "storageWorkloadType": "OLTP"
                  },
                  "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Updating",
                    "sqlImageSku": "Enterprise",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Provisioning",
                    "sqlImageSku": "Unknown",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          },
          "Creates or updates a SQL virtual machine with max parameters.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "location": "northeurope",
                "properties": {
                  "autoBackupSettings": {
                    "backupScheduleType": "Manual",
                    "backupSystemDbs": true,
                    "enable": true,
                    "enableEncryption": true,
                    "fullBackupFrequency": "Daily",
                    "fullBackupStartTime": 6,
                    "fullBackupWindowHours": 11,
                    "logBackupFrequency": 10,
                    "password": "<Password>",
                    "retentionPeriod": 17,
                    "storageAccessKey": "<primary storage access key>",
                    "storageAccountUrl": "https://teststorage.blob.core.windows.net/"
                  },
                  "autoPatchingSettings": {
                    "dayOfWeek": "Sunday",
                    "enable": true,
                    "maintenanceWindowDuration": 60,
                    "maintenanceWindowStartingHour": 2
                  },
                  "keyVaultCredentialSettings": {
                    "enable": false
                  },
                  "serverConfigurationsManagementSettings": {
                    "additionalFeaturesServerConfigurations": {
                      "isRServicesEnabled": false
                    },
                    "sqlConnectivityUpdateSettings": {
                      "connectivityType": "PRIVATE",
                      "port": 1433,
                      "sqlAuthUpdatePassword": "<password>",
                      "sqlAuthUpdateUserName": "sqllogin"
                    },
                    "sqlStorageUpdateSettings": {
                      "diskConfigurationType": "NEW",
                      "diskCount": 1,
                      "startingDeviceId": 2
                    },
                    "sqlWorkloadTypeUpdateSettings": {
                      "sqlWorkloadType": "OLTP"
                    }
                  },
                  "sqlImageSku": "Enterprise",
                  "sqlManagement": "Full",
                  "sqlServerLicenseType": "PAYG",
                  "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Updating",
                    "sqlImageSku": "Enterprise",
                    "sqlManagement": "Full",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Provisioning",
                    "sqlImageSku": "Unknown",
                    "sqlManagement": "Full",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          },
          "Creates or updates a SQL virtual machine with min parameters.": {
            "parameters": {
              "api-version": "2017-03-01-preview",
              "parameters": {
                "location": "northeurope",
                "properties": {
                  "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                }
              },
              "resourceGroupName": "testrg",
              "sqlVirtualMachineName": "testvm",
              "subscriptionId": "00000000-1111-2222-3333-444444444444"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Updating",
                    "sqlImageSku": "Enterprise",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.SqlVirtualMachine/sqlVirtualMachines/testvm",
                  "location": "northeurope",
                  "name": "testvm",
                  "properties": {
                    "provisioningState": "Provisioning",
                    "sqlImageSku": "Unknown",
                    "sqlServerLicenseType": "PAYG",
                    "virtualMachineResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm"
                  },
                  "type": "Microsoft.SqlVirtualMachine/sqlVirtualMachines"
                }
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      }
    }
  },
  "definitions": {
    "AdditionalFeaturesServerConfigurations": {
      "description": "Additional SQL Server feature settings.",
      "properties": {
        "isRServicesEnabled": {
          "description": "Enable or disable R services (SQL 2016 onwards).",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "AutoBackupSettings": {
      "description": "Configure backups for databases in your SQL virtual machine.",
      "properties": {
        "backupScheduleType": {
          "description": "Backup schedule type.",
          "enum": [
            "Manual",
            "Automated"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "BackupScheduleType"
          }
        },
        "backupSystemDbs": {
          "description": "Include or exclude system databases from auto backup.",
          "type": "boolean"
        },
        "enable": {
          "description": "Enable or disable autobackup on SQL virtual machine.",
          "type": "boolean"
        },
        "enableEncryption": {
          "description": "Enable or disable encryption for backup on SQL virtual machine.",
          "type": "boolean"
        },
        "fullBackupFrequency": {
          "description": "Frequency of full backups. In both cases, full backups begin during the next scheduled time window.",
          "enum": [
            "Daily",
            "Weekly"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "FullBackupFrequencyType"
          }
        },
        "fullBackupStartTime": {
          "description": "Start time of a given day during which full backups can take place. 0-23 hours.",
          "format": "int32",
          "type": "integer"
        },
        "fullBackupWindowHours": {
          "description": "Duration of the time window of a given day during which full backups can take place. 1-23 hours.",
          "format": "int32",
          "type": "integer"
        },
        "logBackupFrequency": {
          "description": "Frequency of log backups. 5-60 minutes.",
          "format": "int32",
          "type": "integer"
        },
        "password": {
          "description": "Password for encryption on backup.",
          "type": "string",
          "x-ms-mutability": [
            "create",
            "update"
          ]
        },
        "retentionPeriod": {
          "description": "Retention period of backup: 1-30 days.",
          "format": "int32",
          "type": "integer"
        },
        "storageAccessKey": {
          "description": "Storage account key where backup will be taken to.",
          "type": "string",
          "x-ms-mutability": [
            "create",
            "update"
          ]
        },
        "storageAccountUrl": {
          "description": "Storage account url where backup will be taken to.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "AutoPatchingSettings": {
      "description": "Set a patching window during which Windows and SQL patches will be applied.",
      "properties": {
        "dayOfWeek": {
          "description": "Day of week to apply the patch on.",
          "enum": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "DayOfWeek"
          }
        },
        "enable": {
          "description": "Enable or disable autopatching on SQL virtual machine.",
          "type": "boolean"
        },
        "maintenanceWindowDuration": {
          "description": "Duration of patching.",
          "format": "int32",
          "type": "integer"
        },
        "maintenanceWindowStartingHour": {
          "description": "Hour of the day when patching is initiated. Local VM time.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "AvailabilityGroupListener": {
      "allOf": [
        {
          "$ref": "#/definitions/ProxyResource"
        }
      ],
      "description": "A SQL Server availability group listener.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/AvailabilityGroupListenerProperties",
          "description": "Resource properties.",
          "x-ms-client-flatten": true
        }
      },
      "type": "object"
    },
    "AvailabilityGroupListenerListResult": {
      "description": "A list of availability group listeners.",
      "properties": {
        "nextLink": {
          "description": "Link to retrieve next page of results.",
          "readOnly": true,
          "type": "string"
        },
        "value": {
          "description": "Array of results.",
          "items": {
            "$ref": "#/definitions/AvailabilityGroupListener"
          },
          "readOnly": true,
          "type": "array"
        }
      },
      "type": "object"
    },
    "AvailabilityGroupListenerProperties": {
      "description": "The properties of an availability group listener.",
      "properties": {
        "availabilityGroupName": {
          "description": "Name of the availability group.",
          "type": "string"
        },
        "createDefaultAvailabilityGroupIfNotExist": {
          "description": "Create a default availability group if it does not exist.",
          "type": "boolean"
        },
        "loadBalancerConfigurations": {
          "description": "List of load balancer configurations for an availability group listener.",
          "items": {
            "$ref": "#/definitions/LoadBalancerConfiguration"
          },
          "type": "array"
        },
        "port": {
          "description": "Listener port.",
          "format": "int32",
          "type": "integer"
        },
        "provisioningState": {
          "description": "Provisioning state to track the async operation status.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "KeyVaultCredentialSettings": {
      "description": "Configure your SQL virtual machine to be able to connect to the Azure Key Vault service.",
      "properties": {
        "azureKeyVaultUrl": {
          "description": "Azure Key Vault url.",
          "type": "string"
        },
        "credentialName": {
          "description": "Credential name.",
          "type": "string"
        },
        "enable": {
          "description": "Enable or disable key vault credential setting.",
          "type": "boolean"
        },
        "servicePrincipalName": {
          "description": "Service principal name to access key vault.",
          "type": "string"
        },
        "servicePrincipalSecret": {
          "description": "Service principal name secret to access key vault.",
          "type": "string",
          "x-ms-mutability": [
            "create",
            "update"
          ]
        }
      },
      "type": "object"
    },
    "LoadBalancerConfiguration": {
      "description": "A load balancer configuration for an availability group listener.",
      "properties": {
        "loadBalancerResourceId": {
          "description": "Resource id of the load balancer.",
          "type": "string"
        },
        "privateIpAddress": {
          "$ref": "#/definitions/PrivateIPAddress",
          "description": "Private IP address."
        },
        "probePort": {
          "description": "Probe port.",
          "format": "int32",
          "type": "integer"
        },
        "publicIpAddressResourceId": {
          "description": "Resource id of the public IP.",
          "type": "string"
        },
        "sqlVirtualMachineInstances": {
          "description": "List of the SQL virtual machine instance resource id's that are enrolled into the availability group listener.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "Operation": {
      "description": "SQL REST API operation definition.",
      "properties": {
        "display": {
          "$ref": "#/definitions/OperationDisplay",
          "description": "The localized display information for this particular operation / action.",
          "readOnly": true
        },
        "name": {
          "description": "The name of the operation being performed on this particular object.",
          "readOnly": true,
          "type": "string"
        },
        "origin": {
          "description": "The intended executor of the operation.",
          "enum": [
            "user",
            "system"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "OperationOrigin"
          }
        },
        "properties": {
          "additionalProperties": {
            "type": "object"
          },
          "description": "Additional descriptions for the operation.",
          "readOnly": true,
          "type": "object",
          "x-ms-client-flatten": false
        }
      },
      "type": "object"
    },
    "OperationDisplay": {
      "description": "Display metadata associated with the operation.",
      "properties": {
        "description": {
          "description": "The localized friendly description for the operation.",
          "readOnly": true,
          "type": "string"
        },
        "operation": {
          "description": "The localized friendly name for the operation.",
          "readOnly": true,
          "type": "string"
        },
        "provider": {
          "description": "The localized friendly form of the resource provider name.",
          "readOnly": true,
          "type": "string"
        },
        "resource": {
          "description": "The localized friendly form of the resource type related to this action/operation.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "OperationListResult": {
      "description": "Result of the request to list SQL operations.",
      "properties": {
        "nextLink": {
          "description": "Link to retrieve next page of results.",
          "readOnly": true,
          "type": "string"
        },
        "value": {
          "description": "Array of results.",
          "items": {
            "$ref": "#/definitions/Operation"
          },
          "readOnly": true,
          "type": "array"
        }
      },
      "type": "object"
    },
    "PrivateIPAddress": {
      "description": "A private IP address bound to the availability group listener.",
      "properties": {
        "ipAddress": {
          "description": "Private IP address bound to the availability group listener.",
          "type": "string"
        },
        "subnetResourceId": {
          "description": "Subnet used to include private IP.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ProxyResource": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "ARM proxy resource.",
      "properties": {},
      "type": "object"
    },
    "Resource": {
      "description": "ARM resource.",
      "properties": {
        "id": {
          "description": "Resource ID.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Resource name.",
          "readOnly": true,
          "type": "string"
        },
        "type": {
          "description": "Resource type.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "x-ms-azure-resource": true
    },
    "ResourceIdentity": {
      "description": "Azure Active Directory identity configuration for a resource.",
      "properties": {
        "principalId": {
          "description": "The Azure Active Directory principal id.",
          "format": "uuid",
          "readOnly": true,
          "type": "string"
        },
        "tenantId": {
          "description": "The Azure Active Directory tenant id.",
          "format": "uuid",
          "readOnly": true,
          "type": "string"
        },
        "type": {
          "description": "The identity type. Set this to 'SystemAssigned' in order to automatically create and assign an Azure Active Directory principal for the resource.",
          "enum": [
            "SystemAssigned"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "IdentityType"
          }
        }
      },
      "type": "object"
    },
    "SQLStorageSettings": {
      "description": "Set disk storage settings for SQL Server.",
      "properties": {
        "defaultFilePath": {
          "description": "SQL Server default file path",
          "type": "string"
        },
        "luns": {
          "description": "Logical Unit Numbers for the disks.",
          "items": {
            "format": "int32",
            "type": "integer"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "ServerConfigurationsManagementSettings": {
      "description": "Set the connectivity, storage and workload settings.",
      "properties": {
        "additionalFeaturesServerConfigurations": {
          "$ref": "#/definitions/AdditionalFeaturesServerConfigurations",
          "description": "Additional SQL feature settings."
        },
        "sqlConnectivityUpdateSettings": {
          "$ref": "#/definitions/SqlConnectivityUpdateSettings",
          "description": "SQL connectivity type settings."
        },
        "sqlStorageUpdateSettings": {
          "$ref": "#/definitions/SqlStorageUpdateSettings",
          "description": "SQL storage update settings."
        },
        "sqlWorkloadTypeUpdateSettings": {
          "$ref": "#/definitions/SqlWorkloadTypeUpdateSettings",
          "description": "SQL workload type settings."
        }
      },
      "type": "object"
    },
    "SqlConnectivityUpdateSettings": {
      "description": "Set the access level and network port settings for SQL Server.",
      "properties": {
        "connectivityType": {
          "description": "SQL Server connectivity option.",
          "enum": [
            "LOCAL",
            "PRIVATE",
            "PUBLIC"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ConnectivityType"
          }
        },
        "port": {
          "description": "SQL Server port.",
          "format": "int32",
          "type": "integer"
        },
        "sqlAuthUpdatePassword": {
          "description": "SQL Server sysadmin login password.",
          "type": "string",
          "x-ms-mutability": [
            "create"
          ]
        },
        "sqlAuthUpdateUserName": {
          "description": "SQL Server sysadmin login to create.",
          "type": "string",
          "x-ms-mutability": [
            "create"
          ]
        }
      },
      "type": "object"
    },
    "SqlStorageUpdateSettings": {
      "description": "Set disk storage settings for SQL Server.",
      "properties": {
        "diskConfigurationType": {
          "description": "Disk configuration to apply to SQL Server.",
          "enum": [
            "NEW",
            "EXTEND",
            "ADD"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "DiskConfigurationType"
          }
        },
        "diskCount": {
          "description": "Virtual machine disk count.",
          "format": "int32",
          "type": "integer"
        },
        "startingDeviceId": {
          "description": "Device id of the first disk to be updated.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "SqlVirtualMachine": {
      "allOf": [
        {
          "$ref": "#/definitions/TrackedResource"
        }
      ],
      "description": "A SQL virtual machine.",
      "properties": {
        "identity": {
          "$ref": "#/definitions/ResourceIdentity",
          "description": "Azure Active Directory identity of the server.",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "properties": {
          "$ref": "#/definitions/SqlVirtualMachineProperties",
          "description": "Resource properties.",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "location"
      ],
      "type": "object"
    },
    "SqlVirtualMachineGroup": {
      "allOf": [
        {
          "$ref": "#/definitions/TrackedResource"
        }
      ],
      "description": "A SQL virtual machine group.",
      "properties": {
        "properties": {
          "$ref": "#/definitions/SqlVirtualMachineGroupProperties",
          "description": "Resource properties.",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "location"
      ],
      "type": "object"
    },
    "SqlVirtualMachineGroupListResult": {
      "description": "A list of SQL virtual machine groups.",
      "properties": {
        "nextLink": {
          "description": "Link to retrieve next page of results.",
          "readOnly": true,
          "type": "string"
        },
        "value": {
          "description": "Array of results.",
          "items": {
            "$ref": "#/definitions/SqlVirtualMachineGroup"
          },
          "readOnly": true,
          "type": "array"
        }
      },
      "type": "object"
    },
    "SqlVirtualMachineGroupProperties": {
      "description": "The properties of a SQL virtual machine group.",
      "properties": {
        "clusterConfiguration": {
          "description": "Cluster type.",
          "enum": [
            "Domainful"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ClusterConfiguration"
          }
        },
        "clusterManagerType": {
          "description": "Type of cluster manager: Windows Server Failover Cluster (WSFC), implied by the scale type of the group and the OS type.",
          "enum": [
            "WSFC"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ClusterManagerType"
          }
        },
        "provisioningState": {
          "description": "Provisioning state to track the async operation status.",
          "readOnly": true,
          "type": "string"
        },
        "scaleType": {
          "description": "Scale type.",
          "enum": [
            "HA"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ScaleType"
          }
        },
        "sqlImageOffer": {
          "description": "SQL image offer. Examples may include SQL2016-WS2016, SQL2017-WS2016.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "sqlImageSku": {
          "description": "SQL image sku.",
          "enum": [
            "Developer",
            "Enterprise"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "SqlVmGroupImageSku"
          },
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "wsfcDomainProfile": {
          "$ref": "#/definitions/WsfcDomainProfile",
          "description": "Cluster Active Directory domain profile.",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        }
      },
      "type": "object"
    },
    "SqlVirtualMachineGroupUpdate": {
      "description": "An update to a SQL virtual machine group.",
      "properties": {
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "SqlVirtualMachineListResult": {
      "description": "A list of SQL virtual machines.",
      "properties": {
        "nextLink": {
          "description": "Link to retrieve next page of results.",
          "readOnly": true,
          "type": "string"
        },
        "value": {
          "description": "Array of results.",
          "items": {
            "$ref": "#/definitions/SqlVirtualMachine"
          },
          "readOnly": true,
          "type": "array"
        }
      },
      "type": "object"
    },
    "SqlVirtualMachineProperties": {
      "description": "The SQL virtual machine properties.",
      "properties": {
        "autoBackupSettings": {
          "$ref": "#/definitions/AutoBackupSettings",
          "description": "Auto backup settings for SQL Server."
        },
        "autoPatchingSettings": {
          "$ref": "#/definitions/AutoPatchingSettings",
          "description": "Auto patching settings for applying critical security updates to SQL virtual machine."
        },
        "keyVaultCredentialSettings": {
          "$ref": "#/definitions/KeyVaultCredentialSettings",
          "description": "Key vault credential settings."
        },
        "provisioningState": {
          "description": "Provisioning state to track the async operation status.",
          "readOnly": true,
          "type": "string"
        },
        "serverConfigurationsManagementSettings": {
          "$ref": "#/definitions/ServerConfigurationsManagementSettings",
          "description": "SQL Server configuration management settings."
        },
        "sqlImageOffer": {
          "description": "SQL image offer. Examples include SQL2016-WS2016, SQL2017-WS2016.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "sqlImageSku": {
          "description": "SQL Server edition type.",
          "enum": [
            "Developer",
            "Express",
            "Standard",
            "Enterprise",
            "Web"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "SqlImageSku"
          }
        },
        "sqlManagement": {
          "description": "SQL Server Management type.",
          "enum": [
            "Full",
            "LightWeight",
            "NoAgent"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "SqlManagementMode"
          }
        },
        "sqlServerLicenseType": {
          "description": "SQL Server license type.",
          "enum": [
            "PAYG",
            "AHUB",
            "DR"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "SqlServerLicenseType"
          }
        },
        "sqlVirtualMachineGroupResourceId": {
          "description": "ARM resource id of the SQL virtual machine group this SQL virtual machine is or will be part of.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "update"
          ]
        },
        "storageConfigurationSettings": {
          "$ref": "#/definitions/StorageConfigurationSettings",
          "description": "Storage Configuration Settings."
        },
        "virtualMachineResourceId": {
          "description": "ARM Resource id of underlying virtual machine created from SQL marketplace image.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "wsfcDomainCredentials": {
          "$ref": "#/definitions/WsfcDomainCredentials",
          "description": "Domain credentials for setting up Windows Server Failover Cluster for SQL availability group."
        }
      },
      "type": "object"
    },
    "SqlVirtualMachineUpdate": {
      "description": "An update to a SQL virtual machine.",
      "properties": {
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "SqlWorkloadTypeUpdateSettings": {
      "description": "Set workload type to optimize storage for SQL Server.",
      "properties": {
        "sqlWorkloadType": {
          "description": "SQL Server workload type.",
          "enum": [
            "GENERAL",
            "OLTP",
            "DW"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "SqlWorkloadType"
          },
          "x-ms-mutability": [
            "read",
            "create"
          ]
        }
      },
      "type": "object"
    },
    "StorageConfigurationSettings": {
      "description": "Storage Configurations for SQL Data, Log and TempDb.",
      "properties": {
        "diskConfigurationType": {
          "description": "Disk configuration to apply to SQL Server.",
          "enum": [
            "NEW",
            "EXTEND",
            "ADD"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "DiskConfigurationType"
          }
        },
        "sqlDataSettings": {
          "$ref": "#/definitions/SQLStorageSettings",
          "description": "SQL Server Data Storage Settings."
        },
        "sqlLogSettings": {
          "$ref": "#/definitions/SQLStorageSettings",
          "description": "SQL Server Log Storage Settings."
        },
        "sqlTempDbSettings": {
          "$ref": "#/definitions/SQLStorageSettings",
          "description": "SQL Server TempDb Storage Settings."
        },
        "storageWorkloadType": {
          "description": "Storage workload type.",
          "enum": [
            "GENERAL",
            "OLTP",
            "DW"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "StorageWorkloadType"
          },
          "x-ms-mutability": [
            "read",
            "create"
          ]
        }
      },
      "type": "object"
    },
    "TrackedResource": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "ARM tracked top level resource.",
      "properties": {
        "location": {
          "description": "Resource location.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags.",
          "type": "object"
        }
      },
      "required": [
        "location"
      ],
      "type": "object"
    },
    "WsfcDomainCredentials": {
      "description": "Domain credentials for setting up Windows Server Failover Cluster for SQL availability group.",
      "properties": {
        "clusterBootstrapAccountPassword": {
          "description": "Cluster bootstrap account password.",
          "type": "string"
        },
        "clusterOperatorAccountPassword": {
          "description": "Cluster operator account password.",
          "type": "string"
        },
        "sqlServiceAccountPassword": {
          "description": "SQL service account password.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "WsfcDomainProfile": {
      "description": "Active Directory account details to operate Windows Server Failover Cluster.",
      "properties": {
        "clusterBootstrapAccount": {
          "description": "Account name used for creating cluster (at minimum needs permissions to 'Create Computer Objects' in domain).",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "clusterOperatorAccount": {
          "description": "Account name used for operating cluster i.e. will be part of administrators group on all the participating virtual machines in the cluster.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "update"
          ]
        },
        "domainFqdn": {
          "description": "Fully qualified name of the domain.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "fileShareWitnessPath": {
          "description": "Optional path for fileshare witness.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "ouPath": {
          "description": "Organizational Unit path in which the nodes and cluster will be present.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "sqlServiceAccount": {
          "description": "Account name under which SQL service will run on all participating SQL virtual machines in the cluster.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "update"
          ]
        },
        "storageAccountPrimaryKey": {
          "description": "Primary key of the witness storage account.",
          "type": "string",
          "x-ms-mutability": [
            "create"
          ]
        },
        "storageAccountUrl": {
          "description": "Fully qualified ARM resource id of the witness storage account.",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        }
      },
      "type": "object"
    }
  }
}