Throttling in BSS API
Added by Vidyashri Hegde | Edited by Vidyashri Hegde on September 29, 2016
Rate this article 1 starsRate this article 2 starsRate this article 3 starsRate this article 4 starsRate this article 5 stars

This explains the throttling used in BSS API

Connections Cloud is a shared environment between end users, administrators and background tasks or API's. To ensure fast response times for each component,resources need to be shared without a single element overwhelming the system. To keep the user experience quick and responsive throttling  is put in place for BSS APIs.Throttling will limit number of requests per customer per hour.Once this limit is reached API call will return HTTP status code of 403.

Customer can verify the throttling limit for each API request.
The response for each API request will have additional headers giving details on the throttling limit, usage and the time when the counter is reset.
X-Throttle-Limit             - Total throttle points this customer id can use within 60 minutes (default 2 million)
X-Throttle-Used             - Utilized throttle points in the 60 minute time slot.
X-Throttle-ResetDuration    - Time interval(in millisec) after which the throttling values are being reset to 0.If the limit for a customer was reached,they can do more requests after this time period.The default is one hour.


If "X-Throttle-Used" is greater than "X-Throttle-Limit", it will return a 403 HTTP response code and reject the request.

Sample header output :
HTTP/1.1 200 OK
content-language: en-US
content-type: text/plain; charset=UTF-8
date: Wed, 27 Jul 2016 10:26:52 GMT
p3p: CP="NON CUR OTPi OUR NOR UNI"
transfer-encoding: chunked
x-throttle-limit: 2000000
x-throttle-used: 161

cache-control: no-cache, no-store, private, must-revalidate
total_records: 0
x-powered-by: Servlet/3.0
pragma: no-cache
x-throttle-resetduration: 1469615392442
Set-Cookie: BIGipServerCPNGBSS-BSSUI-9080-fe=3138388234.30755.0000; Path=/
Set-Cookie: BIGipServerCPNGBSS-WebSEAL-80-fe=1409810698.20480.0000; path=/
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Padding: zzzzz

The current settings used for throttling  (subject to change at any time):
{
    "settings": {
        "maxSystemWeight": 10000000,
        "resetDuration": 3600000
    },
    "default": {
        "limit": 2000000,
        "/": [ { "weight": 140 } ],
        "/resource/customer": [
            { "weight": 6736, "method": "DELETE" },
            { "weight": 111, "method": "GET" },
            { "weight": 791, "method": "POST" }
        ],
        "/resource/subscriber": [
            { "weight": 880, "method": "DELETE" },
            { "weight": 161, "method": "GET" },
            { "weight": 1074, "method": "POST" }
        ],
        "/resource/subscription": [
            { "weight": 3819, "method": "DELETE" },
            { "weight": 77, "method": "GET" },
            { "weight": 4669, "method": "POST" }
        ],
        "/service/authentication": [
            { "weight": 163 }
        ],
        "/service/authentication/changepassword": [
            { "weight": 402 }
        ],
        "/service/authentication/getrolelist": [
            { "weight": 77 }
        ]
    }
}
Description of the throttling fields:
Settings: These are the environment level parameter used for throttling
        maxSystemWeight : Total number of accumulated time units the environment can handle (initially set to a fixed value of 10 Million).
        resetDuration:  Specifies the time interval after which the throttling values are being reset to 0,

default :
This section contains the “default” values which applies to all customers, unless a customer (specified by customer id) has specific settings for them.
               limit :This value specifies the maximum “weight” a customer can use in a one hour interval
               url : This key contains an array of json objects with following available attributes:
                     weight (required) - The weight value for this particular url
                     method (optional) - The HTTP Method this weight value applies to If the “method” is specified, then the weight value only applies for the given HTTP Method. If it is not available, then the “weight” value is used for all of the HTTP method types.