{
  "description": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n\n\t{\n\t  Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n\t  Ports:     [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n\t}\n\nThe resulting set of endpoints can be viewed as:\n\n\ta: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n\tb: [ 10.10.1.1:309, 10.10.2.2:309 ]",
  "properties": {
    "addresses": {
      "description": "IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.",
      "items": {
        "description": "EndpointAddress is a tuple that describes single IP address.",
        "properties": {
          "hostname": {
            "description": "The Hostname of this endpoint",
            "type": [
              "string",
              "null"
            ]
          },
          "ip": {
            "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.",
            "type": "string"
          },
          "nodeName": {
            "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.",
            "type": [
              "string",
              "null"
            ]
          },
          "targetRef": {
            "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
            "properties": {
              "apiVersion": {
                "description": "API version of the referent.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "fieldPath": {
                "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                "type": [
                  "string",
                  "null"
                ]
              },
              "namespace": {
                "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
                "type": [
                  "string",
                  "null"
                ]
              },
              "resourceVersion": {
                "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uid": {
                "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ],
            "x-kubernetes-map-type": "atomic"
          }
        },
        "required": [
          "ip"
        ],
        "type": [
          "object",
          "null"
        ],
        "x-kubernetes-map-type": "atomic"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "notReadyAddresses": {
      "description": "IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.",
      "items": {
        "description": "EndpointAddress is a tuple that describes single IP address.",
        "properties": {
          "hostname": {
            "description": "The Hostname of this endpoint",
            "type": [
              "string",
              "null"
            ]
          },
          "ip": {
            "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.",
            "type": "string"
          },
          "nodeName": {
            "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.",
            "type": [
              "string",
              "null"
            ]
          },
          "targetRef": {
            "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
            "properties": {
              "apiVersion": {
                "description": "API version of the referent.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "fieldPath": {
                "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                "type": [
                  "string",
                  "null"
                ]
              },
              "namespace": {
                "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
                "type": [
                  "string",
                  "null"
                ]
              },
              "resourceVersion": {
                "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uid": {
                "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ],
            "x-kubernetes-map-type": "atomic"
          }
        },
        "required": [
          "ip"
        ],
        "type": [
          "object",
          "null"
        ],
        "x-kubernetes-map-type": "atomic"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "ports": {
      "description": "Port numbers available on the related IP addresses.",
      "items": {
        "description": "EndpointPort is a tuple that describes a single port.",
        "properties": {
          "appProtocol": {
            "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "The name of this port.  This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined.",
            "type": [
              "string",
              "null"
            ]
          },
          "port": {
            "description": "The port number of the endpoint.",
            "format": "int32",
            "type": "integer"
          },
          "protocol": {
            "description": "The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n\n",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "port"
        ],
        "type": [
          "object",
          "null"
        ],
        "x-kubernetes-map-type": "atomic"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "type": "object",
  "$schema": "http://json-schema.org/schema#"
}