---
title: "POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/locations/{location}/virtualMachinesBulkCreate"
method: POST
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/locations/{location}/virtualMachinesBulkCreate"
---

# POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/locations/{location}/virtualMachinesBulkCreate

`POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/locations/{location}/virtualMachinesBulkCreate`

## Request

- Base URL: `https://management.azure.com`
- URL: `https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/locations/{location}/virtualMachinesBulkCreate`
- Auth: OAuth 2
  - Implicit: `https://login.microsoftonline.com/common/oauth2/authorize`
  - Scopes: `user_impersonation`

Create one or more virtual machines from a common configuration and optional per-virtual-machine overrides. Bulk Actions begins processing the request immediately and returns a Bulk Action Operation Id for each virtual machine. Use the returned IDs to get operation status updates.

## Path parameters

- `location` string, required

## Parameters

- `../../../../../../common-types/resource-management/v6/types.json#/components/parameters/ApiVersionParameter` (unresolved $ref)
- `../../../../../../common-types/resource-management/v6/types.json#/components/parameters/SubscriptionIdParameter` (unresolved $ref)
- `../../../../../../common-types/resource-management/v6/types.json#/components/parameters/ResourceGroupNameParameter` (unresolved $ref)

## Request body

- ExecuteCreateRequest: The virtual machine configuration and execution settings for a bulk create action.
  - `resourceConfigParameters` ResourceProvisionPayload, required: The shared and per-virtual-machine configuration for a bulk create action.
    - `baseProfile` BulkVMConfiguration: Per-VM configuration overrides that can be applied within a bulk virtual machine operation.
      - `plan` Plan (unresolved $ref)
      - `zones` string[]: The availability zones.
      - `identity` VirtualMachineIdentity: Identity for the virtual machine.
        - `principalId` string: The principal id of virtual machine identity. This property will only be provided for a system assigned identity.
        - `tenantId` string: The tenant id associated with the virtual machine. This property will only be provided for a system assigned identity.
        - `type` 'SystemAssigned' | 'UserAssigned' | 'SystemAssigned, UserAssigned' | 'None': The type of identity used for the virtual machine scale set. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine scale set.
        - `userAssignedIdentities` object: The list of user identities associated with the Virtual Machine. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
      - `extendedLocation` AzureResourceManagerCommonTypesExtendedLocation: The complex type of the extended location.
        - `name` string, required: The name of the extended location.
        - `type` 'EdgeZone' | 'CustomLocation', required: The supported ExtendedLocation types.
      - `placement` Placement: The customer-defined constraints for virtual machine placement.
        - `zonePlacementPolicy` 'Any' | 'Auto': The policy used to select an availability zone for the virtual machine.
        - `includeZones` string[]: The availability zones that Bulk Actions can select. When omitted, Bulk Actions can consider any supported zone in the region.
        - `excludeZones` string[]: The availability zones that Bulk Actions must not select.
      - `tags` object: Resource tags to apply to the virtual machines created by this bulk action.
      - `properties` BulkactionVMProperties: Describes the properties of a Virtual Machine for bulk create.
        - `scheduledEventsPolicy` ScheduledEventsPolicy: Specifies Redeploy, Reboot and ScheduledEventsAdditionalPublishingTargets Scheduled Event related configurations.
          - `userInitiatedRedeploy` UserInitiatedRedeploy: Specifies Redeploy related Scheduled Event related configurations.
            - `automaticallyApprove` boolean: Specifies Redeploy Scheduled Event related configurations.
          - `userInitiatedReboot` UserInitiatedReboot: Specifies Reboot related Scheduled Event related configurations.
            - `automaticallyApprove` boolean: Specifies Reboot Scheduled Event related configurations.
          - `scheduledEventsAdditionalPublishingTargets` ScheduledEventsAdditionalPublishingTargets: Specifies additional publishing targets for scheduled events.
            - `eventGridAndResourceGraph` EventGridAndResourceGraph: Specifies eventGridAndResourceGraph related Scheduled Event related configurations.
              - …
          - `allInstancesDown` AllInstancesDown: Specifies if Scheduled Events should be auto-approved when all instances are down.
            - `automaticallyApprove` boolean: Specifies if Scheduled Events should be auto-approved when all instances are down. Its default value is true.
        - `storageProfile` StorageProfile: Specifies the storage settings for the virtual machine disks.
          - `imageReference` ImageReference: A reference to an Azure resource.
            - `id` string: The Azure resource ID.
          - `osDisk` OSDisk: Specifies information about the operating system disk used by the virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
            - `osType` 'Windows' | 'Linux': This property allows you to specify the supported type of the OS that application is built for. Possible values are: **Windows,** **Linux.**
            - `encryptionSettings` DiskEncryptionSettings: Describes a Encryption Settings for a Disk
              - …
            - `name` string: The disk name.
            - `vhd` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `image` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `caching` 'None' | 'ReadOnly' | 'ReadWrite': Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** **ReadWrite.** The default values are: **None for Standard storage. ReadOnly for Premium storage**
            - `writeAcceleratorEnabled` boolean: Specifies whether writeAccelerator should be enabled or disabled on the disk.
            - `diffDiskSettings` DiffDiskSettings: Describes the parameters of ephemeral disk settings that can be specified for operating system disk. Note: The ephemeral disk settings can only be specified for managed disk.
              - …
            - `createOption` 'FromImage' | 'Empty' | 'Attach' | 'Copy' | 'Restore', required: Specifies how the virtual machine disk should be created. Possible values are **Attach:** This value is used when you are using a specialized disk to create the virtual machine. **FromImage:** This value is used when you are using an image to create the virtual machine. If you are using a platform image, you should also use the imageReference element described above. If you are using a marketplace image, you should also use the plan element previously described. **Empty:** This value is used when creating an empty data disk. **Copy:** This value is used to create a data disk from a snapshot or another disk. **Restore:** This value is used to create a data disk from a disk restore point.
            - `diskSizeGB` integer: Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. The property 'diskSizeGB' is the number of bytes x 1024^3 for the disk and the value cannot be larger than 1023.
            - `managedDisk` ManagedDiskParameters: A reference to an Azure resource.
              - …
            - `deleteOption` 'Delete' | 'Detach': Specifies the behavior of the managed disk when the VM gets deleted, for example whether the managed disk is deleted or detached. Supported values are: **Delete.** If this value is used, the managed disk is deleted when VM gets deleted. **Detach.** If this value is used, the managed disk is retained after VM gets deleted. Minimum api-version: 2021-03-01.
          - `dataDisks` DataDisk[]: Specifies the parameters that are used to add a data disk to a virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
            - `lun` integer, required: Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
            - `name` string: The disk name.
            - `vhd` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `image` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `caching` 'None' | 'ReadOnly' | 'ReadWrite': Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** **ReadWrite.** The default values are: **None for Standard storage. ReadOnly for Premium storage**
            - `writeAcceleratorEnabled` boolean: Specifies whether writeAccelerator should be enabled or disabled on the disk.
            - `createOption` 'FromImage' | 'Empty' | 'Attach' | 'Copy' | 'Restore', required: Specifies how the virtual machine disk should be created. Possible values are **Attach:** This value is used when you are using a specialized disk to create the virtual machine. **FromImage:** This value is used when you are using an image to create the virtual machine. If you are using a platform image, you should also use the imageReference element described above. If you are using a marketplace image, you should also use the plan element previously described. **Empty:** This value is used when creating an empty data disk. **Copy:** This value is used to create a data disk from a snapshot or another disk. **Restore:** This value is used to create a data disk from a disk restore point.
            - `diskSizeGB` integer: Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. The property 'diskSizeGB' is the number of bytes x 1024^3 for the disk and the value cannot be larger than 1023.
            - `managedDisk` ManagedDiskParameters: A reference to an Azure resource.
              - …
            - `sourceResource` ApiEntityReference: The API entity reference.
              - …
            - `toBeDetached` boolean: Specifies whether the data disk is in process of detachment from the VirtualMachine/VirtualMachineScaleset.
            - `detachOption` 'ForceDetach': Specifies the detach behavior to be used while detaching a disk or which is already in the process of detachment from the virtual machine. Supported values are: **ForceDetach.** detachOption: **ForceDetach** is applicable only for managed data disks. If a previous detachment attempt of the data disk did not complete due to an unexpected failure from the virtual machine and the disk is still not released then use force-detach as a last resort option to detach the disk forcibly from the VM. All writes might not have been flushed when using this detach behavior. **This feature is still in preview**. To force-detach a data disk update toBeDetached to 'true' along with setting detachOption: 'ForceDetach'.
            - `deleteOption` 'Delete' | 'Detach': Specifies the behavior of the managed disk when the VM gets deleted, for example whether the managed disk is deleted or detached. Supported values are: **Delete.** If this value is used, the managed disk is deleted when VM gets deleted. **Detach.** If this value is used, the managed disk is retained after VM gets deleted. Minimum api-version: 2021-03-01.
          - `diskControllerType` 'SCSI' | 'NVMe': Specifies the disk controller type configured for the VM and VirtualMachineScaleSet. This property is only supported for virtual machines whose operating system disk and VM sku supports Generation 2 (https://docs.microsoft.com/en-us/azure/virtual-machines/generation-2), please check the HyperVGenerations capability returned as part of VM sku capabilities in the response of Microsoft.Compute SKUs api for the region contains V2 (https://docs.microsoft.com/rest/api/compute/resourceskus/list). For more information about Disk Controller Types supported please refer to https://aka.ms/azure-diskcontrollertypes.
        - `hardwareProfile` HardwareProfile: Specifies the hardware profile for the virtual machine.
          - `vmSize` string: Specifies the size of the virtual machine. The enum data type is currently deprecated and will be removed by December 23rd 2023. The recommended way to get the list of available sizes is using these APIs: [List all available virtual machine sizes in an availability set](https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes), [List all available virtual machine sizes in a region]( https://docs.microsoft.com/rest/api/compute/resourceskus/list), [List all available virtual machine sizes for resizing](https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes). For more information about virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/sizes). The available VM sizes depend on region and availability set.
          - `vmSizeProperties` VmSizeProperties: Specifies VM Size Property settings on the virtual machine.
            - `vCpusAvailable` integer: Specifies the number of vCPUs available for the VM. When this property is not specified in the request body the default behavior is to set it to the value of vCPUs available for that VM size exposed in api response of [List all available virtual machine sizes in a region](https://docs.microsoft.com/en-us/rest/api/compute/resource-skus/list).
            - `vCpusPerCore` integer: Specifies the vCPU to physical core ratio. When this property is not specified in the request body the default behavior is set to the value of vCPUsPerCore for the VM Size exposed in api response of [List all available virtual machine sizes in a region](https://docs.microsoft.com/en-us/rest/api/compute/resource-skus/list). **Setting this property to 1 also means that hyper-threading is disabled.**
        - `additionalCapabilities` AdditionalCapabilities: Enables or disables a capability on the virtual machine or virtual machine scale set.
          - `ultraSSDEnabled` boolean: The flag that enables or disables a capability to have one or more managed data disks with UltraSSD_LRS storage account type on the VM or VMSS. Managed disks with storage account type UltraSSD_LRS can be added to a virtual machine or virtual machine scale set only if this property is enabled.
          - `hibernationEnabled` boolean: The flag that enables or disables hibernation capability on the VM.
        - `osProfile` OSProfile: Specifies the operating system settings for the virtual machine. Some of the settings cannot be changed once VM is provisioned.
          - `computerName` string: Specifies the host OS name of the virtual machine. This name cannot be updated after the VM is created. **Max-length (Windows):** 15 characters. **Max-length (Linux):** 64 characters. For naming conventions and restrictions see [Azure infrastructure services implementation guidelines](https://docs.microsoft.com/azure/azure-resource-manager/management/resource-name-rules).
          - `adminUsername` string: Specifies the name of the administrator account. <br><br> This property cannot be updated after the VM is created. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters.
          - `adminPassword` string, password: Specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/troubleshoot/azure/virtual-machines/reset-rdp) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/troubleshoot/azure/virtual-machines/troubleshoot-ssh-connection)
          - `customData` string: Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. **Note: Do not pass any secrets or passwords in customData property.** This property cannot be updated after the VM is created. The property 'customData' is passed to the VM to be saved as a file, for more information see [Custom Data on Azure VMs](https://azure.microsoft.com/blog/custom-data-and-cloud-init-on-windows-azure/). For using cloud-init for your Linux VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/linux/using-cloud-init).
          - `windowsConfiguration` WindowsConfiguration: Specifies Windows operating system settings on the virtual machine.
            - `provisionVMAgent` boolean: Indicates whether virtual machine agent should be provisioned on the virtual machine. When this property is not specified in the request body, it is set to true by default. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later.
            - `enableAutomaticUpdates` boolean: Indicates whether Automatic Updates is enabled for the Windows virtual machine. Default value is true. For virtual machine scale sets, this property can be updated and updates will take effect on OS reprovisioning.
            - `timeZone` string: Specifies the time zone of the virtual machine. e.g. "Pacific Standard Time". Possible values can be [TimeZoneInfo.Id](https://docs.microsoft.com/dotnet/api/system.timezoneinfo.id?#System_TimeZoneInfo_Id) value from time zones returned by [TimeZoneInfo.GetSystemTimeZones](https://docs.microsoft.com/dotnet/api/system.timezoneinfo.getsystemtimezones).
            - `additionalUnattendContent` AdditionalUnattendContent[]: Specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup.
              - …
            - `patchSettings` PatchSettings: Specifies settings related to VM Guest Patching on Windows.
              - …
            - `winRM` WinRMConfiguration: Describes Windows Remote Management configuration of the VM
              - …
          - `linuxConfiguration` LinuxConfiguration: Specifies the Linux operating system settings on the virtual machine. For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/linux/endorsed-distros).
            - `disablePasswordAuthentication` boolean: Specifies whether password authentication should be disabled.
            - `ssh` SshConfiguration: SSH configuration for Linux based VMs running on Azure
              - …
            - `provisionVMAgent` boolean: Indicates whether virtual machine agent should be provisioned on the virtual machine. When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later.
            - `patchSettings` LinuxPatchSettings: Specifies settings related to VM Guest Patching on Linux.
              - …
            - `enableVMAgentPlatformUpdates` boolean: Indicates whether VMAgent Platform Updates is enabled for the Linux virtual machine. Default value is false.
          - `secrets` VaultSecretGroup[]: Specifies set of certificates that should be installed onto the virtual machine. To install certificates on a virtual machine it is recommended to use the [Azure Key Vault virtual machine extension for Linux](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-linux) or the [Azure Key Vault virtual machine extension for Windows](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-windows).
            - `sourceVault` SubResource: A reference to an Azure resource.
              - …
            - `vaultCertificates` VaultCertificate[]: The list of key vault references in SourceVault which contain certificates.
              - …
          - `allowExtensionOperations` boolean: Specifies whether extension operations should be allowed on the virtual machine. This may only be set to False when no extensions are present on the virtual machine.
          - `requireGuestProvisionSignal` boolean: Optional property which must either be set to True or omitted.
        - `networkProfile` NetworkProfile: Specifies the network interfaces or the networking configuration of the virtual machine.
          - `networkInterfaces` NetworkInterfaceReference[]: Specifies the list of resource Ids for the network interfaces associated with the virtual machine.
            - `id` string: The Azure resource ID.
          - `networkApiVersion` '2020-11-01' | '2022-11-01': Specifies the Microsoft.Network API version used when creating networking resources in the Network Interface Configurations
          - `networkInterfaceConfigurations` VirtualMachineNetworkInterfaceConfiguration[]: Specifies the networking configurations that will be used to create the virtual machine networking resources.
            - `name` string, required: The network interface configuration name.
            - `properties` VirtualMachineNetworkInterfaceConfigurationProperties: Describes a virtual machine network profile's IP configuration.
              - …
            - `tags` object: Resource tags applied to the networkInterface address created by this NetworkInterfaceConfiguration
        - `securityProfile` SecurityProfile: Specifies the Security profile settings for the virtual machine or virtual machine scale set.
          - `uefiSettings` UefiSettings: Specifies the security settings like secure boot and vTPM used while creating the virtual machine. Minimum api-version: 2020-12-01.
            - `secureBootEnabled` boolean: Specifies whether secure boot should be enabled on the virtual machine. Minimum compute api-version: 2020-12-01.
            - `vTpmEnabled` boolean: Specifies whether vTPM should be enabled on the virtual machine. Minimum compute api-version: 2020-12-01.
          - `encryptionAtHost` boolean: This property can be used by user in the request to enable or disable the Host Encryption for the virtual machine or virtual machine scale set. This will enable the encryption for all the disks including Resource/Temp disk at host itself. The default behavior is: The Encryption at host will be disabled unless this property is set to true for the resource.
          - `securityType` 'TrustedLaunch' | 'ConfidentialVM': Specifies the SecurityType of the virtual machine. It has to be set to any specified value to enable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.
          - `encryptionIdentity` EncryptionIdentity: Specifies the Managed Identity used by ADE to get access token for keyvault operations.
            - `userAssignedIdentityResourceId` string: Specifies ARM Resource ID of one of the user identities associated with the VM.
          - `proxyAgentSettings` ProxyAgentSettings: Specifies ProxyAgent settings for the virtual machine or virtual machine scale set. Minimum api-version: 2023-09-01.
            - `enabled` boolean: Specifies whether ProxyAgent feature should be enabled on the virtual machine or virtual machine scale set.
            - `mode` 'Audit' | 'Enforce': Specifies the mode that ProxyAgent will execute on if the feature is enabled. ProxyAgent will start to audit or monitor but not enforce access control over requests to host endpoints in Audit mode, while in Enforce mode it will enforce access control. The default value is Enforce mode.
            - `keyIncarnationId` integer: Increase the value of this property allows users to reset the key used for securing communication channel between guest and host.
            - `wireServer` HostEndpointSettings: Specifies particular host endpoint settings.
              - …
            - `imds` HostEndpointSettings: Specifies particular host endpoint settings.
              - …
            - `addProxyAgentExtension` boolean: Specify whether to implicitly install the ProxyAgent Extension. This option is currently applicable only for Linux Os.
        - `diagnosticsProfile` DiagnosticsProfile: Specifies the boot diagnostic settings state. Minimum compute api-version: 2015-06-15.
          - `bootDiagnostics` BootDiagnostics: Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. You can easily view the output of your console log. Azure also enables you to see a screenshot of the VM from the hypervisor.
            - `enabled` boolean: Whether boot diagnostics should be enabled on the Virtual Machine.
            - `storageUri` string: Uri of the storage account to use for placing the console output and screenshot. If storageUri is not specified while enabling boot diagnostics, managed storage will be used.
        - `licenseType` string: Specifies that the image or disk that is being used was licensed on-premises. <br><br> Possible values for Windows Server operating system are: <br><br> Windows_Client <br><br> Windows_Server <br><br> Possible values for Linux Server operating system are: <br><br> RHEL_BYOS (for RHEL) <br><br> SLES_BYOS (for SUSE) <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing) <br><br> [Azure Hybrid Use Benefit for Linux Server](https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux) <br><br> Minimum api-version: 2015-06-15
        - `extensionsTimeBudget` string: Specifies the time alloted for all extensions to start. The time duration should be between 15 minutes and 120 minutes (inclusive) and should be specified in ISO 8601 format. The default value is 90 minutes (PT1H30M). Minimum compute api-version: 2020-06-01.
        - `scheduledEventsProfile` ScheduledEventsProfile: Profile for the scheduled events.
          - `terminateNotificationProfile` TerminateNotificationProfile: Profile properties for the Terminate Scheduled event.
            - `notBeforeTimeout` string: Configurable length of time a Virtual Machine being deleted will have to potentially approve the Terminate Scheduled Event before the event is auto approved (timed out). The configuration must be specified in ISO 8601 format, the default value is 5 minutes (PT5M)
            - `enable` boolean: Specifies whether the Terminate Scheduled event is enabled or disabled.
          - `osImageNotificationProfile` OSImageNotificationProfile: Profile for the OS Image Scheduled event.
            - `notBeforeTimeout` string: Length of time a Virtual Machine being reimaged or having its OS upgraded will have to potentially approve the OS Image Scheduled Event before the event is auto approved (timed out). The configuration is specified in ISO 8601 format, and the value must be 15 minutes (PT15M)
            - `enable` boolean: Specifies whether the OS Image Scheduled event is enabled or disabled.
        - `userData` string: UserData for the VM, which must be base-64 encoded. Customer should not pass any secrets in here. Minimum compute api-version: 2021-03-01.
        - `capacityReservation` CapacityReservationProfile: The parameters of a capacity reservation Profile.
          - `capacityReservationGroup` SubResource: A reference to an Azure resource.
            - `id` string: The Azure resource ID.
        - `applicationProfile` ApplicationProfile: Contains the list of gallery applications that should be made available to the VM
          - `galleryApplications` VMGalleryApplication[]: Specifies the gallery applications that should be made available to the VM
            - `tags` string: Optional, Specifies a passthrough value for more generic context.
            - `order` integer: Optional, Specifies the order in which the packages have to be installed
            - `packageReferenceId` string, required: Specifies the GalleryApplicationVersion resource id on the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{application}/versions/{version}
            - `configurationReference` string: Optional, Specifies the uri to an azure blob that will replace the default configuration for the package if provided
            - `treatFailureAsDeploymentFailure` boolean: Optional, If true, any failure for any operation in the VmApplication will fail the deployment
            - `enableAutomaticUpgrade` boolean: If set to true, when a new Gallery Application version is available in PIR/SIG, it will be automatically updated for the VM/VMSS
        - `vmExtensions` BulkactionVMExtension[]: Virtual Machine Extensions Array to be applied to the Virtual Machines.
          - `name` string, required: The name of the virtual machine extension.
          - `properties` BulkActionVmExtensionProperties, required: Describes the properties of a Virtual Machine Extension.
            - `forceUpdateTag` string: How the extension handler should be forced to update even if the extension configuration has not changed.
            - `publisher` string: The name of the extension handler publisher.
            - `type` string: Specifies the type of the extension; an example is 'CustomScriptExtension'.
            - `typeHandlerVersion` string: Specifies the version of the script handler.
            - `autoUpgradeMinorVersion` boolean: Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true.
            - `enableAutomaticUpgrade` boolean: Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.
            - `settings` object: JSON formatted public settings for the extension.
            - `protectedSettings` object: The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
            - `suppressFailures` boolean: Indicates whether failures stemming from the extension will be suppressed (Operational failures such as not connecting to the VM will not be suppressed regardless of this value). The default is false.
            - `protectedSettingsFromKeyVault` KeyVaultSecretReference: A reference to a secret stored in Azure Key Vault.
              - …
            - `provisionAfterExtensions` string[]: Collection of extension names after which this extension needs to be provisioned.
      - `computeApiVersion` string: The Microsoft.Compute API version that defines the virtual machine configuration supplied in the request.
      - `name` string: The name of the virtual machine. When omitted, Bulk Actions generates a name from the resource prefix.
    - `resourceOverrides` BulkVMConfiguration[]: The per-virtual-machine configuration overrides for the bulk create action.
      - `plan` Plan (unresolved $ref)
      - `zones` string[]: The availability zones.
      - `identity` VirtualMachineIdentity: Identity for the virtual machine.
        - `principalId` string: The principal id of virtual machine identity. This property will only be provided for a system assigned identity.
        - `tenantId` string: The tenant id associated with the virtual machine. This property will only be provided for a system assigned identity.
        - `type` 'SystemAssigned' | 'UserAssigned' | 'SystemAssigned, UserAssigned' | 'None': The type of identity used for the virtual machine scale set. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine scale set.
        - `userAssignedIdentities` object: The list of user identities associated with the Virtual Machine. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
      - `extendedLocation` AzureResourceManagerCommonTypesExtendedLocation: The complex type of the extended location.
        - `name` string, required: The name of the extended location.
        - `type` 'EdgeZone' | 'CustomLocation', required: The supported ExtendedLocation types.
      - `placement` Placement: The customer-defined constraints for virtual machine placement.
        - `zonePlacementPolicy` 'Any' | 'Auto': The policy used to select an availability zone for the virtual machine.
        - `includeZones` string[]: The availability zones that Bulk Actions can select. When omitted, Bulk Actions can consider any supported zone in the region.
        - `excludeZones` string[]: The availability zones that Bulk Actions must not select.
      - `tags` object: Resource tags to apply to the virtual machines created by this bulk action.
      - `properties` BulkactionVMProperties: Describes the properties of a Virtual Machine for bulk create.
        - `scheduledEventsPolicy` ScheduledEventsPolicy: Specifies Redeploy, Reboot and ScheduledEventsAdditionalPublishingTargets Scheduled Event related configurations.
          - `userInitiatedRedeploy` UserInitiatedRedeploy: Specifies Redeploy related Scheduled Event related configurations.
            - `automaticallyApprove` boolean: Specifies Redeploy Scheduled Event related configurations.
          - `userInitiatedReboot` UserInitiatedReboot: Specifies Reboot related Scheduled Event related configurations.
            - `automaticallyApprove` boolean: Specifies Reboot Scheduled Event related configurations.
          - `scheduledEventsAdditionalPublishingTargets` ScheduledEventsAdditionalPublishingTargets: Specifies additional publishing targets for scheduled events.
            - `eventGridAndResourceGraph` EventGridAndResourceGraph: Specifies eventGridAndResourceGraph related Scheduled Event related configurations.
              - …
          - `allInstancesDown` AllInstancesDown: Specifies if Scheduled Events should be auto-approved when all instances are down.
            - `automaticallyApprove` boolean: Specifies if Scheduled Events should be auto-approved when all instances are down. Its default value is true.
        - `storageProfile` StorageProfile: Specifies the storage settings for the virtual machine disks.
          - `imageReference` ImageReference: A reference to an Azure resource.
            - `id` string: The Azure resource ID.
          - `osDisk` OSDisk: Specifies information about the operating system disk used by the virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
            - `osType` 'Windows' | 'Linux': This property allows you to specify the supported type of the OS that application is built for. Possible values are: **Windows,** **Linux.**
            - `encryptionSettings` DiskEncryptionSettings: Describes a Encryption Settings for a Disk
              - …
            - `name` string: The disk name.
            - `vhd` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `image` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `caching` 'None' | 'ReadOnly' | 'ReadWrite': Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** **ReadWrite.** The default values are: **None for Standard storage. ReadOnly for Premium storage**
            - `writeAcceleratorEnabled` boolean: Specifies whether writeAccelerator should be enabled or disabled on the disk.
            - `diffDiskSettings` DiffDiskSettings: Describes the parameters of ephemeral disk settings that can be specified for operating system disk. Note: The ephemeral disk settings can only be specified for managed disk.
              - …
            - `createOption` 'FromImage' | 'Empty' | 'Attach' | 'Copy' | 'Restore', required: Specifies how the virtual machine disk should be created. Possible values are **Attach:** This value is used when you are using a specialized disk to create the virtual machine. **FromImage:** This value is used when you are using an image to create the virtual machine. If you are using a platform image, you should also use the imageReference element described above. If you are using a marketplace image, you should also use the plan element previously described. **Empty:** This value is used when creating an empty data disk. **Copy:** This value is used to create a data disk from a snapshot or another disk. **Restore:** This value is used to create a data disk from a disk restore point.
            - `diskSizeGB` integer: Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. The property 'diskSizeGB' is the number of bytes x 1024^3 for the disk and the value cannot be larger than 1023.
            - `managedDisk` ManagedDiskParameters: A reference to an Azure resource.
              - …
            - `deleteOption` 'Delete' | 'Detach': Specifies the behavior of the managed disk when the VM gets deleted, for example whether the managed disk is deleted or detached. Supported values are: **Delete.** If this value is used, the managed disk is deleted when VM gets deleted. **Detach.** If this value is used, the managed disk is retained after VM gets deleted. Minimum api-version: 2021-03-01.
          - `dataDisks` DataDisk[]: Specifies the parameters that are used to add a data disk to a virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
            - `lun` integer, required: Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
            - `name` string: The disk name.
            - `vhd` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `image` VirtualHardDisk: Describes the uri of a disk.
              - …
            - `caching` 'None' | 'ReadOnly' | 'ReadWrite': Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** **ReadWrite.** The default values are: **None for Standard storage. ReadOnly for Premium storage**
            - `writeAcceleratorEnabled` boolean: Specifies whether writeAccelerator should be enabled or disabled on the disk.
            - `createOption` 'FromImage' | 'Empty' | 'Attach' | 'Copy' | 'Restore', required: Specifies how the virtual machine disk should be created. Possible values are **Attach:** This value is used when you are using a specialized disk to create the virtual machine. **FromImage:** This value is used when you are using an image to create the virtual machine. If you are using a platform image, you should also use the imageReference element described above. If you are using a marketplace image, you should also use the plan element previously described. **Empty:** This value is used when creating an empty data disk. **Copy:** This value is used to create a data disk from a snapshot or another disk. **Restore:** This value is used to create a data disk from a disk restore point.
            - `diskSizeGB` integer: Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. The property 'diskSizeGB' is the number of bytes x 1024^3 for the disk and the value cannot be larger than 1023.
            - `managedDisk` ManagedDiskParameters: A reference to an Azure resource.
              - …
            - `sourceResource` ApiEntityReference: The API entity reference.
              - …
            - `toBeDetached` boolean: Specifies whether the data disk is in process of detachment from the VirtualMachine/VirtualMachineScaleset.
            - `detachOption` 'ForceDetach': Specifies the detach behavior to be used while detaching a disk or which is already in the process of detachment from the virtual machine. Supported values are: **ForceDetach.** detachOption: **ForceDetach** is applicable only for managed data disks. If a previous detachment attempt of the data disk did not complete due to an unexpected failure from the virtual machine and the disk is still not released then use force-detach as a last resort option to detach the disk forcibly from the VM. All writes might not have been flushed when using this detach behavior. **This feature is still in preview**. To force-detach a data disk update toBeDetached to 'true' along with setting detachOption: 'ForceDetach'.
            - `deleteOption` 'Delete' | 'Detach': Specifies the behavior of the managed disk when the VM gets deleted, for example whether the managed disk is deleted or detached. Supported values are: **Delete.** If this value is used, the managed disk is deleted when VM gets deleted. **Detach.** If this value is used, the managed disk is retained after VM gets deleted. Minimum api-version: 2021-03-01.
          - `diskControllerType` 'SCSI' | 'NVMe': Specifies the disk controller type configured for the VM and VirtualMachineScaleSet. This property is only supported for virtual machines whose operating system disk and VM sku supports Generation 2 (https://docs.microsoft.com/en-us/azure/virtual-machines/generation-2), please check the HyperVGenerations capability returned as part of VM sku capabilities in the response of Microsoft.Compute SKUs api for the region contains V2 (https://docs.microsoft.com/rest/api/compute/resourceskus/list). For more information about Disk Controller Types supported please refer to https://aka.ms/azure-diskcontrollertypes.
        - `hardwareProfile` HardwareProfile: Specifies the hardware profile for the virtual machine.
          - `vmSize` string: Specifies the size of the virtual machine. The enum data type is currently deprecated and will be removed by December 23rd 2023. The recommended way to get the list of available sizes is using these APIs: [List all available virtual machine sizes in an availability set](https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes), [List all available virtual machine sizes in a region]( https://docs.microsoft.com/rest/api/compute/resourceskus/list), [List all available virtual machine sizes for resizing](https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes). For more information about virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/sizes). The available VM sizes depend on region and availability set.
          - `vmSizeProperties` VmSizeProperties: Specifies VM Size Property settings on the virtual machine.
            - `vCpusAvailable` integer: Specifies the number of vCPUs available for the VM. When this property is not specified in the request body the default behavior is to set it to the value of vCPUs available for that VM size exposed in api response of [List all available virtual machine sizes in a region](https://docs.microsoft.com/en-us/rest/api/compute/resource-skus/list).
            - `vCpusPerCore` integer: Specifies the vCPU to physical core ratio. When this property is not specified in the request body the default behavior is set to the value of vCPUsPerCore for the VM Size exposed in api response of [List all available virtual machine sizes in a region](https://docs.microsoft.com/en-us/rest/api/compute/resource-skus/list). **Setting this property to 1 also means that hyper-threading is disabled.**
        - `additionalCapabilities` AdditionalCapabilities: Enables or disables a capability on the virtual machine or virtual machine scale set.
          - `ultraSSDEnabled` boolean: The flag that enables or disables a capability to have one or more managed data disks with UltraSSD_LRS storage account type on the VM or VMSS. Managed disks with storage account type UltraSSD_LRS can be added to a virtual machine or virtual machine scale set only if this property is enabled.
          - `hibernationEnabled` boolean: The flag that enables or disables hibernation capability on the VM.
        - `osProfile` OSProfile: Specifies the operating system settings for the virtual machine. Some of the settings cannot be changed once VM is provisioned.
          - `computerName` string: Specifies the host OS name of the virtual machine. This name cannot be updated after the VM is created. **Max-length (Windows):** 15 characters. **Max-length (Linux):** 64 characters. For naming conventions and restrictions see [Azure infrastructure services implementation guidelines](https://docs.microsoft.com/azure/azure-resource-manager/management/resource-name-rules).
          - `adminUsername` string: Specifies the name of the administrator account. <br><br> This property cannot be updated after the VM is created. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters.
          - `adminPassword` string, password: Specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/troubleshoot/azure/virtual-machines/reset-rdp) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/troubleshoot/azure/virtual-machines/troubleshoot-ssh-connection)
          - `customData` string: Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. **Note: Do not pass any secrets or passwords in customData property.** This property cannot be updated after the VM is created. The property 'customData' is passed to the VM to be saved as a file, for more information see [Custom Data on Azure VMs](https://azure.microsoft.com/blog/custom-data-and-cloud-init-on-windows-azure/). For using cloud-init for your Linux VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/linux/using-cloud-init).
          - `windowsConfiguration` WindowsConfiguration: Specifies Windows operating system settings on the virtual machine.
            - `provisionVMAgent` boolean: Indicates whether virtual machine agent should be provisioned on the virtual machine. When this property is not specified in the request body, it is set to true by default. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later.
            - `enableAutomaticUpdates` boolean: Indicates whether Automatic Updates is enabled for the Windows virtual machine. Default value is true. For virtual machine scale sets, this property can be updated and updates will take effect on OS reprovisioning.
            - `timeZone` string: Specifies the time zone of the virtual machine. e.g. "Pacific Standard Time". Possible values can be [TimeZoneInfo.Id](https://docs.microsoft.com/dotnet/api/system.timezoneinfo.id?#System_TimeZoneInfo_Id) value from time zones returned by [TimeZoneInfo.GetSystemTimeZones](https://docs.microsoft.com/dotnet/api/system.timezoneinfo.getsystemtimezones).
            - `additionalUnattendContent` AdditionalUnattendContent[]: Specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup.
              - …
            - `patchSettings` PatchSettings: Specifies settings related to VM Guest Patching on Windows.
              - …
            - `winRM` WinRMConfiguration: Describes Windows Remote Management configuration of the VM
              - …
          - `linuxConfiguration` LinuxConfiguration: Specifies the Linux operating system settings on the virtual machine. For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/linux/endorsed-distros).
            - `disablePasswordAuthentication` boolean: Specifies whether password authentication should be disabled.
            - `ssh` SshConfiguration: SSH configuration for Linux based VMs running on Azure
              - …
            - `provisionVMAgent` boolean: Indicates whether virtual machine agent should be provisioned on the virtual machine. When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later.
            - `patchSettings` LinuxPatchSettings: Specifies settings related to VM Guest Patching on Linux.
              - …
            - `enableVMAgentPlatformUpdates` boolean: Indicates whether VMAgent Platform Updates is enabled for the Linux virtual machine. Default value is false.
          - `secrets` VaultSecretGroup[]: Specifies set of certificates that should be installed onto the virtual machine. To install certificates on a virtual machine it is recommended to use the [Azure Key Vault virtual machine extension for Linux](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-linux) or the [Azure Key Vault virtual machine extension for Windows](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-windows).
            - `sourceVault` SubResource: A reference to an Azure resource.
              - …
            - `vaultCertificates` VaultCertificate[]: The list of key vault references in SourceVault which contain certificates.
              - …
          - `allowExtensionOperations` boolean: Specifies whether extension operations should be allowed on the virtual machine. This may only be set to False when no extensions are present on the virtual machine.
          - `requireGuestProvisionSignal` boolean: Optional property which must either be set to True or omitted.
        - `networkProfile` NetworkProfile: Specifies the network interfaces or the networking configuration of the virtual machine.
          - `networkInterfaces` NetworkInterfaceReference[]: Specifies the list of resource Ids for the network interfaces associated with the virtual machine.
            - `id` string: The Azure resource ID.
          - `networkApiVersion` '2020-11-01' | '2022-11-01': Specifies the Microsoft.Network API version used when creating networking resources in the Network Interface Configurations
          - `networkInterfaceConfigurations` VirtualMachineNetworkInterfaceConfiguration[]: Specifies the networking configurations that will be used to create the virtual machine networking resources.
            - `name` string, required: The network interface configuration name.
            - `properties` VirtualMachineNetworkInterfaceConfigurationProperties: Describes a virtual machine network profile's IP configuration.
              - …
            - `tags` object: Resource tags applied to the networkInterface address created by this NetworkInterfaceConfiguration
        - `securityProfile` SecurityProfile: Specifies the Security profile settings for the virtual machine or virtual machine scale set.
          - `uefiSettings` UefiSettings: Specifies the security settings like secure boot and vTPM used while creating the virtual machine. Minimum api-version: 2020-12-01.
            - `secureBootEnabled` boolean: Specifies whether secure boot should be enabled on the virtual machine. Minimum compute api-version: 2020-12-01.
            - `vTpmEnabled` boolean: Specifies whether vTPM should be enabled on the virtual machine. Minimum compute api-version: 2020-12-01.
          - `encryptionAtHost` boolean: This property can be used by user in the request to enable or disable the Host Encryption for the virtual machine or virtual machine scale set. This will enable the encryption for all the disks including Resource/Temp disk at host itself. The default behavior is: The Encryption at host will be disabled unless this property is set to true for the resource.
          - `securityType` 'TrustedLaunch' | 'ConfidentialVM': Specifies the SecurityType of the virtual machine. It has to be set to any specified value to enable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.
          - `encryptionIdentity` EncryptionIdentity: Specifies the Managed Identity used by ADE to get access token for keyvault operations.
            - `userAssignedIdentityResourceId` string: Specifies ARM Resource ID of one of the user identities associated with the VM.
          - `proxyAgentSettings` ProxyAgentSettings: Specifies ProxyAgent settings for the virtual machine or virtual machine scale set. Minimum api-version: 2023-09-01.
            - `enabled` boolean: Specifies whether ProxyAgent feature should be enabled on the virtual machine or virtual machine scale set.
            - `mode` 'Audit' | 'Enforce': Specifies the mode that ProxyAgent will execute on if the feature is enabled. ProxyAgent will start to audit or monitor but not enforce access control over requests to host endpoints in Audit mode, while in Enforce mode it will enforce access control. The default value is Enforce mode.
            - `keyIncarnationId` integer: Increase the value of this property allows users to reset the key used for securing communication channel between guest and host.
            - `wireServer` HostEndpointSettings: Specifies particular host endpoint settings.
              - …
            - `imds` HostEndpointSettings: Specifies particular host endpoint settings.
              - …
            - `addProxyAgentExtension` boolean: Specify whether to implicitly install the ProxyAgent Extension. This option is currently applicable only for Linux Os.
        - `diagnosticsProfile` DiagnosticsProfile: Specifies the boot diagnostic settings state. Minimum compute api-version: 2015-06-15.
          - `bootDiagnostics` BootDiagnostics: Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. You can easily view the output of your console log. Azure also enables you to see a screenshot of the VM from the hypervisor.
            - `enabled` boolean: Whether boot diagnostics should be enabled on the Virtual Machine.
            - `storageUri` string: Uri of the storage account to use for placing the console output and screenshot. If storageUri is not specified while enabling boot diagnostics, managed storage will be used.
        - `licenseType` string: Specifies that the image or disk that is being used was licensed on-premises. <br><br> Possible values for Windows Server operating system are: <br><br> Windows_Client <br><br> Windows_Server <br><br> Possible values for Linux Server operating system are: <br><br> RHEL_BYOS (for RHEL) <br><br> SLES_BYOS (for SUSE) <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing) <br><br> [Azure Hybrid Use Benefit for Linux Server](https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux) <br><br> Minimum api-version: 2015-06-15
        - `extensionsTimeBudget` string: Specifies the time alloted for all extensions to start. The time duration should be between 15 minutes and 120 minutes (inclusive) and should be specified in ISO 8601 format. The default value is 90 minutes (PT1H30M). Minimum compute api-version: 2020-06-01.
        - `scheduledEventsProfile` ScheduledEventsProfile: Profile for the scheduled events.
          - `terminateNotificationProfile` TerminateNotificationProfile: Profile properties for the Terminate Scheduled event.
            - `notBeforeTimeout` string: Configurable length of time a Virtual Machine being deleted will have to potentially approve the Terminate Scheduled Event before the event is auto approved (timed out). The configuration must be specified in ISO 8601 format, the default value is 5 minutes (PT5M)
            - `enable` boolean: Specifies whether the Terminate Scheduled event is enabled or disabled.
          - `osImageNotificationProfile` OSImageNotificationProfile: Profile for the OS Image Scheduled event.
            - `notBeforeTimeout` string: Length of time a Virtual Machine being reimaged or having its OS upgraded will have to potentially approve the OS Image Scheduled Event before the event is auto approved (timed out). The configuration is specified in ISO 8601 format, and the value must be 15 minutes (PT15M)
            - `enable` boolean: Specifies whether the OS Image Scheduled event is enabled or disabled.
        - `userData` string: UserData for the VM, which must be base-64 encoded. Customer should not pass any secrets in here. Minimum compute api-version: 2021-03-01.
        - `capacityReservation` CapacityReservationProfile: The parameters of a capacity reservation Profile.
          - `capacityReservationGroup` SubResource: A reference to an Azure resource.
            - `id` string: The Azure resource ID.
        - `applicationProfile` ApplicationProfile: Contains the list of gallery applications that should be made available to the VM
          - `galleryApplications` VMGalleryApplication[]: Specifies the gallery applications that should be made available to the VM
            - `tags` string: Optional, Specifies a passthrough value for more generic context.
            - `order` integer: Optional, Specifies the order in which the packages have to be installed
            - `packageReferenceId` string, required: Specifies the GalleryApplicationVersion resource id on the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{application}/versions/{version}
            - `configurationReference` string: Optional, Specifies the uri to an azure blob that will replace the default configuration for the package if provided
            - `treatFailureAsDeploymentFailure` boolean: Optional, If true, any failure for any operation in the VmApplication will fail the deployment
            - `enableAutomaticUpgrade` boolean: If set to true, when a new Gallery Application version is available in PIR/SIG, it will be automatically updated for the VM/VMSS
        - `vmExtensions` BulkactionVMExtension[]: Virtual Machine Extensions Array to be applied to the Virtual Machines.
          - `name` string, required: The name of the virtual machine extension.
          - `properties` BulkActionVmExtensionProperties, required: Describes the properties of a Virtual Machine Extension.
            - `forceUpdateTag` string: How the extension handler should be forced to update even if the extension configuration has not changed.
            - `publisher` string: The name of the extension handler publisher.
            - `type` string: Specifies the type of the extension; an example is 'CustomScriptExtension'.
            - `typeHandlerVersion` string: Specifies the version of the script handler.
            - `autoUpgradeMinorVersion` boolean: Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true.
            - `enableAutomaticUpgrade` boolean: Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.
            - `settings` object: JSON formatted public settings for the extension.
            - `protectedSettings` object: The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
            - `suppressFailures` boolean: Indicates whether failures stemming from the extension will be suppressed (Operational failures such as not connecting to the VM will not be suppressed regardless of this value). The default is false.
            - `protectedSettingsFromKeyVault` KeyVaultSecretReference: A reference to a secret stored in Azure Key Vault.
              - …
            - `provisionAfterExtensions` string[]: Collection of extension names after which this extension needs to be provisioned.
      - `computeApiVersion` string: The Microsoft.Compute API version that defines the virtual machine configuration supplied in the request.
      - `name` string: The name of the virtual machine. When omitted, Bulk Actions generates a name from the resource prefix.
    - `resourceCount` integer, required: The number of virtual machines to create.
    - `resourcePrefix` string: The prefix used by Bulk Actions to generate virtual machine names when a per-virtual-machine override does not specify `name`.
  - `executionParameters` ExecutionParameters, required: The execution settings for a bulk action.
    - `retryPolicy` RetryPolicy: The retry settings for a bulk action.
      - `retryCount` integer: The maximum number of retry attempts.
      - `retryWindowInMinutes` integer: The period, in minutes, during which Bulk Actions can retry the operation.
      - `onFailureAction` 'Unknown' | 'Start' | 'Deallocate' | 'Hibernate' | 'Create' | 'Delete': The type of operation performed by Bulk Actions.

## Response `200`

Azure operation completed successfully.

- CreateResourceOperationResponse: The result of a bulk create action.
  - `description` string, required: A description of the bulk action result.
  - `type` string, required: The type of resources targeted by the bulk action.
  - `location` string, required: Represents an Azure geography region where supported resource providers live.
  - `results` ResourceOperation[]: The result for each virtual machine.
    - `resourceId` string, arm-id: The virtual machine Azure resource ID.
    - `errorCode` string: A code that identifies the error for the virtual machine operation.
    - `errorDetails` string: A message that describes the error for the virtual machine operation.
    - `operation` ResourceOperationDetails: The status and settings for an operation on one virtual machine.
      - `operationId` string, required: The operation ID used to track the action for this virtual machine.
      - `resourceId` string, arm-id: The virtual machine's Azure resource ID.
      - `opType` 'Unknown' | 'Start' | 'Deallocate' | 'Hibernate' | 'Create' | 'Delete': The type of operation performed on the virtual machine.
      - `subscriptionId` string: The subscription ID associated with the bulk action.
      - `deadline` string, date-time: The requested deadline for the operation.
      - `deadlineType` 'Unknown' | 'InitiateAt' | 'CompleteBy': Specifies whether the deadline time indicates the time at which the operation should start or should be complete.
      - `state` 'Unknown' | 'PendingScheduling' | 'Scheduled' | 'PendingExecution' | 'Executing' | 'Succeeded' | 'Failed' | 'Cancelled' | 'Blocked': The current state of the operation.
      - `timezone` string: The time zone used to interpret the operation deadline.
      - `resourceOperationError` ResourceOperationError: An error that occurred while processing one virtual machine.
        - `errorCode` string, required: A code that identifies the error.
        - `errorDetails` string, required: A message that describes the error.
      - `fallbackOperationInfo` FallbackOperationInfo: Information about the fallback operation attempted after the requested operation did not succeed.
        - `lastOpType` 'Unknown' | 'Start' | 'Deallocate' | 'Hibernate' | 'Create' | 'Delete', required: The type of operation performed by Bulk Actions.
        - `status` string, required: The status of the additional operation.
        - `error` ResourceOperationError: An error that occurred while processing one virtual machine.
          - `errorCode` string, required: A code that identifies the error.
          - `errorDetails` string, required: A message that describes the error.
      - `completedAt` string, date-time: The date and time when the operation completed.
      - `retryPolicy` RetryPolicy: The retry settings for a bulk action.
        - `retryCount` integer: The maximum number of retry attempts.
        - `retryWindowInMinutes` integer: The period, in minutes, during which Bulk Actions can retry the operation.
        - `onFailureAction` 'Unknown' | 'Start' | 'Deallocate' | 'Hibernate' | 'Create' | 'Delete': The type of operation performed by Bulk Actions.

## Other responses

- `default`: An unexpected error response.

## Changes

- **2026-09-09** (2026-04-06-preview) `ec20e1928d2a`: 1 info
  - endpoint added
- **2026-07-13** (2026-04-06-preview) `a9a046e3af4e`: 1 breaking
  - api path removed without deprecation
- **2026-05-29** (2026-04-06-preview) `0af182ed1338`: 1 info
  - endpoint added
- **2026-04-16** (2026-04-06-preview) `1d3b494600fa`: 1 breaking
  - api path removed without deprecation

[Operation history](https://skmtc.dev/azure/apis/compute-microsoft-compute-bulkactions/changes/subscriptions/:subscriptionId/resourceGroups/:resourceGroupName/providers/Microsoft.Compute/locations/:location/virtualMachinesBulkCreate/post.md)

---

[API](https://skmtc.dev/azure/apis/compute-microsoft-compute-bulkactions.md) - [All operations](https://skmtc.dev/azure/apis/compute-microsoft-compute-bulkactions/llms.txt) - [OpenAPI document](https://skmtc.dev/azure/apis/compute-microsoft-compute-bulkactions/revisions/057e794e9c55?raw)
