Azure DevTest Labs · Schema

LabVirtualMachine

A virtual machine.

Microsoft AzureDevelopmentInfrastructureLabsTestingVirtual Machines

Properties

Name Type Description
id string The identifier of the resource.
location string The location of the resource.
name string The name of the resource.
tags object The tags of the resource.
type string The type of the resource.
properties object The properties of the resource.
View JSON Schema on GitHub

JSON Schema

azure-test-labs-lab-virtual-machine-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/azure-test-labs/json-schema/azure-test-labs-lab-virtual-machine-schema.json",
  "title": "LabVirtualMachine",
  "description": "A virtual machine.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/azure-test-labs-virtual-machines-api-openapi.yml#/components/schemas/LabVirtualMachine",
  "allOf": [
    {
      "$ref": "#/$defs/Resource"
    }
  ],
  "properties": {
    "properties": {
      "$ref": "#/$defs/LabVirtualMachineProperties",
      "description": "The properties of the resource.",
      "x-ms-client-flatten": true
    }
  },
  "required": [
    "properties"
  ],
  "type": "object",
  "$defs": {
    "ApplicableSchedule": {
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ],
      "description": "Schedules applicable to a virtual machine. The schedules may have been defined on a VM or on lab level.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicableScheduleProperties",
          "description": "The properties of the resource.",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "properties"
      ],
      "type": "object"
    },
    "ApplicableScheduleProperties": {
      "description": "Properties of a schedules applicable to a virtual machine.",
      "properties": {
        "labVmsShutdown": {
          "$ref": "#/$defs/Schedule",
          "description": "The auto-shutdown schedule, if one has been set at the lab or lab resource level."
        },
        "labVmsStartup": {
          "$ref": "#/$defs/Schedule",
          "description": "The auto-startup schedule, if one has been set at the lab or lab resource level."
        }
      },
      "type": "object"
    },
    "ArtifactDeploymentStatusProperties": {
      "description": "Properties of an artifact deployment.",
      "properties": {
        "artifactsApplied": {
          "description": "The total count of the artifacts that were successfully applied.",
          "format": "int32",
          "type": "integer"
        },
        "deploymentStatus": {
          "description": "The deployment status of the artifact.",
          "type": "string"
        },
        "totalArtifacts": {
          "description": "The total count of the artifacts that were tentatively applied.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "ArtifactInstallProperties": {
      "description": "Properties of an artifact.",
      "properties": {
        "artifactId": {
          "description": "The artifact's identifier.",
          "type": "string"
        },
        "artifactTitle": {
          "description": "The artifact's title.",
          "type": "string"
        },
        "deploymentStatusMessage": {
          "description": "The status message from the deployment.",
          "type": "string"
        },
        "installTime": {
          "description": "The time that the artifact starts to install on the virtual machine.",
          "format": "date-time",
          "type": "string"
        },
        "parameters": {
          "description": "The parameters of the artifact.",
          "items": {
            "$ref": "#/$defs/ArtifactParameterProperties"
          },
          "type": "array"
        },
        "status": {
          "description": "The status of the artifact.",
          "type": "string"
        },
        "vmExtensionStatusMessage": {
          "description": "The status message from the virtual machine extension.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ArtifactParameterProperties": {
      "description": "Properties of an artifact parameter.",
      "properties": {
        "name": {
          "description": "The name of the artifact parameter.",
          "type": "string"
        },
        "value": {
          "description": "The value of the artifact parameter.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "AttachNewDataDiskOptions": {
      "description": "Properties to attach new disk to the Virtual Machine.",
      "properties": {
        "diskName": {
          "description": "The name of the disk to be attached.",
          "type": "string"
        },
        "diskSizeGiB": {
          "description": "Size of the disk to be attached in GibiBytes.",
          "format": "int32",
          "type": "integer"
        },
        "diskType": {
          "description": "The storage type for the disk (i.e. Standard, Premium).",
          "enum": [
            "Standard",
            "Premium",
            "StandardSSD"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "StorageType"
          }
        }
      },
      "type": "object"
    },
    "ComputeDataDisk": {
      "description": "A data disks attached to a virtual machine.",
      "properties": {
        "diskSizeGiB": {
          "description": "Gets data disk size in GiB.",
          "format": "int32",
          "type": "integer"
        },
        "diskUri": {
          "description": "When backed by a blob, the URI of underlying blob.",
          "type": "string"
        },
        "managedDiskId": {
          "description": "When backed by managed disk, this is the ID of the compute disk resource.",
          "type": "string"
        },
        "name": {
          "description": "Gets data disk name.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ComputeVmInstanceViewStatus": {
      "description": "Status information about a virtual machine.",
      "properties": {
        "code": {
          "description": "Gets the status Code.",
          "type": "string"
        },
        "displayStatus": {
          "description": "Gets the short localizable label for the status.",
          "type": "string"
        },
        "message": {
          "description": "Gets the message associated with the status.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ComputeVmProperties": {
      "description": "Properties of a virtual machine returned by the Microsoft.Compute API.",
      "properties": {
        "dataDiskIds": {
          "description": "Gets data disks blob uri for the virtual machine.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "dataDisks": {
          "description": "Gets all data disks attached to the virtual machine.",
          "items": {
            "$ref": "#/$defs/ComputeDataDisk"
          },
          "type": "array"
        },
        "networkInterfaceId": {
          "description": "Gets the network interface ID of the virtual machine.",
          "type": "string"
        },
        "osDiskId": {
          "description": "Gets OS disk blob uri for the virtual machine.",
          "type": "string"
        },
        "osType": {
          "description": "Gets the OS type of the virtual machine.",
          "type": "string"
        },
        "statuses": {
          "description": "Gets the statuses of the virtual machine.",
          "items": {
            "$ref": "#/$defs/ComputeVmInstanceViewStatus"
          },
          "type": "array"
        },
        "vmSize": {
          "description": "Gets the size of the virtual machine.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "DataDiskProperties": {
      "description": "Request body for adding a new or existing data disk to a virtual machine.",
      "properties": {
        "attachNewDataDiskOptions": {
          "$ref": "#/$defs/AttachNewDataDiskOptions",
          "description": "Specifies options to attach a new disk to the virtual machine."
        },
        "existingLabDiskId": {
          "description": "Specifies the existing lab disk id to attach to virtual machine.",
          "type": "string"
        },
        "hostCaching": {
          "description": "Caching option for a data disk (i.e. None, ReadOnly, ReadWrite).",
          "enum": [
            "None",
            "ReadOnly",
            "ReadWrite"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "HostCachingOptions"
          }
        }
      },
      "type": "object"
    },
    "DayDetails": {
      "description": "Properties of a daily schedule.",
      "properties": {
        "time": {
          "description": "The time of day the schedule will occur.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GalleryImageReference": {
      "description": "The reference information for an Azure Marketplace image.",
      "properties": {
        "offer": {
          "description": "The offer of the gallery image.",
          "type": "string"
        },
        "osType": {
          "description": "The OS type of the gallery image.",
          "type": "string"
        },
        "publisher": {
          "description": "The publisher of the gallery image.",
          "type": "string"
        },
        "sku": {
          "description": "The SKU of the gallery image.",
          "type": "string"
        },
        "version": {
          "description": "The version of the gallery image.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "HourDetails": {
      "description": "Properties of an hourly schedule.",
      "properties": {
        "minute": {
          "description": "Minutes of the hour the schedule will run.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "InboundNatRule": {
      "description": "A rule for NAT - exposing a VM's port (backendPort) on the public IP address using a load balancer.",
      "properties": {
        "backendPort": {
          "description": "The port to which the external traffic will be redirected.",
          "format": "int32",
          "type": "integer"
        },
        "frontendPort": {
          "description": "The external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically.",
          "format": "int32",
          "type": "integer"
        },
        "transportProtocol": {
          "description": "The transport protocol for the endpoint.",
          "enum": [
            "Tcp",
            "Udp"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "TransportProtocol"
          }
        }
      },
      "type": "object"
    },
    "LabVirtualMachineProperties": {
      "description": "Properties of a virtual machine.",
      "properties": {
        "allowClaim": {
          "description": "Indicates whether another user can take ownership of the virtual machine",
          "type": "boolean"
        },
        "applicableSchedule": {
          "$ref": "#/$defs/ApplicableSchedule",
          "description": "The applicable schedule for the virtual machine.",
          "readOnly": true
        },
        "artifactDeploymentStatus": {
          "$ref": "#/$defs/ArtifactDeploymentStatusProperties",
          "description": "The artifact deployment status for the virtual machine."
        },
        "artifacts": {
          "description": "The artifacts to be installed on the virtual machine.",
          "items": {
            "$ref": "#/$defs/ArtifactInstallProperties"
          },
          "type": "array"
        },
        "computeId": {
          "description": "The resource identifier (Microsoft.Compute) of the virtual machine.",
          "type": "string"
        },
        "computeVm": {
          "$ref": "#/$defs/ComputeVmProperties",
          "description": "The compute virtual machine properties.",
          "readOnly": true
        },
        "createdByUser": {
          "description": "The email address of creator of the virtual machine.",
          "type": "string"
        },
        "createdByUserId": {
          "description": "The object identifier of the creator of the virtual machine.",
          "type": "string"
        },
        "createdDate": {
          "description": "The creation date of the virtual machine.",
          "format": "date-time",
          "type": "string"
        },
        "customImageId": {
          "description": "The custom image identifier of the virtual machine.",
          "type": "string"
        },
        "dataDiskParameters": {
          "description": "New or existing data disks to attach to the virtual machine after creation",
          "items": {
            "$ref": "#/$defs/DataDiskProperties"
          },
          "type": "array"
        },
        "disallowPublicIpAddress": {
          "description": "Indicates whether the virtual machine is to be created without a public IP address.",
          "type": "boolean"
        },
        "environmentId": {
          "description": "The resource ID of the environment that contains this virtual machine, if any.",
          "type": "string"
        },
        "expirationDate": {
          "description": "The expiration date for VM.",
          "format": "date-time",
          "type": "string"
        },
        "fqdn": {
          "description": "The fully-qualified domain name of the virtual machine.",
          "type": "string"
        },
        "galleryImageReference": {
          "$ref": "#/$defs/GalleryImageReference",
          "description": "The Microsoft Azure Marketplace image reference of the virtual machine."
        },
        "isAuthenticationWithSshKey": {
          "description": "Indicates whether this virtual machine uses an SSH key for authentication.",
          "type": "boolean"
        },
        "labSubnetName": {
          "description": "The lab subnet name of the virtual machine.",
          "type": "string"
        },
        "labVirtualNetworkId": {
          "description": "The lab virtual network identifier of the virtual machine.",
          "type": "string"
        },
        "lastKnownPowerState": {
          "description": "Last known compute power state captured in DTL",
          "type": "string"
        },
        "networkInterface": {
          "$ref": "#/$defs/NetworkInterfaceProperties",
          "description": "The network interface properties."
        },
        "notes": {
          "description": "The notes of the virtual machine.",
          "type": "string"
        },
        "osType": {
          "description": "The OS type of the virtual machine.",
          "type": "string"
        },
        "ownerObjectId": {
          "description": "The object identifier of the owner of the virtual machine.",
          "type": "string"
        },
        "ownerUserPrincipalName": {
          "description": "The user principal name of the virtual machine owner.",
          "type": "string"
        },
        "password": {
          "description": "The password of the virtual machine administrator.",
          "type": "string"
        },
        "planId": {
          "description": "The id of the plan associated with the virtual machine image",
          "type": "string"
        },
        "provisioningState": {
          "description": "The provisioning status of the resource.",
          "readOnly": true,
          "type": "string"
        },
        "scheduleParameters": {
          "description": "Virtual Machine schedules to be created",
          "items": {
            "$ref": "#/$defs/ScheduleCreationParameter"
          },
          "type": "array"
        },
        "size": {
          "description": "The size of the virtual machine.",
          "type": "string"
        },
        "sshKey": {
          "description": "The SSH key of the virtual machine administrator.",
          "type": "string"
        },
        "storageType": {
          "description": "Storage type to use for virtual machine (i.e. Standard, Premium).",
          "type": "string"
        },
        "uniqueIdentifier": {
          "description": "The unique immutable identifier of a resource (Guid).",
          "readOnly": true,
          "type": "string"
        },
        "userName": {
          "description": "The user name of the virtual machine.",
          "type": "string"
        },
        "virtualMachineCreationSource": {
          "description": "Tells source of creation of lab virtual machine. Output property only.",
          "enum": [
            "FromCustomImage",
            "FromGalleryImage",
            "FromSharedGalleryImage"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "VirtualMachineCreationSource"
          }
        }
      },
      "type": "object"
    },
    "NetworkInterfaceProperties": {
      "description": "Properties of a network interface.",
      "properties": {
        "dnsName": {
          "description": "The DNS name.",
          "type": "string"
        },
        "privateIpAddress": {
          "description": "The private IP address.",
          "type": "string"
        },
        "publicIpAddress": {
          "description": "The public IP address.",
          "type": "string"
        },
        "publicIpAddressId": {
          "description": "The resource ID of the public IP address.",
          "type": "string"
        },
        "rdpAuthority": {
          "description": "The RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol).",
          "type": "string"
        },
        "sharedPublicIpAddressConfiguration": {
          "$ref": "#/$defs/SharedPublicIpAddressConfiguration",
          "description": "The configuration for sharing a public IP address across multiple virtual machines."
        },
        "sshAuthority": {
          "description": "The SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH.",
          "type": "string"
        },
        "subnetId": {
          "description": "The resource ID of the sub net.",
          "type": "string"
        },
        "virtualNetworkId": {
          "description": "The resource ID of the virtual network.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "NotificationSettings": {
      "description": "Notification settings for a schedule.",
      "properties": {
        "emailRecipient": {
          "description": "The email recipient to send notifications to (can be a list of semi-colon separated email addresses).",
          "type": "string"
        },
        "notificationLocale": {
          "description": "The locale to use when sending a notification (fallback for unsupported languages is EN).",
          "type": "string"
        },
        "status": {
          "description": "If notifications are enabled for this schedule (i.e. Enabled, Disabled).",
          "enum": [
            "Enabled",
            "Disabled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "EnableStatus"
          }
        },
        "timeInMinutes": {
          "description": "Time in minutes before event at which notification will be sent.",
          "format": "int32",
          "type": "integer"
        },
        "webhookUrl": {
          "description": "The webhook URL to which the notification will be sent.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "Resource": {
      "description": "An Azure resource.",
      "properties": {
        "id": {
          "description": "The identifier of the resource.",
          "readOnly": true,
          "type": "string"
        },
        "location": {
          "description": "The location of the resource.",
          "type": "string"
        },
        "name": {
          "description": "The name of the resource.",
          "readOnly": true,
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The tags of the resource.",
          "type": "object"
        },
        "type": {
          "description": "The type of the resource.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "x-ms-azure-resource": true
    },
    "Schedule": {
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ],
      "description": "A schedule.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ScheduleProperties",
          "description": "The properties of the resource.",
          "x-ms-client-flatten": true
        }
      },
      "required": [
        "properties"
      ],
      "type": "object"
    },
    "ScheduleCreationParameter": {
      "description": "Properties for creating a schedule.",
      "properties": {
        "location": {
          "description": "The location of the new virtual machine or environment",
          "type": "string"
        },
        "name": {
          "description": "The name of the virtual machine or environment",
          "type": "string"
        },
        "properties": {
          "$ref": "#/$defs/ScheduleCreationParameterProperties",
          "description": "The properties of the schedule.",
          "x-ms-client-flatten": true
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The tags of the resource.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "ScheduleCreationParameterProperties": {
      "description": "Properties for schedule creation.",
      "properties": {
        "dailyRecurrence": {
          "$ref": "#/$defs/DayDetails",
          "description": "If the schedule will occur once each day of the week, specify the daily recurrence."
        },
        "hourlyRecurrence": {
          "$ref": "#/$defs/HourDetails",
          "description": "If the schedule will occur multiple times a day, specify the hourly recurrence."
        },
        "notificationSettings": {
          "$ref": "#/$defs/NotificationSettings",
          "description": "Notification settings."
        },
        "status": {
          "description": "The status of the schedule (i.e. Enabled, Disabled)",
          "enum": [
            "Enabled",
            "Disabled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "EnableStatus"
          }
        },
        "targetResourceId": {
          "description": "The resource ID to which the schedule belongs",
          "type": "string"
        },
        "taskType": {
          "description": "The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart).",
          "type": "string"
        },
        "timeZoneId": {
          "description": "The time zone ID (e.g. Pacific Standard time).",
          "type": "string"
        },
        "weeklyRecurrence": {
          "$ref": "#/$defs/WeekDetails",
          "description": "If the schedule will occur only some days of the week, specify the weekly recurrence."
        }
      },
      "type": "object"
    },
    "ScheduleProperties": {
      "description": "Properties of a schedule.",
      "properties": {
        "createdDate": {
          "description": "The creation date of the schedule.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "dailyRecurrence": {
          "$ref": "#/$defs/DayDetails",
          "description": "If the schedule will occur once each day of the week, specify the daily recurrence."
        },
        "hourlyRecurrence": {
          "$ref": "#/$defs/HourDetails",
          "description": "If the schedule will occur multiple times a day, specify the hourly recurrence."
        },
        "notificationSettings": {
          "$ref": "#/$defs/NotificationSettings",
          "description": "Notification settings."
        },
        "provisioningState": {
          "description": "The provisioning status of the resource.",
          "readOnly": true,
          "type": "string"
        },
        "status": {
          "description": "The status of the schedule (i.e. Enabled, Disabled)",
          "enum": [
            "Enabled",
            "Disabled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "EnableStatus"
          }
        },
        "targetResourceId": {
          "description": "The resource ID to which the schedule belongs",
          "type": "string"
        },
        "taskType": {
          "description": "The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart).",
          "type": "string"
        },
        "timeZoneId": {
          "description": "The time zone ID (e.g. Pacific Standard time).",
          "type": "string"
        },
        "uniqueIdentifier": {
          "description": "The unique immutable identifier of a resource (Guid).",
          "readOnly": true,
          "type": "string"
        },
        "weeklyRecurrence": {
          "$ref": "#/$defs/WeekDetails",
          "description": "If the schedule will occur only some days of the week, specify the weekly recurrence."
        }
      },
      "type": "object"
    },
    "SharedPublicIpAddressConfiguration": {
      "description": "Properties of a virtual machine that determine how it is connected to a load balancer.",
      "properties": {
        "inboundNatRules": {
          "description": "The incoming NAT rules",
          "items": {
            "$ref": "#/$defs/InboundNatRule"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "WeekDetails": {
      "description": "Properties of a weekly schedule.",
      "properties": {
        "time": {
          "description": "The time of the day the schedule will occur.",
          "type": "string"
        },
        "weekdays": {
          "description": "The days of the week for which the schedule is set (e.g. Sunday, Monday, Tuesday, etc.).",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/azure-test-labs-lab-virtual-machine"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.