Enabling local throttling

Local rate limiting can be enabled by adding rate limiting policies, which is defined in the policies.yaml file, to the OpenAPI definition. A rate limiting policy can be specified for a resource or an API using the x-wso2-throttling-tier OpenAPI extension. You need to define the policy (or policies) in the policies.yaml file, which is in the <MGW-project> directory. A set of policies are available by default. However, you can add custom policies to the file and refer to them by name via the OpenAPI definition. If you simultaneously define a throttling policy at the API level and the resource level, the API level policy will be applied as the API level policy will override the resource level policy.

The following sub sections explain as to how you can work with OpenAPI extensions to add custom API level and/or resource level throttling policies.

Defining a throttling policy for local throttling

WSO2 API Microgateway allows users to define,

  • Resource policies
  • Application policies
  • Subscription policies

in the policies.yaml file which is in the <MGW-project> directory.

The following is a sample on how you can define a throttling policy named 10kPerMin in the policies.yaml file.

Defining a throttling policy

- 10kPerMin:
    count: 10000
    unitTime: 1
    timeUnit: min

Adding an API level throttling policy

API level throttling policy

x-wso2-basePath: /petstore/v1
x-wso2-throttling-tier: 10kPerMin
x-wso2-production-endpoints:
   urls:
     - https://petstore.swagger.io/v2

Adding a resource level throttling policy

Resource level throttling policy

paths:
  "/pet/findByStatus":
    get:
      tags:
      - pet
      summary: Finds Pets by status
      description: Multiple status values can be provided with comma separated strings
      operationId: findPetsByStatus
      x-wso2-throttling-tier: 10kPerMin

For more information, you can find a sample OpenAPI definition with policies applied from here .

Top