{
  "description": "ServicePort contains information on service's port.",
  "properties": {
    "appProtocol": {
      "description": "The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either:\n\n* Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names).\n\n* Kubernetes-defined prefixed names:\n  * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\n  * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\n  * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\n\n* Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.",
      "type": [
        "string",
        "null"
      ]
    },
    "name": {
      "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.",
      "type": [
        "string",
        "null"
      ]
    },
    "nodePort": {
      "description": "The port on each node on which this service is exposed when type is NodePort or LoadBalancer.  Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail.  If not specified, a port will be allocated if this Service requires one.  If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport",
      "format": "int32",
      "type": [
        "integer",
        "null"
      ]
    },
    "port": {
      "description": "The port that will be exposed by this service.",
      "format": "int32",
      "type": [
        "integer",
        "null"
      ]
    },
    "protocol": {
      "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.",
      "type": [
        "string",
        "null"
      ]
    },
    "targetPort": {
      "oneOf": [
        {
          "type": [
            "string",
            "null"
          ]
        },
        {
          "type": [
            "integer",
            "null"
          ]
        }
      ]
    }
  },
  "required": [
    "port"
  ],
  "type": "object",
  "additionalProperties": false,
  "$schema": "http://json-schema.org/schema#"
}