{
  "description": "IngressRouteUDP is a CRD implementation of a Traefik UDP Router.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "additionalProperties": false,
      "description": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.",
      "properties": {
        "entryPoints": {
          "description": "EntryPoints defines the list of entry point names to bind to.\nEntry points have to be configured in the static configuration.\nMore info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/\nDefault: all.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "routes": {
          "description": "Routes defines the list of routes.",
          "items": {
            "additionalProperties": false,
            "description": "RouteUDP holds the UDP route configuration.",
            "properties": {
              "services": {
                "description": "Services defines the list of UDP services.",
                "items": {
                  "additionalProperties": false,
                  "description": "ServiceUDP defines an upstream UDP service to proxy traffic to.",
                  "properties": {
                    "name": {
                      "description": "Name defines the name of the referenced Kubernetes Service.",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "Namespace defines the namespace of the referenced Kubernetes Service.",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "nativeLB": {
                      "description": "NativeLB controls, when creating the load-balancer,\nwhether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.\nThe Kubernetes Service itself does load-balance to the pods.\nBy default, NativeLB is false.",
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "nodePortLB": {
                      "description": "NodePortLB controls, when creating the load-balancer,\nwhether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.\nIt allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.\nBy default, NodePortLB is false.",
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "port": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.",
                      "x-kubernetes-int-or-string": true
                    },
                    "weight": {
                      "description": "Weight defines the weight used when balancing requests between multiple Kubernetes Service.",
                      "minimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "port"
                  ],
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "routes"
      ],
      "type": "object"
    }
  },
  "required": [
    "metadata",
    "spec"
  ],
  "type": "object"
}