{
  "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.",
  "properties": {
    "matchExpressions": {
      "description": "A list of node selector requirements by node's labels.",
      "items": {
        "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
        "properties": {
          "key": {
            "description": "The label key that the selector applies to.",
            "type": "string"
          },
          "operator": {
            "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.",
            "type": "string"
          },
          "values": {
            "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
            "items": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ],
            "x-kubernetes-list-type": "atomic"
          }
        },
        "required": [
          "key",
          "operator"
        ],
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": false
      },
      "type": [
        "array",
        "null"
      ],
      "x-kubernetes-list-type": "atomic"
    },
    "matchFields": {
      "description": "A list of node selector requirements by node's fields.",
      "items": {
        "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
        "properties": {
          "key": {
            "description": "The label key that the selector applies to.",
            "type": "string"
          },
          "operator": {
            "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.",
            "type": "string"
          },
          "values": {
            "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
            "items": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ],
            "x-kubernetes-list-type": "atomic"
          }
        },
        "required": [
          "key",
          "operator"
        ],
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": false
      },
      "type": [
        "array",
        "null"
      ],
      "x-kubernetes-list-type": "atomic"
    }
  },
  "type": "object",
  "x-kubernetes-map-type": "atomic",
  "additionalProperties": false,
  "$schema": "http://json-schema.org/schema#"
}