{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/ManagedClusterAgentPoolProfile",
  "title": "ManagedClusterAgentPoolProfile",
  "type": "object",
  "description": "Profile for the container service agent pool.",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "The unique name of the agent pool profile in the context of the subscription and resource group.",
      "minLength": 1,
      "maxLength": 12,
      "pattern": "^[a-z][a-z0-9]{0,11}$",
      "example": "Example Title"
    },
    "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.",
      "example": 10
    },
    "vmSize": {
      "type": "string",
      "description": "The size of the agent VMs. Example: Standard_DS2_v2",
      "example": "example_value"
    },
    "osDiskSizeGB": {
      "type": "integer",
      "format": "int32",
      "minimum": 0,
      "maximum": 2048,
      "description": "OS Disk Size in GB to be used to specify the disk size for every machine in the master/agent pool.",
      "example": 10
    },
    "osDiskType": {
      "type": "string",
      "description": "The OS disk type to be used for machines in the agent pool.",
      "enum": [
        "Managed",
        "Ephemeral"
      ],
      "example": "Managed"
    },
    "kubeletDiskType": {
      "type": "string",
      "description": "Determines the placement of emptyDir volumes, container runtime data root, and Kubelet ephemeral storage.",
      "enum": [
        "OS",
        "Temporary"
      ],
      "example": "OS"
    },
    "maxPods": {
      "type": "integer",
      "format": "int32",
      "description": "The maximum number of pods that can run on a node.",
      "example": 10
    },
    "osType": {
      "type": "string",
      "description": "The operating system type.",
      "enum": [
        "Linux",
        "Windows"
      ],
      "default": "Linux",
      "example": "Linux"
    },
    "osSKU": {
      "type": "string",
      "description": "Specifies the OS SKU used by the agent pool.",
      "enum": [
        "Ubuntu",
        "AzureLinux",
        "CBLMariner",
        "Windows2019",
        "Windows2022",
        "WindowsAnnual"
      ],
      "example": "Ubuntu"
    },
    "type": {
      "type": "string",
      "description": "The type of Agent Pool.",
      "enum": [
        "VirtualMachineScaleSets",
        "AvailabilitySet",
        "VirtualMachines"
      ],
      "example": "VirtualMachineScaleSets"
    },
    "mode": {
      "type": "string",
      "description": "The mode of an agent pool. A cluster must have at least one System agent pool at all times.",
      "enum": [
        "System",
        "User",
        "Gateway"
      ],
      "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 version of Kubernetes the Agent Pool is running.",
      "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",
      "description": "The Virtual Machine Scale Set priority.",
      "enum": [
        "Spot",
        "Regular"
      ],
      "default": "Regular",
      "example": "Spot"
    },
    "scaleSetEvictionPolicy": {
      "type": "string",
      "description": "The Virtual Machine Scale Set eviction policy.",
      "enum": [
        "Delete",
        "Deallocate"
      ],
      "default": "Delete",
      "example": "Delete"
    },
    "spotMaxPrice": {
      "type": "number",
      "format": "float",
      "description": "The maximum price (in US Dollars) you are willing to pay for spot instances. Possible values are any decimal value greater than zero or -1 which indicates that default price is up-to on-demand.",
      "example": 42.5
    },
    "scaleDownMode": {
      "type": "string",
      "description": "Describes how VMs are added to or removed from Agent Pools.",
      "enum": [
        "Delete",
        "Deallocate"
      ],
      "default": "Delete",
      "example": "Delete"
    },
    "vnetSubnetID": {
      "type": "string",
      "description": "The ID of the subnet which agent pool nodes and optionally pods will join on startup.",
      "example": "500123"
    },
    "podSubnetID": {
      "type": "string",
      "description": "The ID of the subnet which pods will join when launched.",
      "example": "500123"
    },
    "enableNodePublicIP": {
      "type": "boolean",
      "description": "Whether each node is allocated its own public IP.",
      "example": true
    },
    "nodePublicIPPrefixID": {
      "type": "string",
      "description": "The public IP prefix ID for the nodes in the agent pool.",
      "example": "500123"
    },
    "enableEncryptionAtHost": {
      "type": "boolean",
      "description": "Whether to enable host-based OS and data drive encryption.",
      "example": true
    },
    "enableFIPS": {
      "type": "boolean",
      "description": "Whether to use a 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 in agent pool.",
      "example": "example_value"
    },
    "nodeTaints": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The taints added to new nodes during node pool create and scale.",
      "example": []
    },
    "tags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "The tags to be persisted on the agent pool virtual machine scale set.",
      "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. This can only be specified if the AgentPoolType property is VirtualMachineScaleSets.",
      "example": []
    },
    "creationData": {
      "$ref": "#/components/schemas/CreationData"
    },
    "workloadRuntime": {
      "type": "string",
      "description": "Determines the type of workload a node can run.",
      "enum": [
        "OCIContainer",
        "WasmWasi",
        "KataMshvVmIsolation"
      ],
      "example": "OCIContainer"
    },
    "messageOfTheDay": {
      "type": "string",
      "description": "A base64-encoded string which will be written to /etc/motd after decoding. Applicable only for Linux nodes.",
      "example": "example_value"
    }
  }
}