{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/broadcom/blob/main/json-schema/broadcom-virtual-machine-schema.json",
  "title": "Broadcom Virtual Machine",
  "description": "A Virtual Machine represents a software-based compute instance running on a vSphere host, with configurable CPU, memory, storage, and network resources.",
  "type": "object",
  "properties": {
    "vm": {
      "type": "string",
      "description": "The unique identifier of the virtual machine."
    },
    "name": {
      "type": "string",
      "description": "The display name of the virtual machine."
    },
    "power_state": {
      "type": "string",
      "enum": [
        "POWERED_ON",
        "POWERED_OFF",
        "SUSPENDED"
      ],
      "description": "The current power state of the virtual machine."
    },
    "cpu_count": {
      "type": "integer",
      "description": "The number of virtual CPUs allocated to the virtual machine."
    },
    "memory_size_MiB": {
      "type": "integer",
      "description": "The memory size in mebibytes allocated to the virtual machine."
    },
    "guest_OS": {
      "type": "string",
      "description": "The guest operating system identifier."
    },
    "hardware": {
      "type": "object",
      "description": "Hardware configuration of the virtual machine.",
      "properties": {
        "version": {
          "type": "string",
          "description": "The virtual hardware version."
        },
        "upgrade_policy": {
          "type": "string",
          "enum": [
            "NEVER",
            "AFTER_CLEAN_SHUTDOWN",
            "ALWAYS"
          ],
          "description": "The upgrade policy for virtual hardware."
        }
      }
    },
    "disks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The identifier of the virtual disk."
          },
          "capacity": {
            "type": "integer",
            "description": "The capacity of the disk in bytes."
          },
          "type": {
            "type": "string",
            "enum": [
              "SCSI",
              "SATA",
              "IDE",
              "NVME"
            ],
            "description": "The type of host bus adapter the disk is connected to."
          }
        }
      },
      "description": "The list of virtual disks attached to the virtual machine."
    },
    "nics": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The identifier of the virtual NIC."
          },
          "mac_address": {
            "type": "string",
            "description": "The MAC address of the NIC."
          },
          "backing_type": {
            "type": "string",
            "description": "The backing type for the virtual NIC."
          },
          "state": {
            "type": "string",
            "enum": [
              "CONNECTED",
              "NOT_CONNECTED"
            ],
            "description": "The connection state of the NIC."
          }
        }
      },
      "description": "The list of virtual network interfaces."
    },
    "boot": {
      "type": "object",
      "description": "Boot configuration for the virtual machine.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "BIOS",
            "EFI"
          ],
          "description": "The firmware type used for booting."
        },
        "delay": {
          "type": "integer",
          "description": "Boot delay in milliseconds."
        }
      }
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags associated with the virtual machine."
    }
  }
}
