{
  "description": "PolicyEndpoint is the Schema for the policyendpoints API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "PolicyEndpointSpec defines the desired state of PolicyEndpoint",
      "properties": {
        "egress": {
          "description": "Egress is the list of egress rules containing resolved network addresses",
          "items": {
            "description": "EndpointInfo defines the network endpoint information for the policy ingress/egress",
            "properties": {
              "cidr": {
                "description": "CIDR is the network address(s) of the endpoint",
                "type": "string"
              },
              "except": {
                "description": "Except is the exceptions to the CIDR ranges mentioned above.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "ports": {
                "description": "Ports is the list of ports",
                "items": {
                  "description": "Port contains information about the transport port/protocol",
                  "properties": {
                    "endPort": {
                      "description": "Endport specifies the port range port to endPort port must be defined and an integer, endPort > port",
                      "format": "int32",
                      "type": "integer"
                    },
                    "port": {
                      "description": "Port specifies the numerical port for the protocol. If empty applies to all ports",
                      "format": "int32",
                      "type": "integer"
                    },
                    "protocol": {
                      "default": "TCP",
                      "description": "Protocol specifies the transport protocol, default TCP",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "required": [
              "cidr"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "ingress": {
          "description": "Ingress is the list of ingress rules containing resolved network addresses",
          "items": {
            "description": "EndpointInfo defines the network endpoint information for the policy ingress/egress",
            "properties": {
              "cidr": {
                "description": "CIDR is the network address(s) of the endpoint",
                "type": "string"
              },
              "except": {
                "description": "Except is the exceptions to the CIDR ranges mentioned above.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "ports": {
                "description": "Ports is the list of ports",
                "items": {
                  "description": "Port contains information about the transport port/protocol",
                  "properties": {
                    "endPort": {
                      "description": "Endport specifies the port range port to endPort port must be defined and an integer, endPort > port",
                      "format": "int32",
                      "type": "integer"
                    },
                    "port": {
                      "description": "Port specifies the numerical port for the protocol. If empty applies to all ports",
                      "format": "int32",
                      "type": "integer"
                    },
                    "protocol": {
                      "default": "TCP",
                      "description": "Protocol specifies the transport protocol, default TCP",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "required": [
              "cidr"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "podIsolation": {
          "description": "PodIsolation specifies whether the pod needs to be isolated for a particular traffic direction Ingress or Egress, or both. If default isolation is not specified, and there are no ingress/egress rules, then the pod is not isolated from the point of view of this policy. This follows the NetworkPolicy spec.PolicyTypes.",
          "items": {
            "description": "PolicyType string describes the NetworkPolicy type This type is beta-level in 1.8",
            "type": "string"
          },
          "type": "array"
        },
        "podSelector": {
          "description": "PodSelector is the podSelector from the policy resource",
          "properties": {
            "matchExpressions": {
              "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
              "items": {
                "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                "properties": {
                  "key": {
                    "description": "key is the label key that the selector applies to.",
                    "type": "string"
                  },
                  "operator": {
                    "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                    "type": "string"
                  },
                  "values": {
                    "description": "values is 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. This array is replaced during a strategic merge patch.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "key",
                  "operator"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "matchLabels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
              "type": "object"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "podSelectorEndpoints": {
          "description": "PodSelectorEndpoints contains information about the pods matching the podSelector",
          "items": {
            "description": "PodEndpoint defines the summary information for the pods",
            "properties": {
              "hostIP": {
                "description": "HostIP is the IP address of the host the pod is currently running on",
                "type": "string"
              },
              "name": {
                "description": "Name is the pod name",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace is the pod namespace",
                "type": "string"
              },
              "podIP": {
                "description": "PodIP is the IP address of the pod",
                "type": "string"
              }
            },
            "required": [
              "hostIP",
              "name",
              "namespace",
              "podIP"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "policyRef": {
          "description": "PolicyRef is a reference to the Kubernetes NetworkPolicy resource.",
          "properties": {
            "name": {
              "description": "Name is the name of the Policy",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace is the namespace of the Policy",
              "type": "string"
            }
          },
          "required": [
            "name",
            "namespace"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "policyRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "PolicyEndpointStatus defines the observed state of PolicyEndpoint",
      "type": "object"
    }
  },
  "type": "object"
}
