Update Configuration - Deprecated

This article explains the legacy version of Rate Limiting that underwent end-of-life on June 30, 2021. Our new version of WAF expands upon all of the capabilities offered by WAF (Legacy) and Rate Limiting (Legacy) with a simplified and centralized setup. Please upgrade to the latest version of WAF at your earliest convenience.

This deprecated endpoint was discontinuedIdentifies an endpoint that is no longer in service. This type of endpoint should not be used. All scripts that include this type of endpoint must be updated to use a different endpoint. on 12/9/2019. If you have not already updated your scripts and applications to leverage the Get Configuration (Version 1.0) and Update Configuration (Version 1.0) endpoints, then we strongly encourage you to do so immediately.

WAF Essential cannot be configured via our APIs. However, you may leverage our APIs to retrieve WAF and Rate Limiting event log data.

Updates the entire rate limiting configuration.

Recommended Update Procedure:

The recommended procedure for fine-tuning a rate limiting configuration is outlined below.

  1. Use the Get Configuration endpoint to retrieve the entire configuration.
  2. Modify the response of the Get Configuration endpoint as needed.
  3. Set the request body of the Update Configuration endpoint to the data updated in step 2.

Request

A request to update the rate limiting configuration is described below.

HTTP Method Request URI

POST

https://api.edgecast.com/v2/mcc/customers/AccountNumber/defend/rate_limiting/config

Define the following term when submitting the above request:

VariableA variable represents a value that must be replaced. A variable consists of either a URL segment (e.g., "0001" in /0001/) or a query string value (e.g., "3" in mediaTypes=3).

Description

AccountNumber

Required

Replace this variable with a customer account number. This account number may be found in the upper right-hand corner of the MCC.

Request Headers

This endpointIdentifies a request's connection point to our REST API service. only takes advantage of common request headers.

Request Body

Pass the following request body parameters:

Name Data Type Description
customer_id

String

Identifies a customer by account number.

enabled_date

String

Identifies the date on which the Rate Limiting configuration was last modified.

This request parameter is automatically set by the system whenever a change is applied to the configuration. As a result, this parameter will be ignored.

Format:

YYYY-MM-DDThh:mm:ss:ffffffZ

Example:

2024-06-30T20:42:09.330793Z

The above value represents June 30th, 2024 at 8:42 p.m. UTC.

For more information on date/time format, please refer to Report Date/Time Format.

id

String

Identifies the current version of the Rate Limiting configuration by a system-defined alphanumeric ID.

Example:

12345678-90ab-cdef-ghij-klmnopqrstuvwxyz1

name

Required

String

Defines a name for the Rate Limiting configuration.

This name is not exposed in the user interface.

tuples

Required

Array

Defines the set of rules through which Rate Limiting will be applied to site traffic.

dimensions

Required

Array

tuples array

Determines the rule's method for grouping requests.

Rate limiting is applied to grouped requests.

Valid values are:

  • [Blank]: A blank value indicates that all requests are treated as a single group for the purpose of rate limiting.

    Format:

    "dimensions" : [],

  • IP: Indicates that requests will be grouped by IP address. Each unique IP address is considered a separate group.
  • User_Agent: Indicates that requests will be grouped by a client's user agent. Each unique combination of IP address and user agent is considered a separate group.

This request parameter should only be set to one of the above values. Setting it to multiple values is an invalid configuration.

A list of valid values is returned by the Get Available Group Types endpoint.

disabled

Required

Boolean

tuples array

Determines whether a rule will be enforced.

Valid values are:

  • true: Disabled. This rule will not be used to rate limit site traffic.
  • false: Enabled. Traffic will be restricted according to the policy defined in the rule.

duration_sec

Required

Integer

tuples array

Determines the length, in seconds, of the rolling window that tracks the number of requests eligible for rate limiting.

The rate limit formula is calculated through the limit and duration_sec request parameters as indicated below.

limit requests per duration_sec

Valid values are:

  • 1: 1 second
  • 5: 5 seconds
  • 10: 10 seconds
  • 30: 30 seconds
  • 60: 1 minute
  • 120: 2 minutes
  • 300: 5 minutes

enforcements

Required

Array

tuples array

This request parameter contains settings that define the action that will take place upon a request that has exceeded the rate limit.

duration_sec

Integer

tuples array > enforcements array

Defines the length of time, in seconds, that the action defined within the enforcements array will be applied to a client that violates the rate limit defined by this rule.

Valid values are:

  • 10: 10 seconds
  • 60: 1 minute
  • 300: 5 minutes

id

String

tuples array > enforcements array

Indicates the system-defined alphanumeric ID assigned to the rate limiting action.

Example:

12345678-90ab-cdef-ghij-klmnopqrstuvwxyz1

This value is automatically set by the system whenever a change is applied to sibling or child settings. As a result, this parameter will be ignored.

name

String

tuples array > enforcements array

Assigns a name to the rate limiting action.

response_body_base64

String

tuples array > enforcements array

Custom Response Only

This parameter is only relevant when this configuration is configured to send a custom response (i.e., custom-response action) for rate limited requests.

Defines the response body that will be sent to rate limited requests.

This value must be Base64 encoded.

Set the response body to a custom web page by specifying the desired HTML tags (e.g., <html>...</html>).

response_headers

Object

tuples array > enforcements array

Custom Response Only

This parameter is only relevant when this configuration is configured to send a custom response (i.e., custom-response action) for rate limited requests.

Contains the set of response headers that will be included in the response sent to rate limited requests.

ResponseHeader

String

tuples array > enforcements array > response_headers object

Custom Response Only

This parameter is only relevant when this configuration is configured to send a custom response (i.e., custom-response action) for rate limited requests.

Defines a response header by its name and value. This response header will be included in the response sent to rate limited requests.

Syntax:

Example:

...
"My 1st Header" : "Value A",
"My 2nd Header" : "Value B",
...

status

Required (custom-response)

Integer

tuples array > enforcements array

Custom Response Only

This parameter is required when this instance is configured to send a custom response (i.e., custom-response action) for rate limited requests.

Defines the HTTP status code (e.g., 404) for the custom response that will be sent to rate limited requests.

type

Required

String

tuples array > enforcements array

Defines the type of action that will be applied to rate limited requests.

Valid values are:

  • custom-response: A custom HTTP response will be sent to rate limited responses.
  • drop-request: Rate limited requests will be dropped.
  • redirect-302: Rate limited requests will be redirected via a 302 Found.
  • nop: Rate limited requests will only generate an alert.

Use the Get Available Action Types endpoint to retrieve a list of the available action types.

url

Required (redirect-302)

String

tuples array > enforcements array

Redirect Only

This parameter is required when this instance is configured to redirect rate limited requests.

Defines the URL to which rate limited requests will be redirected.

id

String

tuples array

Indicates the system-defined alphanumeric ID for the rule to be updated.

Example:

12345678-90ab-cdef-ghij-klmnopqrstuvwxyz1

This ID is automatically updated whenever a change is applied to the Rate Limiting configuration.

limit

Required

Integer

tuples array

Defines the number of requests that will trigger rate limiting.

The rate limit formula is calculated through the limit and duration_sec request parameters as indicated below.

limit requests per duration_sec

name

Required

String

tuples array

Assigns a name to the rule.

rules

Array

tuples array

This request parameter contains the set of condition groups associated with a rule.

chained_rule

Array

tuples array > rules array

This request parameter contains a list of match conditions.

This request parameter should be empty unless the current rule contains more than one match condition. In which case, the first match condition should be defined under the operator and variable parameters that are siblings to this request parameter.

id

String

tuples array > rules array > chained_rule array

Identifies a rate limiting match condition by its system-defined alphanumeric ID.

Example:

12345678-90ab-cdef-ghij-klmnopqrstuvwxyz1

This value is automatically set by the system whenever a change is applied to sibling or child settings. As a result, this parameter will be ignored.

operator

Object

tuples array > rules array > chained_rule array

This request parameter contains the properties of a match condition.

The variable array indicates the type of match condition being defined.

is_negated

Boolean

tuples array > rules array > chained_rule array > operator object

Determines whether this match condition will be satisfied when the requestThe attribute (e.g., hostname, URL path, IP address, etc.) of the request that will be compared is determined by the variable array. matches or does not match the value defined by the values parameter.

Valid values are:

  • True: Does not match
  • False: Matches

type

String

tuples array > rules array > chained_rule array > operator object

Determines how the system will interpret the case-sensitive comparison between the requestThe attribute (e.g., hostname, URL path, IP address, etc.) of the request that will be compared is determined by the variable array. and the values parameter.

Learn more about match types.

Valid values:

  • EM: Requires that the request's attribute be set to one of the value(s) defined in the values parameter.
  • IPMATCH: Requires that the request's IP address be an exact match to one of the value(s) defined in the values parameter.

    Only use this match type with the REMOTE_ADDR match condition.

A list of valid values is returned by the Get Available Match Comparison Type endpoint.

value

Deprecated

String

tuples array > rules array > chained_rule array > operator object

This parameter has undergone end-of-life. Please use the values parameter instead.

Defines a value that will be used to identify requests that are eligible for rate limiting.

values

Required

Array

tuples array > rules array > chained_rule array > operator object

Defines one or more values through which requests that are eligible for rate limiting will be identified.

variable

Array

tuples array > rules array > chained_rule array

This request parameter defines the type of match condition.

match

Array

tuples array > rules array > chained_rule array > variable array

This parameter defines the subcategory associated with a match condition.

Only the "Request Headers" and "Request Method" match conditions support subcategories.

value

String

tuples array > rules array > chained_rule array > variable array > match array

Defines the match condition's subcategory (e.g., User-Agent).

Valid values are reported by the value element of the valid_values array returned by the Get Available Match Condition Types endpoint.

type

String

tuples array > rules array > chained_rule array > variable array

Defines the type of match condition (e.g., REQUEST_HEADERS).

Valid values are reported by the type parameter in the Get Available Match Condition Types endpoint.

id

String

tuples array > rules array

Indicates the system-defined alphanumeric ID of a condition group.

Example:

12345678-90ab-cdef-ghij-klmnopqrstuvwxyz1

This value is automatically set by the system whenever a change is applied to sibling or child settings. As a result, this parameter will be ignored.

name

String

tuples array > rules array

Assigns a name to the condition group.

operator

Object

tuples array > rules array

This request parameter contains the first match condition associated with a condition group.

The variable array, which is a sibling to this parameter, indicates the type of match condition being defined.

is_negated

Boolean

tuples array > rules array > operator object

Determines whether this match condition will be satisfied when the requestThe attribute (e.g., hostname, URL path, IP address, etc.) of the request that will be compared is determined by the variable array. matches or does not match the value defined by the values parameter.

Valid values are:

  • True: Does not match
  • False: Matches

type

String

tuples array > rules array > operator object

Determines how the system will interpret the case-sensitive comparison between the requestThe attribute (e.g., hostname, URL path, IP address, etc.) of the request that will be compared is determined by the variable array. and the values parameter.

Learn more about match types.

Valid values:

  • EM: Requires that the request's attribute be set to one of the value(s) defined in the values parameter.
  • IPMATCH: Requires that the request's IP address be an exact match to one of the value(s) defined in the values parameter.

    Only use this match type with the REMOTE_ADDR match condition.

A list of valid values is returned by the Get Available Match Comparison Type endpoint.

value

Deprecated

String

tuples array > rules array > chained_rule array > operator object

This parameter has undergone end-of-life. Please use the values parameter instead.

Defines a value that will be used to identify requests that are eligible for rate limiting.

values

Required

Array

tuples array > rules array > operator object

Defines one or more values used to identify requests that are eligible for rate limiting.

variable

Array

tuples array > rules array

This request parameter describes the type of match condition.

match

Array

tuples array > rules array > variable array

This parameter defines the subcategory associated with a match condition.

Only the "Request Headers" and "Request Method" match conditions support subcategories.

value

String

tuples array > rules array > variable array > match array

Defines the match condition's subcategory (e.g., User-Agent).

Valid values are reported by the value element of the valid_values array returned by the Get Available Match Condition Types endpoint.

type

String

tuples array > rules array > variable array

Defines the type of match condition (e.g., REQUEST_HEADERS).

Valid values are reported by the type parameter in the Get Available Match Condition Types endpoint.

scope

Object

tuples array

Contains the scope for the current rule.

host

Object

tuples array > scope object

Contains hostname criteria that defines the set of requests eligible for rate limiting by the current rule.

is_negated

Boolean

tuples array > scope object > host object

Determines whether this scope condition will be satisfied when the host defined in the request URL matches or does not match the value defined by the value|values parameter.

Valid values are:

  • True: Does not match
  • False: Matches

type

String

tuples array > scope object > host object

Determines how the system will interpret the comparison between the request's hostname and the value defined within the value | values parameter.

Learn more about match types.

Valid values:

  • EM: Indicates that request's hostname must be an exact match to one of the case-sensitive values specified in the values parameter.
  • GLOB: Indicates that the request's hostname must be an exact match to the wildcard pattern defined in the value parameter.

  • REGEX: Indicates that the request's hostname must be an exact match to the regular expression defined in the value parameter.

Apply this rate limit across all hostnames by setting this parameter to "GLOB" and setting the value parameter to "*." This type of configuration is also known as "Default."

value

String

tuples array > scope object > host object

This parameter is required when the type parameter is set to one of the following values: GLOB or REGEX. Otherwise, it should not be included.

Identifies a value that will be used to identify requests that are eligible for rate limiting.

values

Array

String values

tuples array > scope object > host object

This parameter is required when the type parameter is set to "EM." Otherwise, it should not be included.

Identifies one or more values used to identify requests that are eligible for rate limiting.

path

Object

tuples array > scope object

Contains URL path criteria that defines the set of requests eligible for rate limiting by the current rule.

is_negated

Boolean

tuples array > scope object > path object

Determines whether this scope condition will be satisfied when the request's URL path matches or does not match the value defined by the value | values parameter.

Valid values are:

  • True: Does not match
  • False: Matches

type

String

tuples array > scope object > path object

Determines how the system will interpret the comparison between the request's URL path and the value defined within the value | values parameter.

Learn more about match types.

Valid values:

  • EM: Indicates that request's URL path must be an exact match to one of the case-sensitive values specified in the values parameter.
  • GLOB: Indicates that the request's URL path must be an exact match to the wildcard pattern defined in the value parameter.

  • REGEX: Indicates that the request's URL path must be an exact match to the regular expression defined in the value parameter.

Apply this rate limit across all request URLs by setting this parameter to "GLOB" and setting the value parameter to "*." This type of configuration is also known as "Default."

value

String

tuples array > scope object > path object

This parameter is required when the type parameter is set to one of the following values: GLOB or REGEX. Otherwise, it should not be included.

Identifies a value that will be used to identify requests that are eligible for rate limiting.

values

Array

String values

tuples array > scope object > path object

This parameter is required when the type parameter is set to "EM." Otherwise, it should not be included.

Identifies one or more values used to identify requests that are eligible for rate limiting.

type

Required

String

Set this request parameter to "ddos-coordinator."

Response

The response to the above request includes an HTTP status code, response headers, and a response body.

Status Code

A status code indicates whether the request was successfully performed.

Response Headers

The response for this endpoint only includes standard HTTP response headers.

View common response headers.

Response Body

The response body for a successful request contains the following response parameter:

Name Data Type Description

success

Boolean

Indicates whether the Rate Limiting configuration was updated.

Valid values are:

  • true: Indicates that the configuration was updated.
  • false: Indicates that an error took place.

job_id

End-of-Life

String

Indicates the system-defined ID assigned to the rate limiting configuration update.

Errors

The response body for an unsuccessful request will contain an error response that provides additional information.

View common error messages.

Sample Request and Response

A sample JSON request is shown below.

POST https://api.edgecast.com/v2/mcc/customers/0001/defend/rate_limiting/config HTTP/1.1

Authorization: TOK:12345678-1234-1234-1234-1234567890ab

Accept: application/json

Content-Type: application/json

Host:api.edgecast.com

Content-Length: 1229

{
	"customer_id": "0001",
	"enabled_date": "2018-04-03T23:52:24.590818Z",
	"id": "e0fa44b4-ede1-4056-8bfe-5daa481a26c10001",
	"name": "name",
	"tuples": [{
			"dimensions": [
				"IP",
				"USER_AGENT"
			],
			"disabled": true,
			"duration_sec": 60,
			"enforcements": [{
					"duration_sec": 60,
					"id": "de7cd68c-b41e-4305-9202-3443515df8190001",
					"name": "Rate Limiting Action",
					"type": "redirect-302",
					"url": "http://sec.example.com/unavailable.html"
				}
			],
			"id": "1824dd0f-7791-41f7-86de-80817760f4240001",
			"limit": 100,
			"name": "Rate Limiting Rule",
			"rules": [{
					"chained_rule": [],
					"id": "31385b47-5f5a-41d7-90ab-d891b28a8ca80001",
					"name": "Condition Group",
					"operator": {
						"is_negated": false,
						"type": "EM",
						"values": [
							"http://cdn.example.com/index.php"
						]						
					},
					"variable": [{
							"type": "REQUEST_URI"
						}
					]
				}
			],
			"scope": {
				"host": {
					"is_negated": false,
					"type": "PM",
					"values": [
						"www.example.com"
					]
				},
				"path": {
					"is_negated": false,
					"type": "GLOB",
					"value": "*"
				}
			}
		}
	],
	"type": "ddos-coordinator"
}

A sample JSON response is shown below.

HTTP/1.1 200 OK

Cache-Control: private

Content-Type: application/json; charset=utf-8

Date: Thu, 15 Apr 2021 12:00:00 GMT

Content-Length: 80

{
	"success" : true,
	"job_id" : ""
}