Emissary-Ingress RateLimitService API

Operations for managing RateLimitService custom resources that configure integration with external rate limiting services compatible with the Envoy rate limit API.

OpenAPI Specification

emissary-ingress-ratelimitservice-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Emissary-Ingress Configuration AuthService RateLimitService API
  description: Emissary-Ingress is a CNCF incubating Kubernetes-native API gateway and ingress controller built on the Envoy proxy. It is configured through Kubernetes Custom Resource Definitions (CRDs) including Mapping for request routing, Host for domain and TLS management, TLSContext for TLS termination settings, RateLimitService for delegating rate limiting to external services, and AuthService for external authentication. All resources are managed through the Kubernetes API server using standard CRUD operations.
  version: 3.9.0
  contact:
    name: Emissary-Ingress Community
    url: https://www.getambassador.io/community
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://{kubernetes-api-server}
  description: Kubernetes API server
  variables:
    kubernetes-api-server:
      default: localhost:6443
      description: Address of the Kubernetes API server
tags:
- name: RateLimitService
  description: Operations for managing RateLimitService custom resources that configure integration with external rate limiting services compatible with the Envoy rate limit API.
paths:
  /apis/getambassador.io/v3alpha1/namespaces/{namespace}/ratelimitservices:
    get:
      operationId: listNamespacedRateLimitService
      summary: Emissary-Ingress List RateLimitService resources in a namespace
      description: Returns all RateLimitService custom resources in the specified namespace. These resources configure integration with external rate limiting services that implement the Envoy rate limit gRPC API.
      tags:
      - RateLimitService
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/labelSelector'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/continueToken'
      responses:
        '200':
          description: Successfully retrieved list of RateLimitService resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitServiceList'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      operationId: createNamespacedRateLimitService
      summary: Emissary-Ingress Create a RateLimitService resource
      description: Creates a new RateLimitService custom resource pointing to an external rate limiting service. Emissary-Ingress will consult this service for rate limit decisions on all requests that include rate limit labels in their Mapping configuration.
      tags:
      - RateLimitService
      parameters:
      - $ref: '#/components/parameters/namespace'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RateLimitService'
      responses:
        '201':
          description: RateLimitService resource created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitService'
        '400':
          description: Invalid RateLimitService specification
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
components:
  schemas:
    RateLimitServiceSpec:
      type: object
      description: Specification for the RateLimitService.
      required:
      - service
      properties:
        service:
          type: string
          description: Name (and optional port) of the Kubernetes service implementing the Envoy rate limit gRPC API.
          example: rate-limit-service:8081
        protocol_version:
          type: string
          description: Version of the Envoy rate limit gRPC protocol to use.
          enum:
          - v2
          - v3
          default: v2
        timeout_ms:
          type: integer
          description: Timeout in milliseconds for rate limit service calls. Requests will proceed if the rate limit service times out.
          minimum: 0
          default: 20
        grpc_service:
          type: object
          description: Advanced gRPC service configuration.
          properties:
            target_uri:
              type: string
              description: Target URI for the gRPC rate limit service.
    ObjectMeta:
      type: object
      description: Standard Kubernetes object metadata.
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the resource, unique within the namespace.
          maxLength: 253
        namespace:
          type: string
          description: Namespace the resource belongs to.
        labels:
          type: object
          additionalProperties:
            type: string
          description: Map of string keys and values for organizing resources.
        annotations:
          type: object
          additionalProperties:
            type: string
          description: Map of non-identifying metadata for the resource.
        resourceVersion:
          type: string
          description: Opaque value used for optimistic concurrency control. Must be provided on update and delete operations.
        generation:
          type: integer
          format: int64
          description: Monotonically increasing sequence number for desired state changes.
        uid:
          type: string
          description: Unique identifier assigned by the Kubernetes system.
        creationTimestamp:
          type: string
          format: date-time
          description: Timestamp when the resource was created.
    RateLimitService:
      type: object
      description: Emissary-Ingress RateLimitService custom resource configuring integration with an external rate limiting service. The service must implement the Envoy rate limit gRPC API. Only one RateLimitService can be active at a time.
      required:
      - apiVersion
      - kind
      - metadata
      - spec
      properties:
        apiVersion:
          type: string
          description: API version of the resource.
          enum:
          - getambassador.io/v3alpha1
        kind:
          type: string
          description: Resource kind.
          enum:
          - RateLimitService
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          $ref: '#/components/schemas/RateLimitServiceSpec'
    RateLimitServiceList:
      type: object
      description: List of RateLimitService resources.
      required:
      - apiVersion
      - kind
      - items
      properties:
        apiVersion:
          type: string
        kind:
          type: string
          enum:
          - RateLimitServiceList
        metadata:
          type: object
        items:
          type: array
          description: List of RateLimitService resources.
          items:
            $ref: '#/components/schemas/RateLimitService'
  parameters:
    namespace:
      name: namespace
      in: path
      required: true
      description: The Kubernetes namespace of the resource.
      schema:
        type: string
    continueToken:
      name: continue
      in: query
      required: false
      description: A continuation token for paginating through large result sets, returned from a previous list call.
      schema:
        type: string
    labelSelector:
      name: labelSelector
      in: query
      required: false
      description: A selector to restrict the list of returned resources by their labels. Defaults to everything.
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of responses to return per page. If there are additional results, a continue token is returned.
      schema:
        type: integer
        minimum: 1
externalDocs:
  description: Emissary-Ingress Documentation
  url: https://www.getambassador.io/docs/emissary/