{
  "jsonSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "VMware vCenter Server collector configuration.",
    "type": "object",
    "properties": {
      "update_every": {
        "title": "Update every",
        "description": "Data collection interval, measured in seconds.",
        "type": "integer",
        "minimum": 1,
        "default": 20
      },
      "url": {
        "title": "URL",
        "description": "The base URL of the VMware vCenter Server.",
        "type": "string",
        "format": "uri"
      },
      "timeout": {
        "title": "Timeout",
        "description": "The timeout in seconds for the HTTP request.",
        "type": "number",
        "minimum": 0.5,
        "default": 20
      },
      "discovery_interval": {
        "title": "Discovery interval",
        "description": "Hosts and VMs discovery interval in seconds.",
        "type": "number",
        "minimum": 60,
        "default": 300
      },
      "not_follow_redirects": {
        "title": "Not follow redirects",
        "description": "If set, the client will not follow HTTP redirects automatically.",
        "type": "boolean"
      },
      "vnode": {
        "title": "Vnode",
        "description": "Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes).",
        "type": "string"
      },
      "host_include": {
        "title": "Host selectors",
        "description": "Configuration for monitoring specific hosts. The selector format follows the pattern `/Datacenter/Cluster/Host`, where each value can be set using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme).",
        "type": [
          "array",
          "null"
        ],
        "uniqueItems": true,
        "items": {
          "title": "Host selector",
          "description": "",
          "type": "string",
          "default": "/*/*/*",
          "pattern": "^$|^/"
        },
        "default": [
          "/*"
        ]
      },
      "vm_include": {
        "title": "Virtual machine selectors",
        "description": "Configuration for monitoring specific virtual machines. The selector format follows the pattern `/Datacenter/Cluster/Host/VM`, where each value can be set using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme).",
        "type": [
          "array",
          "null"
        ],
        "uniqueItems": true,
        "items": {
          "title": "VM selector",
          "description": "",
          "type": "string",
          "default": "/*/*/*/*",
          "pattern": "^$|^/"
        },
        "default": [
          "/*"
        ]
      },
      "username": {
        "title": "Username",
        "description": "The username for basic authentication.",
        "type": "string",
        "sensitive": true
      },
      "password": {
        "title": "Password",
        "description": "The password for basic authentication.",
        "type": "string",
        "sensitive": true
      },
      "proxy_url": {
        "title": "Proxy URL",
        "description": "The URL of the proxy server.",
        "type": "string"
      },
      "proxy_username": {
        "title": "Proxy username",
        "description": "The username for proxy authentication.",
        "type": "string",
        "sensitive": true
      },
      "proxy_password": {
        "title": "Proxy password",
        "description": "The password for proxy authentication.",
        "type": "string",
        "sensitive": true
      },
      "headers": {
        "title": "Headers",
        "description": "Additional HTTP headers to include in the request.",
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": {
          "type": "string"
        }
      },
      "tls_skip_verify": {
        "title": "Skip TLS verification",
        "description": "If set, TLS certificate verification will be skipped.",
        "type": "boolean"
      },
      "tls_ca": {
        "title": "TLS CA",
        "description": "The path to the CA certificate file for TLS verification.",
        "type": "string",
        "pattern": "^$|^/"
      },
      "tls_cert": {
        "title": "TLS certificate",
        "description": "The path to the client certificate file for TLS authentication.",
        "type": "string",
        "pattern": "^$|^/"
      },
      "tls_key": {
        "title": "TLS key",
        "description": "The path to the client key file for TLS authentication.",
        "type": "string",
        "pattern": "^$|^/"
      },
      "body": {
        "title": "Body",
        "type": "string"
      },
      "method": {
        "title": "Method",
        "type": "string"
      }
    },
    "required": [
      "url",
      "username",
      "password",
      "host_include",
      "vm_include"
    ],
    "patternProperties": {
      "^name$": {}
    }
  },
  "uiSchema": {
    "uiOptions": {
      "fullPage": true
    },
    "ui:flavour": "tabs",
    "ui:options": {
      "tabs": [
        {
          "title": "Base",
          "fields": [
            "update_every",
            "url",
            "timeout",
            "discovery_interval",
            "not_follow_redirects",
            "vnode"
          ]
        },
        {
          "title": "Hosts & VMs selector",
          "fields": [
            "host_include",
            "vm_include"
          ]
        },
        {
          "title": "Auth",
          "fields": [
            "username",
            "password"
          ]
        },
        {
          "title": "TLS",
          "fields": [
            "tls_skip_verify",
            "tls_ca",
            "tls_cert",
            "tls_key"
          ]
        },
        {
          "title": "Proxy",
          "fields": [
            "proxy_url",
            "proxy_username",
            "proxy_password"
          ]
        },
        {
          "title": "Headers",
          "fields": [
            "headers"
          ]
        }
      ]
    },
    "body": {
      "ui:widget": "hidden"
    },
    "method": {
      "ui:widget": "hidden"
    },
    "vnode": {
      "ui:placeholder": "To use this option, first create a Virtual Node and then reference its name here."
    },
    "update_every": {
      "ui:help": "**Important**: vSphere generates real-time statistics every 20 seconds. Setting this value lower won't improve data accuracy. For larger vSphere deployments, consider increasing this value to ensure complete data collection during each cycle. To find the optimal value, run the collector in debug mode and see how long it takes to collect metrics."
    },
    "url": {
      "ui:placeholder": "https://203.0.113.0"
    },
    "timeout": {
      "ui:help": "Accepts decimals for precise control (e.g., type 1.5 for 1.5 seconds)."
    },
    "host_include": {
      "ui:listFlavour": "list"
    },
    "vm_include": {
      "ui:listFlavour": "list"
    },
    "username": {
      "ui:placeholder": "admin@vsphere.local",
      "ui:widget": "password"
    },
    "proxy_username": {
      "ui:widget": "password"
    },
    "password": {
      "ui:widget": "password"
    },
    "proxy_password": {
      "ui:widget": "password"
    }
  }
}
