openapi: 3.1.0 info: title: kgateway Kubernetes Gateway AIBackend GatewayExtension API description: kgateway is the most widely deployed gateway in Kubernetes for microservices and AI agents. It is a feature-rich, fast, and flexible Kubernetes-native ingress controller and next-generation API gateway built on top of Envoy proxy and the Kubernetes Gateway API. kgateway provides custom resource definitions (CRDs) under the gateway.kgateway.dev API group for configuring traffic policies, backends, direct responses, gateway extensions, gateway parameters, HTTP listener policies, and AI backends. These resources are managed through the Kubernetes API server. version: 2.1.0 contact: name: kgateway url: https://kgateway.dev license: name: Apache 2.0 url: https://github.com/kgateway-dev/kgateway/blob/main/LICENSE servers: - url: https://{kubernetes-api-server}/apis/gateway.kgateway.dev/v1alpha1 description: Kubernetes API Server - kgateway Custom Resources variables: kubernetes-api-server: default: kubernetes.default.svc description: The Kubernetes API server hostname security: - BearerAuth: [] tags: - name: GatewayExtension description: Integrate external services with a Gateway such as external auth, rate limiting, and external processing. Serves as a configuration bridge between kgateway and external services that extend Gateway functionality. paths: /namespaces/{namespace}/gatewayextensions: get: operationId: listGatewayExtensions summary: Kgateway List GatewayExtension resources description: List all GatewayExtension resources in the specified namespace. GatewayExtensions integrate external services with a Gateway. tags: - GatewayExtension parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/LabelSelector' - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Continue' responses: '200': description: Successfully retrieved list of GatewayExtension resources. content: application/json: schema: $ref: '#/components/schemas/GatewayExtensionList' '401': description: Unauthorized post: operationId: createGatewayExtension summary: Kgateway Create a GatewayExtension description: Create a GatewayExtension resource to integrate external services such as external auth, rate limiting, or external processing with a Gateway. tags: - GatewayExtension parameters: - $ref: '#/components/parameters/Namespace' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GatewayExtension' responses: '201': description: Successfully created GatewayExtension. content: application/json: schema: $ref: '#/components/schemas/GatewayExtension' '401': description: Unauthorized '409': description: Conflict - resource already exists /namespaces/{namespace}/gatewayextensions/{name}: get: operationId: getGatewayExtension summary: Kgateway Get a GatewayExtension description: Retrieve a specific GatewayExtension resource by name and namespace. tags: - GatewayExtension parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/Name' responses: '200': description: Successfully retrieved GatewayExtension. content: application/json: schema: $ref: '#/components/schemas/GatewayExtension' '401': description: Unauthorized '404': description: GatewayExtension not found put: operationId: replaceGatewayExtension summary: Kgateway Replace a GatewayExtension description: Replace a specific GatewayExtension resource. tags: - GatewayExtension parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/Name' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GatewayExtension' responses: '200': description: Successfully replaced GatewayExtension. content: application/json: schema: $ref: '#/components/schemas/GatewayExtension' '401': description: Unauthorized '404': description: GatewayExtension not found delete: operationId: deleteGatewayExtension summary: Kgateway Delete a GatewayExtension description: Delete a specific GatewayExtension resource. tags: - GatewayExtension parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/Name' responses: '200': description: Successfully deleted GatewayExtension. '401': description: Unauthorized '404': description: GatewayExtension not found components: parameters: Name: name: name in: path required: true description: The name of the resource. schema: type: string Namespace: name: namespace in: path required: true description: The Kubernetes namespace. schema: type: string Limit: name: limit in: query required: false description: Maximum number of resources to return. schema: type: integer Continue: name: continue in: query required: false description: Continue token for paginated list requests. schema: type: string LabelSelector: name: labelSelector in: query required: false description: A selector to restrict the list of returned objects by labels. schema: type: string schemas: ObjectMeta: type: object description: Standard Kubernetes object metadata. properties: name: type: string description: Name of the resource. namespace: type: string description: Namespace of the resource. labels: type: object additionalProperties: type: string description: Map of string keys and values for organizing resources. annotations: type: object additionalProperties: type: string description: Annotations for storing arbitrary metadata. resourceVersion: type: string description: An opaque value that represents the internal version of this object. creationTimestamp: type: string format: date-time description: Timestamp representing the server time when this object was created. GatewayExtension: type: object description: GatewayExtension integrates external services with a Gateway such as external auth, rate limiting, and external processing. properties: apiVersion: type: string enum: - gateway.kgateway.dev/v1alpha1 kind: type: string enum: - GatewayExtension metadata: $ref: '#/components/schemas/ObjectMeta' spec: type: object description: GatewayExtensionSpec defines the desired state of a GatewayExtension. properties: type: type: string description: Type of the gateway extension. enum: - ExtAuth - ExtProc - RateLimit extAuth: type: object description: External auth extension configuration. properties: grpcService: type: object properties: backendRef: type: object properties: name: type: string namespace: type: string port: type: integer extProc: type: object description: External processing extension configuration. properties: grpcService: type: object properties: backendRef: type: object properties: name: type: string namespace: type: string port: type: integer rateLimit: type: object description: Rate limit extension configuration. properties: grpcService: type: object properties: backendRef: type: object properties: name: type: string namespace: type: string port: type: integer status: type: object description: Status of the GatewayExtension. properties: conditions: type: array items: type: object properties: type: type: string status: type: string reason: type: string message: type: string lastTransitionTime: type: string format: date-time GatewayExtensionList: type: object description: List of GatewayExtension resources. properties: apiVersion: type: string kind: type: string enum: - GatewayExtensionList metadata: type: object properties: continue: type: string resourceVersion: type: string items: type: array items: $ref: '#/components/schemas/GatewayExtension' securitySchemes: BearerAuth: type: http scheme: bearer description: Kubernetes API bearer token authentication. Use a service account token or kubeconfig token. externalDocs: description: kgateway API Reference Documentation url: https://kgateway.dev/docs/envoy/latest/reference/api/