Pagination

The page and size query parameters are supported by all List/Get API for Pagination.

  • page — this specifies the page number.
  • size — this specifies the page size. The page and size are optional parameters. The default values for page and size are 0 and 10, respectively.

NOTE: The max page size supported and defined in API Spec is 200 for all List/Get API.

All List/Get API provide the pageinfo JSON object as part of the response with the following data:

  • totalCount — total number of elements found for the given query/filtering criteria
  • page — current page number
  • size — page size
  • count — number of elements in current page

Rate Limit

Per Organization

  • The Operations Dashboard API is limited to 5 requests per second, per organization.
  • A concurrency limit of 5 concurrent requests per IP is enforced.

Response Codes

  • A 429 status code returns when the rate limit is exceeded, with the Retry-After header.
  • When an application exceeds the rate limit, the following message returns in the response body:
{
  "errors": ["Too Many Requests"] 
} 

Common Causes

Rate limiting can occur for a variety of reasons. Some of the common causes are the following:

  • Running high-volume API monitoring tasks in realtime can overthrottle the system and lead to the 429 errors.
  • Scripts that run with little to no maintenance can degrade the performance of your organization's API requests and use up the quota.

Tips to avoid being Rate Limited

Utilize the Retry-After header and backoff to minimize compounded rate limit issues. Ensure that if the limit is exceeded, an appropriate action is being taken to handle the 429 responses.

Handling Limiting Gracefully

If the defined rate limit is exceeded, the Operations Dashboard API replies with the 429 (rate limit exceeded) error code. This response will also return a Retry-After header, indicating how long the client should wait before making a follow-up request.

  • The Retry-After key contains the number of seconds the client should wait.
  • Expect to backoff for 1 - 2 seconds if the limit is exceeded. You may have to wait longer if a large number of requests were made within this time frame. A simple example which minimizes rate limit errors:
response = requests.request("GET", url, headers=headers)
if response.status_code == 200:
    # Success logic
elif response.status_code == 429:
    time.sleep(int(response.headers["Retry-After"]))
else:
    # Handle other response codes