Kuma MeshRateLimit API

The MeshRateLimit API from Kuma — 2 operation(s) for meshratelimit.

OpenAPI Specification

kuma-meshratelimit-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kuma Dataplane MeshRateLimit API
  description: Kuma API
  version: v1alpha1
  x-ref-schema-name: DataplaneOverview
security:
- BasicAuth: []
- BearerAuth: []
- {}
tags:
- name: MeshRateLimit
paths:
  /meshes/{mesh}/meshratelimits/{name}:
    get:
      operationId: getMeshRateLimit
      summary: Returns MeshRateLimit entity
      tags:
      - MeshRateLimit
      parameters:
      - in: path
        name: mesh
        schema:
          type: string
        required: true
        description: name of the mesh
      - in: path
        name: name
        schema:
          type: string
        required: true
        description: name of the MeshRateLimit
      responses:
        '200':
          $ref: '#/components/responses/MeshRateLimitItem'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: putMeshRateLimit
      summary: Creates or Updates MeshRateLimit entity
      tags:
      - MeshRateLimit
      parameters:
      - in: path
        name: mesh
        schema:
          type: string
        required: true
        description: name of the mesh
      - in: path
        name: name
        schema:
          type: string
        required: true
        description: name of the MeshRateLimit
      requestBody:
        description: Put request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeshRateLimitItem'
      responses:
        '200':
          $ref: '#/components/responses/MeshRateLimitCreateOrUpdateSuccessResponse'
        '201':
          $ref: '#/components/responses/MeshRateLimitCreateOrUpdateSuccessResponse'
    delete:
      operationId: deleteMeshRateLimit
      summary: Deletes MeshRateLimit entity
      tags:
      - MeshRateLimit
      parameters:
      - in: path
        name: mesh
        schema:
          type: string
        required: true
        description: name of the mesh
      - in: path
        name: name
        schema:
          type: string
        required: true
        description: name of the MeshRateLimit
      responses:
        '200':
          $ref: '#/components/responses/MeshRateLimitDeleteSuccessResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /meshes/{mesh}/meshratelimits:
    get:
      operationId: getMeshRateLimitList
      summary: Returns a list of MeshRateLimit in the mesh.
      tags:
      - MeshRateLimit
      parameters:
      - in: query
        name: offset
        description: offset in the list of entities
        required: false
        schema:
          type: integer
        example: 0
      - in: query
        name: size
        description: the number of items per page
        required: false
        schema:
          type: integer
          default: 100
          maximum: 1000
          minimum: 1
      - in: query
        name: filter
        description: filter by labels when multiple filters are present, they are ANDed
        required: false
        schema:
          type: object
          properties:
            key:
              type: string
            value:
              type: string
        example:
          label.k8s.kuma.io/namespace: my-ns
      - in: path
        name: mesh
        schema:
          type: string
        required: true
        description: name of the mesh
      responses:
        '200':
          $ref: '#/components/responses/MeshRateLimitList'
components:
  responses:
    MeshRateLimitCreateOrUpdateSuccessResponse:
      description: Successful response
      content:
        application/json:
          schema:
            type: object
            properties:
              warnings:
                type: array
                readOnly: true
                description: 'warnings is a list of warning messages to return to the requesting Kuma API clients.

                  Warning messages describe a problem the client making the API request should correct or be aware of.

                  '
                items:
                  type: string
    NotFound:
      description: Not Found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/NotFoundError'
    MeshRateLimitItem:
      description: Successful response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MeshRateLimitItem'
    MeshRateLimitDeleteSuccessResponse:
      description: Successful response
      content:
        application/json:
          schema:
            type: object
    MeshRateLimitList:
      description: List
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/MeshRateLimitItem'
              total:
                type: number
                description: The total number of entities
              next:
                type: string
                description: URL to the next page
  schemas:
    MeshRateLimitItem:
      type: object
      description: MeshRateLimit protects services from being overwhelmed by limiting the rate of incoming requests or connections. It supports local rate limiting for both HTTP (requests per interval) and TCP (connections per interval) traffic with customizable response codes and headers for rate-limited requests.
      required:
      - type
      - name
      - spec
      properties:
        type:
          description: the type of the resource
          type: string
          enum:
          - MeshRateLimit
        mesh:
          description: Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources.
          type: string
          default: default
        kri:
          description: A unique identifier for this resource instance used by internal tooling and integrations. Typically derived from resource attributes and may be used for cross-references or indexing
          type: string
          readOnly: true
          example: kri_mrl_default_zone-east_kuma-demo_mypolicy1_
        name:
          description: Name of the Kuma resource
          type: string
        labels:
          additionalProperties:
            type: string
          description: The labels to help identity resources
          type: object
        spec:
          description: Spec is the specification of the Kuma MeshRateLimit resource.
          properties:
            from:
              description: From list makes a match between clients and corresponding configurations
              items:
                properties:
                  default:
                    description: 'Default is a configuration specific to the group of clients referenced in

                      ''targetRef'''
                    properties:
                      local:
                        description: LocalConf defines local http or/and tcp rate limit configuration
                        properties:
                          http:
                            description: 'LocalHTTP defines configuration of local HTTP rate limiting

                              https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter'
                            properties:
                              disabled:
                                description: Define if rate limiting should be disabled.
                                type: boolean
                              onRateLimit:
                                description: Describes the actions to take on a rate limit event
                                properties:
                                  headers:
                                    description: The Headers to be added to the HTTP response on a rate limit event
                                    properties:
                                      add:
                                        items:
                                          properties:
                                            name:
                                              maxLength: 256
                                              minLength: 1
                                              pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        maxItems: 16
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                      set:
                                        items:
                                          properties:
                                            name:
                                              maxLength: 256
                                              minLength: 1
                                              pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        maxItems: 16
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                    type: object
                                  status:
                                    description: The HTTP status code to be set on a rate limit event
                                    format: int32
                                    type: integer
                                type: object
                              requestRate:
                                description: Defines how many requests are allowed per interval.
                                properties:
                                  interval:
                                    description: The interval the number of units is accounted for.
                                    type: string
                                  num:
                                    description: 'Number of units per interval (depending on usage it can be a number of requests,

                                      or a number of connections).'
                                    format: int32
                                    type: integer
                                required:
                                - interval
                                - num
                                type: object
                            type: object
                          tcp:
                            description: 'LocalTCP defines confguration of local TCP rate limiting

                              https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter'
                            properties:
                              connectionRate:
                                description: Defines how many connections are allowed per interval.
                                properties:
                                  interval:
                                    description: The interval the number of units is accounted for.
                                    type: string
                                  num:
                                    description: 'Number of units per interval (depending on usage it can be a number of requests,

                                      or a number of connections).'
                                    format: int32
                                    type: integer
                                required:
                                - interval
                                - num
                                type: object
                              disabled:
                                description: 'Define if rate limiting should be disabled.

                                  Default: false'
                                type: boolean
                            type: object
                        type: object
                    type: object
                  targetRef:
                    description: 'TargetRef is a reference to the resource that represents a group of

                      clients.'
                    properties:
                      kind:
                        description: Kind of the referenced resource
                        enum:
                        - Mesh
                        - MeshSubset
                        - MeshGateway
                        - MeshService
                        - MeshExternalService
                        - MeshMultiZoneService
                        - MeshServiceSubset
                        - MeshHTTPRoute
                        - Dataplane
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: 'Labels are used to select group of MeshServices that match labels. Either Labels or

                          Name and Namespace can be used.'
                        type: object
                      mesh:
                        description: Mesh is reserved for future use to identify cross mesh resources.
                        type: string
                      name:
                        description: 'Name of the referenced resource. Can only be used with kinds: `MeshService`,

                          `MeshServiceSubset` and `MeshGatewayRoute`'
                        type: string
                      namespace:
                        description: 'Namespace specifies the namespace of target resource. If empty only resources in policy namespace

                          will be targeted.'
                        type: string
                      proxyTypes:
                        description: 'ProxyTypes specifies the data plane types that are subject to the policy. When not specified,

                          all data plane types are targeted by the policy.'
                        items:
                          enum:
                          - Sidecar
                          - Gateway
                          type: string
                        type: array
                      sectionName:
                        description: 'SectionName is used to target specific section of resource.

                          For example, you can target port from MeshService.ports[] by its name. Only traffic to this port will be affected.'
                        type: string
                      tags:
                        additionalProperties:
                          type: string
                        description: 'Tags used to select a subset of proxies by tags. Can only be used with kinds

                          `MeshSubset` and `MeshServiceSubset`'
                        type: object
                    required:
                    - kind
                    type: object
                required:
                - targetRef
                type: object
              type: array
            rules:
              description: 'Rules defines inbound rate limiting configurations. Currently limited to

                selecting all inbound traffic, as L7 matching is not yet implemented.'
              items:
                properties:
                  default:
                    description: Default contains configuration of the inbound rate limits
                    properties:
                      local:
                        description: LocalConf defines local http or/and tcp rate limit configuration
                        properties:
                          http:
                            description: 'LocalHTTP defines configuration of local HTTP rate limiting

                              https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter'
                            properties:
                              disabled:
                                description: Define if rate limiting should be disabled.
                                type: boolean
                              onRateLimit:
                                description: Describes the actions to take on a rate limit event
                                properties:
                                  headers:
                                    description: The Headers to be added to the HTTP response on a rate limit event
                                    properties:
                                      add:
                                        items:
                                          properties:
                                            name:
                                              maxLength: 256
                                              minLength: 1
                                              pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        maxItems: 16
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                      set:
                                        items:
                                          properties:
                                            name:
                                              maxLength: 256
                                              minLength: 1
                                              pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        maxItems: 16
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                    type: object
                                  status:
                                    description: The HTTP status code to be set on a rate limit event
                                    format: int32
                                    type: integer
                                type: object
                              requestRate:
                                description: Defines how many requests are allowed per interval.
                                properties:
                                  interval:
                                    description: The interval the number of units is accounted for.
                                    type: string
                                  num:
                                    description: 'Number of units per interval (depending on usage it can be a number of requests,

                                      or a number of connections).'
                                    format: int32
                                    type: integer
                                required:
                                - interval
                                - num
                                type: object
                            type: object
                          tcp:
                            description: 'LocalTCP defines confguration of local TCP rate limiting

                              https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter'
                            properties:
                              connectionRate:
                                description: Defines how many connections are allowed per interval.
                                properties:
                                  interval:
                                    description: The interval the number of units is accounted for.
                                    type: string
                                  num:
                                    description: 'Number of units per interval (depending on usage it can be a number of requests,

                                      or a number of connections).'
                                    format: int32
                                    type: integer
                                required:
                                - interval
                                - num
                                type: object
                              disabled:
                                description: 'Define if rate limiting should be disabled.

                                  Default: false'
                                type: boolean
                            type: object
                        type: object
                    type: object
                type: object
              type: array
            targetRef:
              description: 'TargetRef is a reference to the resource the policy takes an effect on.

                The resource could be either a real store object or virtual resource

                defined inplace.'
              properties:
                kind:
                  description: Kind of the referenced resource
                  enum:
                  - Mesh
                  - MeshSubset
                  - MeshGateway
                  - MeshService
                  - MeshExternalService
                  - MeshMultiZoneService
                  - MeshServiceSubset
                  - MeshHTTPRoute
                  - Dataplane
                  type: string
                labels:
                  additionalProperties:
                    type: string
                  description: 'Labels are used to select group of MeshServices that match labels. Either Labels or

                    Name and Namespace can be used.'
                  type: object
                mesh:
                  description: Mesh is reserved for future use to identify cross mesh resources.
                  type: string
                name:
                  description: 'Name of the referenced resource. Can only be used with kinds: `MeshService`,

                    `MeshServiceSubset` and `MeshGatewayRoute`'
                  type: string
                namespace:
                  description: 'Namespace specifies the namespace of target resource. If empty only resources in policy namespace

                    will be targeted.'
                  type: string
                proxyTypes:
                  description: 'ProxyTypes specifies the data plane types that are subject to the policy. When not specified,

                    all data plane types are targeted by the policy.'
                  items:
                    enum:
                    - Sidecar
                    - Gateway
                    type: string
                  type: array
                sectionName:
                  description: 'SectionName is used to target specific section of resource.

                    For example, you can target port from MeshService.ports[] by its name. Only traffic to this port will be affected.'
                  type: string
                tags:
                  additionalProperties:
                    type: string
                  description: 'Tags used to select a subset of proxies by tags. Can only be used with kinds

                    `MeshSubset` and `MeshServiceSubset`'
                  type: object
              required:
              - kind
              type: object
            to:
              description: To list makes a match between clients and corresponding configurations
              items:
                properties:
                  default:
                    description: 'Default is a configuration specific to the group of clients referenced in

                      ''targetRef'''
                    properties:
                      local:
                        description: LocalConf defines local http or/and tcp rate limit configuration
                        properties:
                          http:
                            description: 'LocalHTTP defines configuration of local HTTP rate limiting

                              https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter'
                            properties:
                              disabled:
                                description: Define if rate limiting should be disabled.
                                type: boolean
                              onRateLimit:
                                description: Describes the actions to take on a rate limit event
                                properties:
                                  headers:
                                    description: The Headers to be added to the HTTP response on a rate limit event
                                    properties:
                                      add:
                                        items:
                                          properties:
                                            name:
                                              maxLength: 256
                                              minLength: 1
                                              pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        maxItems: 16
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                      set:
                                        items:
                                          properties:
                                            name:
                                              maxLength: 256
                                              minLength: 1
                                              pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        maxItems: 16
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                    type: object
                                  status:
                                    description: The HTTP status code to be set on a rate limit event
                                    format: int32
                                    type: integer
                                type: object
                              requestRate:
                                description: Defines how many requests are allowed per interval.
                                properties:
                                  interval:
                                    description: The interval the number of units is accounted for.
                                    type: string
                                  num:
                                    description: 'Number of units per interval (depending on usage it can be a number of requests,

                                      or a number of connections).'
                                    format: int32
                                    type: integer
                                required:
                                - interval
                                - num
                                type: object
                            type: object
                          tcp:
                            description: 'LocalTCP defines confguration of local TCP rate limiting

                              https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter'
                            properties:
                              connectionRate:
                                description: Defines how many connections are allowed per interval.
                                properties:
                                  interval:
                                    description: The interval the number of units is accounted for.
                                    type: string
                                  num:
                                    description: 'Number of units per interval (depending on usage it can be a number of requests,

                                      or a number of connections).'
                                    format: int32
                                    type: integer
                                required:
                                - interval
                                - num
                                type: object
                              disabled:
                                description: 'Define if rate limiting should be disabled.

                                  Default: false'
                                type: boolean
                            type: object
                        type: object
                    type: object
                  targetRef:
                    description: 'TargetRef is a reference to the resource that represents a group of

                      clients.'
                    properties:
                      kind:
                        description: Kind of the referenced resource
                        enum:
                        - Mesh
                        - MeshSubset
                        - MeshGateway
                        - MeshService
                        - MeshExternalService
                        - MeshMultiZoneService
                        - MeshServiceSubset
                        - MeshHTTPRoute
                        - Dataplane
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: 'Labels are used to select group of MeshServices that match labels. Either Labels or

                          Name and Namespace can be used.'
                        type: object
                      mesh:
                        description: Mesh is reserved for future use to identify cross mesh resources.
                        type: string
                      name:
                        description: 'Name of the referenced resource. Can only be used with kinds: `MeshService`,

                          `MeshServiceSubset` and `MeshGateway

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kuma/refs/heads/main/openapi/kuma-meshratelimit-api-openapi.yml