openapi: 3.0.0 info: description: 'Manage your configurations for Kona Site Defender, Web Application Protector, and Client Reputation. ' license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html title: 'Akamai: Application Security Activation history Shared resources: Rate policies API' version: v1 servers: - url: https://{hostname}/appsec/v1 tags: - description: Manage rate policies for security configurations. name: 'Shared resources: Rate policies' paths: /configs/{configId}/versions/{versionNumber}/rate-policies: parameters: - description: A unique identifier for each configuration. example: '{{configId}}' in: path name: configId required: true schema: example: 77653 format: int64 type: integer x-akamai: file-path: parameters/config-id-path.yaml - description: A unique identifier for each version of a configuration. example: '{{versionNumber}}' in: path name: versionNumber required: true schema: example: 25 type: integer x-akamai: file-path: parameters/version-number-path.yaml x-akamai: file-path: paths/config-rate-policies.yaml path-info: /configs/{configId}/versions/{versionNumber}/rate-policies post: description: Create a new rate policy for a specific configuration version. Now you can match on defined or undefined resources. If you're setting a match for either resource type, both `definedResources` and `undefinedResources` must be present in the request object or the request is considered incomplete. When `true`, match on _any_ defined resources without passing a `resourceId`. When `false`, you'll need to pass a `resourceId`. If you pass `definedResources` and `undefinedResources` with empty values, they default to `false`. You can omit both resources and use this operation without these new match criteria. Contact your account team if you'd like to match on `definedResources` or `undefinedResources`. _Products:_ All. externalDocs: description: See documentation for this operation in Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference/post-rate-policies operationId: post-rate-policies parameters: - description: For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys). example: '{{accountSwitchKey}}' in: query name: accountSwitchKey required: false schema: example: 1-5C0YLB:1-8BYUX type: string requestBody: content: application/json: example: additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.210 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: per_edge description: AFW Test Extensions evaluation: averageThreshold: 5 burstThreshold: 8 fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF useXForwardForHeaders: true schema: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. example: '{{averageThreshold}}' minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. example: '{{burstThreshold}}' minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). example: '{{burstWindow}}' maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value example: '{{clientIdentifier}}' type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated example: '{{counterType}}' type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '{{createDate}}' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. example: '{{description}}' type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. example: '{{id}}' readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api example: '{{matchType}}' type: string name: description: The name you assign to a rate policy. example: '{{name}}' type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom example: '{{pathMatchType}}' type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). example: '{{pathUriPositiveMatch}}' type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest example: '{{requestType}}' type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. example: '{{sameActionOnIpv6}}' type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN example: '{{type}}' type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '{{updateDate}}' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. example: '{{useXForwardForHeaders}}' type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. example: '{{used}}' readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml required: true responses: '201': content: application/json: example: additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.13 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: per_edge createDate: '2016-07-22 18:57:08.0' description: AFW Test Extensions evaluation: averageThreshold: 5 burstThreshold: 8 burstWindow: 5 counterType: region_aggregated endDate: '2024-04-11T16:04:43Z' evaluationId: 97 evaluationStatus: in_progress startDate: '2024-03-28T16:04:43Z' version: 1 fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org id: 484616 matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF updateDate: '2017-02-22 00:05:41.0' useXForwardForHeaders: true used: false schema: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '2016-07-22 18:57:08.0' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api type: string name: description: The name you assign to a rate policy. type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '2017-02-22 00:05:41.0' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml description: Successfully created a rate policy. '400': content: application/problem+json: example: detail: The request could not be understood by the server due to malformed syntax. instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 400 title: Bad Request type: https://problems.luna.akamaiapis.net/appsec/error-types/BAD-REQUEST schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Bad request](https://techdocs.akamai.com/application-security/reference/400). Invalid request body or URL parameter input.' x-akamai: file-path: errors/400.yaml '403': content: application/problem+json: example: detail: You do not have the necessary access to perform this operation or the requested resource cannot be modified instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 403 title: Forbidden type: https://problems.luna.akamaiapis.net/appsec-resource/error-types/ACCESS-DENIED schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Forbidden](https://techdocs.akamai.com/application-security/reference/403). You don''t have access to rate policies in this security configuration.' x-akamai: file-path: errors/403.yaml '404': content: application/problem+json: example: detail: The requested resource is not found instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 404 title: Not Found type: https://problems.luna.akamaiapis.net/appsec/error-types/NOT-FOUND schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Not found](https://techdocs.akamai.com/application-security/reference/404). Security configuration version wasn''t found.' x-akamai: file-path: errors/404.yaml summary: Akamai API Security Create a Rate Policy tags: - 'Shared resources: Rate policies' get: description: Returns rate policies for a specific security configuration version. _Products:_ All. externalDocs: description: See documentation for this operation in Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference/get-rate-policies operationId: get-rate-policies parameters: - description: For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys). example: '{{accountSwitchKey}}' in: query name: accountSwitchKey required: false schema: example: 1-5C0YLB:1-8BYUX type: string responses: '200': content: application/json: example: ratePolicies: - additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.215 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: per_edge createDate: '2016-07-22 18:57:08.0' description: AFW Test Extensions evaluation: averageThreshold: 5 burstThreshold: 8 burstWindow: 5 counterType: region_aggregated endDate: '2024-04-11T16:04:43Z' evaluationId: 97 evaluationStatus: completed startDate: '2024-03-28T16:04:43Z' version: 1 fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org id: 484616 matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF updateDate: '2017-02-22 00:05:41.0' useXForwardForHeaders: true used: false - additionalMatchOptions: - positiveMatch: false type: NetworkListCondition values: - 18198_DSWINTERNALTESTIPADDRES - 7054_FEOSERVERS - positiveMatch: false type: UserAgentCondition values: - soasta - MovableInk apiSelectors: - apiDefinitionId: 602 definedResources: false resourceIds: - 748 undefinedResources: false averageThreshold: 5 bodyParameters: - name: Country positiveMatch: true valueInRange: false values: - USA - Canada burstThreshold: 10 clientIdentifier: ip counterType: per_edge createDate: '2016-07-22 18:57:08.0' description: AFW Test Extensions fileExtensions: positiveMatch: false values: - avi - bmp - jpg hosts: positiveMatch: false values: - www.myexamplehostname.org id: 484617 matchType: api name: Test_Paths 2 queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv: false type: WAF updateDate: '2017-02-22 00:05:41.0' useXForwardForHeaders: true used: false schema: additionalProperties: false description: Contains details about rate policies. properties: ratePolicies: description: A list of rate policies in this configuration version. items: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '2016-07-22 18:57:08.0' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api type: string name: description: The name you assign to a rate policy. type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '2017-02-22 00:05:41.0' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml type: array required: - ratePolicies type: object x-akamai: file-path: schemas/rate-policies.yaml description: Successfully returned rate policies. '403': content: application/problem+json: example: detail: You do not have the necessary access to perform this operation or the requested resource cannot be modified instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 403 title: Forbidden type: https://problems.luna.akamaiapis.net/appsec-resource/error-types/ACCESS-DENIED schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Forbidden](https://techdocs.akamai.com/application-security/reference/403). You don''t have access to rate policy in this security configuration.' x-akamai: file-path: errors/403.yaml '404': content: application/problem+json: example: detail: The requested resource is not found instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 404 title: Not Found type: https://problems.luna.akamaiapis.net/appsec/error-types/NOT-FOUND schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Not found](https://techdocs.akamai.com/application-security/reference/404). Security configuration version wasn''t found.' x-akamai: file-path: errors/404.yaml summary: Akamai API Security List Rate Policies tags: - 'Shared resources: Rate policies' /configs/{configId}/versions/{versionNumber}/rate-policies/{ratePolicyId}: parameters: - description: A unique identifier for each configuration. example: '{{configId}}' in: path name: configId required: true schema: example: 77653 format: int64 type: integer x-akamai: file-path: parameters/config-id-path.yaml - description: A unique identifier for each version of a configuration. example: '{{versionNumber}}' in: path name: versionNumber required: true schema: example: 25 type: integer x-akamai: file-path: parameters/version-number-path.yaml - description: A unique identifier for each rate policy. example: '{{ratePolicyId}}' in: path name: ratePolicyId required: true schema: example: 112231 type: integer x-akamai: file-path: parameters/rate-policy-id-path.yaml x-akamai: file-path: paths/config-rate-policy.yaml path-info: /configs/{configId}/versions/{versionNumber}/rate-policies/{ratePolicyId} get: description: Returns the specified rate policy. _Products:_ All. externalDocs: description: See documentation for this operation in Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference/get-rate-policy operationId: get-rate-policy parameters: - description: For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys). example: '{{accountSwitchKey}}' in: query name: accountSwitchKey required: false schema: example: 1-5C0YLB:1-8BYUX type: string responses: '200': content: application/json: example: additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.13 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: per_edge createDate: '2016-07-22 18:57:08.0' description: AFW Test Extensions evaluation: averageThreshold: 5 burstThreshold: 8 burstWindow: 5 counterType: region_aggregated endDate: '2024-04-11T16:04:43Z' evaluationId: 97 evaluationStatus: in_progress startDate: '2024-03-28T16:04:43Z' version: 1 fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org id: 484616 matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF updateDate: '2017-02-22 00:05:41.0' useXForwardForHeaders: true used: false schema: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '2016-07-22 18:57:08.0' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api type: string name: description: The name you assign to a rate policy. type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '2017-02-22 00:05:41.0' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml description: Successfully returned rate policy. '403': content: application/problem+json: example: detail: You do not have the necessary access to perform this operation or the requested resource cannot be modified instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 403 title: Forbidden type: https://problems.luna.akamaiapis.net/appsec-resource/error-types/ACCESS-DENIED schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Forbidden](https://techdocs.akamai.com/application-security/reference/403). You don''t have access to rate policy in this security configuration.' x-akamai: file-path: errors/403.yaml '404': content: application/problem+json: example: detail: The requested resource is not found instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 404 title: Not Found type: https://problems.luna.akamaiapis.net/appsec/error-types/NOT-FOUND schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Not found](https://techdocs.akamai.com/application-security/reference/404). Security configuration version or rate policy wasn''t found.' x-akamai: file-path: errors/404.yaml summary: Akamai API Security Get a Rate Policy tags: - 'Shared resources: Rate policies' put: description: Update details for a specific rate policy. Now you can match on defined or undefined resources. If you're setting a match for either resource type, both `definedResources` and `undefinedResources` must be present in the request object or the request is considered incomplete. When `true`, match on _any_ defined resources without passing a `resourceId`. When `false`, you'll need to pass a `resourceId`. If you pass `definedResources` and `undefinedResources` with empty values, they default to `false`. You can omit both resources and use this operation without these new match criteria. Contact your account team if you'd like to match on `definedResources` or `undefinedResources`. _Products:_ All. externalDocs: description: See documentation for this operation in Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference/put-rate-policy operationId: put-rate-policy parameters: - description: For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys). example: '{{accountSwitchKey}}' in: query name: accountSwitchKey required: false schema: example: 1-5C0YLB:1-8BYUX type: string requestBody: content: application/json: example: additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.232 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: per_edge description: AFW Test Extensions evaluation: averageThreshold: 5 burstThreshold: 8 fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org id: 2234 matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF useXForwardForHeaders: true schema: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. example: '{{averageThreshold}}' minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. example: '{{burstThreshold}}' minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). example: '{{burstWindow}}' maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value example: '{{clientIdentifier}}' type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated example: '{{counterType}}' type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '{{createDate}}' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. example: '{{description}}' type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. example: '{{id}}' readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api example: '{{matchType}}' type: string name: description: The name you assign to a rate policy. example: '{{name}}' type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom example: '{{pathMatchType}}' type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). example: '{{pathUriPositiveMatch}}' type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest example: '{{requestType}}' type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. example: '{{sameActionOnIpv6}}' type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN example: '{{type}}' type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '{{updateDate}}' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. example: '{{useXForwardForHeaders}}' type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. example: '{{used}}' readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml required: true responses: '200': content: application/json: example: additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.13 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: per_edge createDate: '2016-07-22 18:57:08.0' description: AFW Test Extensions evaluation: averageThreshold: 5 burstThreshold: 8 burstWindow: 5 counterType: region_aggregated endDate: '2024-04-11T16:04:43Z' evaluationId: 97 evaluationStatus: in_progress startDate: '2024-03-28T16:04:43Z' version: 1 fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org id: 484616 matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF updateDate: '2017-02-22 00:05:41.0' useXForwardForHeaders: true used: false schema: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '2016-07-22 18:57:08.0' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api type: string name: description: The name you assign to a rate policy. type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '2017-02-22 00:05:41.0' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml description: Successfully updated rate policy. '400': content: application/problem+json: example: detail: The request could not be understood by the server due to malformed syntax. instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 400 title: Bad Request type: https://problems.luna.akamaiapis.net/appsec/error-types/BAD-REQUEST schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Bad request](https://techdocs.akamai.com/application-security/reference/400). Invalid request body or URL parameter input.' x-akamai: file-path: errors/400.yaml '403': content: application/problem+json: example: detail: You do not have the necessary access to perform this operation or the requested resource cannot be modified instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 403 title: Forbidden type: https://problems.luna.akamaiapis.net/appsec-resource/error-types/ACCESS-DENIED schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Forbidden](https://techdocs.akamai.com/application-security/reference/403). You don''t have access to rate policy in this security configuration.' x-akamai: file-path: errors/403.yaml '404': content: application/problem+json: example: detail: The requested resource is not found instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 404 title: Not Found type: https://problems.luna.akamaiapis.net/appsec/error-types/NOT-FOUND schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Not found](https://techdocs.akamai.com/application-security/reference/404). Security configuration version or rate policy wasn''t found.' x-akamai: file-path: errors/404.yaml summary: Akamai API Security Modify a Rate Policy tags: - 'Shared resources: Rate policies' delete: description: Delete the specified rate policy. You can't delete a rate policy that is actively in use. To delete the rate policy, first activate an older configuration version or create a new version without the policy in place. _Products:_ All. externalDocs: description: See documentation for this operation in Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference/delete-rate-policy operationId: delete-rate-policy parameters: - description: For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys). example: '{{accountSwitchKey}}' in: query name: accountSwitchKey required: false schema: example: 1-5C0YLB:1-8BYUX type: string responses: '204': content: {} description: Successfully deleted the rate policy. '403': content: application/problem+json: example: detail: You do not have the necessary access to perform this operation or the requested resource cannot be modified instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 403 title: Forbidden type: https://problems.luna.akamaiapis.net/appsec-resource/error-types/ACCESS-DENIED schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Forbidden](https://techdocs.akamai.com/application-security/reference/403). You don''t have access to rate policy in this security configuration.' x-akamai: file-path: errors/403.yaml '404': content: application/problem+json: example: detail: The requested resource is not found instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 404 title: Not Found type: https://problems.luna.akamaiapis.net/appsec/error-types/NOT-FOUND schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Not found](https://techdocs.akamai.com/application-security/reference/404). Security configuration version or rate policy wasn''t found.' x-akamai: file-path: errors/404.yaml summary: Akamai API Security Remove a Rate Policy tags: - 'Shared resources: Rate policies' /configs/{configId}/versions/{versionNumber}/rate-policies/{ratePolicyId}/evaluation: parameters: - description: A unique identifier for each configuration. example: '{{configId}}' in: path name: configId required: true schema: example: 77653 format: int64 type: integer x-akamai: file-path: parameters/config-id-path.yaml - description: A unique identifier for each version of a configuration. example: '{{versionNumber}}' in: path name: versionNumber required: true schema: example: 25 type: integer x-akamai: file-path: parameters/version-number-path.yaml - description: A unique identifier for each rate policy. example: '{{ratePolicyId}}' in: path name: ratePolicyId required: true schema: example: 112231 type: integer x-akamai: file-path: parameters/rate-policy-id-path.yaml x-akamai: file-path: paths/config-rate-policy-evaluation.yaml path-info: /configs/{configId}/versions/{versionNumber}/rate-policies/{ratePolicyId}/evaluation put: description: Apply or discard a rate policy evaluation. externalDocs: description: See documentation for this operation in Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference/put-rate-policy-evaluation operationId: put-rate-policy-evaluation parameters: - description: For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys). example: '{{accountSwitchKey}}' in: query name: accountSwitchKey required: false schema: example: 1-5C0YLB:1-8BYUX type: string requestBody: content: application/json: example: action: APPLY schema: additionalProperties: false description: Lists actions you can perform on a rate policy evaluation. properties: action: description: Specifies the action to perform on a rate policy evaluation, either `APPLY` or `DISCARD`. enum: - APPLY - DISCARD example: '{{action}}' type: string required: - action type: object x-akamai: file-path: schemas/rate-policy-evaluation-put.yaml required: true responses: '200': content: application/json: example: additionalMatchOptions: - positiveMatch: true type: IpAddressCondition values: - 192.0.2.13 - positiveMatch: true type: RequestMethodCondition values: - GET averageThreshold: 5 burstThreshold: 10 burstWindow: 3 clientIdentifier: ip condition: atomicConditions: - className: TlsFingerprintCondition positiveMatch: true value: - a797dc449ef113be - ba51ec8d71259a5b3c92d8787370e2c3 - className: ClientReputationCondition name: - DOSATCK - WEBATCK positiveMatch: true sharedIpHandling: BOTH value: 3 - className: RequestHeaderCondition name: - Accept - Content-Type nameWildcard: true positiveMatch: true value: - json - xml valueCase: false valueWildcard: true positiveMatch: true counterType: region_aggregated createDate: '2016-07-22T18:57:08.0Z' description: AFW Test Extensions fileExtensions: positiveMatch: false values: - 3g2 - 3gp - aif - aiff - au - avi - bin - bmp - cab hosts: positiveMatch: false values: - www.myexamplehostname.org id: 484616 matchType: path name: Test_Paths 2 path: positiveMatch: true values: - /login/ - /path/ pathMatchType: Custom pathUriPositiveMatch: true queryParameters: - name: productId positiveMatch: true valueInRange: false values: - BUB_12 - SUSH_11 requestType: ClientRequest sameActionOnIpv6: false type: WAF updateDate: '2017-02-22T00:05:41.0Z' useXForwardForHeaders: true used: false schema: additionalProperties: false description: Contains details about a rate policy. properties: additionalMatchOptions: description: The list of additional match conditions. items: additionalProperties: false properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: description: The match condition type. The `RequestHeaderCondition` listed here is deprecated. Specify `RequestHeaderCondition` as an `atomicCondition` to match on request headers. See [Export match condition type values](https://techdocs.akamai.com/application-security/reference/cndval). enum: - IpAddressCondition - NetworkListCondition - RequestHeaderCondition - RequestMethodCondition - ResponseHeaderCondition - ResponseStatusCondition - UserAgentCondition - AsNumberCondition type: string values: description: The list of values that trigger the condition on match. items: type: string type: array required: - type - positiveMatch - values type: object type: array apiSelectors: description: The API endpoints to match in incoming requests. This only applies to the `api` `matchType`. items: additionalProperties: false properties: apiDefinitionId: description: Uniquely identifies each API endpoint. type: integer definedResources: description: When `true`, match on any resource explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean resourceIds: description: The unique identifiers of the endpoint's resources. items: type: integer type: array undefinedResources: description: When `true`, match on any resource you have not explicitly added to your API definition without including a `resourceId`. When `false`, you'll need to pass a `resourceId`. type: boolean required: - apiDefinitionId type: object type: array averageThreshold: description: The allowed hits per second during any two-minute interval. minimum: 1 type: integer bodyParameters: description: The list of body parameters to match on. items: additionalProperties: false properties: name: description: The name you assign to a body parameter. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The body parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array burstThreshold: description: The allowed hits per second during any five-second interval. minimum: 1 type: integer burstWindow: description: The time span for the `burstThreshold` interval. For existing rate policies, analyze your traffic in Alert mode before you reduce the measure window from 5 seconds. [Learn more about thresholds here](https://techdocs.akamai.com/kona-site-defender/docs/rate-thresholds). maximum: 5 minimum: 1 type: integer clientIdentifier: description: The client identifier you want to use to identify and track request senders. The value is required only for WAF type, and `api-key` is supported only for API match criteria. Using `ip-useragent` is typically more specific than using `ip` alone when trying to identify a client. Tracking by `cookie:value` applies to requests per individual session, even if the IP address changes. enum: - api-key - ip-useragent - ip - cookie:value type: string condition: additionalProperties: false description: Contains information about the criteria that trigger the rate policy. properties: atomicConditions: description: The conditions that trigger the rate policy. Specify one or more request headers, TLS fingerprints, or client reputation categories. items: oneOf: - additionalProperties: false description: Collects data needed for condition matches on request headers. properties: className: description: The type of condition. The `RequestHeaderCondition` type checks for a header from the requesting client and determines if it matches a provided header. This subtype supports the `?` wildcard to match any single character and the `*` wildcard to match any sequence of 0 or more characters. You can also match on case sensitivity. enum: - RequestHeaderCondition type: string name: description: A header name. Use `name` to check whether the specified header exists. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true nameWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique header values. Use both `value` and `name` to check whether the requesting client’s header matches a provided header. items: minLength: 1 type: string nullable: true type: array uniqueItems: true valueCase: description: Whether to consider the case sensitivity of the provided header values. type: boolean valueWildcard: description: Whether to interpret `?` and `*` as wildcards. type: boolean required: - className - name title: RequestHeaderCondition type: object x-akamai: file-path: schemas/request-header-condition-2.yaml - additionalProperties: false description: Collects data needed for condition matches on TLS fingerprints. properties: className: description: The type of condition. In this case, `TlsFingerprintCondition`. enum: - TlsFingerprintCondition type: string positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean value: description: A list of unique TLS fingerprints. items: minLength: 1 type: string minItems: 1 type: array uniqueItems: true required: - className - value title: TlsFingerprintCondition type: object x-akamai: file-path: schemas/tls-fingerprint-condition.yaml - additionalProperties: false description: Collects data needed for condition matches on Client Reputation. properties: className: description: The type of condition. In this case, `ClientReputationCondition`. enum: - ClientReputationCondition type: string name: description: Identifies the reputation category. Web scrapers (`WEBSCRP`) crawl sites and collect data like hotel rates, product prices, store locations, and more. DoS attackers (`DOSATCK`) are web clients or botnets that use automated tools to launch volumetric Denial of Service (DoS) attacks. Web attackers (`WEBATCK`) target websites and web apps with techniques like SQL injection, remote file inclusion, or cross-site scripting. Scanning tools (`SCANTL`) probe web apps for vulnerabilities during an attack's reconnaissance phase. items: enum: - WEBSCRP - DOSATCK - WEBATCK - SCANTL type: string minItems: 1 type: array uniqueItems: true positiveMatch: description: Whether the condition triggers on a match or lack of match. type: boolean sharedIpHandling: description: Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`. enum: - NON_SHARED - SHARED_ONLY - BOTH type: string value: description: Threshold value that causes the trigger. maximum: 10 minimum: 1 type: number required: - className - name - value - sharedIpHandling title: ClientReputationCondition type: object x-akamai: file-path: schemas/client-reputation-condition.yaml minItems: 1 type: array positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean type: object counterType: default: per_edge description: The rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string createDate: description: __Read-only__ The time stamp when you created the rate policy. example: '2016-07-22 18:57:08.0' format: date-time readOnly: true type: string description: description: Descriptive text you provide about a policy. type: string evaluation: additionalProperties: false description: Contains details about rate policy evaluation. properties: averageThreshold: description: The allowed hits per second during any two-minute interval during evaluation. minimum: 1 type: integer burstThreshold: description: The allowed hits per second during any five-second interval during evaluation. minimum: 1 type: integer burstWindow: description: __Read-only__ The time span for the `burstThreshold` interval used during evaluation. This value is always set to the `burstWindow` specified by the main rate policy. readOnly: true type: integer counterType: default: region_aggregated description: The evaluation rate policy counter type. Either `per_edge` for rate limiting to work per edge node, or `region_aggregated` for rate limiting to work using aggregated rate accounting across multiple edge nodes. enum: - per_edge - region_aggregated type: string endDate: description: __Read-only__ The time stamp when evaluation ends. format: date-time readOnly: true type: string evaluationId: description: __Read-only__ Uniquely identifies an evaluation. readOnly: true type: integer evaluationStatus: description: __Read-only__ Reflects evaluation status, either `in_progress`, `pending_activation`, or `completed`. enum: - in_progress - pending_activation - completed readOnly: true type: string startDate: description: __Read-only__ The time stamp when evaluation starts. format: date-time readOnly: true type: string version: description: __Read-only__ Evaluation version. readOnly: true type: integer required: - averageThreshold - burstThreshold type: object fileExtensions: additionalProperties: false description: Contains the file extension match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The file extensions to match on. items: type: string type: array required: - positiveMatch - values type: object hostnames: description: __Deprecated__. The hostnames to match. This array member is deprecated. Use the `hosts` object instead. items: type: string type: array hosts: additionalProperties: false description: The hostnames to match, and whether to trigger on a match or absence of match. properties: positiveMatch: default: true description: When `true`, triggers on hostnames that match any hostnames in this array. When `false`, triggers on hostnames that don't match any in this array. type: boolean values: description: The hostnames you choose to match, or specifically not match. items: type: string type: array required: - positiveMatch - values type: object id: description: __Read-only__ Uniquely identifies each rate policy. readOnly: true type: integer matchType: description: The match type in a rate policy. Either `path` to match website paths or `api` to match API paths. enum: - path - api type: string name: description: The name you assign to a rate policy. type: string path: additionalProperties: false description: Contains details about the path match criteria. properties: positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean values: description: The list of paths to match on. items: type: string type: array required: - positiveMatch - values type: object pathMatchType: description: The type of paths to match in incoming requests. Either `AllRequests` to match an empty path or any path that ends in a trailing slash (`/`), `TopLevel` to match top-level hostnames only, or `Custom` to match a specific path or path component. This applies only when the corresponding `matchType` member is `path`. enum: - AllRequests - TopLevel - Custom type: string pathUriPositiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean queryParameters: description: The list of query parameter objects to match on. items: additionalProperties: false properties: name: description: The query parameter name. type: string positiveMatch: description: Whether the condition should trigger on a match (`true`) or a lack of match (`false`). type: boolean valueInRange: description: Whether to match a value inside or outside a range. The range format is `min:max` — for example, `2:4`. type: boolean values: description: The list of query parameter values. items: type: string type: array required: - name - values - positiveMatch type: object type: array requestType: description: The type of requests to count towards the rate policy's thresholds. Either `ClientRequest` to count client requests to edge servers, `ClientResponse` to count edge responses to the client, `ForwardResponse` to count origin responses to the client, or `ForwardRequest` to count edge requests to your origin. enum: - ClientRequest - ClientResponse - ForwardResponse - ForwardRequest type: string sameActionOnIpv6: description: Whether to apply the same action to the IPv6 traffic as to the IPv4 traffic. type: boolean type: description: The rate policy type. Either `WAF` for Web Application Firewall, or `BOTMAN` for Bot Manager. enum: - WAF - BOTMAN type: string updateDate: description: __Read-only__ The ISO 8601 timestamp when you last updated the rate policy. example: '2017-02-22 00:05:41.0' format: date-time readOnly: true type: string useXForwardForHeaders: description: Whether to check the contents of the `X-Forwarded-For` header in incoming requests. type: boolean used: description: __Read-only__ Whether you're currently using the rate policy. readOnly: true type: boolean required: - matchType - type - name - averageThreshold - burstThreshold - clientIdentifier - requestType - sameActionOnIpv6 - pathMatchType type: object x-akamai: file-path: schemas/rate-policy.yaml description: Successfully apply or discard rate policy evalutation. '400': content: application/problem+json: example: detail: The request could not be understood by the server due to malformed syntax. instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 400 title: Bad Request type: https://problems.luna.akamaiapis.net/appsec/error-types/BAD-REQUEST schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Bad request](https://techdocs.akamai.com/application-security/reference/400). Invalid request body or URL parameter input.' x-akamai: file-path: errors/400.yaml '403': content: application/problem+json: example: detail: You do not have the necessary access to perform this operation or the requested resource cannot be modified instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 403 title: Forbidden type: https://problems.luna.akamaiapis.net/appsec-resource/error-types/ACCESS-DENIED schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Forbidden](https://techdocs.akamai.com/application-security/reference/403). You don''t have access to rate policy in this security configuration.' x-akamai: file-path: errors/403.yaml '404': content: application/problem+json: example: detail: The requested resource is not found instance: https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 status: 404 title: Not Found type: https://problems.luna.akamaiapis.net/appsec/error-types/NOT-FOUND schema: additionalProperties: true description: Details the errors you can receive. properties: detail: description: The detailed error message. type: string fieldErrors: additionalProperties: description: Fields that provide additional details about the problem. type: string description: Pointers to fields for which invalid input was provided, whose values are messages detailing the reason this input was invalid for this field. type: object instance: description: The non-referenceable URI that indicates the error instance. example: https://problems.luna.akamaiapis.net/api-definitions/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749 type: string status: description: The HTTP status code. example: 404 type: integer title: description: The error title. example: Not Found type: string type: description: The URL for the error type. example: https://problems.luna.akamaiapis.net/api-definitions/error-types/NOT-FOUND type: string required: - title - type - detail - instance - status type: object x-akamai: file-path: schemas/problem-details.yaml description: '[Not found](https://techdocs.akamai.com/application-security/reference/404). Security configuration version or rate policy wasn''t found.' x-akamai: file-path: errors/404.yaml summary: Akamai API Security Modify a Rate Policy Evaluation tags: - 'Shared resources: Rate policies' externalDocs: description: See documentation for Akamai's Application Security API url: https://techdocs.akamai.com/application-security/reference x-readme: samples-languages: - curl - python - node