{
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "backendRefs": {
          "description": "BackendRefs defines the backend(s) where matching requests should be sent.",
          "items": {
            "description": "This currently wraps the code gateway API BackendObjectReference type,\nleaving room for e.g.",
            "properties": {
              "group": {
                "default": "",
                "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".",
                "maxLength": 253,
                "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
                "type": "string"
              },
              "kind": {
                "default": "Service",
                "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".",
                "maxLength": 63,
                "minLength": 1,
                "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$",
                "type": "string"
              },
              "name": {
                "description": "Name is the name of the referent.",
                "maxLength": 253,
                "minLength": 1,
                "type": "string"
              },
              "namespace": {
                "description": "Namespace is the namespace of the backend. When unspecified, the local\nnamespace is inferred.",
                "maxLength": 63,
                "minLength": 1,
                "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                "type": "string"
              },
              "port": {
                "description": "Port specifies the destination port number to use for this resource.",
                "format": "int32",
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "name"
            ],
            "type": "object",
            "x-kubernetes-validations": [
              {
                "message": "Must have port for Service reference",
                "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true"
              }
            ],
            "additionalProperties": false
          },
          "maxItems": 16,
          "minItems": 1,
          "type": "array"
        },
        "filters": {
          "description": "Filters define the filters that are applied to Kafka trafic matching this route.",
          "items": {
            "properties": {
              "acl": {
                "description": "ACL defines a schema for a filter that enforce access controls on Kafka trafic.",
                "properties": {
                  "rules": {
                    "description": "Rules define a set of rules that can be use to group a set of resources together with\naccess...",
                    "items": {
                      "properties": {
                        "options": {
                          "additionalProperties": {
                            "description": "AnnotationValue is the value of an annotation in Gateway API.",
                            "maxLength": 4096,
                            "minLength": 0,
                            "type": "string"
                          },
                          "description": "Options allow to specify implementation specific behaviours\nfor a set of rules.",
                          "maxProperties": 16,
                          "type": "object"
                        },
                        "resources": {
                          "description": "A resource group together a type of matched resource and a set of operations\nto be granted by the...",
                          "items": {
                            "properties": {
                              "match": {
                                "description": "Match describes how to select the resource that will be subject to the access control.",
                                "properties": {
                                  "type": {
                                    "description": "Valid PathMatchType values, along with their support levels, are:\n\n* \"Exact\" Resources whose name...",
                                    "enum": [
                                      "Exact",
                                      "Prefix",
                                      "RegularExpression"
                                    ],
                                    "type": "string"
                                  },
                                  "value": {
                                    "description": "Value of the resource to match against.",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "value"
                                ],
                                "type": "object",
                                "additionalProperties": false
                              },
                              "operations": {
                                "description": "Operations specifies the set of operations / verbs to allow for the resource\nunder access control.",
                                "items": {
                                  "enum": [
                                    "Create",
                                    "Read",
                                    "Write",
                                    "Delete",
                                    "Alter",
                                    "AlterConfigs",
                                    "Describe",
                                    "DescribeConfigs",
                                    "ClusterAction"
                                  ],
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "type": {
                                "enum": [
                                  "Topic",
                                  "Cluster",
                                  "Group",
                                  "TransactionalIdentifier"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "operations",
                              "type"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "type": "array"
                        }
                      },
                      "required": [
                        "resources"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "maxItems": 16,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "rules"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "extensionRef": {
                "description": "LocalObjectReference identifies an API object within the namespace of the\nreferrer.",
                "properties": {
                  "group": {
                    "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".",
                    "maxLength": 253,
                    "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind is kind of the referent. For example \"HTTPRoute\" or \"Service\".",
                    "maxLength": 63,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the referent.",
                    "maxLength": 253,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "group",
                  "kind",
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": {
                "description": "Type identifies the type of filter to apply.",
                "enum": [
                  "ACL",
                  "ExtensionRef"
                ],
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "maxItems": 16,
          "type": "array"
        },
        "hostname": {
          "description": "Hostname is used to uniquely route clients to this API.",
          "maxLength": 253,
          "minLength": 1,
          "pattern": "^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
          "type": "string"
        },
        "options": {
          "additionalProperties": {
            "description": "AnnotationValue is the value of an annotation in Gateway API.",
            "maxLength": 4096,
            "minLength": 0,
            "type": "string"
          },
          "description": "Options are a list of key/value pairs to enable extended configuration specific\nto an",
          "maxProperties": 16,
          "type": "object"
        },
        "parentRefs": {
          "description": "ParentRefs references the resources (usually Gateways) that a Route wants\nto be attached to.",
          "items": {
            "description": "ParentReference identifies an API object (usually a Gateway) that can be considered\na parent of...",
            "properties": {
              "group": {
                "default": "gateway.networking.k8s.io",
                "description": "Group is the group of the referent.\nWhen unspecified, \"gateway.networking.k8s.io\" is inferred.",
                "maxLength": 253,
                "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
                "type": "string"
              },
              "kind": {
                "default": "Gateway",
                "description": "Kind is kind of the referent.",
                "maxLength": 63,
                "minLength": 1,
                "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$",
                "type": "string"
              },
              "name": {
                "description": "Name is the name of the referent.\n\nSupport: Core",
                "maxLength": 253,
                "minLength": 1,
                "type": "string"
              },
              "namespace": {
                "description": "Namespace is the namespace of the referent.",
                "maxLength": 63,
                "minLength": 1,
                "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                "type": "string"
              },
              "port": {
                "description": "Port is the network port this Route targets.",
                "format": "int32",
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              "sectionName": {
                "description": "SectionName is the name of a section within the target resource.",
                "maxLength": 253,
                "minLength": 1,
                "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
                "type": "string"
              }
            },
            "required": [
              "name"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "maxItems": 32,
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "properties": {
        "parents": {
          "description": "Parents is a list of parent resources (usually Gateways) that are\nassociated with the route, and...",
          "items": {
            "description": "RouteParentStatus describes the status of a route with respect to an\nassociated Parent.",
            "properties": {
              "conditions": {
                "description": "Conditions describes the status of the route with respect to the Gateway.",
                "items": {
                  "description": "Condition contains details for one aspect of the current state of this API Resource.",
                  "properties": {
                    "lastTransitionTime": {
                      "description": "lastTransitionTime is the last time the condition transitioned from one status to another.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "message": {
                      "description": "message is a human readable message indicating details about the transition.",
                      "maxLength": 32768,
                      "type": "string"
                    },
                    "observedGeneration": {
                      "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.",
                      "format": "int64",
                      "minimum": 0,
                      "type": "integer"
                    },
                    "reason": {
                      "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.",
                      "maxLength": 1024,
                      "minLength": 1,
                      "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
                      "type": "string"
                    },
                    "status": {
                      "description": "status of the condition, one of True, False, Unknown.",
                      "enum": [
                        "True",
                        "False",
                        "Unknown"
                      ],
                      "type": "string"
                    },
                    "type": {
                      "description": "type of condition in CamelCase or in foo.example.com/CamelCase.",
                      "maxLength": 316,
                      "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "lastTransitionTime",
                    "message",
                    "reason",
                    "status",
                    "type"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "maxItems": 8,
                "minItems": 1,
                "type": "array",
                "x-kubernetes-list-map-keys": [
                  "type"
                ],
                "x-kubernetes-list-type": "map"
              },
              "controllerName": {
                "description": "ControllerName is a domain/path string that indicates the name of the\ncontroller that wrote this...",
                "maxLength": 253,
                "minLength": 1,
                "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/[A-Za-z0-9\\/\\-._~%!$&'()*+,;=:]+$",
                "type": "string"
              },
              "parentRef": {
                "description": "ParentRef corresponds with a ParentRef in the spec that this\nRouteParentStatus struct describes the...",
                "properties": {
                  "group": {
                    "default": "gateway.networking.k8s.io",
                    "description": "Group is the group of the referent.\nWhen unspecified, \"gateway.networking.k8s.io\" is inferred.",
                    "maxLength": 253,
                    "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
                    "type": "string"
                  },
                  "kind": {
                    "default": "Gateway",
                    "description": "Kind is kind of the referent.",
                    "maxLength": 63,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the referent.\n\nSupport: Core",
                    "maxLength": 253,
                    "minLength": 1,
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace is the namespace of the referent.",
                    "maxLength": 63,
                    "minLength": 1,
                    "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                    "type": "string"
                  },
                  "port": {
                    "description": "Port is the network port this Route targets.",
                    "format": "int32",
                    "maximum": 65535,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "sectionName": {
                    "description": "SectionName is the name of a section within the target resource.",
                    "maxLength": 253,
                    "minLength": 1,
                    "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              }
            },
            "required": [
              "controllerName",
              "parentRef"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "maxItems": 32,
          "type": "array"
        }
      },
      "required": [
        "parents"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
