{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/AgentPoolProperties",
  "title": "AgentPoolProperties",
  "type": "object",
  "description": "Properties for the container service agent pool profile.",
  "properties": {
    "provisioningState": {
      "type": "string",
      "readOnly": true,
      "description": "The current deployment or provisioning state.",
      "example": "example_value"
    },
    "count": {
      "type": "integer",
      "format": "int32",
      "description": "Number of agents (VMs) to host docker containers. Allowed values must be in the range of 0 to 1000 (inclusive) for user pools and in the range of 1 to 1000 (inclusive) for system pools. The default value is 1.",
      "example": 10
    },
    "vmSize": {
      "type": "string",
      "description": "The size of the agent VMs.",
      "example": "example_value"
    },
    "osDiskSizeGB": {
      "type": "integer",
      "format": "int32",
      "minimum": 0,
      "maximum": 2048,
      "description": "OS Disk Size in GB.",
      "example": 10
    },
    "osDiskType": {
      "type": "string",
      "enum": [
        "Managed",
        "Ephemeral"
      ],
      "description": "The OS disk type.",
      "example": "Managed"
    },
    "kubeletDiskType": {
      "type": "string",
      "enum": [
        "OS",
        "Temporary"
      ],
      "description": "Kubelet disk type.",
      "example": "OS"
    },
    "maxPods": {
      "type": "integer",
      "format": "int32",
      "description": "The maximum number of pods that can run on a node.",
      "example": 10
    },
    "osType": {
      "type": "string",
      "enum": [
        "Linux",
        "Windows"
      ],
      "default": "Linux",
      "description": "The operating system type.",
      "example": "Linux"
    },
    "osSKU": {
      "type": "string",
      "enum": [
        "Ubuntu",
        "AzureLinux",
        "CBLMariner",
        "Windows2019",
        "Windows2022",
        "WindowsAnnual"
      ],
      "description": "Specifies the OS SKU used by the agent pool.",
      "example": "Ubuntu"
    },
    "type": {
      "type": "string",
      "enum": [
        "VirtualMachineScaleSets",
        "AvailabilitySet",
        "VirtualMachines"
      ],
      "description": "The type of Agent Pool.",
      "example": "VirtualMachineScaleSets"
    },
    "mode": {
      "type": "string",
      "enum": [
        "System",
        "User",
        "Gateway"
      ],
      "description": "A cluster must have at least one System agent pool at all times.",
      "example": "System"
    },
    "orchestratorVersion": {
      "type": "string",
      "description": "The version of Kubernetes running on the Agent Pool.",
      "example": "example_value"
    },
    "currentOrchestratorVersion": {
      "type": "string",
      "readOnly": true,
      "description": "The running Kubernetes version on the Agent Pool.",
      "example": "example_value"
    },
    "nodeImageVersion": {
      "type": "string",
      "readOnly": true,
      "description": "The version of node image.",
      "example": "example_value"
    },
    "enableAutoScaling": {
      "type": "boolean",
      "description": "Whether to enable auto-scaler.",
      "example": true
    },
    "minCount": {
      "type": "integer",
      "format": "int32",
      "description": "The minimum number of nodes for auto-scaling.",
      "example": 10
    },
    "maxCount": {
      "type": "integer",
      "format": "int32",
      "description": "The maximum number of nodes for auto-scaling.",
      "example": 10
    },
    "scaleSetPriority": {
      "type": "string",
      "enum": [
        "Spot",
        "Regular"
      ],
      "default": "Regular",
      "description": "The Virtual Machine Scale Set priority.",
      "example": "Spot"
    },
    "scaleSetEvictionPolicy": {
      "type": "string",
      "enum": [
        "Delete",
        "Deallocate"
      ],
      "default": "Delete",
      "description": "The Virtual Machine Scale Set eviction policy.",
      "example": "Delete"
    },
    "spotMaxPrice": {
      "type": "number",
      "format": "float",
      "description": "The maximum price for spot instances.",
      "example": 42.5
    },
    "scaleDownMode": {
      "type": "string",
      "enum": [
        "Delete",
        "Deallocate"
      ],
      "default": "Delete",
      "description": "Describes how VMs are added to or removed from Agent Pools.",
      "example": "Delete"
    },
    "vnetSubnetID": {
      "type": "string",
      "description": "The ID of the subnet for agent pool nodes.",
      "example": "500123"
    },
    "podSubnetID": {
      "type": "string",
      "description": "The ID of the subnet for pods.",
      "example": "500123"
    },
    "enableNodePublicIP": {
      "type": "boolean",
      "description": "Whether each node gets its own public IP.",
      "example": true
    },
    "nodePublicIPPrefixID": {
      "type": "string",
      "description": "The public IP prefix ID for the nodes.",
      "example": "500123"
    },
    "enableEncryptionAtHost": {
      "type": "boolean",
      "description": "Whether to enable host-based encryption.",
      "example": true
    },
    "enableFIPS": {
      "type": "boolean",
      "description": "Whether to use FIPS-enabled OS.",
      "example": true
    },
    "enableUltraSSD": {
      "type": "boolean",
      "description": "Whether to enable UltraSSD.",
      "example": true
    },
    "nodeLabels": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "The node labels to be persisted across all nodes.",
      "example": "example_value"
    },
    "nodeTaints": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The taints added to new nodes.",
      "example": []
    },
    "tags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "The tags to persist on the VMSS.",
      "example": "example_value"
    },
    "proximityPlacementGroupID": {
      "type": "string",
      "description": "The ID for Proximity Placement Group.",
      "example": "500123"
    },
    "upgradeSettings": {
      "$ref": "#/components/schemas/AgentPoolUpgradeSettings"
    },
    "powerState": {
      "$ref": "#/components/schemas/PowerState"
    },
    "availabilityZones": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The list of Availability zones to use for nodes.",
      "example": []
    },
    "creationData": {
      "$ref": "#/components/schemas/CreationData"
    },
    "workloadRuntime": {
      "type": "string",
      "enum": [
        "OCIContainer",
        "WasmWasi",
        "KataMshvVmIsolation"
      ],
      "description": "The type of workload a node can run.",
      "example": "OCIContainer"
    },
    "messageOfTheDay": {
      "type": "string",
      "description": "A base64-encoded message of the day for Linux nodes.",
      "example": "example_value"
    }
  }
}