{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Compute.MultiVm",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "vmName",
        "type": "Microsoft.Common.TextBox",
        "label": "Name",
        "defaultValue": "Terraform",
        "toolTip": "",
        "constraints": {
          "required": true,
          "regex": "^[a-z0-9A-Z]{1,54}$",
          "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-54 characters long."
        },
        "visible": true
      },
      {
        "name": "userName",
        "type": "Microsoft.Compute.UserNameTextBox",
        "label": "User name",
        "defaultValue": "",
        "toolTip": "",
        "constraints": {
          "required": true
        },
        "osPlatform": "Linux",
        "visible": true
      },
      {
        "name": "authType",
        "type": "Microsoft.Compute.CredentialsCombo",
        "label": {
          "authenticationType": "Authentication type",
          "password": "Password",
          "confirmPassword": "Confirm password",
          "sshPublicKey": "SSH public key"
        },
        "toolTip": {
          "authenticationType": "",
          "password": "",
          "sshPublicKey": ""
        },
        "constraints": {
          "required": true,
          "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d@#\\$%\\^&\\*-_!+=\\[\\]\\{\\}\\|\\\\:',\\.\\?\\/`~\"\\(\\);]{8,}$",
          "customValidationMessage": "The password must contain at least 8 characters, with at least 1 letter and 1 number. Alphanumerical (@#$%^&*-_!+=[]{}|\\:',.?/`~\"();)and special characters are allowed"
        },
        "options": {
          "hideConfirmation": false,
          "hidePassword": false
        },
        "osPlatform": "Linux",
        "visible": true
      }
    ],
    "steps": [
      {
        "name": "firstStep",
        "label": "Additional Settings",
        "bladeTitle": "Additional Settings",
        "subLabel": {
          "preValidation": "",
          "postValidation": "Done"
        },
        "elements": [
          {
            "name": "vmSize",
            "type": "Microsoft.Compute.SizeSelector",
            "label": "Size",
            "toolTip": "",
            "recommendedSizes": [
              "Standard_DS2_v2",
              "Standard_DS1_v2",
              "Standard_DS11_v2"
            ],
            "constraints": {
              "allowedSizes": [
                "Standard_B1s",
                "Standard_B1ms",
                "Standard_B2s",
                "Standard_B2ms",
                "Standard_B4ms",
                "Standard_B8ms",
                "Standard_D2s_v3",
                "Standard_D4s_v3",
                "Standard_D8s_v3",
                "Standard_D16s_v3",
                "Standard_D32s_v3",
                "Standard_D64s_v3",
                "Standard_DS1_v2",
                "Standard_DS2_v2",
                "Standard_DS3_v2",
                "Standard_DS4_v2",
                "Standard_DS5_v2",
                "Standard_DS1",
                "Standard_DS2",
                "Standard_DS3",
                "Standard_DS4",
                "Standard_F2s_v2",
                "Standard_F4s_v2",
                "Standard_F8s_v2",
                "Standard_F16s_v2",
                "Standard_F32s_v2",
                "Standard_F64s_v2",
                "Standard_F72s_v2",
                "Standard_F1s",
                "Standard_F2s",
                "Standard_F4s",
                "Standard_F8s",
                "Standard_F16s",
                "Standard_E2s_v3",
                "Standard_E4s_v3",
                "Standard_E8s_v3",
                "Standard_E16s_v3",
                "Standard_E32s_v3",
                "Standard_E64s_v3",
                "Standard_M64s",
                "Standard_M64ms",
                "Standard_M128s",
                "Standard_M128ms",
                "Standard_GS1",
                "Standard_GS2",
                "Standard_GS3",
                "Standard_GS4",
                "Standard_GS5",
                "Standard_DS11_v2",
                "Standard_DS12_v2",
                "Standard_DS13_v2",
                "Standard_DS14_v2",
                "Standard_DS15_v2",
                "Standard_DS11",
                "Standard_DS12",
                "Standard_DS13",
                "Standard_DS14"
              ]
            },
            "osPlatform": "Linux",
            "count": 1,
            "visible": true
          },
          {
            "name": "vmDiskType",
            "type": "Microsoft.Common.OptionsGroup",
            "label": "VM disk type",
            "defaultValue": "SSD",
            "toolTip": "Premium disks (SSD) are backed by solid state drives and offer consistent, low-latency performance. They provide the best balance between price and performance, and are ideal for I/O-intensive applications and production workloads. Standard disks (HDD) are backed by magnetic drives and are preferable for applications where data is accessed infrequently.",
            "constraints": {
              "allowedValues": [
                {
                  "label": "SSD",
                  "value": "Premium_LRS"
                },
                {
                  "label": "HDD",
                  "value": "Standard_LRS"
                }
              ]
            },
            "visible": true
          }
        ]
      }
    ],
    "outputs": {
      "adminPassword": "[basics('authType').password]",
      "adminSSHPublicKey": "[basics('authType').sshPublicKey]",
      "adminUserName": "[basics('userName')]",
      "authenticationType": "[basics('authType').authenticationType]",
      "vmName": "[basics('vmName')]",
      "vmSize": "[steps('firstStep').vmSize]",
      "storageAccountType": "[steps('firstStep').vmDiskType]",
      "location": "[location()]"
    }
  }
}
