{ "components": { "headers": { "location": { "description": "A URL to access the newly created resource.", "example": "/malware-policies/post-malware-policies", "schema": { "type": "string" }, "x-akamai": { "file-path": "headers/location.yaml" } } }, "parameters": { "behavioral-ddos-profile-id-path": { "description": "A unique identifier for each Behavioral DDoS profile.", "in": "path", "name": "profileId", "required": true, "schema": { "example": 121212, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/behavioral-ddos-profile-id-path.yaml" } }, "config-id-path": { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } }, "custom-deny-id-path": { "description": "A unique identifier for each custom deny action.", "in": "path", "name": "customDenyId", "required": true, "schema": { "example": "112231", "type": "string" }, "x-akamai": { "file-path": "parameters/custom-deny-id-path.yaml" } }, "detail-query": { "description": "When `true`, the results contain detailed information on versions. With the default `false`, the results contain summary information on versions.", "in": "query", "name": "detail", "schema": { "default": false, "example": true, "type": "boolean" }, "x-akamai": { "file-path": "parameters/detail-query.yaml" } }, "include-child-object-name-query": { "description": "Specify whether to return the object name in the payload, true` by default.", "in": "query", "name": "includeChildObjectName", "schema": { "default": true, "example": false, "type": "boolean" }, "x-akamai": { "file-path": "parameters/include-child-object-name-query.yaml" } }, "include-hostnames-query": { "description": "If `true`, include the list of hostnames protected by this security configuration in the production network. If `false`, exclude the list of hostnames protected by this security configuration in the production network.", "in": "query", "name": "includeHostnames", "required": false, "schema": { "default": false, "example": false, "type": "boolean" }, "x-akamai": { "file-path": "parameters/include-hostnames-query.yaml" } }, "malware-policy-id-path": { "description": "A unique identifier for each malware policy.", "in": "path", "name": "malwarePolicyId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/malware-policy-id-path.yaml" } }, "page-query": { "description": "The index of the result page. If the value is `-1`, then pagination is ignored. The default value is `1`.", "in": "query", "name": "page", "schema": { "default": 1, "example": 2, "type": "integer" }, "x-akamai": { "file-path": "parameters/page-query.yaml" } }, "page-size-query": { "description": "The number of items on each result page. The default value is `25`.", "in": "query", "name": "pageSize", "schema": { "default": 25, "example": 10, "type": "integer" }, "x-akamai": { "file-path": "parameters/page-size-query.yaml" } }, "policy-id-query": { "description": "Specifies the security policy to filter match targets.", "in": "query", "name": "policyId", "schema": { "example": "abc_123456", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-query.yaml" } }, "rate-policy-id-path": { "description": "A unique identifier for each rate policy.", "in": "path", "name": "ratePolicyId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/rate-policy-id-path.yaml" } }, "reputation-profile-id-path": { "description": "A unique identifier for each reputation profile.", "in": "path", "name": "reputationProfileId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/reputation-profile-id-path.yaml" } }, "rule-id-path": { "description": "A unique identifier for rule.", "in": "path", "name": "ruleId", "required": true, "schema": { "example": 699989, "type": "integer" }, "x-akamai": { "file-path": "parameters/rule-id-path.yaml" } }, "search-hostname": { "description": "Get results by hostname.", "in": "query", "name": "hostname", "schema": { "example": "www.example.com", "type": "string" }, "x-akamai": { "file-path": "parameters/search-hostname.yaml" } }, "search-query": { "description": "Filter results by name, description, or ID. You can match on substrings.", "in": "query", "name": "search", "schema": { "example": "SQL Injection", "type": "string" }, "x-akamai": { "file-path": "parameters/search-query.yaml" } }, "target-id-path": { "description": "A unique identifier for each match target.", "in": "path", "name": "targetId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/target-id-path.yaml" } }, "url-protection-policy-id-path": { "description": "A unique identifier for each URL protection policy.", "in": "path", "name": "urlProtectionPolicyId", "required": true, "schema": { "example": 112231, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/url-protection-policy-id-path.yaml" } }, "version-number-path": { "description": "A unique identifier for each version of a configuration.", "in": "path", "name": "versionNumber", "required": true, "schema": { "example": 25, "type": "integer" }, "x-akamai": { "file-path": "parameters/version-number-path.yaml" } } }, "responses": { "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": { "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" } }, "400-client-read-errors": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.yaml" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 the resource.", "x-akamai": { "file-path": "errors/403.yaml" } }, "403-client-write-errors": { "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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } }, "404-client-read-errors": { "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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "412": { "content": { "application/problem+json": { "example": { "detail": "The requested resource is in use and cannot be modified", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 412, "title": "Precondition Failed", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/PRECONDITION-FAILED" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Precondition failed](https://techdocs.akamai.com/application-security/reference/412).", "x-akamai": { "file-path": "errors/412.yaml" } }, "500-server-errors": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "schemas": { "attack-payload-logging": { "additionalProperties": false, "description": "The settings for attack payload logging.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "attack-payload-logging-get-200": { "additionalProperties": false, "description": "The GET Response JSON for attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how Akamai's network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how Akamai's network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging-get-200.yaml" } }, "attack-payload-logging-put": { "additionalProperties": false, "description": "The PUT Request JSON for attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "Settings for request body.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "Settings for response body.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging-put.yaml" } }, "attack-payload-logging-put-200": { "additionalProperties": false, "description": "The PUT Response JSON for attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging-put-200.yaml" } }, "behavioral-ddos-bypass-client-list-condition": { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } }, "behavioral-ddos-bypass-request-header-condition": { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, "behavioral-ddos-host-path-exception": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "behavioral-ddos-profile": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } }, "behavioral-ddos-profiles": { "additionalProperties": false, "description": "A collection of Behavioral DDoS profiles.", "properties": { "behavioralDdosProfiles": { "description": "Behavioral DDoS profiles.", "items": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } }, "minItems": 0, "type": "array" } }, "required": [ "behavioralDdosProfiles" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profiles.yaml" } }, "behavioral-ddos-sensitivity-override": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "behavioral-ddos-suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the option to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "bypass-network-lists-get": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-get.yaml" } }, "bypass-network-lists-put": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "Contains a list of network list IDs.", "items": { "description": "List of network lists. The values are the network lists' IDs.", "type": "string" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-put.yaml" } }, "client-reputation-condition": { "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" } }, "config-clone-post": { "additionalProperties": false, "description": "Specifies the settings for a new clone of a security configuration.", "properties": { "createFromVersion": { "description": "The configuration version to clone from.", "type": "integer" }, "ruleUpdate": { "description": "Specifies whether the application rules should be migrated to the latest version.", "type": "boolean" } }, "required": [ "createFromVersion", "ruleUpdate" ], "type": "object", "x-akamai": { "file-path": "schemas/config-clone-post.yaml" } }, "config-custom-rules-usage-request": { "additionalProperties": false, "description": "Collects data for custom rule usage analysis.", "properties": { "ruleIds": { "description": "A list of the custom rule IDs.", "items": { "type": "integer" }, "minItems": 1, "nullable": false, "type": "array", "uniqueItems": true } }, "required": [ "ruleIds" ], "type": "object", "x-akamai": { "file-path": "schemas/config-custom-rules-usage-request.yaml" } }, "config-custom-rules-usage-response": { "additionalProperties": false, "description": "Custom rule usage data.", "properties": { "rules": { "description": "The requested custom rule IDs and names of the security policies that use them.", "items": { "additionalProperties": false, "description": "Usage of the requested custom rule in security policies.", "properties": { "policies": { "description": "A list of security policies which use the custom rule.", "items": { "additionalProperties": false, "description": "A security policy using the custom rule.", "properties": { "policyId": { "description": "A security policy ID.", "nullable": false, "type": "string" }, "policyName": { "description": "A security policy name.", "nullable": false, "type": "string" } }, "required": [ "policyId", "policyName" ], "type": "object" }, "minItems": 0, "nullable": false, "type": "array", "uniqueItems": true }, "ruleId": { "description": "A custom rule ID.", "nullable": false, "type": "integer" } }, "required": [ "ruleId", "policies" ], "type": "object" }, "minItems": 0, "nullable": false, "type": "array", "uniqueItems": true } }, "required": [ "rules" ], "type": "object", "x-akamai": { "file-path": "schemas/config-custom-rules-usage-response.yaml" } }, "config-get": { "additionalProperties": false, "description": "Contains details about a security configuration.", "properties": { "description": { "description": "__Read-only__ Describes the security configuration.", "readOnly": true, "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "latestVersion": { "description": "__Read-only__ The latest version of the security configuration.", "readOnly": true, "type": "integer" }, "name": { "description": "__Read-only__ The security configuration name.", "readOnly": true, "type": "string" }, "productionHostnames": { "description": "__Read-only__ The list of hostnames protected by this security configuration in the production network.", "items": { "type": "string" }, "readOnly": true, "type": "array" }, "productionVersion": { "description": "__Read-only__ The latest security configuration version active in the production network.", "readOnly": true, "type": "integer" }, "stagingVersion": { "description": "__Read-only__ The latest security configuration version active in the staging network.", "readOnly": true, "type": "integer" } }, "required": [ "id", "latestVersion", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-get.yaml" } }, "config-post": { "additionalProperties": false, "description": "Specifies the details of a security config.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "contractId": { "description": "Contract ID.", "type": "string" }, "createFrom": { "additionalProperties": false, "description": "Contains details about a source configuration and version for cloning a new security configuration.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "version": { "description": "The configuration version to clone from.", "type": "integer" } }, "required": [ "configId", "version" ], "type": "object" }, "description": { "description": "Describes the security configuration.", "type": "string" }, "groupId": { "description": "Group ID.", "type": "integer" }, "hostnames": { "description": "List of hostnames to be added to the configuration.", "items": { "type": "string" }, "type": "array" }, "name": { "description": "The name you assigned to the security configuration.", "type": "string" }, "version": { "description": "The configuration version of the security configuration.", "type": "integer" } }, "required": [ "name", "description", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/config-post.yaml" } }, "config-rename": { "additionalProperties": false, "description": "Contains details of a security configuration.", "properties": { "description": { "description": "Describes the security configuration.", "type": "string" }, "name": { "description": "The name you assigned to the security configuration.", "type": "string" } }, "required": [ "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-rename.yaml" } }, "configs-get": { "additionalProperties": false, "description": "Specifies the details of a security config.", "properties": { "configurations": { "description": "A list of security configurations.", "items": { "additionalProperties": false, "description": "Contains details about a security configuration.", "properties": { "description": { "description": "__Read-only__ Describes the security configuration.", "readOnly": true, "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "latestVersion": { "description": "__Read-only__ The latest version of the security configuration.", "readOnly": true, "type": "integer" }, "name": { "description": "__Read-only__ The security configuration name.", "readOnly": true, "type": "string" }, "productionHostnames": { "description": "__Read-only__ The list of hostnames protected by this security configuration in the production network.", "items": { "type": "string" }, "readOnly": true, "type": "array" }, "productionVersion": { "description": "__Read-only__ The latest security configuration version active in the production network.", "readOnly": true, "type": "integer" }, "stagingVersion": { "description": "__Read-only__ The latest security configuration version active in the staging network.", "readOnly": true, "type": "integer" } }, "required": [ "id", "latestVersion", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-get.yaml" } }, "type": "array" } }, "required": [ "configurations" ], "type": "object", "x-akamai": { "file-path": "schemas/configs-get.yaml" } }, "cookie-settings": { "additionalProperties": false, "description": "Contains the cookie settings for a configuration.", "properties": { "cookieDomain": { "description": "Choose the type of domain. The default recommended type is `automatic`. Otherwise, choose `fqdn` to use the current Fully Qualified Domain name, `legacy` to use the original way in which the domain was selected, or `psl` to use the public suffix list to identify a private domain.", "enum": [ "automatic", "fqdn", "legacy", "psl" ], "type": "string" }, "useAllSecureTraffic": { "description": "If all of your traffic uses HTTPS, specify `true`. This option sets the Secure flag on all security product cookies, which are then only included with HTTPS traffic. It also adds `SameSite=None` to most bot management cookies, ensuring that recent browser versions submit the cookies with protected requests. The `SameSite=None` cookie setting is necessary for site architectures that involve cross-domain form submission or inclusion of cross-domain iframes.", "type": "boolean" } }, "type": "object", "x-akamai": { "file-path": "schemas/cookie-settings.yaml" } }, "custom-denies": { "additionalProperties": false, "description": "Contains details about custom deny actions.", "properties": { "customDenyList": { "description": "A list of custom deny actions in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/custom-denies.yaml" } }, "custom-deny": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } }, "custom-rule": { "additionalProperties": false, "description": "Contains settings for a custom rule.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "items": { "additionalProperties": false, "properties": { "name": { "description": "The name you assign to the custom rule.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ] }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided header `name` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, `asNumberMatch`, or `clientListMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. Specify a string for the `requestProtocolVersionMatch`, `clientCertPresentMatch`, `clientCertValidMatch`, and `headerOrderMatch` conditions. For all other conditions, specify an array of strings.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ], "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueExactMatch": { "description": "Whether to consider only exact matches of the header `value`.", "type": "boolean" }, "valueIgnoreSegment": { "description": "Whether to ignore path segments when matching. This only applies when the `type` is `pathMatch`.", "type": "boolean" }, "valueNormalize": { "description": "Whether to normalize the value of the header when matching. This only applies to type values of `extensionMatch` and `pathMatch`.", "type": "boolean" }, "valueRecursive": { "description": "Whether to use recursion when matching. When `false`, you can only match on the filename in the root folder. This only applies when the condition `type` is `filenameMatch`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies when the condition `type` is `requestHeaderMatch`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequest": { "description": "Whether to inspect the HTTP request for unstructured custom rules.", "type": "boolean" }, "inspectResponse": { "description": "Whether to inspect the HTTP response for unstructured custom rules.", "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "The metadata you provided for unstructured custom rules.", "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Specify `AND` logic to require all conditions, or `OR` logic to require at least one condition to match.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "Whether the rule is active in the configuration.", "type": "boolean" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "stagingOnly": { "default": false, "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "Whether you created the rule with the structured custom rule builder or free-form XML. This needs to be `true`.", "type": "boolean" }, "tag": { "description": "The list of labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name", "operation", "structured" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rule.yaml" } }, "custom-rules": { "additionalProperties": false, "description": "Describes the custom rule's basic information.", "properties": { "customRules": { "description": "Describes basic information about a custom rule, such as activation status or time the rule is active.", "items": { "additionalProperties": false, "properties": { "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the custom rule.", "type": "integer" }, "link": { "description": "The link to the full custom rule definition. This field is only available when you run the [List custom rules](https://techdocs.akamai.com/application-security/reference/get-configs-custom-rules) operation.", "type": "string" }, "name": { "description": "The name you assign to the custom rule.", "type": "string" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "status": { "description": "The custom rule deployment status. Either `activated` if a rule is enabled in at least one security policy within a security configuration currently active in production, `published` if a rule is associated with at least one security policy in an inactive security configuration, or `unused` if a rule exists as a shared resource, but isn't associated with any security policy. This field is only available when you run the [List custom rules](https://techdocs.akamai.com/application-security/reference/get-configs-custom-rules) operation.", "enum": [ "activated", "published", "unused" ], "type": "string" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "id", "link", "name", "status", "version" ], "type": "object" }, "type": "array" } }, "required": [ "customRules" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rules.yaml" } }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "evasive-path-match-get-200": { "additionalProperties": false, "description": "The GET Response JSON for Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/evasive-path-match-get-200.yaml" } }, "evasive-path-match-put": { "additionalProperties": false, "description": "The PUT Request JSON for Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/evasive-path-match-put.yaml" } }, "evasive-path-match-put-200": { "additionalProperties": false, "description": "The PUT Response JSON for Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL. This feature does not match on characters that are an integral part of URL requests, like: ``` : / # & ; = ``` and `.` when it appears inside the URL string.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/evasive-path-match-put-200.yaml" } }, "header-logging-get-200": { "additionalProperties": false, "description": "The GET Response JSON for HTTP Header Logging.", "properties": { "allowSampling": { "description": "Enables HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging-get-200.yaml" } }, "header-logging-put": { "additionalProperties": false, "description": "The PUT Request JSON for HTTP Header Logging.", "properties": { "allowSampling": { "description": "Whether to enable HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "allowSampling" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging-put.yaml" } }, "header-logging-put-200": { "additionalProperties": false, "description": "The PUT Response JSON for HTTP Header Logging.", "properties": { "allowSampling": { "description": "Enables HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging-put-200.yaml" } }, "host-info-in-config": { "additionalProperties": false, "description": "Contains the list of hostnames available for protection and its details.", "properties": { "availableSet": { "description": "The available hosts set for the current user.", "items": { "additionalProperties": false, "description": "Contains details about the hostname and its status.", "properties": { "activeInProduction": { "description": "Whether the hostname is active in the production network.", "type": "boolean" }, "activeInStaging": { "description": "Whether the hostname is active in the staging network.", "type": "boolean" }, "arlInclusion": { "description": "Whether the hostname is Akamai Resource Locator (ARL) included.", "type": "boolean" }, "configIdInProduction": { "description": "Uniquely identifies the configuration that protects the hostname.", "nullable": true, "type": "integer" }, "configNameInProduction": { "description": "The name of the configuration that protects the hostname.", "nullable": true, "type": "string" }, "hostname": { "description": "The hostname.", "type": "string" } }, "required": [ "hostname" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-object.yaml" } }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "errorSet": { "description": "The requested hosts aren't available in this configuration version.", "items": { "additionalProperties": false, "properties": { "hostname": { "description": "The hostname that triggers an error.", "type": "string" }, "reason": { "description": "The reason why the hosts aren't protectable in this configuration version.", "type": "string" }, "reasonCode": { "description": "The error status code for the hostname.", "type": "integer" } }, "required": [ "reason", "reasonCode", "hostname" ], "type": "object" }, "type": "array" }, "protectARLInclusionHost": { "description": "Whether the host defined in the ARL file has legacy WAF enabled in the configuration.", "type": "boolean" }, "selectedSet": { "description": "The selected set of hostnames in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about the hostname and its status.", "properties": { "activeInProduction": { "description": "Whether the hostname is active in the production network.", "type": "boolean" }, "activeInStaging": { "description": "Whether the hostname is active in the staging network.", "type": "boolean" }, "arlInclusion": { "description": "Whether the hostname is Akamai Resource Locator (ARL) included.", "type": "boolean" }, "configIdInProduction": { "description": "Uniquely identifies the configuration that protects the hostname.", "nullable": true, "type": "integer" }, "configNameInProduction": { "description": "The name of the configuration that protects the hostname.", "nullable": true, "type": "string" }, "hostname": { "description": "The hostname.", "type": "string" } }, "required": [ "hostname" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-object.yaml" } }, "type": "array" } }, "required": [ "configId", "configVersion", "protectARLInclusionHost" ], "type": "object", "x-akamai": { "file-path": "schemas/host-info-in-config.yaml" } }, "hostname-coverage-match-target": { "additionalProperties": false, "description": "Contains details about a hostname coverage match target.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target.yaml" } }, "hostname-coverage-match-target-get-200": { "additionalProperties": false, "description": "Contains the hostname coverage API and website match targets defined in the security configuration version.", "properties": { "matchTargets": { "additionalProperties": false, "description": "Contains the API and website match targets defined in the security configuration version.", "properties": { "apiTargets": { "description": "The list of `api` match targets.", "items": { "additionalProperties": false, "description": "Contains details about a hostname coverage match target.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target.yaml" } }, "type": "array" }, "websiteTargets": { "description": "The list of `website` match targets.", "items": { "additionalProperties": false, "description": "Contains details about a hostname coverage match target.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target.yaml" } }, "type": "array" } }, "required": [ "apiTargets", "websiteTargets" ], "type": "object" } }, "required": [ "matchTargets" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target-get-200.yaml" } }, "hostname-coverage-overlapping-get-200": { "additionalProperties": false, "description": "Describes configurations that use the same hostname, causing overlapping coverage.", "properties": { "overLappingList": { "description": "The list of configurations that overlap coverage for the hostname.", "items": { "additionalProperties": false, "description": "Contains details about an overlapping configuration.", "properties": { "configId": { "description": "The configuration ID.", "type": "integer" }, "configName": { "description": "The configuration name.", "type": "string" }, "configVersion": { "description": "The configuration version.", "type": "integer" }, "contractId": { "description": "The contract ID.", "type": "string" }, "contractName": { "description": "The contract name.", "type": "string" }, "versionTags": { "description": "List of version tags, any combination of `STAGING` and `LAST_CREATED`.", "items": { "description": "The version tag.", "enum": [ "STAGING", "LAST_CREATED" ], "type": "string" }, "type": "array" } }, "required": [ "configId", "configName", "configVersion" ], "type": "object", "x-akamai": { "file-path": "schemas/overlap-config.yaml" } }, "type": "array" } }, "required": [ "overLappingList" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-overlapping-get-200.yaml" } }, "hostname-object": { "additionalProperties": false, "description": "Contains details about the hostname and its status.", "properties": { "activeInProduction": { "description": "Whether the hostname is active in the production network.", "type": "boolean" }, "activeInStaging": { "description": "Whether the hostname is active in the staging network.", "type": "boolean" }, "arlInclusion": { "description": "Whether the hostname is Akamai Resource Locator (ARL) included.", "type": "boolean" }, "configIdInProduction": { "description": "Uniquely identifies the configuration that protects the hostname.", "nullable": true, "type": "integer" }, "configNameInProduction": { "description": "The name of the configuration that protects the hostname.", "nullable": true, "type": "string" }, "hostname": { "description": "The hostname.", "type": "string" } }, "required": [ "hostname" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-object.yaml" } }, "hostnames": { "additionalProperties": false, "description": "Contains a list of selected hostnames for the specified configuration version.", "properties": { "hostnameList": { "description": "The list of hostnames for a configuration version.", "items": { "additionalProperties": false, "properties": { "hostname": { "description": "The hostname on which to match the request.", "type": "string" } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "mode": { "description": "The type of update you want to make to the evaluation hostname list. Use `append` to add additional hostnames, `remove` to delete the hostnames from the list, or `replace` to replace the existing list with the hostnames you pass in your request.", "enum": [ "append", "remove", "replace" ], "type": "string" } }, "required": [ "hostnameList" ], "type": "object", "x-akamai": { "file-path": "schemas/hostnames.yaml" } }, "ja4-client-tls-fingerprint-get-200": { "additionalProperties": false, "description": "The GET Response JSON for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-get-200.yaml" } }, "ja4-client-tls-fingerprint-put": { "additionalProperties": false, "description": "The PUT Request JSON for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-put.yaml" } }, "ja4-client-tls-fingerprint-put-200": { "additionalProperties": false, "description": "The PUT Response JSON for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-put-200.yaml" } }, "logging-header-setting": { "additionalProperties": false, "description": "The header settings for HTTP Header Logging.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "logging-option": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "malware-policies": { "additionalProperties": false, "description": "Contains details about malware policies.", "properties": { "malwarePolicies": { "description": "A list of malware policies in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } }, "type": "array" } }, "required": [ "malwarePolicies" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policies.yaml" } }, "malware-policies-content-types": { "additionalProperties": false, "description": "Contains a list of supported malware policy content types for the specified configuration version.", "properties": { "malwareContentTypes": { "description": "The list of supported content types in a malware policy.", "items": { "description": "The malware content type.", "type": "string" }, "type": "array" } }, "required": [ "malwareContentTypes" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policies-content-types.yaml" } }, "malware-policy": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } }, "match-target": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } }, "match-targets": { "additionalProperties": false, "description": "Describes match target settings.", "properties": { "matchTargets": { "additionalProperties": false, "description": "Match target settings.", "properties": { "apiTargets": { "description": "The `api` match targets.", "items": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } }, "type": "array" }, "websiteTargets": { "description": "The `website` match targets.", "items": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } }, "type": "array" } }, "required": [ "apiTargets", "websiteTargets" ], "type": "object" } }, "required": [ "matchTargets" ], "type": "object", "x-akamai": { "file-path": "schemas/match-targets.yaml" } }, "match-targets-sequence": { "additionalProperties": false, "description": "Contains match target settings and a list of objects containing match targets with their assigned sequence number.", "properties": { "targetSequence": { "description": "Contains the ID and sequence of a match target.", "items": { "additionalProperties": false, "properties": { "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" } }, "required": [ "sequence", "targetId" ], "type": "object" }, "type": "array" }, "type": { "description": "Describes the type of match target, either `WEBSITE` or `API`.", "enum": [ "WEBSITE", "API" ], "type": "string" } }, "required": [ "type", "targetSequence" ], "type": "object", "x-akamai": { "file-path": "schemas/match-targets-sequence.yaml" } }, "overlap-config": { "additionalProperties": false, "description": "Contains details about an overlapping configuration.", "properties": { "configId": { "description": "The configuration ID.", "type": "integer" }, "configName": { "description": "The configuration name.", "type": "string" }, "configVersion": { "description": "The configuration version.", "type": "integer" }, "contractId": { "description": "The contract ID.", "type": "string" }, "contractName": { "description": "The contract name.", "type": "string" }, "versionTags": { "description": "List of version tags, any combination of `STAGING` and `LAST_CREATED`.", "items": { "description": "The version tag.", "enum": [ "STAGING", "LAST_CREATED" ], "type": "string" }, "type": "array" } }, "required": [ "configId", "configName", "configVersion" ], "type": "object", "x-akamai": { "file-path": "schemas/overlap-config.yaml" } }, "pii-learning": { "additionalProperties": false, "description": "Summarizes availability of PII learning.", "properties": { "enablePiiLearning": { "description": "Enables PII learning.", "type": "boolean" } }, "required": [ "enablePiiLearning" ], "type": "object", "x-akamai": { "file-path": "schemas/pii-learning.yaml" } }, "pragma-header": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } }, "prefetch-request-get-200": { "additionalProperties": false, "description": "The GET Response JSON for Prefetch Requests.", "properties": { "allExtensions": { "description": "Whether to enable prefetch requests for all extensions.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable Prefetch Requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable Prefetch Requests for rate controls.", "type": "boolean" }, "extensions": { "description": "List of extensions.", "items": { "type": "string" }, "type": "array" } }, "required": [ "allExtensions", "enableAppLayer", "enableRateControls" ], "type": "object", "x-akamai": { "file-path": "schemas/prefetch-request-get-200.yaml" } }, "prefetch-request-put": { "additionalProperties": false, "description": "The PUT Request JSON for Prefetch Requests.", "properties": { "allExtensions": { "description": "Whether to enable prefetch requests for all extensions.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable Prefetch Requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable Prefetch Requests for rate controls.", "type": "boolean" }, "extensions": { "description": "List of extensions.", "items": { "type": "string" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/prefetch-request-put.yaml" } }, "prefetch-request-put-200": { "additionalProperties": false, "description": "The PUT Response JSON for Prefetch Requests.", "properties": { "allExtensions": { "description": "Whether to enable prefetch requests for all extensions.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable Prefetch Requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable Prefetch Requests for rate controls.", "type": "boolean" }, "extensions": { "description": "List of extensions.", "items": { "type": "string" }, "type": "array" } }, "required": [ "allExtensions", "enableAppLayer", "enableRateControls" ], "type": "object", "x-akamai": { "file-path": "schemas/prefetch-request-put-200.yaml" } }, "problem-details": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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" } }, "rate-policies": { "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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" } }, "rate-policy": { "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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" } }, "rate-policy-evaluation-put": { "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" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/rate-policy-evaluation-put.yaml" } }, "reputation-profile": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } }, "reputation-profiles": { "additionalProperties": false, "description": "Contains details about reputation profiles.", "properties": { "reputationProfiles": { "description": "A list of reputation profiles in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/reputation-profiles.yaml" } }, "request-body": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } }, "request-header-condition-2": { "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\u2019s 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" } }, "security-controls": { "additionalProperties": false, "description": "Describes the operational status of security controls.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "siem-settings": { "additionalProperties": false, "description": "Contains Security Information Event Management (SIEM) integration settings.", "properties": { "enableForAllPolicies": { "description": "Whether you enabled SIEM for all the security policies in the configuration version.", "type": "boolean" }, "enableSiem": { "description": "Whether you enabled SIEM in a security configuration version.", "type": "boolean" }, "enabledBotmanSiemEvents": { "deprecated": true, "description": "__Deprecated__ Whether you enabled SIEM for the Bot Manager events. Use `exceptions` parameter instead to set botman siem events exception.", "type": "boolean", "x-akamai": { "status": "DEPRECATED" } }, "exceptions": { "description": "Describes all attack type exceptions that will be ignored in SIEM events.", "items": { "additionalProperties": false, "properties": { "actionTypes": { "description": "Describes [actions](https://techdocs.akamai.com/application-security/reference/siem-action-and-attack-type-exceptions) to be excluded for a particular attack type. A `*` value means all actions.", "items": { "enum": [ "*", "alert", "deny", "all_custom", "abort", "allow", "delay", "ignore", "monitor", "slow", "tarpit" ], "type": "string" }, "type": "array" }, "protection": { "description": "[Attack types](https://techdocs.akamai.com/application-security/reference/siem-action-and-attack-type-exceptions) to be added as an exception.", "enum": [ "ipgeo", "rate", "urlProtection", "slowpost", "customrules", "waf", "apirequestconstraints", "clientrep", "malwareprotection", "botmanagement", "aprProtection", "aifirewallprotection" ], "type": "string" } }, "type": "object" }, "type": "array" }, "firewallPolicyIds": { "description": "The list of security policy identifiers for which to enable the SIEM integration.", "items": { "type": "string" }, "type": "array" }, "includeJA4FingerprintToSiem": { "description": "Whether you enabled JA4 header forwarding for SIEM.", "type": "boolean" }, "siemDefinitionId": { "description": "Uniquely identifies the SIEM settings.", "type": "integer" } }, "required": [ "enableSiem" ], "type": "object", "x-akamai": { "file-path": "schemas/siem-settings.yaml" } }, "siem-version": { "additionalProperties": false, "description": "Contains Security Information Event Management (SIEM) version settings.", "properties": { "id": { "description": "Uniquely identifies the SIEM version.", "type": "integer" }, "name": { "description": "The name assigned to the SIEM version.", "type": "string" } }, "required": [ "id", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/siem-version.yaml" } }, "siem-versions": { "additionalProperties": false, "description": "Contains details about SIEM versions.", "properties": { "siemDefinitions": { "description": "A list of SIEM versions.", "items": { "additionalProperties": false, "description": "Contains Security Information Event Management (SIEM) version settings.", "properties": { "id": { "description": "Uniquely identifies the SIEM version.", "type": "integer" }, "name": { "description": "The name assigned to the SIEM version.", "type": "string" } }, "required": [ "id", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/siem-version.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/siem-versions.yaml" } }, "tls-fingerprint-condition": { "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" } }, "url-protection-bypass-client-list-condition": { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. URL protection bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS Fingerprint, against the specified client list or network list.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-bypass-client-list-condition.yaml" } }, "url-protection-bypass-request-header-condition": { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "A list of unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-bypass-request-header-condition.yaml" } }, "url-protection-category": { "additionalProperties": false, "description": "Specify one or more load shedding categories for the URL protection policy.", "properties": { "type": { "description": "Specify the type of traffic to shed first before reaching the requests per second (RPS) limit. `BOTS` includes bots from Akamai's existing list of known bots. `CLIENT_REPUTATIONS` includes traffic from clients with a bad client reputation score. `CLOUD_PROVIDERS` includes traffic from providers like AWS, Microsoft Azure, and Google Cloud. `PROXIES` includes proxy traffic as determined by IPQualityScore (IPQS) and Akamai EdgeScape. `TOR_EXIT_NODES` includes traffic defined in Akamai's existing network list of nodes. `PLATFORM_DDOS_INTELLIGENCE` includes traffic detected by Akamai's DDOS Intelligence platform.", "enum": [ "BOTS", "CLIENT_REPUTATIONS", "CLOUD_PROVIDERS", "PROXIES", "TOR_EXIT_NODES", "PLATFORM_DDOS_INTELLIGENCE" ], "type": "string" } }, "required": [ "type" ], "title": "urlProtectionCategory", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-category.yaml" } }, "url-protection-client-list-category": { "additionalProperties": false, "description": "Defines a `CLIENT_LIST` load shedding category for a URL protection policy.", "properties": { "listIds": { "description": "A list of client list identifiers to match on.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the selected client lists match.", "type": "boolean" }, "type": { "description": "Specify `CLIENT_LIST` to match on a client list.", "enum": [ "CLIENT_LIST" ], "type": "string" } }, "required": [ "type" ], "title": "urlProtectionCategory", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-client-list-category.yaml" } }, "url-protection-policies": { "additionalProperties": false, "description": "Contains details about URL protection policies.", "properties": { "urlProtectionPolicies": { "description": "A list of URL protection policies in the configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a URL protection policy.", "properties": { "apiDefinitions": { "description": "The API endpoints to match on in incoming requests. This only applies to the `api` `matchType`.", "items": { "additionalProperties": false, "properties": { "apiDefinitionId": { "description": "Uniquely identifies each API endpoint.", "format": "int64", "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": { "format": "int64", "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" }, "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the URL protection policy.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "A list of unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. URL protection bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS Fingerprint, against the specified client list or network list.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "categories": { "description": "The traffic categories to perform load shedding on when the origin traffic rate exceeds the load shedding threshold. If `intelligentLoadShedding` is set to `true`, specify one or more categories.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Specify one or more load shedding categories for the URL protection policy.", "properties": { "type": { "description": "Specify the type of traffic to shed first before reaching the requests per second (RPS) limit. `BOTS` includes bots from Akamai's existing list of known bots. `CLIENT_REPUTATIONS` includes traffic from clients with a bad client reputation score. `CLOUD_PROVIDERS` includes traffic from providers like AWS, Microsoft Azure, and Google Cloud. `PROXIES` includes proxy traffic as determined by IPQualityScore (IPQS) and Akamai EdgeScape. `TOR_EXIT_NODES` includes traffic defined in Akamai's existing network list of nodes. `PLATFORM_DDOS_INTELLIGENCE` includes traffic detected by Akamai's DDOS Intelligence platform.", "enum": [ "BOTS", "CLIENT_REPUTATIONS", "CLOUD_PROVIDERS", "PROXIES", "TOR_EXIT_NODES", "PLATFORM_DDOS_INTELLIGENCE" ], "type": "string" } }, "required": [ "type" ], "title": "Client list category", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-category.yaml" } }, { "additionalProperties": false, "description": "Defines a `CLIENT_LIST` load shedding category for a URL protection policy.", "properties": { "listIds": { "description": "A list of client list identifiers to match on.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the selected client lists match.", "type": "boolean" }, "type": { "description": "Specify `CLIENT_LIST` to match on a client list.", "enum": [ "CLIENT_LIST" ], "type": "string" } }, "required": [ "type" ], "title": "Other categories", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-client-list-category.yaml" } } ] }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The timestamp when you created the URL protection policy.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the URL protection policy.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the rate policy.", "type": "string" }, "hostnamePaths": { "description": "The hostname and path combinations to match on.", "items": { "additionalProperties": false, "description": "The hostname and path combinations to match on.", "properties": { "hostname": { "description": "The hostnames you choose to match on.", "type": "string" }, "paths": { "description": "The list of paths to match on.", "items": { "type": "string" }, "type": "array" } }, "required": [ "hostname", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/url-protection-policy-hostpath.yaml" } }, "minItems": 1, "type": "array" }, "intelligentLoadShedding": { "description": "Enable or disable intelligent load shedding. If enabled, traffic that matches the load shedding categories is eligible for shedding if the origin rate exceeds the load shedding threshold.", "type": "boolean" }, "name": { "description": "The rate policy's unique name.", "type": "string" }, "policyId": { "description": "__Read-only__ Uniquely identifies the URL protection policy.", "format": "int64", "readOnly": true, "type": "integer" }, "protectionType": { "description": "If matching on `hostnamePaths`, specify `SINGLE` to match on a hostname and path, or `MULTIPLE` to match on hostname and path combinations.", "enum": [ "SINGLE", "MULTIPLE" ], "type": "string" }, "rateThreshold": { "description": "The allowed hits per second during any five-second interval.", "type": "integer" }, "sheddingThresholdHitsPerSec": { "description": "Specify the threshold value, in hits per second, after which traffic can be shed. The `sheddingThresholdHitsPerSec` value must be between 25%-90% of the `rateThreshold` value. If you enabled `intelligentLoadShedding`, this value is required.", "type": "integer" }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the URL protection policy.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the URL protection policy.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the URL protection policy.", "readOnly": true, "type": "boolean" } }, "required": [ "intelligentLoadShedding", "rateThreshold", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/url-protection-policy.yaml" } }, "type": "array" } }, "required": [ "urlProtectionPolicies" ], "type": "object", "x-akamai": { "file-path": "schemas/url-protection-policies.yaml" } }, "url-protection-policy": { "additionalProperties": false, "description": "Contains details about a URL protection policy.", "properties": { "apiDefinitions": { "description": "The API endpoints to match on in incoming requests. This only applies to the `api` `matchType`.", "items": { "additionalProperties": false, "properties": { "apiDefinitionId": { "description": "Uniquely identifies each API endpoint.", "format": "int64", "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": { "format": "int64", "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" }, "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the URL protection policy.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "A list of unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. URL protection bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS Fingerprint, against the specified client list or network list.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "categories": { "description": "The traffic categories to perform load shedding on when the origin traffic rate exceeds the load shedding threshold. If `intelligentLoadShedding` is set to `true`, specify one or more categories.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Specify one or more load shedding categories for the URL protection policy.", "properties": { "type": { "description": "Specify the type of traffic to shed first before reaching the requests per second (RPS) limit. `BOTS` includes bots from Akamai's existing list of known bots. `CLIENT_REPUTATIONS` includes traffic from clients with a bad client reputation score. `CLOUD_PROVIDERS` includes traffic from providers like AWS, Microsoft Azure, and Google Cloud. `PROXIES` includes proxy traffic as determined by IPQualityScore (IPQS) and Akamai EdgeScape. `TOR_EXIT_NODES` includes traffic defined in Akamai's existing network list of nodes. `PLATFORM_DDOS_INTELLIGENCE` includes traffic detected by Akamai's DDOS Intelligence platform.", "enum": [ "BOTS", "CLIENT_REPUTATIONS", "CLOUD_PROVIDERS", "PROXIES", "TOR_EXIT_NODES", "PLATFORM_DDOS_INTELLIGENCE" ], "type": "string" } }, "required": [ "type" ], "title": "Client list category", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-category.yaml" } }, { "additionalProperties": false, "description": "Defines a `CLIENT_LIST` load shedding category for a URL protection policy.", "properties": { "listIds": { "description": "A list of client list identifiers to match on.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the selected client lists match.", "type": "boolean" }, "type": { "description": "Specify `CLIENT_LIST` to match on a client list.", "enum": [ "CLIENT_LIST" ], "type": "string" } }, "required": [ "type" ], "title": "Other categories", "type": "object", "x-akamai": { "file-path": "schemas/url-protection-client-list-category.yaml" } } ] }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The timestamp when you created the URL protection policy.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the URL protection policy.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the rate policy.", "type": "string" }, "hostnamePaths": { "description": "The hostname and path combinations to match on.", "items": { "additionalProperties": false, "description": "The hostname and path combinations to match on.", "properties": { "hostname": { "description": "The hostnames you choose to match on.", "type": "string" }, "paths": { "description": "The list of paths to match on.", "items": { "type": "string" }, "type": "array" } }, "required": [ "hostname", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/url-protection-policy-hostpath.yaml" } }, "minItems": 1, "type": "array" }, "intelligentLoadShedding": { "description": "Enable or disable intelligent load shedding. If enabled, traffic that matches the load shedding categories is eligible for shedding if the origin rate exceeds the load shedding threshold.", "type": "boolean" }, "name": { "description": "The rate policy's unique name.", "type": "string" }, "policyId": { "description": "__Read-only__ Uniquely identifies the URL protection policy.", "format": "int64", "readOnly": true, "type": "integer" }, "protectionType": { "description": "If matching on `hostnamePaths`, specify `SINGLE` to match on a hostname and path, or `MULTIPLE` to match on hostname and path combinations.", "enum": [ "SINGLE", "MULTIPLE" ], "type": "string" }, "rateThreshold": { "description": "The allowed hits per second during any five-second interval.", "type": "integer" }, "sheddingThresholdHitsPerSec": { "description": "Specify the threshold value, in hits per second, after which traffic can be shed. The `sheddingThresholdHitsPerSec` value must be between 25%-90% of the `rateThreshold` value. If you enabled `intelligentLoadShedding`, this value is required.", "type": "integer" }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the URL protection policy.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the URL protection policy.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the URL protection policy.", "readOnly": true, "type": "boolean" } }, "required": [ "intelligentLoadShedding", "rateThreshold", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/url-protection-policy.yaml" } }, "url-protection-policy-hostpath": { "additionalProperties": false, "description": "The hostname and path combinations to match on.", "properties": { "hostname": { "description": "The hostnames you choose to match on.", "type": "string" }, "paths": { "description": "The list of paths to match on.", "items": { "type": "string" }, "type": "array" } }, "required": [ "hostname", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/url-protection-policy-hostpath.yaml" } }, "validation": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "validations": { "additionalProperties": false, "description": "Contains warnings, errors, or notices determined by validating the match target.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } }, "version-notes-get-200": { "additionalProperties": false, "description": "The GET Response for Version Notes.", "properties": { "notes": { "description": "The version notes.", "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/version-notes-get-200.yaml" } }, "version-notes-put": { "additionalProperties": false, "description": "Specifies the setting for a version note update request.", "properties": { "notes": { "description": "The version notes.", "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/version-notes-put.yaml" } }, "version-notes-put-200": { "additionalProperties": false, "description": "The PUT Response for Version Notes.", "properties": { "notes": { "description": "The version notes.", "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/version-notes-put-200.yaml" } }, "waf-config-version": { "additionalProperties": false, "description": "Contains configuration version details.", "properties": { "basedOn": { "description": "__Read-only__ The version from which you cloned this version.", "readOnly": true, "type": "integer" }, "configId": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "configName": { "description": "The security configuration name.", "type": "string" }, "createDate": { "description": "__Read-only__ The date when you created the configuration version.", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The user who created the configuration version.", "readOnly": true, "type": "string" }, "production": { "additionalProperties": false, "description": "__Read-only__ The activation status of the configuration version in the production network.", "properties": { "action": { "description": "The action taken on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status, either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "readOnly": true, "required": [ "status" ], "type": "object" }, "staging": { "additionalProperties": false, "description": "__Read-only__ The activation status of the configuration version in the staging network.", "properties": { "action": { "description": "The action taken on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status, either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The ISO 8601 time stamp indicating the activation time.", "type": "string" } }, "readOnly": true, "required": [ "status" ], "type": "object" }, "version": { "description": "__Read-only__ The security configuration version.", "readOnly": true, "type": "integer" }, "versionNotes": { "description": "The notes you entered for the configuration version.", "type": "string" } }, "required": [ "configId", "configName", "version", "staging", "production" ], "type": "object", "x-akamai": { "file-path": "schemas/waf-config-version.yaml" } }, "waf-config-versions": { "additionalProperties": false, "description": "Contains details about a security configuration's versions.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configName": { "description": "The name you assigned to the security configuration.", "type": "string" }, "lastCreatedVersion": { "description": "The version number of the security configuration that you created most recently.", "type": "integer" }, "page": { "description": "The current page number.", "type": "integer" }, "pageSize": { "description": "Represents the number of items per page.", "type": "integer" }, "productionActiveVersion": { "description": "The version number of the security configuration that is currently active on the production network.", "type": "integer" }, "productionExpediteRequestId": { "description": "Uniquely identifies the expedite activation request of the configuration version on the production network.", "type": "integer" }, "stagingActiveVersion": { "description": "The version number of the security configuration that is currently active on the staging network.", "type": "integer" }, "stagingExpediteRequestId": { "description": "Uniquely identifies the expedite activation request of the configuration version on the staging network.", "type": "integer" }, "totalSize": { "description": "The total number of configuration versions.", "type": "integer" }, "versionList": { "description": "The security configuration's versions.", "items": { "additionalProperties": false, "properties": { "basedOn": { "description": "The version from which you cloned this version.", "type": "integer" }, "createDate": { "description": "The date when you created the configuration version.", "type": "string" }, "createdBy": { "description": "The user who created the configuration version.", "type": "string" }, "production": { "additionalProperties": false, "description": "Contains details about the version's activation in the production network.", "properties": { "action": { "description": "The action taken on the configuration version, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status of the configuration version. Either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "staging": { "additionalProperties": false, "description": "Contains details about the version's activation in the staging network.", "properties": { "action": { "description": "The action taken on the configuration version, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status of the configuration version. Either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "version": { "description": "The security configuration's version.", "type": "integer" }, "versionNotes": { "description": "The notes you entered for the configuration version.", "type": "string" } }, "required": [ "production", "staging", "version" ], "type": "object" }, "type": "array" } }, "required": [ "configId", "configName", "lastCreatedVersion", "page", "pageSize", "totalSize" ], "type": "object", "x-akamai": { "file-path": "schemas/waf-config-versions.yaml" } } } }, "externalDocs": { "description": "See documentation for Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference" }, "info": { "description": "Manage your configurations for Kona Site Defender,\nWeb Application Protector, and Client Reputation.\n", "license": { "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, "title": "Akamai: Application Security API", "version": "v1" }, "openapi": "3.0.0", "paths": { "/activations": { "post": { "description": "__All products__ Activates one or more configurations globally. Note that you need to explicitly list any invalid hosts in the `acknowledgedInvalidHostsByConfig` parameter in order to successfully activate a configuration that includes invalid hostnames. If you have an invalid hostname that isn't explicitly called out you'll receive an error telling you to add them to `acknowledgedInvalidHostsByConfig`. See [Activate with invalid hostnames](https://techdocs.akamai.com/application-security/reference/activate-with-invalid-hostnames) for instructions.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-activations" }, "operationId": "post-activations", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "ACTIVATE", "activationConfigs": [ { "configId": 1, "configVersion": 4 } ], "network": "STAGING", "note": "Free text notes", "notificationEmails": [ "a@example.com", "b@example.com" ] }, "schema": { "additionalProperties": false, "properties": { "acknowledgedInvalidHosts": { "description": "The list of invalid hostnames in the security configuration to activate. In some cases, you may want to activate a security configuration with hostnames that WAF can't protect (for example, hostnames not managed as Akamai properties, or managed under a different contract than the configuration). By default, the existence of invalid hostnames blocks activation with a warning. The warning includes the names of the invalid hostnames. If you want to activate a configuration with invalid hostnames, enter the hostnames in this array. This field is now deprecated. Use `acknowledgedInvalidHostsByConfig` instead.", "items": { "type": "string" }, "type": "array" }, "acknowledgedInvalidHostsByConfig": { "description": "The list of invalid hostnames per security configuration to activate. In some cases, you may want to activate a security configuration with hostnames that WAF can't protect (for example, hostnames not managed as Akamai properties, or managed under a different contract than the configuration). By default, the existence of invalid hostnames blocks activation with a warning. The warning includes the names of the invalid hostnames. If you want to activate a configuration with invalid hostnames, enter the hostnames and the configuration ID in this array.", "items": { "additionalProperties": false, "properties": { "configId": { "description": "Uniquely identifies the security configuration with invalid hostnames.", "type": "integer" }, "invalidHosts": { "description": "The list of invalid hostnames in the security configuration.", "items": { "type": "string" }, "type": "array" } }, "required": [ "configId", "invalidHosts" ], "type": "object" }, "type": "array" }, "action": { "description": "The action to take, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "activationConfigs": { "description": "Specifies the security configuration and version to activate or deactivate.", "items": { "additionalProperties": false, "properties": { "configId": { "description": "The origin identifier or destination configuration to activate.", "type": "integer" }, "configVersion": { "description": "The origin version or destination configuration to activate.", "type": "integer" } }, "required": [ "configId", "configVersion" ], "type": "object" }, "maxItems": 2, "minItems": 1, "type": "array" }, "network": { "description": "The target Akamai activation environment, either `STAGING` or `PRODUCTION`.", "enum": [ "STAGING", "PRODUCTION" ], "type": "string" }, "note": { "description": "The notes you entered for the activation.", "type": "string" }, "notificationEmails": { "description": "The email addresses to notify when the activation happens.", "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "activationConfigs", "network", "note", "notificationEmails" ], "type": "object", "x-akamai": { "file-path": "schemas/activations-post.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "action": "ACTIVATE", "activationConfigs": [ { "configId": 1, "configName": "config 1", "configVersion": 4, "previousConfigVersion": 2 } ], "activationId": 1234, "createDate": "2013-10-07T17:41:52+00:00", "createdBy": "mrossi", "dispatchCount": 1, "estimate": "PTM5", "network": "PRODUCTION", "status": "RECEIVED" }, "schema": { "additionalProperties": false, "description": "Contains the activation status and settings for a configuration version.", "properties": { "action": { "description": "The action performed on this activation, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "activationConfigs": { "description": "Specifies the security configuration and activation version.", "items": { "additionalProperties": false, "properties": { "configId": { "description": "The origin identifier or the activation's destination configuration.", "type": "integer" }, "configName": { "description": "The name you assigned to the configuration. This field is provided for information purposes and only appears in the API output.", "type": "string" }, "configVersion": { "description": "The origin version or the activation's destination configuration.", "type": "integer" }, "previousConfigVersion": { "description": "__Read-only__ The previous active configuration version.", "readOnly": true, "type": "integer" } }, "required": [ "configId", "configVersion" ], "type": "object" }, "type": "array" }, "activationId": { "description": "Uniquely identifies the activation.", "type": "integer" }, "completionDate": { "description": "__Read-only__ The ISO 8601 timestamp at which the activation reaches a steady state and validates across the Akamai network.", "format": "date-time", "readOnly": true, "type": "string" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp at which the activation request was submitted.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The user who created the activation request.", "readOnly": true, "type": "string" }, "dispatchCount": { "description": "__Read-only__ The number of times which this activation has been dispatched to the Akamai edge network. A number greater than 1 indicates that this activation may be retried due to network safety concerns.", "readOnly": true, "type": "integer" }, "estimate": { "description": "The estimated time remaining to complete the activation in ISO 8601 duration format, starting when the response is generated.", "type": "string" }, "network": { "description": "The Akamai activation environment, either `STAGING` or `PRODUCTION`.", "enum": [ "STAGING", "PRODUCTION" ], "type": "string" }, "status": { "description": "The current activation status, either `RECEIVED`, `LIVE`, `DEPLOYED`, `CANCELING`, `STOPPED`, `REMOVED`, `ROLLBACK`, `ACTIVATED`, `FAILED`, `CANCELLING`, or `UNDEPLOYED`.", "enum": [ "RECEIVED", "LIVE", "DEPLOYED", "STOPPED", "REMOVED", "ROLLBACK", "ACTIVATED", "FAILED", "CANCELLING", "UNDEPLOYED" ], "type": "string" } }, "required": [ "activationId", "action", "network", "status", "activationConfigs", "createdBy", "createDate" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-status.yaml" } } } }, "description": "Activation request successful." }, "202": { "content": { "application/json": { "example": { "createDate": "2018-06-19T11:27:55Z", "links": { "check-status": { "href": "/appsec/v1/activations/status/f81c92c5-b150-4c41-9b53-9cef7969150a" } }, "statusId": "f81c92c5-b150-4c41-9b53-9cef7969150a" }, "schema": { "additionalProperties": false, "description": "Describes the activation request's status upon creation.", "properties": { "createDate": { "description": "The time when you submitted this activation request.", "format": "date-time", "type": "string" }, "links": { "additionalProperties": false, "description": "A 303 response returns a link to additional information about your activation request status.", "properties": { "check-status": { "additionalProperties": false, "description": "Returns details about the status of the activation request.", "properties": { "detail": { "description": "Any additional information about the target of the link.", "type": "string" }, "href": { "description": "URL to access or perform the action on a related resource. May be expressed as an absolute server path, or relative to the current URL call.", "type": "string" }, "method": { "default": "GET", "description": "The HTTP method with which to call the `href`, `GET` by default.", "type": "string" } }, "required": [ "href" ], "type": "object", "x-akamai": { "file-path": "schemas/link.yaml" } } }, "required": [ "check-status" ], "type": "object" }, "statusId": { "description": "Uniquely identifies the activation request. You can use this ID to poll for the status of your activation request.", "type": "string" } }, "required": [ "statusId", "createDate" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-request-status-created.yaml" } } } }, "description": "Activation request launched.", "headers": { "Location": { "description": "Location at which you can find the status of the ongoing job to create your activation request.", "schema": { "type": "string" } } } }, "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": { "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": { "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 the configuration.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Activate a configuration version", "tags": [ "Activations" ], "x-akamai": { "labels": [ "All products" ] } }, "x-akamai": { "file-path": "paths/activations.yaml", "path-info": "/activations" } }, "/activations/status/{statusId}": { "get": { "description": "__All products__ Returns the status of a long-running activation request. Any errors that occur when generating the activation cause this API to respond with the underlying error status.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-activations-status" }, "operationId": "get-activations-status", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "createDate": "2018-06-19T11:27:55Z", "statusId": "f81c92c5-b150-4c41-9b53-9cef7969150a" }, "schema": { "additionalProperties": false, "description": "Describes the status of the activation.", "properties": { "createDate": { "description": "The time when you submitted this activation request.", "format": "date-time", "type": "string" }, "statusId": { "description": "Uniquely identifies the activation request. You can use this identifier to poll for the status of your activation request.", "type": "string" } }, "required": [ "statusId", "createDate" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-request-status-in-progress.yaml" } } } }, "description": "Your activation request is still being created. Keep polling this API to get the latest status.", "headers": { "Retry-After": { "description": "The recommended wait time (in seconds) before calling this endpoint to check the status again.", "schema": { "type": "string" } } } }, "303": { "content": { "application/json": { "example": { "activationId": 1234 }, "schema": { "additionalProperties": false, "description": "Describes an activation.", "properties": { "activationId": { "description": "Uniquely identifies the activation once the activation request is complete. You can use this identifier with the activation endpoints.", "type": "integer" } }, "required": [ "activationId" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-request-status-complete.yaml" } } } }, "description": "Your activation is ready. Follow the redirect to get the latest status.", "headers": { "Location": { "description": "The path at which the newly created activation can be found.", "schema": { "type": "string" } } } } }, "summary": "Get an activation request status", "tags": [ "Activation status" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "UUID of this activation request status.", "in": "path", "name": "statusId", "required": true, "schema": { "example": "f81c92c5-b150-4c41-9b53-9cef7969150a", "type": "string" }, "x-akamai": { "file-path": "parameters/status-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/activations-status.yaml", "path-info": "/activations/status/{statusId}" } }, "/activations/{activationId}": { "get": { "description": "__All products__ Returns the status of an activation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-activation" }, "operationId": "get-activation", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "action": "ACTIVATE", "activationConfigs": [ { "configId": 1, "configName": "config 1", "configVersion": 4, "previousConfigVersion": 2 } ], "activationId": 1234, "createDate": "2013-10-07T17:41:52+00:00", "createdBy": "mrossi", "dispatchCount": 1, "estimate": "PTM5", "network": "PRODUCTION", "status": "RECEIVED" }, "schema": { "additionalProperties": false, "description": "Contains the activation status and settings for a configuration version.", "properties": { "action": { "description": "The action performed on this activation, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "activationConfigs": { "description": "Specifies the security configuration and activation version.", "items": { "additionalProperties": false, "properties": { "configId": { "description": "The origin identifier or the activation's destination configuration.", "type": "integer" }, "configName": { "description": "The name you assigned to the configuration. This field is provided for information purposes and only appears in the API output.", "type": "string" }, "configVersion": { "description": "The origin version or the activation's destination configuration.", "type": "integer" }, "previousConfigVersion": { "description": "__Read-only__ The previous active configuration version.", "readOnly": true, "type": "integer" } }, "required": [ "configId", "configVersion" ], "type": "object" }, "type": "array" }, "activationId": { "description": "Uniquely identifies the activation.", "type": "integer" }, "completionDate": { "description": "__Read-only__ The ISO 8601 timestamp at which the activation reaches a steady state and validates across the Akamai network.", "format": "date-time", "readOnly": true, "type": "string" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp at which the activation request was submitted.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The user who created the activation request.", "readOnly": true, "type": "string" }, "dispatchCount": { "description": "__Read-only__ The number of times which this activation has been dispatched to the Akamai edge network. A number greater than 1 indicates that this activation may be retried due to network safety concerns.", "readOnly": true, "type": "integer" }, "estimate": { "description": "The estimated time remaining to complete the activation in ISO 8601 duration format, starting when the response is generated.", "type": "string" }, "network": { "description": "The Akamai activation environment, either `STAGING` or `PRODUCTION`.", "enum": [ "STAGING", "PRODUCTION" ], "type": "string" }, "status": { "description": "The current activation status, either `RECEIVED`, `LIVE`, `DEPLOYED`, `CANCELING`, `STOPPED`, `REMOVED`, `ROLLBACK`, `ACTIVATED`, `FAILED`, `CANCELLING`, or `UNDEPLOYED`.", "enum": [ "RECEIVED", "LIVE", "DEPLOYED", "STOPPED", "REMOVED", "ROLLBACK", "ACTIVATED", "FAILED", "CANCELLING", "UNDEPLOYED" ], "type": "string" } }, "required": [ "activationId", "action", "network", "status", "activationConfigs", "createdBy", "createDate" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-status.yaml" } } } }, "description": "Successfully returned activation status." }, "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": { "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": { "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 this activation.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Get activation status", "tags": [ "Activation status" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for an activation.", "in": "path", "name": "activationId", "required": true, "schema": { "example": 1234, "type": "integer" }, "x-akamai": { "file-path": "parameters/activation-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/activation.yaml", "path-info": "/activations/{activationId}" } }, "/api-discovery": { "get": { "description": "__All products__ List APIs discovered in your traffic that are new or not yet protected under API protections. An API is considered new if it isn't registered, and appears in the discovered APIs list if it's had at least 1000 requests over the last 30 days and at least one 2xx response.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-api-list" }, "operationId": "get-api-list", "parameters": [ { "description": "If `true`, includes all discovered APIs including ones you have hidden. By default, `false` returns only the visible APIs.", "in": "query", "name": "includeHidden", "schema": { "default": false, "example": true, "type": "boolean" }, "x-akamai": { "file-path": "parameters/hidden-query.yaml" } }, { "description": "Filter results by hostname or basepath. You can also match on substrings.", "in": "query", "name": "search", "schema": { "example": "www.example.com", "type": "string" }, "x-akamai": { "file-path": "parameters/api-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "apis": [ { "basePath": "/api/v2", "encodedBasePath": "L2FwaS92Mg", "encodedHost": "Y2RuLnh5ei5jb20", "host": "cdn.xyz.com", "lastModified": "2021-08-24", "type": "API", "visibility": "VISIBLE" }, { "basePath": "/api/v3", "encodedBasePath": "L2FwaS92Mg", "encodedHost": "Y2RuLnh5ei5jb20", "host": "host.xyz.com", "lastModified": "2021-08-29", "type": "RESOURCE", "visibility": "VISIBLE" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about APIs discovered by analyzing your existing traffic.", "properties": { "apis": { "description": "A list of APIs that have been discovered but are not yet protected by API Protections.", "items": { "additionalProperties": false, "description": "Contains detected API details.", "properties": { "basePath": { "description": "The base path where the API serves content.", "type": "string" }, "encodedBasePath": { "description": "The base64 encoded value of the basepath.", "type": "string" }, "encodedHost": { "description": "The base64 encoded value of the hostname.", "type": "string" }, "host": { "description": "The hostname where the API resides.", "type": "string" }, "lastModified": { "description": "Indicates the date when API Discovery last detected traffic on this API.", "format": "date", "type": "string" }, "type": { "description": "This identifies whether it's a new `API` or a new `RESOURCE` on an existing endpoint definition.", "enum": [ "API", "RESOURCE" ], "type": "string" }, "visibility": { "description": "The visibility status, either `VISIBLE` or `HIDDEN`.", "enum": [ "VISIBLE", "HIDDEN" ], "type": "string" } }, "required": [ "host", "basePath", "encodedHost", "encodedBasePath", "type", "visibility", "lastModified" ], "type": "object", "x-akamai": { "file-path": "schemas/api-discovery.yaml" } }, "type": "array" } }, "required": [ "apis" ], "x-akamai": { "file-path": "schemas/api-discovered-list.yaml" } } } }, "description": "Successfully retrieved APIs." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List discovered APIs", "tags": [ "Discovered APIs" ], "x-akamai": { "labels": [ "All products" ] } }, "x-akamai": { "file-path": "paths/api-discovery.yaml", "path-info": "/api-discovery" } }, "/api-discovery/host/{hostname}/basepath/{basePath}": { "get": { "description": "__All products__ Returns details about an API discovered in account traffic. It is identified based on hostname and basepath.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-api-details" }, "operationId": "get-api-details", "parameters": [ { "description": "If `true`, includes all discovered APIs including ones you have hidden. By default, `false` returns only the visible APIs.", "in": "query", "name": "includeHidden", "schema": { "default": false, "example": true, "type": "boolean" }, "x-akamai": { "file-path": "parameters/hidden-query.yaml" } }, { "description": "Filter results by name, description, or ID. You can match on substrings.", "in": "query", "name": "search", "schema": { "example": "SQL Injection", "type": "string" }, "x-akamai": { "file-path": "parameters/search-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "apiEndpointIds": [ 320110 ], "basePath": "/routing/checkout/init", "discoveryType": "RESOURCE", "enrichment": { "options": 0, "browsers": 1715, "clientErrors": 0, "clientReputation": 0, "dateFirstSeen": "2021-11-30", "dateLastModified": "2021-11-30", "dateLastSeen": "2021-12-29", "deletes": 0, "dosAttackers": 0, "formats": [ "JSON" ], "gets": 0, "hostSamples": [ "example.com" ], "mobiles": 810, "paths": [ { "options": 0, "deletes": 0, "gets": 0, "posts": 1715, "puts": 0, "samples": [ "" ], "template": "" } ], "posts": 1715, "puts": 0, "redirects": 0, "requests": 1715, "requestsBadReputation": 0, "requestsLastDay": 57, "scanningTools": 0, "serverErrors": 0, "successes": 1715, "totalErrors": 0, "trend": "DOWN", "webAttackers": 0, "webScrapers": 0 }, "host": "example.com", "visibility": "VISIBLE" }, "schema": { "additionalProperties": false, "description": "Describes properties for APIs discovered on your account.", "properties": { "apiEndpointIds": { "description": "The unique identifiers for APIs you're matching. This is available only for the `RESOURCE` discovery type.", "items": { "type": "integer" }, "type": "array" }, "basePath": { "description": "The base path where the API serves content.", "type": "string" }, "discoveryType": { "description": "Use `API` when you create a new API. Use `RESOURCE` to add a new resource to an existing API.", "enum": [ "API", "RESOURCE" ], "type": "string" }, "enrichment": { "additionalProperties": false, "description": "Summarizes the discovered API metrics.", "properties": { "options": { "description": "The number of detected OPTION requests the API received.", "type": "integer" }, "browsers": { "description": "The number of detected requests the API received through a browser.", "type": "integer" }, "clientErrors": { "description": "The number of detected client error responses (4xx status codes) the API returned.", "type": "integer" }, "clientReputation": { "description": "The percentage of clients with bad reputations.", "maximum": 100, "minimum": 0, "type": "number" }, "dateFirstSeen": { "description": "When the API was first detected in the Akamai network.", "type": "string" }, "dateLastModified": { "description": "When the API was last updated.", "type": "string" }, "dateLastSeen": { "description": "When the API last served traffic in the Akamai network.", "type": "string" }, "deletes": { "description": "The number of detected DELETE requests the API received.", "type": "integer" }, "dosAttackers": { "description": "The percentage of detected DoS attackers among the clients with bad reputation.", "maximum": 100, "minimum": 0, "type": "number" }, "formats": { "description": "Data formats the API returns.", "items": { "type": "string" }, "type": "array" }, "gets": { "description": "The number of detected GET requests the API received.", "type": "integer" }, "hostSamples": { "description": "The set of sample hostnames if a hostname includes a wildcard. For non-wildcard hostnames, this shows the hostname.", "items": { "type": "string" }, "type": "array" }, "mobiles": { "description": "The number of detected requests the API received through a mobile device.", "type": "integer" }, "newlyDiscovered": { "description": "Indicates whether this is a newly discovered API or and API not yet included in your API protections.", "type": "boolean" }, "paths": { "description": "The resource paths detected for resources that include wildcards.", "items": { "additionalProperties": false, "properties": { "options": { "description": "The number of detected OPTIONS requests the API received.", "type": "integer" }, "deletes": { "description": "The number of detected DELETE requests the API received.", "type": "integer" }, "gets": { "description": "The number of detected GET requests the API received.", "type": "integer" }, "posts": { "description": "The number of detected POST requests the API received.", "type": "integer" }, "puts": { "description": "The number of detected PUT requests the API received.", "type": "integer" }, "samples": { "description": "Sample resource paths detected for resources that include wildcards. For non-wildcards, this shows the full path.", "items": { "type": "string" }, "type": "array" }, "template": { "description": "The templatized paths for resources that include a wildcard.", "type": "string" } } }, "type": "array" }, "posts": { "description": "The number of detected POST requests the API received.", "type": "integer" }, "puts": { "description": "The number of detected PUT requests the API received.", "type": "integer" }, "redirects": { "description": "The number of detected redirect responses (3xx status codes) the API returned.", "type": "integer" }, "requests": { "description": "The number of detected requests sent to the API.", "type": "integer" }, "requestsBadReputation": { "description": "The percentage of detected requests sent to the API by clients with the reputation score greater than five.", "maximum": 100, "minimum": 0, "type": "number" }, "requestsLastDay": { "description": "The number of detected requests sent to the API during the previous day.", "type": "integer" }, "scanningTools": { "description": "The percentage of detected scanners among the clients with bad reputations.", "maximum": 100, "minimum": 0, "type": "number" }, "serverErrors": { "description": "The number of detected server error responses (5xx status codes) the API returned.", "type": "integer" }, "successes": { "description": "The number of detected success responses (2xx status codes) the API returned.", "type": "integer" }, "totalDailyRequests": { "description": "The number of detected requests in the last 30 days.", "items": { "additionalProperties": false, "properties": { "date": { "description": "The number of detected requests on each day.", "type": "integer" } }, "type": "object" }, "type": "array" }, "totalErrors": { "description": "The number of detected error responses.", "type": "integer" }, "trend": { "description": "The trend of the current day's detected requests versus the average number of detected requests in the last 30 days, either `UP` or `DOWN`.", "enum": [ "UP", "DOWN" ], "type": "string" }, "webAttackers": { "description": "The percentage of detected web attackers among the clients with bad reputations.", "maximum": 100, "minimum": 0, "type": "number" }, "webScrapers": { "description": "The percentage of detected web scrapers among the clients with bad reputations.", "maximum": 100, "minimum": 0, "type": "number" } }, "type": "object" }, "host": { "description": "The hostname where the API resides. If you haven't configured the hostname in Property Manager, you won't be able to register the API that uses the hostname.", "type": "string" }, "visibility": { "description": "When `HIDDEN`, the API is omitted from future responses for the person who runs this operation. When `VISIBLE`, the API is included in those responses. This operation is per-user. APIs you hide under your credentials still appear unhidden for other users making the same call under their credentials.", "enum": [ "HIDDEN", "VISIBLE" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/api-discovery-details-200.yaml" } } } }, "description": "Successfully retrieved the details." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get a discovered API", "tags": [ "Discovered APIs" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Hide or show an API. You can choose to include or exclude APIs from the [Get discovered APIs](https://techdocs.akamai.com/application-security/reference/get-api-list) response. This operation is per-user. If you hide an API from the response, another of your colleagues will still see that API in the response when they run this operation with their own credentials.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-api-visibility" }, "operationId": "put-api-visibility", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "hidden": true, "reason": "FALSE_POSITIVE" }, "schema": { "additionalProperties": false, "description": "Describes an API's visibility status.", "properties": { "hidden": { "description": "Describes an API's visibility status.", "type": "boolean" }, "reason": { "description": "The reason you've decided to hide the API from the API list. Use `NOT_ELIGIBLE` if you want to hide it for now and choose what to do with the API at a later time. Use `FALSE_POSITIVE` for APIs you feel are incorrectly included in the data.", "enum": [ "NOT_ELIGIBLE", "FALSE_POSITIVE" ], "type": "string" } }, "required": [ "hidden" ], "type": "object", "x-akamai": { "file-path": "schemas/api-visibility.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "hidden": true, "reason": "FALSE_POSITIVE" }, "schema": { "additionalProperties": false, "description": "Describes an API's visibility status.", "properties": { "hidden": { "description": "Describes an API's visibility status.", "type": "boolean" }, "reason": { "description": "The reason you've decided to hide the API from the API list. Use `NOT_ELIGIBLE` if you want to hide it for now and choose what to do with the API at a later time. Use `FALSE_POSITIVE` for APIs you feel are incorrectly included in the data.", "enum": [ "NOT_ELIGIBLE", "FALSE_POSITIVE" ], "type": "string" } }, "required": [ "hidden" ], "type": "object", "x-akamai": { "file-path": "schemas/api-visibility.yaml" } } } }, "description": "Successfully updated the API's action." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify an API's visibility", "tags": [ "Endpoints" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "The base64-encoded value of the hostname.", "in": "path", "name": "hostname", "required": true, "schema": { "example": "d3d3LmV4YW1wbGUuY29t", "type": "string" }, "x-akamai": { "file-path": "parameters/hostname-path.yaml" } }, { "description": "The base64-encoded value of the base path.", "in": "path", "name": "basePath", "required": true, "schema": { "example": "L2FwaS92MQ==", "type": "string" }, "x-akamai": { "file-path": "parameters/basepath-path.yaml" } } ], "x-akamai": { "file-path": "paths/api-discovery-base-path.yaml", "path-info": "/api-discovery/host/{hostname}/basepath/{basePath}" } }, "/api-discovery/host/{hostname}/basepath/{basePath}/endpoints": { "post": { "description": "__All products__ Create a new API endpoint or add a resource to an existing endpoint. When you run this operation to add a new resource to an existing API, the API version is cloned for you and the resource is included in the new version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-api-endpoint-resource" }, "operationId": "post-api-endpoint-resource", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "apiName": "New API", "contractId": "C-0N7RAC71", "groupId": 12345 }, "schema": { "additionalProperties": false, "description": "Describes an API endpoint or adding a new resource to an existing endpoint.", "properties": { "apiEndpointId": { "description": "A unique identifier for an API endpoint. You need this when adding a resource to an existing endpoint.", "type": "integer" }, "apiName": { "description": "The name for this API endpoint. You need this to register an endpoint.", "type": "string" }, "contractId": { "description": "A unique identifier for a contract. You need this when registering a new endpoint.", "type": "string" }, "groupId": { "description": "A unique identifier for a group. You need this when registering a new endpoint.", "type": "integer" }, "version": { "description": "The version number. You need this when adding a resource to an existing endpoint. When a version is read-only, the version is cloned and updates are included in the newly cloned version.", "type": "integer" } }, "type": "object", "x-akamai": { "file-path": "schemas/endpoint-post.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "akamaiSecurityRestrictions": null, "apiCategoryIds": [ 2, 7 ], "apiEndPointHosts": [ "bookstore.api.akamai.com" ], "apiEndPointId": 492375, "apiEndPointLocked": false, "apiEndPointName": "Bookstore API", "apiEndPointScheme": "http/https", "apiEndPointVersion": 574127, "apiResources": [ { "apiResourceClonedFromId": null, "apiResourceId": 2926712, "apiResourceLogicId": 118435, "apiResourceMethods": [ { "apiParameters": [ { "apiChildParameters": [], "apiParamLogicId": 578116, "apiParameterId": 1212945, "apiParameterLocation": "path", "apiParameterName": "bookId", "apiParameterNotes": null, "apiParameterRequired": true, "apiParameterRestriction": null, "apiParameterType": "string", "apiResourceMethParamId": 494448, "array": false, "pathParamLocationId": null, "response": false } ], "apiResourceMethod": "GET", "apiResourceMethodId": 341591, "apiResourceMethodLogicId": 184404 }, { "apiParameters": [ { "apiChildParameters": [], "apiParamLogicId": 578117, "apiParameterId": 1212946, "apiParameterLocation": "path", "apiParameterName": "bookId", "apiParameterNotes": null, "apiParameterRequired": true, "apiParameterRestriction": { "arrayRestriction": null, "lengthRestriction": { "lengthMax": 15, "lengthMin": 3 }, "numberRangeRestriction": null, "rangeRestriction": null, "xmlConversionRule": null }, "apiParameterType": "string", "apiResourceMethParamId": 494449, "array": false, "pathParamLocationId": null, "response": false } ], "apiResourceMethod": "POST", "apiResourceMethodId": 341592, "apiResourceMethodLogicId": 184405 } ], "apiResourceName": "books", "createDate": "2019-06-12T13:06:52+0000", "createdBy": "alfulani", "description": "A book item within the bookstore API.", "link": null, "lockVersion": 0, "private": false, "resourcePath": "/books/{bookId}", "updateDate": "2019-06-12T13:06:52+0000", "updatedBy": "bookstore_admin" } ], "availableActions": [ "DELETE", "CLONE_ENDPOINT", "ACTIVATE_ON_PRODUCTION", "HIDE_ENDPOINT", "EDIT_ENDPOINT_DEFINITION", "ACTIVATE_ON_STAGING" ], "basePath": "/bookstore", "caseSensitive": true, "clonedFromVersion": null, "consumeType": "any", "contractId": "C-0N7RAC71", "createDate": "2019-06-12T13:06:52+0000", "createdBy": "hgildong", "description": "An API for bookstore users allowing them to retrieve book items, add new items (admin users), and modify existing items.", "endpointHidden": false, "groupId": 12345, "isGraphQL": false, "lockVersion": 0, "positiveConstrainsEnabled": null, "productionStatus": null, "productionVersion": { "lastError": null, "status": null, "timestamp": null, "versionNumber": null }, "protectedByApiKey": true, "securityScheme": { "securitySchemeDetail": { "apiKeyLocation": "header", "apiKeyName": "apikey" }, "securitySchemeType": "apikey" }, "source": null, "stagingStatus": null, "stagingVersion": { "lastError": null, "status": null, "timestamp": null, "versionNumber": null }, "updateDate": "2019-06-12T13:06:52+0000", "updatedBy": "bookstore_admin", "versionHidden": false, "versionNumber": 1 }, "schema": { "additionalProperties": false, "description": "Contains information about an endpoint and its associated resources.", "properties": { "akamaiSecurityRestrictions": { "additionalProperties": false, "description": "Contains information about the Kona Site Defender security restrictions that you apply to an API. Note that you should only include these details in your requests if you're a Kona Site Defender customer.", "nullable": true, "properties": { "ALLOW_UNDEFINED_RESPONSE_BODY_PARAMS": { "description": "When set to `1`, the API allows for responses with undefined parameters in the response body. When `0`, the API does not allow responses with undefined parameters in the response body.", "enum": [ 1, 0 ], "type": "integer" }, "ALLOW_UNDEFINED_RESPONSE_HEADER_PARAMS": { "description": "When set to `1`, the API allows for responses with undefined parameters in the response header. When set to `0`, the API does not allow responses with undefined parameters in the response header.", "enum": [ 1, 0 ], "type": "integer" }, "MAX_BODY_SIZE": { "description": "The maximum allowed size of a request body.", "type": "integer" }, "MAX_DOC_DEPTH": { "description": "The maximum depth of nested data elements allowed in a request body.", "type": "integer" }, "MAX_ELEMENT_NAME_LENGTH": { "description": "The maximum length of an XML element name or JSON object key name allowed in a request body.", "type": "integer" }, "MAX_INTEGER_VALUE": { "description": "The maximum integer value allowed in a request body.", "type": "integer" }, "MAX_JSONXML_ELEMENT": { "description": "The maximum number of XML elements, JSON object keys, or array items allowed in a request body.", "type": "integer" }, "MAX_STRING_LENGTH": { "description": "The maximum length of any string value in a request body.", "type": "integer" }, "POSITIVE_SECURITY_ENABLED": { "description": "Whether the API request body and resource constraints should be enforced as allowlists in your KSD security policies. Either `1` for enabled security constraints, or `0` for disabled.", "enum": [ 1, 0 ], "type": "integer" } }, "type": "object" }, "apiCategoryIds": { "description": "The category identifiers that apply to the endpoint. The value is `null` for uncategorized endpoints.", "items": { "type": "integer" }, "nullable": true, "type": "array" }, "apiEndPointHosts": { "description": "The hostnames that may receive traffic for the endpoint. At least one hostname is required before activating the endpoint.", "items": { "type": "string" }, "type": "array" }, "apiEndPointId": { "description": "The unique identifier for the endpoint.", "type": "integer" }, "apiEndPointLocked": { "description": "Whether the endpoint version is read-only.", "type": "boolean" }, "apiEndPointName": { "description": "The name of the endpoint, unique within the account.", "type": "string" }, "apiEndPointScheme": { "description": "The URL scheme to which the endpoint may respond, either `http`, `https`, or `http/https` for both.", "enum": [ "http", "https", "http/https" ], "type": "string" }, "apiEndPointVersion": { "description": "The unique identifier for the endpoint version.", "type": "integer" }, "apiResources": { "description": "The list of resource objects associated with the endpoint.", "items": { "additionalProperties": false, "description": "Contains information about a resource associated with an endpoint.", "properties": { "apiResourceClonedFromId": { "description": "For cloned resources, the unique identifier for the source resource.", "nullable": true, "type": "integer" }, "apiResourceId": { "description": "The unique identifier for the resource.", "type": "integer" }, "apiResourceLogicId": { "description": "The unique identifier for the resource across all endpoint versions.", "type": "integer" }, "apiResourceMethodNameLists": { "description": "The list of HTTP methods the resource may respond to.", "items": { "type": "string" }, "type": "array" }, "apiResourceMethods": { "description": "The list of Method objects that represent HTTP methods the resource may respond to.", "items": { "additionalProperties": false, "description": "An HTTP method to which a resource may respond.", "properties": { "apiParameters": { "description": "Parameter objects associated with the method.", "items": { "additionalProperties": false, "description": "An HTTP method to which a resource may respond.", "properties": { "apiChildParameters": { "description": "Child JSON fields or XML elements for JSON or XML body type parameters.", "items": { "description": "A nested API parameter object.", "type": "object" }, "type": "array" }, "apiParamLogicId": { "description": "The unique identifier for the parameter across all endpoint versions.", "readOnly": true, "type": "integer" }, "apiParameterId": { "description": "The unique identifier for the parameter.", "type": "integer" }, "apiParameterLocation": { "description": "The location of the parameter in an HTTP request, either `query`, `header`, `path`, `cookie`, or `body` for a JSON or XML body type parameter.", "enum": [ "query", "body", "header", "path", "cookie" ], "type": "string" }, "apiParameterName": { "description": "The name of the parameter. If the corresponding `apiParameterLocation` is `path`, ensure that this value matches the parameter name you specified in the `resourcePath`.", "type": "string" }, "apiParameterNotes": { "description": "Optional notes describing the parameter's function. If you specify an empty string in the request or omit this field from the object, the JSON response reflects it as `null`.", "nullable": true, "type": "string" }, "apiParameterRequired": { "description": "Whether the parameter is needed. If the corresponding `apiParameterLocation` is `path`, set this field to `true`.", "type": "boolean" }, "apiParameterRestriction": { "additionalProperties": false, "description": "Specify restrictions and XML representation rules for the parameter.", "nullable": true, "properties": { "arrayRestriction": { "additionalProperties": false, "description": "If you enabled an `array` field, specify restrictions on array parameters.", "nullable": true, "properties": { "collectionFormat": { "description": "The format of the array that specifies how you separated array values. Choose the default `csv` for comma separated values, `ssv` for space separated values, `tsv` for tab separated values, `pipes` for pipe separated values, or `multi` for multiple parameter instances.", "enum": [ "csv", "ssv", "tsv", "pipes", "multi" ], "type": "string" }, "maxItems": { "description": "The maximum allowed number of array items.", "type": "integer" }, "minItems": { "description": "The minimum allowed number of array items.", "type": "integer" }, "uniqueItems": { "description": "Whether the array contains unique items.", "type": "boolean" } }, "type": "object" }, "lengthRestriction": { "additionalProperties": false, "description": "Specify length restrictions for string parameters.", "nullable": true, "properties": { "lengthMax": { "description": "The maximum allowed number of characters in the string.", "type": "integer" }, "lengthMin": { "description": "The minimum allowed number of characters in the string.", "type": "integer" } }, "type": "object" }, "numberRangeRestriction": { "additionalProperties": false, "description": "Specify range restrictions on number parameters.", "nullable": true, "properties": { "numberRangeMax": { "description": "The maximum range restriction.", "type": "integer" }, "numberRangeMin": { "description": "The minimum range restriction.", "type": "integer" } }, "type": "object" }, "rangeRestriction": { "additionalProperties": false, "description": "Specify range restrictions for integer parameters.", "nullable": true, "properties": { "rangeMax": { "description": "The maximum range restriction.", "type": "integer" }, "rangeMin": { "description": "The minimum range restriction.", "type": "integer" } }, "type": "object" }, "responseRestriction": { "additionalProperties": false, "description": "The maximum allowed size of the response body.", "nullable": true, "properties": { "maxBodySize": { "description": "Specify the size limit of the response body. Choose `SIZE_6K` for 6KB, `SIZE_8K` for 8KB, `SIZE_12K` for 12KB, or `NO_LIMIT` to allow any response size.", "enum": [ "SIZE_6K", "SIZE_8K", "SIZE_12K", "NO_LIMIT" ], "type": "string" }, "statusCodes": { "description": "Response status codes to be matched to the response. Specify `null` or leave empty to apply the definition to any response body.", "items": { "type": "integer" }, "nullable": true, "type": "array" } }, "type": "object" }, "xmlConversionRule": { "additionalProperties": false, "description": "XML settings for the parameter.", "nullable": true, "properties": { "attribute": { "description": "Whether the parameter should be represented as an attribute.", "nullable": true, "type": "boolean" }, "name": { "description": "The name of the parameter in XML. By default, the XML name is the same as the parameter name specified when you created the API definition.", "type": "string" }, "namespace": { "description": "The XML namespace.", "nullable": true, "type": "string" }, "prefix": { "description": "The prefix for the XML namespace.", "nullable": true, "type": "string" }, "wrapped": { "description": "Whether the parameter should be wrapped in a parent XML element.", "nullable": true, "type": "boolean" } }, "type": "object" } }, "type": "object" }, "apiParameterType": { "description": "The data type of the parameter, either `string`, `integer`, `number`, `boolean` for cookies, headers, query string, and path parameters. For request body following types are supported: `json`, `xml`, or `json/xml` for either JSON or XML objects, or `urlencoded`.", "enum": [ "string", "integer", "number", "boolean", "json/xml", "json", "xml", "urlencoded" ], "type": "string" }, "apiResourceMethParamId": { "description": "The unique identifier for the parameter's parent method.", "nullable": true, "readOnly": true, "type": "integer" }, "array": { "description": "Whether the parameter can express more than one value. This field is only applicable for `apiChildParameters` that you can specify if the corresponding `apiParameterLocation` is `body` and the `apiParameterType` is `json/xml`. If you enable this, also define the `arrayRestriction` field.", "type": "boolean" }, "arrayItemNullable": { "description": "Indicates whether items in an array parameter can be `null`.", "nullable": true, "type": "boolean" }, "nullable": { "default": false, "description": "Indicates whether the parameter value can be `null`.", "nullable": true, "type": "boolean" }, "pathParamLocationId": { "description": "The index of a segment that includes a path parameter in a resource path. For example, given a path `\\books\\{bookId}`, the `books` segment has index `0`, and the path parameter `{bookId}` has index `1`.", "nullable": true, "type": "integer" }, "response": { "description": "Whether the parameter belongs to the response.", "type": "boolean" } }, "required": [ "apiParameterName", "apiParameterType", "apiParameterRequired", "apiParameterLocation" ], "type": "object" }, "type": "array" }, "apiResourceMethod": { "description": "The core HTTP method to which the resource may respond, either `GET`, `PUT`, `POST`, `DELETE`, `HEAD`, `PATCH`, or `OPTIONS`.", "enum": [ "DELETE", "GET", "PATCH", "PUT", "POST", "OPTIONS", "HEAD" ], "type": "string" }, "apiResourceMethodId": { "description": "The unique identifier for the resource's allowed method.", "type": "integer" }, "apiResourceMethodLogicId": { "description": "The unique identifier for the resource's method across all endpoint versions.", "type": "integer" }, "methodRestrictions": { "additionalProperties": false, "description": "Collects data for restrictions on the method level.", "nullable": true, "properties": { "allowMethodUndefinedParameters": { "additionalProperties": false, "description": "Specify whether undefined parameters are allowed, overriding the top-level setting for undefined parameters.", "properties": { "body": { "description": "Whether undefined parameters are allowed in request body.", "type": "boolean" }, "cookie": { "description": "Whether undefined parameters are allowed in request cookies.", "type": "boolean" }, "header": { "description": "Whether undefined parameters are allowed in request headers.", "type": "boolean" }, "query": { "description": "Whether undefined parameters are allowed in request query string.", "type": "boolean" } }, "required": [ "header", "cookie", "query", "body" ], "type": "object" }, "jsonRequestRejectDuplicates": { "description": "Whether to reject duplicate JSON requests.", "type": "boolean" } }, "type": "object" } }, "required": [ "apiResourceMethod" ], "type": "object" }, "type": "array" }, "apiResourceName": { "description": "The name of the resource.", "type": "string" }, "createDate": { "description": "The ISO 8601 timestamp indicating when you created the resource.", "format": "date-time", "type": "string" }, "createdBy": { "description": "The identifier for the user who created the resource.", "type": "string" }, "description": { "description": "The description to clarify the resource's function within the API. If you specify `null` in the request or omit this field from the object, the JSON response reflects it as an empty string.", "nullable": true, "type": "string" }, "link": { "description": "The location of the navigable resource within this API, for use by API clients.", "nullable": true, "type": "string" }, "lockVersion": { "description": "The identifier used for optimistic locking. See [Concurrency control](https://techdocs.akamai.com/application-security/reference/concurrency-control) for details.", "type": "integer" }, "private": { "description": "Whether the resource is private. API consumers can access private resources only if they identify with an appropriate API key.", "type": "boolean" }, "resourcePath": { "description": "The URL path relative to the hostnames on which the resource resides. When entering a resource path, you can use curly brackets (`{}`) to define path parameters (for example, `/path/{pathparam}`). If you decide to do so, ensure that the value of the `apiParameterName` field in the corresponding parameter definition matches the name that you specified in the resource path.", "type": "string" }, "updateDate": { "description": "The ISO 8601 timestamp indicating when you last modified the resource.", "format": "date-time", "type": "string" }, "updatedBy": { "description": "The identifier for the user who last modified the resource.", "type": "string" } }, "required": [ "apiResourceName", "resourcePath" ], "type": "object", "x-akamai": { "file-path": "schemas/api-resource-meth-params.yaml" } }, "type": "array" }, "apiVersionInfo": { "additionalProperties": false, "description": "Contains information about a major API version. This refers to REST API versioning and is a different concept than the endpoint configuration versions you create at Akamai.", "nullable": true, "properties": { "location": { "description": "The location of the API version value in an incoming request. Either `HEADER`, `BASE_PATH`, or `QUERY` parameter.", "enum": [ "HEADER", "BASE_PATH", "QUERY" ], "type": "string" }, "parameterName": { "description": "The name of the header or query parameter that includes the API version value. This is applicable only if the corresponding `location` field is either `HEADER` or `QUERY`.", "type": "string" }, "value": { "description": "The expected API version value in an incoming request.", "type": "string" } }, "required": [ "location" ], "type": "object", "x-akamai": { "file-path": "schemas/api-version.yaml" } }, "availableActions": { "description": "The collection of available [actions](https://techdocs.akamai.com/application-security/reference/onboarding-status-values) that you can perform on the endpoint depending on its versions' activation status.", "items": { "enum": [ "DELETE", "CLONE_ENDPOINT", "COMPARE_ENDPOINT", "COMPARE_AAG_SETTINGS", "COMPARE_RAPID_SETTINGS", "EDIT_ENDPOINT_DEFINITION", "ACTIVATE_ON_STAGING", "ACTIVATE_ON_PRODUCTION", "DEACTIVATE_ON_STAGING", "DEACTIVATE_ON_PRODUCTION", "HIDE_ENDPOINT", "SHOW_ENDPOINT" ], "type": "string" }, "type": "array" }, "basePath": { "description": "The URL path that serves as a root prefix for all resources' `resourcePath` values. This is `/` if empty. Don't append a `/` character to the path. If you specify `null` in the request or omit this field from the object, the JSON response reflects it as an empty string.", "nullable": true, "type": "string" }, "caseSensitive": { "description": "Whether the URLs and parameters within the endpoint are case sensitive.", "type": "boolean" }, "clonedFromVersion": { "description": "For cloned endpoints, the unique identifier for the source endpoint version.", "nullable": true, "type": "integer" }, "consumeType": { "description": "The content type the endpoint exchanges, either `json`, `xml`, `json/xml` for dual-format APIs, `any`, or `none`.", "enum": [ "json", "xml", "json/xml", "any", "none" ], "type": "string" }, "contractId": { "description": "The unique identifier for the contract with Akamai under which you provisioned security and delivery settings for this API.", "type": "string" }, "createDate": { "description": "The ISO 8601 timestamp indicating when you created the endpoint.", "type": "string" }, "createdBy": { "description": "The identifier for the user who created the endpoint.", "type": "string" }, "description": { "description": "The description of the endpoint. If you specify `null` in the request or omit this field from the object, the JSON response reflects it as an empty string.", "nullable": true, "type": "string" }, "endpointHidden": { "description": "Whether the endpoint is hidden. You cannot activate or delete versions of a hidden endpoint. If you want to do so, you first need to reveal the endpoint by running the [Show an endpoint](https://techdocs.akamai.com/application-security/reference/post-endpoint-show) operation.", "type": "boolean" }, "groupId": { "description": "The unique identifier for the group in Control Center under which you provisioned security and delivery settings for this API.", "type": "integer" }, "isGraphQL": { "description": "Whether the endpoint uses GraphQL to deliver structured content to clients.", "type": "boolean" }, "lockVersion": { "description": "The identifier for the last modification of an endpoint version, used for optimistic locking. See [Concurrency control](https://techdocs.akamai.com/application-security/reference/concurrency-control) for details.", "type": "integer" }, "positiveConstrainsEnabled": { "description": "Whether the KSD firewall policies are enabled for the endpoint.", "nullable": true, "type": "boolean" }, "productionStatus": { "description": "The version activation status on the production network, either `PENDING` if the version contains changes that are being propagated to the network, `ACTIVE` if the version is active, `DEACTIVATED` if the version had been active once but has been deactivated, or `FAILED` if an activation or deactivation attempt for this version has failed. The value is `null` for versions that have never been activated on this network.", "enum": [ "PENDING", "ACTIVE", "DEACTIVATED", "FAILED" ], "nullable": true, "type": "string" }, "productionVersion": { "description": "Contains information about an endpoint version's activation status on the production network.", "type": "object" }, "protectedByApiKey": { "description": "Whether you enabled API key protection for the endpoint version by making the version private.", "type": "boolean" }, "securityScheme": { "additionalProperties": false, "description": "Contains information about the key with which users may access the endpoint.", "properties": { "securitySchemeDetail": { "additionalProperties": false, "description": "Contains information about the location of the API key.", "properties": { "apiKeyLocation": { "description": "The location of the API key in incoming requests, either `cookie`, `header`, or `query` parameter.", "enum": [ "cookie", "header", "query" ], "type": "string" }, "apiKeyName": { "description": "The name of the header, query parameter, or cookie where you located the API key.", "type": "string" } }, "type": "object" }, "securitySchemeType": { "description": "The type of security scheme implemented for the endpoint. The only valid value is `apikey`.", "enum": [ "apikey" ], "type": "string" } }, "type": "object" }, "source": { "description": "Contains information about the import file used to create the endpoint.", "nullable": true, "type": "object" }, "stagingStatus": { "description": "The version activation status on the staging network, either `PENDING` if the version contains changes that are being propagated to the network, `ACTIVE` if the version is active, `DEACTIVATED` if the version had been active once but has been deactivated, or `FAILED` if an activation or deactivation attempt for this version has failed. The value is `null` for versions that have never been activated on this network.", "enum": [ "PENDING", "ACTIVE", "DEACTIVATED", "FAILED" ], "nullable": true, "type": "string" }, "stagingVersion": { "description": "Contains information about an endpoint version's activation status on the staging network.", "type": "object" }, "updateDate": { "description": "The ISO 8601 timestamp indicating when you last modified the endpoint.", "type": "string" }, "updatedBy": { "description": "The identifier for the user who last modified the endpoint.", "type": "string" }, "versionHidden": { "description": "Whether the endpoint version is hidden. You cannot activate or delete hidden versions. If you want to do so, you first need to reveal the version by running the [Show a version](https://techdocs.akamai.com/application-security/reference/post-version-show) operation.", "type": "boolean" }, "versionNumber": { "description": "The endpoint version number.", "type": "integer" } }, "required": [ "apiEndPointName", "apiEndPointHosts" ], "type": "object", "x-akamai": { "file-path": "schemas/api-endpoint-with-resource.yaml" } } } }, "description": "Successfully registered an endpoint or a new resource to an existing endpoint." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Create an endpoint or resource", "tags": [ "Endpoints" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Returns API endpoints for the specified hostname and base path. Unlike [Get discovered APIs](https://techdocs.akamai.com/application-security/reference/get-api-list), this operation returns APIs already in your API definitions. When you see a discovered API or a new resource, add it to your definition with [Create an endpoint or resource](https://techdocs.akamai.com/application-security/reference/post-api-endpoint-resource).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-discovered-api-endpoints" }, "operationId": "get-discovered-api-endpoints", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "apis": [ { "apiEndPointId": 613101, "apiEndPointName": "Access Lambda Live", "latest": { "basePath": "/access-api/v1", "version": 3 }, "production": { "basePath": "/access-api/v1", "version": 1 }, "staging": { "basePath": "/access-api/v1", "version": 2 } }, { "apiEndPointId": 613102, "apiEndPointName": "New Broadcast API", "latest": { "basePath": "/access-api", "version": 8 }, "production": { "basePath": "/access-api", "version": 4 }, "staging": { "basePath": "/access-api", "version": 5 } } ] }, "schema": { "additionalProperties": false, "description": "Specifies the list of matching API Definitions.", "properties": { "apis": { "description": "A list of API Definitions.", "items": { "additionalProperties": false, "description": "Specifies the details of an API Definition.", "properties": { "apiEndPointId": { "description": "A unique identifier for an API endpoint.", "type": "integer" }, "apiEndPointName": { "description": "The name for this API endpoint.", "type": "string" }, "latest": { "additionalProperties": false, "description": "Summarizes this API endpoint's latest version.", "properties": { "basePath": { "description": "The API endpoint's base path.", "type": "string" }, "version": { "description": "The version number.", "type": "integer" } }, "type": "object" }, "production": { "additionalProperties": false, "description": "Summarizes this API endpoint's current deployment on Akamai's production network.", "properties": { "basePath": { "description": "The API endpoint's base path.", "type": "string" }, "version": { "description": "The production version number.", "type": "integer" } }, "type": "object" }, "staging": { "additionalProperties": false, "description": "Summarizes this API endpoint's current deployment on Akamai's staging network.", "properties": { "basePath": { "description": "The API endpoint's base path.", "type": "string" }, "version": { "description": "The staging version number.", "type": "integer" } }, "type": "object" } }, "required": [ "apiEndPointId", "apiEndPointName", "latest" ], "type": "object", "x-akamai": { "file-path": "schemas/api-match.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/api-matches.yaml" } } } }, "description": "Successfully returned the data." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List discovered API endpoints", "tags": [ "Endpoints" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "The base64-encoded value of the hostname.", "in": "path", "name": "hostname", "required": true, "schema": { "example": "d3d3LmV4YW1wbGUuY29t", "type": "string" }, "x-akamai": { "file-path": "parameters/hostname-path.yaml" } }, { "description": "The base64-encoded value of the base path.", "in": "path", "name": "basePath", "required": true, "schema": { "example": "L2FwaS92MQ==", "type": "string" }, "x-akamai": { "file-path": "parameters/basepath-path.yaml" } } ], "x-akamai": { "file-path": "paths/api-discovery-base-path-endpoints.yaml", "path-info": "/api-discovery/host/{hostname}/basepath/{basePath}/endpoints" } }, "/configs": { "post": { "description": "__All products__ Create a new WAP or KSD security configuration. KSD security configurations start out empty, and WAP configurations are created with preset values. The contract you pass in the request body determines which product you use. You can edit the default settings included in the WAP configuration, but you'll need to run additional operations in this API to select specific protections for KSD. Your KSD configuration needs match targets and protection settings before you activate.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-config" }, "operationId": "post-config", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "contractId": "C-0N7RAC7", "description": "description1", "groupId": 32145, "hostnames": [ "new.example.com", "www.example.com" ], "name": "newapitest" }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security config.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "contractId": { "description": "Contract ID.", "type": "string" }, "createFrom": { "additionalProperties": false, "description": "Contains details about a source configuration and version for cloning a new security configuration.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "version": { "description": "The configuration version to clone from.", "type": "integer" } }, "required": [ "configId", "version" ], "type": "object" }, "description": { "description": "Describes the security configuration.", "type": "string" }, "groupId": { "description": "Group ID.", "type": "integer" }, "hostnames": { "description": "List of hostnames to be added to the configuration.", "items": { "type": "string" }, "type": "array" }, "name": { "description": "The name you assigned to the security configuration.", "type": "string" }, "version": { "description": "The configuration version of the security configuration.", "type": "integer" } }, "required": [ "name", "description", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/config-post.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "configId": 71710, "description": "description1", "hostnames": [ "www.abc.com", "www.xyz.com" ], "name": "newapitest", "version": 1 }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security config.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "contractId": { "description": "Contract ID.", "type": "string" }, "createFrom": { "additionalProperties": false, "description": "Contains details about a source configuration and version for cloning a new security configuration.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "version": { "description": "The configuration version to clone from.", "type": "integer" } }, "required": [ "configId", "version" ], "type": "object" }, "description": { "description": "Describes the security configuration.", "type": "string" }, "groupId": { "description": "Group ID.", "type": "integer" }, "hostnames": { "description": "List of hostnames to be added to the configuration.", "items": { "type": "string" }, "type": "array" }, "name": { "description": "The name you assigned to the security configuration.", "type": "string" }, "version": { "description": "The configuration version of the security configuration.", "type": "integer" } }, "required": [ "name", "description", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/config-post.yaml" } } } }, "description": "Successfully created a security configuration." }, "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": { "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": { "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 create access for security configurations.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Create a configuration", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Lists available security configurations.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-configs" }, "operationId": "get-configs", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "configurations": [ { "description": "(user notes)", "id": 22330, "latestVersion": 5, "name": "CaroTestTransition2Versioning" }, { "id": 7180, "latestVersion": 9, "name": "Corporate Sites WAF", "productionHostnames": [ "example.com", "www.example.net", "m.example.com" ], "productionVersion": 1, "stagingVersion": 2 } ] }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security config.", "properties": { "configurations": { "description": "A list of security configurations.", "items": { "additionalProperties": false, "description": "Contains details about a security configuration.", "properties": { "description": { "description": "__Read-only__ Describes the security configuration.", "readOnly": true, "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "latestVersion": { "description": "__Read-only__ The latest version of the security configuration.", "readOnly": true, "type": "integer" }, "name": { "description": "__Read-only__ The security configuration name.", "readOnly": true, "type": "string" }, "productionHostnames": { "description": "__Read-only__ The list of hostnames protected by this security configuration in the production network.", "items": { "type": "string" }, "readOnly": true, "type": "array" }, "productionVersion": { "description": "__Read-only__ The latest security configuration version active in the production network.", "readOnly": true, "type": "integer" }, "stagingVersion": { "description": "__Read-only__ The latest security configuration version active in the staging network.", "readOnly": true, "type": "integer" } }, "required": [ "id", "latestVersion", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-get.yaml" } }, "type": "array" } }, "required": [ "configurations" ], "type": "object", "x-akamai": { "file-path": "schemas/configs-get.yaml" } } } }, "description": "Successful response." }, "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List configurations", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "x-akamai": { "file-path": "paths/configs.yaml", "path-info": "/configs" } }, "/configs/{configId}": { "get": { "description": "__All products__ Retrieves the configuration details.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-config" }, "operationId": "get-config", "parameters": [ { "description": "If `true`, include the list of hostnames protected by this security configuration in the production network. If `false`, exclude the list of hostnames protected by this security configuration in the production network.", "in": "query", "name": "includeHostnames", "required": false, "schema": { "default": false, "example": false, "type": "boolean" }, "x-akamai": { "file-path": "parameters/include-hostnames-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "id": 7180, "latestVersion": 9, "name": "Corporate Sites WAF", "productionHostnames": [ "example.com", "www.example.net", "m.example.com" ], "productionVersion": 1, "stagingVersion": 2 }, "schema": { "additionalProperties": false, "description": "Contains details about a security configuration.", "properties": { "description": { "description": "__Read-only__ Describes the security configuration.", "readOnly": true, "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "latestVersion": { "description": "__Read-only__ The latest version of the security configuration.", "readOnly": true, "type": "integer" }, "name": { "description": "__Read-only__ The security configuration name.", "readOnly": true, "type": "string" }, "productionHostnames": { "description": "__Read-only__ The list of hostnames protected by this security configuration in the production network.", "items": { "type": "string" }, "readOnly": true, "type": "array" }, "productionVersion": { "description": "__Read-only__ The latest security configuration version active in the production network.", "readOnly": true, "type": "integer" }, "stagingVersion": { "description": "__Read-only__ The latest security configuration version active in the staging network.", "readOnly": true, "type": "integer" } }, "required": [ "id", "latestVersion", "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-get.yaml" } } } }, "description": "Successful response." }, "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": { "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 the resource.", "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": { "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 wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get a security configuration", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update the name of your security configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-config" }, "operationId": "put-config", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "description": "description1", "name": "newapitest" }, "schema": { "additionalProperties": false, "description": "Contains details of a security configuration.", "properties": { "description": { "description": "Describes the security configuration.", "type": "string" }, "name": { "description": "The name you assigned to the security configuration.", "type": "string" } }, "required": [ "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-rename.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "description": "description1", "name": "newapitest" }, "schema": { "additionalProperties": false, "description": "Contains details of a security configuration.", "properties": { "description": { "description": "Describes the security configuration.", "type": "string" }, "name": { "description": "The name you assigned to the security configuration.", "type": "string" } }, "required": [ "name" ], "type": "object", "x-akamai": { "file-path": "schemas/config-rename.yaml" } } } }, "description": "Successfully renamed the security configuration." }, "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": { "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": { "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 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": { "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 wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Rename a security configuration", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__All products__ Deletes the specified security configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-config" }, "operationId": "delete-config", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the security configuration." }, "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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Security configuration is active in a network and not editable.", "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": { "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 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": { "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": "Delete a configuration", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config.yaml", "path-info": "/configs/{configId}" } }, "/configs/{configId}/activations": { "get": { "description": "__All products__ Lists the activation history for a configuration. The history is an array in descending order of `submitDate`. The most recent submitted activation lists first.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-activation-history" }, "operationId": "get-activation-history", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "activationHistory": [ { "activatedBy": "adevi", "activationDate": "2013-10-07T17:41:52+00:00", "activationId": 1234, "network": "PRODUCTION", "notes": "Activated with new network lists", "status": "ACTIVATED", "version": 1 }, { "activatedBy": "jperez", "activationDate": "2013-10-07T15:41:52+00:00", "activationId": 1132, "network": "STAGING", "notes": "Activated with new network lists", "status": "ACTIVATION_IN_PROGRESS", "version": 2 } ], "configId": 123 }, "schema": { "additionalProperties": false, "properties": { "activationHistory": { "description": "Activations of this configuration.", "items": { "additionalProperties": false, "properties": { "activatedBy": { "description": "Username of the person that created this activation request.", "type": "string" }, "activationDate": { "description": "Date and time at which this activation request was submitted.", "format": "date-time", "type": "string" }, "activationId": { "description": "Uniquely identifies the activation.", "type": "integer" }, "network": { "description": "The target Akamai activation environment, either `STAGING` or `PRODUCTION`.", "enum": [ "STAGING", "PRODUCTION" ], "type": "string" }, "notes": { "description": "Information on activation.", "type": "string" }, "status": { "description": "The status of the activation. Either `ACTIVATED`, `DEACTIVATED`, `ACTIVATION_IN_PROGRESS`, `DEACTIVATION_IN_PROGRESS`, `EXPEDITED`, `ACTIVATION_FAILED`, `EXPEDITE_ACTIVATION_CANCELLED`, or `DEACTIVATION_FAILED`.", "enum": [ "ACTIVATED", "DEACTIVATED", "ACTIVATION_IN_PROGRESS", "DEACTIVATION_IN_PROGRESS", "EXPEDITED", "ACTIVATION_FAILED", "EXPEDITE_ACTIVATION_CANCELLED", "DEACTIVATION_FAILED" ], "type": "string" }, "version": { "description": "Version number.", "type": "integer" } }, "required": [ "activationId", "version", "status", "network", "activatedBy", "activationDate" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-history.yaml" } }, "type": "array" }, "configId": { "description": "Unique security configuration identifier.", "type": "integer" } }, "required": [ "configId", "activationHistory" ], "type": "object", "x-akamai": { "file-path": "schemas/activation-history-list.yaml" } } } }, "description": "Successful response." }, "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": { "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 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": { "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 wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List activation history", "tags": [ "Activation history" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-activations.yaml", "path-info": "/configs/{configId}/activations" } }, "/configs/{configId}/custom-rules": { "post": { "description": "__All products__ Creates a new custom rule.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-config-custom-rules" }, "operationId": "post-config-custom-rules", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "conditions": [ { "positiveMatch": true, "type": "requestMethodMatch", "value": [ "GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD" ] }, { "positiveMatch": true, "type": "pathMatch", "value": [ "/H", "/Li", "/He" ] }, { "positiveMatch": true, "type": "extensionMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "filenameMatch", "value": [ "He", "H", "Li" ], "valueCase": false, "valueWildcard": false }, { "positiveMatch": true, "type": "requestProtocolVersionMatch", "value": "HTTP/0.9" }, { "name": [ "H", "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "name": [ "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "C", "Be", "B" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "headerOrderMatch", "value": "H:He" }, { "name": "H", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "H", "He", "Li" ], "valueCase": true, "valueWildcard": true }, { "name": "Be", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "O", "N", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "C", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Carbon", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "N", "nameCase": false, "nameWildcard": false, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Nitrogen", "N" ], "valueCase": false, "valueWildcard": false }, { "name": "H", "positiveMatch": true, "type": "argsPostMatch", "value": [ "H", "Hydrogen" ] }, { "name": "He", "positiveMatch": true, "type": "argsPostMatch", "value": [ "He", "Helium" ] }, { "positiveMatch": true, "type": "argsPostNamesMatch", "value": [ "Carbon", "Oxygen", "Nitrogen", "Chlorine" ] }, { "positiveMatch": true, "type": "clientCertPresentMatch" }, { "positiveMatch": false, "type": "clientCertValidMatch" }, { "positiveMatch": true, "type": "clientTlsFingerprintMatch", "value": [ "aebbfa8e53e8661f" ] }, { "positiveMatch": true, "type": "hostMatch", "value": [ "example.com", "*.Nitrogen.gb" ] }, { "positiveMatch": false, "type": "asNumberMatch", "useXForwardForHeaders": true, "value": [ "2145697538" ] }, { "positiveMatch": false, "type": "geoMatch", "useXForwardForHeaders": true, "value": [ "AD" ] }, { "positiveMatch": false, "type": "ipAddressMatch", "useXForwardForHeaders": true, "value": [ "81.477.377.57" ] }, { "positiveMatch": true, "type": "clientListMatch", "useXForwardForHeaders": true, "value": [ "86744_AZURETLS", "83629_40KHG" ] } ], "description": "Can I create all conditions?", "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z" }, "loggingOptions": [ { "id": "CLIENT_TLS_FINGERPRINT_MATCH" } ], "name": "Fat Rule", "operation": "AND", "samplingRate": 10, "stagingOnly": true, "structured": true, "tag": [ "test" ] }, "schema": { "additionalProperties": false, "description": "Contains settings for a custom rule.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "items": { "additionalProperties": false, "properties": { "name": { "description": "The name you assign to the custom rule.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ] }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided header `name` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, `asNumberMatch`, or `clientListMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. Specify a string for the `requestProtocolVersionMatch`, `clientCertPresentMatch`, `clientCertValidMatch`, and `headerOrderMatch` conditions. For all other conditions, specify an array of strings.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ], "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueExactMatch": { "description": "Whether to consider only exact matches of the header `value`.", "type": "boolean" }, "valueIgnoreSegment": { "description": "Whether to ignore path segments when matching. This only applies when the `type` is `pathMatch`.", "type": "boolean" }, "valueNormalize": { "description": "Whether to normalize the value of the header when matching. This only applies to type values of `extensionMatch` and `pathMatch`.", "type": "boolean" }, "valueRecursive": { "description": "Whether to use recursion when matching. When `false`, you can only match on the filename in the root folder. This only applies when the condition `type` is `filenameMatch`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies when the condition `type` is `requestHeaderMatch`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequest": { "description": "Whether to inspect the HTTP request for unstructured custom rules.", "type": "boolean" }, "inspectResponse": { "description": "Whether to inspect the HTTP response for unstructured custom rules.", "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "The metadata you provided for unstructured custom rules.", "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Specify `AND` logic to require all conditions, or `OR` logic to require at least one condition to match.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "Whether the rule is active in the configuration.", "type": "boolean" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "stagingOnly": { "default": false, "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "Whether you created the rule with the structured custom rule builder or free-form XML. This needs to be `true`.", "type": "boolean" }, "tag": { "description": "The list of labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name", "operation", "structured" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rule.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "conditions": [ { "positiveMatch": true, "type": "requestMethodMatch", "value": [ "GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD" ] }, { "positiveMatch": true, "type": "pathMatch", "value": [ "/H", "/Li", "/He" ] }, { "positiveMatch": true, "type": "extensionMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "filenameMatch", "value": [ "He", "H", "Li" ], "valueCase": false, "valueWildcard": false }, { "positiveMatch": true, "type": "requestProtocolVersionMatch", "value": "HTTP/0.9" }, { "name": [ "H", "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "name": [ "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "C", "Be", "B" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "headerOrderMatch", "value": "H:He" }, { "name": "H", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "H", "He", "Li" ], "valueCase": true, "valueWildcard": true }, { "name": "Be", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "O", "N", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "C", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Carbon", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "N", "nameCase": false, "nameWildcard": false, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Nitrogen", "N" ], "valueCase": false, "valueWildcard": false }, { "name": "H", "positiveMatch": true, "type": "argsPostMatch", "value": [ "H", "Hydrogen" ] }, { "name": "He", "positiveMatch": true, "type": "argsPostMatch", "value": [ "He", "Helium" ] }, { "positiveMatch": true, "type": "argsPostNamesMatch", "value": [ "Carbon", "Oxygen", "Nitrogen", "Chlorine" ] }, { "positiveMatch": true, "type": "clientCertPresentMatch" }, { "positiveMatch": true, "type": "clientCertValidMatch" }, { "positiveMatch": true, "type": "clientTlsFingerprintMatch", "value": [ "aebbfa8e53e8661f" ] }, { "positiveMatch": true, "type": "hostMatch", "value": [ "example.com", "*.Nitrogen.gb" ] }, { "positiveMatch": false, "type": "asNumberMatch", "useXForwardForHeaders": true, "value": [ "2145697538" ] }, { "positiveMatch": false, "type": "geoMatch", "useXForwardForHeaders": true, "value": [ "AD" ] }, { "positiveMatch": false, "type": "ipAddressMatch", "useXForwardForHeaders": true, "value": [ "81.477.377.57" ] }, { "positiveMatch": true, "type": "clientListMatch", "useXForwardForHeaders": true, "value": [ "86744_AZURETLS", "83629_40KHG" ] } ], "description": "Can I create all conditions?", "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 661699, "loggingOptions": [ { "id": "CLIENT_TLS_FINGERPRINT_MATCH" } ], "name": "Fat Rule", "operation": "AND", "ruleActivated": false, "samplingRate": 10, "stagingOnly": true, "structured": true, "tag": [ "test" ], "version": 1 }, "schema": { "additionalProperties": false, "description": "Contains settings for a custom rule.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "items": { "additionalProperties": false, "properties": { "name": { "description": "The name you assign to the custom rule.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ] }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided header `name` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, `asNumberMatch`, or `clientListMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. Specify a string for the `requestProtocolVersionMatch`, `clientCertPresentMatch`, `clientCertValidMatch`, and `headerOrderMatch` conditions. For all other conditions, specify an array of strings.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ], "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueExactMatch": { "description": "Whether to consider only exact matches of the header `value`.", "type": "boolean" }, "valueIgnoreSegment": { "description": "Whether to ignore path segments when matching. This only applies when the `type` is `pathMatch`.", "type": "boolean" }, "valueNormalize": { "description": "Whether to normalize the value of the header when matching. This only applies to type values of `extensionMatch` and `pathMatch`.", "type": "boolean" }, "valueRecursive": { "description": "Whether to use recursion when matching. When `false`, you can only match on the filename in the root folder. This only applies when the condition `type` is `filenameMatch`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies when the condition `type` is `requestHeaderMatch`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequest": { "description": "Whether to inspect the HTTP request for unstructured custom rules.", "type": "boolean" }, "inspectResponse": { "description": "Whether to inspect the HTTP response for unstructured custom rules.", "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "The metadata you provided for unstructured custom rules.", "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Specify `AND` logic to require all conditions, or `OR` logic to require at least one condition to match.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "Whether the rule is active in the configuration.", "type": "boolean" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "stagingOnly": { "default": false, "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "Whether you created the rule with the structured custom rule builder or free-form XML. This needs to be `true`.", "type": "boolean" }, "tag": { "description": "The list of labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name", "operation", "structured" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rule.yaml" } } } }, "description": "Responds with the newly created rule." } }, "summary": "Create a custom rule", "tags": [ "Shared resources: Custom rules" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Lists custom rules defined in a security configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-configs-custom-rules" }, "operationId": "get-configs-custom-rules", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "customRules": [ { "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 111111, "link": "/appsec/v1/configs/99999/customRules/111111", "name": "Example 1", "samplingRate": 10, "status": "activated", "version": 1 }, { "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 111112, "link": "/appsec/v1/configs/99999/customRules/111112", "name": "Example 2", "samplingRate": 10, "status": "published", "version": 1 }, { "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 111113, "link": "/appsec/v1/configs/99999/customRules/111113", "name": "Example 3", "samplingRate": 25, "status": "unused", "version": 2 } ] }, "schema": { "additionalProperties": false, "description": "Describes the custom rule's basic information.", "properties": { "customRules": { "description": "Describes basic information about a custom rule, such as activation status or time the rule is active.", "items": { "additionalProperties": false, "properties": { "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the custom rule.", "type": "integer" }, "link": { "description": "The link to the full custom rule definition. This field is only available when you run the [List custom rules](https://techdocs.akamai.com/application-security/reference/get-configs-custom-rules) operation.", "type": "string" }, "name": { "description": "The name you assign to the custom rule.", "type": "string" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "status": { "description": "The custom rule deployment status. Either `activated` if a rule is enabled in at least one security policy within a security configuration currently active in production, `published` if a rule is associated with at least one security policy in an inactive security configuration, or `unused` if a rule exists as a shared resource, but isn't associated with any security policy. This field is only available when you run the [List custom rules](https://techdocs.akamai.com/application-security/reference/get-configs-custom-rules) operation.", "enum": [ "activated", "published", "unused" ], "type": "string" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "id", "link", "name", "status", "version" ], "type": "object" }, "type": "array" } }, "required": [ "customRules" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rules.yaml" } } } }, "description": "All the latest custom rules for this configuration." } }, "summary": "List custom rules", "tags": [ "Shared resources: Custom rules" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-custom-rules.yaml", "path-info": "/configs/{configId}/custom-rules" } }, "/configs/{configId}/custom-rules/{ruleId}": { "get": { "description": "__All products__ Returns the details of a custom rule.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-config-custom-rule" }, "operationId": "get-config-custom-rule", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "conditions": [ { "positiveMatch": true, "type": "requestMethodMatch", "value": [ "GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD" ] }, { "positiveMatch": true, "type": "pathMatch", "value": [ "/H", "/Li", "/He" ] }, { "positiveMatch": true, "type": "extensionMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "filenameMatch", "value": [ "He", "H", "Li" ], "valueCase": false, "valueWildcard": false }, { "positiveMatch": true, "type": "requestProtocolVersionMatch", "value": "HTTP/0.9" }, { "name": [ "H", "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "name": [ "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "C", "Be", "B" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "headerOrderMatch", "value": "H:He" }, { "name": "H", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "H", "He", "Li" ], "valueCase": true, "valueWildcard": true }, { "name": "Be", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "O", "N", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "C", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Carbon", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "N", "nameCase": false, "nameWildcard": false, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Nitrogen", "N" ], "valueCase": false, "valueWildcard": false }, { "name": "H", "positiveMatch": true, "type": "argsPostMatch", "value": [ "H", "Hydrogen" ] }, { "name": "He", "positiveMatch": true, "type": "argsPostMatch", "value": [ "He", "Helium" ] }, { "positiveMatch": true, "type": "argsPostNamesMatch", "value": [ "Carbon", "Oxygen", "Nitrogen", "Chlorine" ] }, { "positiveMatch": true, "type": "clientCertPresentMatch" }, { "positiveMatch": true, "type": "clientCertValidMatch" }, { "positiveMatch": true, "type": "clientTlsFingerprintMatch", "value": [ "aebbfa8e53e8661f" ] }, { "positiveMatch": true, "type": "hostMatch", "value": [ "example.com", "*.Nitrogen.gb" ] }, { "positiveMatch": false, "type": "asNumberMatch", "useXForwardForHeaders": true, "value": [ "2145697538" ] }, { "positiveMatch": false, "type": "geoMatch", "useXForwardForHeaders": true, "value": [ "AD" ] }, { "positiveMatch": false, "type": "ipAddressMatch", "useXForwardForHeaders": true, "value": [ "81.477.377.57" ] }, { "positiveMatch": true, "type": "clientListMatch", "useXForwardForHeaders": true, "value": [ "86744_AZURETLS", "83629_40KHG" ] } ], "description": "Can I create all conditions?", "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 661699, "loggingOptions": [ { "id": "CLIENT_TLS_FINGERPRINT_MATCH" } ], "name": "Fat Rule", "operation": "AND", "ruleActivated": false, "samplingRate": 10, "stagingOnly": true, "structured": true, "tag": [ "test" ], "version": 1 }, "schema": { "additionalProperties": false, "description": "Contains settings for a custom rule.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "items": { "additionalProperties": false, "properties": { "name": { "description": "The name you assign to the custom rule.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ] }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided header `name` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, `asNumberMatch`, or `clientListMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. Specify a string for the `requestProtocolVersionMatch`, `clientCertPresentMatch`, `clientCertValidMatch`, and `headerOrderMatch` conditions. For all other conditions, specify an array of strings.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ], "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueExactMatch": { "description": "Whether to consider only exact matches of the header `value`.", "type": "boolean" }, "valueIgnoreSegment": { "description": "Whether to ignore path segments when matching. This only applies when the `type` is `pathMatch`.", "type": "boolean" }, "valueNormalize": { "description": "Whether to normalize the value of the header when matching. This only applies to type values of `extensionMatch` and `pathMatch`.", "type": "boolean" }, "valueRecursive": { "description": "Whether to use recursion when matching. When `false`, you can only match on the filename in the root folder. This only applies when the condition `type` is `filenameMatch`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies when the condition `type` is `requestHeaderMatch`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequest": { "description": "Whether to inspect the HTTP request for unstructured custom rules.", "type": "boolean" }, "inspectResponse": { "description": "Whether to inspect the HTTP response for unstructured custom rules.", "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "The metadata you provided for unstructured custom rules.", "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Specify `AND` logic to require all conditions, or `OR` logic to require at least one condition to match.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "Whether the rule is active in the configuration.", "type": "boolean" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "stagingOnly": { "default": false, "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "Whether you created the rule with the structured custom rule builder or free-form XML. This needs to be `true`.", "type": "boolean" }, "tag": { "description": "The list of labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name", "operation", "structured" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rule.yaml" } } } }, "description": "Responds with the requested rule." } }, "summary": "Get a custom rule", "tags": [ "Shared resources: Custom rules" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Updates an existing custom rule.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-config-custom-rule" }, "operationId": "put-config-custom-rule", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "conditions": [ { "positiveMatch": true, "type": "requestMethodMatch", "value": [ "GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD" ] }, { "positiveMatch": true, "type": "pathMatch", "value": [ "/H", "/Li", "/He" ] }, { "positiveMatch": true, "type": "extensionMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "filenameMatch", "value": [ "He", "H", "Li" ], "valueCase": false, "valueWildcard": false }, { "positiveMatch": true, "type": "requestProtocolVersionMatch", "value": "HTTP/0.9" }, { "name": [ "H", "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "name": [ "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "C", "Be", "B" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "headerOrderMatch", "value": "H:He" }, { "name": "H", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "H", "He", "Li" ], "valueCase": true, "valueWildcard": true }, { "name": "Be", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "O", "N", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "C", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Carbon", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "N", "nameCase": false, "nameWildcard": false, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Nitrogen", "N" ], "valueCase": false, "valueWildcard": false }, { "name": "H", "positiveMatch": true, "type": "argsPostMatch", "value": [ "H", "Hydrogen" ] }, { "name": "He", "positiveMatch": true, "type": "argsPostMatch", "value": [ "He", "Helium" ] }, { "positiveMatch": true, "type": "argsPostNamesMatch", "value": [ "Carbon", "Oxygen", "Nitrogen", "Chlorine" ] }, { "positiveMatch": true, "type": "clientCertPresentMatch" }, { "positiveMatch": false, "type": "clientCertValidMatch" }, { "positiveMatch": true, "type": "clientTlsFingerprintMatch", "value": [ "aebbfa8e53e8661f" ] }, { "positiveMatch": true, "type": "hostMatch", "value": [ "example.com", "*.Nitrogen.gb" ] }, { "positiveMatch": false, "type": "asNumberMatch", "useXForwardForHeaders": true, "value": [ "2145697538" ] }, { "positiveMatch": false, "type": "geoMatch", "useXForwardForHeaders": true, "value": [ "AD" ] }, { "positiveMatch": false, "type": "ipAddressMatch", "useXForwardForHeaders": true, "value": [ "81.477.377.57" ] }, { "positiveMatch": true, "type": "clientListMatch", "useXForwardForHeaders": true, "value": [ "86744_AZURETLS", "83629_40KHG" ] } ], "description": "Can I create all conditions?", "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 661699, "loggingOptions": [ { "id": "CLIENT_TLS_FINGERPRINT_MATCH" } ], "name": "Fat Rule", "operation": "AND", "samplingRate": 10, "stagingOnly": true, "structured": true, "tag": [ "test" ], "version": 1 }, "schema": { "additionalProperties": false, "description": "Contains settings for a custom rule.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "items": { "additionalProperties": false, "properties": { "name": { "description": "The name you assign to the custom rule.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ] }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided header `name` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, `asNumberMatch`, or `clientListMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. Specify a string for the `requestProtocolVersionMatch`, `clientCertPresentMatch`, `clientCertValidMatch`, and `headerOrderMatch` conditions. For all other conditions, specify an array of strings.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ], "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueExactMatch": { "description": "Whether to consider only exact matches of the header `value`.", "type": "boolean" }, "valueIgnoreSegment": { "description": "Whether to ignore path segments when matching. This only applies when the `type` is `pathMatch`.", "type": "boolean" }, "valueNormalize": { "description": "Whether to normalize the value of the header when matching. This only applies to type values of `extensionMatch` and `pathMatch`.", "type": "boolean" }, "valueRecursive": { "description": "Whether to use recursion when matching. When `false`, you can only match on the filename in the root folder. This only applies when the condition `type` is `filenameMatch`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies when the condition `type` is `requestHeaderMatch`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequest": { "description": "Whether to inspect the HTTP request for unstructured custom rules.", "type": "boolean" }, "inspectResponse": { "description": "Whether to inspect the HTTP response for unstructured custom rules.", "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "The metadata you provided for unstructured custom rules.", "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Specify `AND` logic to require all conditions, or `OR` logic to require at least one condition to match.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "Whether the rule is active in the configuration.", "type": "boolean" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "stagingOnly": { "default": false, "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "Whether you created the rule with the structured custom rule builder or free-form XML. This needs to be `true`.", "type": "boolean" }, "tag": { "description": "The list of labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name", "operation", "structured" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rule.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "conditions": [ { "positiveMatch": true, "type": "requestMethodMatch", "value": [ "GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD" ] }, { "positiveMatch": true, "type": "pathMatch", "value": [ "/H", "/Li", "/He" ] }, { "positiveMatch": true, "type": "extensionMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "filenameMatch", "value": [ "He", "H", "Li" ], "valueCase": false, "valueWildcard": false }, { "positiveMatch": true, "type": "requestProtocolVersionMatch", "value": "HTTP/0.9" }, { "name": [ "H", "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "Li", "He", "H" ], "valueCase": true, "valueWildcard": true }, { "name": [ "He" ], "nameWildcard": true, "positiveMatch": true, "type": "requestHeaderMatch", "value": [ "C", "Be", "B" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "headerOrderMatch", "value": "H:He" }, { "name": "H", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "H", "He", "Li" ], "valueCase": true, "valueWildcard": true }, { "name": "Be", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "cookieMatch", "value": [ "O", "N", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "C", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Carbon", "C" ], "valueCase": true, "valueWildcard": true }, { "name": "N", "nameCase": false, "nameWildcard": false, "positiveMatch": true, "type": "uriQueryMatch", "value": [ "Nitrogen", "N" ], "valueCase": false, "valueWildcard": false }, { "name": "H", "positiveMatch": true, "type": "argsPostMatch", "value": [ "H", "Hydrogen" ] }, { "name": "He", "positiveMatch": true, "type": "argsPostMatch", "value": [ "He", "Helium" ] }, { "positiveMatch": true, "type": "argsPostNamesMatch", "value": [ "Carbon", "Oxygen", "Nitrogen", "Chlorine" ] }, { "positiveMatch": true, "type": "clientCertPresentMatch" }, { "positiveMatch": true, "type": "clientCertValidMatch" }, { "positiveMatch": true, "type": "clientTlsFingerprintMatch", "value": [ "aebbfa8e53e8661f" ] }, { "positiveMatch": true, "type": "hostMatch", "value": [ "example.com", "*.Nitrogen.gb" ] }, { "positiveMatch": false, "type": "asNumberMatch", "useXForwardForHeaders": true, "value": [ "2145697538" ] }, { "positiveMatch": false, "type": "geoMatch", "useXForwardForHeaders": true, "value": [ "AD" ] }, { "positiveMatch": false, "type": "ipAddressMatch", "useXForwardForHeaders": true, "value": [ "81.477.377.57" ] }, { "positiveMatch": true, "type": "clientListMatch", "useXForwardForHeaders": true, "value": [ "86744_AZURETLS", "83629_40KHG" ] } ], "description": "Can I create all conditions?", "effectiveTimePeriod": { "endDate": "2021-11-02T01:00:00.000Z", "startDate": "2021-08-05T01:00:00.000Z", "status": "expired" }, "id": 661699, "loggingOptions": [ { "id": "CLIENT_TLS_FINGERPRINT_MATCH" } ], "name": "Fat Rule", "operation": "AND", "ruleActivated": false, "samplingRate": 10, "stagingOnly": true, "structured": true, "tag": [ "test" ], "version": 1 }, "schema": { "additionalProperties": false, "description": "Contains settings for a custom rule.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "items": { "additionalProperties": false, "properties": { "name": { "description": "The name you assign to the custom rule.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ] }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided header `name` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, `asNumberMatch`, or `clientListMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. Specify a string for the `requestProtocolVersionMatch`, `clientCertPresentMatch`, `clientCertValidMatch`, and `headerOrderMatch` conditions. For all other conditions, specify an array of strings.", "oneOf": [ { "items": { "type": "string" }, "title": "Array", "type": "array" }, { "title": "String", "type": "string" } ], "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueExactMatch": { "description": "Whether to consider only exact matches of the header `value`.", "type": "boolean" }, "valueIgnoreSegment": { "description": "Whether to ignore path segments when matching. This only applies when the `type` is `pathMatch`.", "type": "boolean" }, "valueNormalize": { "description": "Whether to normalize the value of the header when matching. This only applies to type values of `extensionMatch` and `pathMatch`.", "type": "boolean" }, "valueRecursive": { "description": "Whether to use recursion when matching. When `false`, you can only match on the filename in the root folder. This only applies when the condition `type` is `filenameMatch`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies when the condition `type` is `requestHeaderMatch`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "effectiveTimePeriod": { "additionalProperties": false, "description": "The time period during which the custom rule is active.", "properties": { "endDate": { "description": "An ISO 8601 timestamp that sets when the rule expires or deactivates.", "type": "string" }, "startDate": { "description": "An ISO 8601 timestamp that sets when the rule activates.", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the rule based on its `startDate` and `endDate`. By default, rules are active for 30 days. When `ACTIVE`, the rule triggers when conditions are met. When `INACTIVE`, the rule doesn't trigger. When `EXPIRING`, the rule still triggers because it's still active until its specified expiration date. When the rule's status is `EXPIRED`, the rule is inactive and doesn't trigger. If your rule expires and you want to use it again, make a PUT request to [Modify a custom rule](https://techdocs.akamai.com/application-security/reference/put-config-custom-rule) with the new dates you'd like the rule to be active.", "enum": [ "active", "inactive", "expiring", "expired" ], "type": "string" } }, "required": [ "endDate", "startDate" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequest": { "description": "Whether to inspect the HTTP request for unstructured custom rules.", "type": "boolean" }, "inspectResponse": { "description": "Whether to inspect the HTTP response for unstructured custom rules.", "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "The metadata you provided for unstructured custom rules.", "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Specify `AND` logic to require all conditions, or `OR` logic to require at least one condition to match.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "Whether the rule is active in the configuration.", "type": "boolean" }, "samplingRate": { "description": "The portion of traffic to sample, expressed as a percent.", "maximum": 100, "minimum": 0, "type": "integer" }, "stagingOnly": { "default": false, "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "Whether you created the rule with the structured custom rule builder or free-form XML. This needs to be `true`.", "type": "boolean" }, "tag": { "description": "The list of labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name", "operation", "structured" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-rule.yaml" } } } }, "description": "Responds with the updated rule." } }, "summary": "Modify a custom rule", "tags": [ "Shared resources: Custom rules" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__All products__ Deletes a custom rule as long as it isn't activated.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-config-custom-rule" }, "operationId": "delete-config-custom-rule", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Custom rule successfully deleted." }, "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": { "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). Custom rule used and cannot be deleted.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Remove a custom rule", "tags": [ "Shared resources: Custom rules" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for rule.", "in": "path", "name": "ruleId", "required": true, "schema": { "example": 699989, "type": "integer" }, "x-akamai": { "file-path": "parameters/rule-id-path.yaml" } }, { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-custom-rule.yaml", "path-info": "/configs/{configId}/custom-rules/{ruleId}" } }, "/configs/{configId}/failover-hostnames": { "get": { "description": "__All products__ Get a list of the failover hostnames in a configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-failover-hostnames" }, "operationId": "get-failover-hostnames", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "hostnameList": [ { "hostname": "*.example.net" }, { "hostname": "example.com" }, { "hostname": "m.example.com" } ], "mode": "append" }, "schema": { "additionalProperties": false, "description": "Contains a list of selected hostnames for the specified configuration version.", "properties": { "hostnameList": { "description": "The list of hostnames for a configuration version.", "items": { "additionalProperties": false, "properties": { "hostname": { "description": "The hostname on which to match the request.", "type": "string" } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "mode": { "description": "The type of update you want to make to the evaluation hostname list. Use `append` to add additional hostnames, `remove` to delete the hostnames from the list, or `replace` to replace the existing list with the hostnames you pass in your request.", "enum": [ "append", "remove", "replace" ], "type": "string" } }, "required": [ "hostnameList" ], "type": "object", "x-akamai": { "file-path": "schemas/hostnames.yaml" } } } }, "description": "Successful response." }, "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": { "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List failover hostnames", "tags": [ "Failover hostnames" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-failover-hostnames.yaml", "path-info": "/configs/{configId}/failover-hostnames" } }, "/configs/{configId}/notification/subscription/{feature}": { "post": { "description": "__Kona Site Defender__ Set the request object's `action` to `subscribe` to add user emails to the subscription object. Use `unsubscribe` to remove them from the list. The lists are organized by `features`. Currently available `feature` values are `AAG_TUNING_REC` for AAG and ASE rule sets, and `WAF_RULE_UPDATE` for ASE rule sets.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-subscription-feature" }, "operationId": "post-subscription-feature", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "subscribe", "emails": [ "subscriber1@email.example.com", "subscriber2@email.example.com", "subscriber3@email.example.com" ] }, "schema": { "additionalProperties": false, "description": "Specifies actions to subscribe a user to or remove a user from a subscription to tuning recommendation emails.", "properties": { "action": { "description": "Use `subscribe` to add user emails to the subscription. Use `unsubscribe` to remove them from the subscription.", "enum": [ "subscribe", "unsubscribe" ], "type": "string" }, "emails": { "description": "The user emails to add to or remove from subscription.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true } }, "required": [ "action", "emails" ], "type": "object", "x-akamai": { "file-path": "schemas/appsec-config-subscription.yaml" } } } }, "required": true }, "responses": { "204": { "content": {}, "description": "Subscribed/Unsubscribed successfully." }, "400": { "content": { "application/problem+json": { "examples": { "email-validation-errors": { "summary": "Email validation errors", "value": { "$ref": "../examples/400-subscription-email-validation-errors.json" } }, "invalid-action": { "summary": "Invalid action", "value": { "$ref": "../examples/400-subscription-invalid-action.json" } } }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Incorrect client input. See the `fieldErrors` and other fields provided in the response for more information.", "x-akamai": { "file-path": "errors/400-subscription.yaml" } }, "403": { "content": { "application/problem+json": { "examples": { "no-config": { "summary": "No access to the configuration", "value": { "$ref": "../examples/403-subscription-no-config-access.json" } }, "no-feature-scope": { "summary": "No feature scope", "value": { "$ref": "../examples/403-subscription-no-feature-scope.json" } } }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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). Access denied. Make sure you have correct permissions.", "x-akamai": { "file-path": "errors/403-scope.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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Subscribe or unsubscribe to recommendation emails", "tags": [ "Subscriptions" ], "x-akamai": { "labels": [ "Kona Site Defender" ] } }, "get": { "description": "__Kona Site Defender__ List all subscribers to a security configuration's `feature`. The response array is empty if there are no subscribers. Currently available `feature` values are `AAG_TUNING_REC` for AAG and ASE rule sets, and `WAF_RULE_UPDATE` for ASE rule sets.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-subscription-feature" }, "operationId": "get-subscription-feature", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "emails": [ "subscriber1@email.example.com", "subscriber2@email.example.com", "subscriber3@email.example.com" ] }, "schema": { "additionalProperties": false, "description": "List the existing subscribers of a feature for a specific security configuration.", "properties": { "emails": { "description": "Existing subscriber.", "items": { "type": "string" }, "type": "array" } }, "required": [ "emails" ], "type": "object", "x-akamai": { "file-path": "schemas/appsec-config-subscription-200.yaml" } } } }, "description": "Successfully returns list of subscribers." }, "403": { "content": { "application/problem+json": { "examples": { "no-config": { "summary": "No access to the configuration", "value": { "$ref": "../examples/403-subscription-no-config-access.json" } }, "no-feature-scope": { "summary": "No feature scope", "value": { "$ref": "../examples/403-subscription-no-feature-scope.json" } } }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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). Access denied. Make sure you have correct permissions.", "x-akamai": { "file-path": "errors/403-scope.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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List subscribers", "tags": [ "Subscriptions" ], "x-akamai": { "labels": [ "Kona Site Defender" ] } }, "parameters": [ { "description": "A unique identifier for each subscription feature.", "in": "path", "name": "feature", "required": true, "schema": { "example": "AAG_TUNING_REC", "type": "string" }, "x-akamai": { "file-path": "parameters/feature-path.yaml" } }, { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-notification-subscription.yaml", "path-info": "/configs/{configId}/notification/subscription/{feature}" } }, "/configs/{configId}/versions": { "post": { "description": "__All products__ Creates a new version of the specified security configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-config-versions" }, "operationId": "post-config-versions", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "createFromVersion": 1, "ruleUpdate": false }, "schema": { "additionalProperties": false, "description": "Specifies the settings for a new clone of a security configuration.", "properties": { "createFromVersion": { "description": "The configuration version to clone from.", "type": "integer" }, "ruleUpdate": { "description": "Specifies whether the application rules should be migrated to the latest version.", "type": "boolean" } }, "required": [ "createFromVersion", "ruleUpdate" ], "type": "object", "x-akamai": { "file-path": "schemas/config-clone-post.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "basedOn": 1, "configId": 48579, "configName": "TestConfig", "createDate": "2013-10-07T17:58:52Z", "createdBy": "hgildong", "production": { "status": "Active", "time": "2014-07-08T07:40:00Z" }, "staging": { "status": "Inactive" }, "version": 2, "versionNotes": "Membership Benefits" }, "schema": { "additionalProperties": false, "description": "Contains configuration version details.", "properties": { "basedOn": { "description": "__Read-only__ The version from which you cloned this version.", "readOnly": true, "type": "integer" }, "configId": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "configName": { "description": "The security configuration name.", "type": "string" }, "createDate": { "description": "__Read-only__ The date when you created the configuration version.", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The user who created the configuration version.", "readOnly": true, "type": "string" }, "production": { "additionalProperties": false, "description": "__Read-only__ The activation status of the configuration version in the production network.", "properties": { "action": { "description": "The action taken on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status, either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "readOnly": true, "required": [ "status" ], "type": "object" }, "staging": { "additionalProperties": false, "description": "__Read-only__ The activation status of the configuration version in the staging network.", "properties": { "action": { "description": "The action taken on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status, either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The ISO 8601 time stamp indicating the activation time.", "type": "string" } }, "readOnly": true, "required": [ "status" ], "type": "object" }, "version": { "description": "__Read-only__ The security configuration version.", "readOnly": true, "type": "integer" }, "versionNotes": { "description": "The notes you entered for the configuration version.", "type": "string" } }, "required": [ "configId", "configName", "version", "staging", "production" ], "type": "object", "x-akamai": { "file-path": "schemas/waf-config-version.yaml" } } } }, "description": "Successfully cloned Configuration Version." }, "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": { "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } }, "412": { "content": { "application/problem+json": { "example": { "detail": "The requested resource is in use and cannot be modified", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 412, "title": "Precondition Failed", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/PRECONDITION-FAILED" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Precondition failed](https://techdocs.akamai.com/application-security/reference/412).", "x-akamai": { "file-path": "errors/412.yaml" } } }, "summary": "Clone a configuration version", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Lists available versions for the specified security configuration, with results optionally paginated.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-config-versions" }, "operationId": "get-config-versions", "parameters": [ { "description": "The index of the result page. If the value is `-1`, then pagination is ignored. The default value is `1`.", "in": "query", "name": "page", "schema": { "default": 1, "example": 2, "type": "integer" }, "x-akamai": { "file-path": "parameters/page-query.yaml" } }, { "description": "The number of items on each result page. The default value is `25`.", "in": "query", "name": "pageSize", "schema": { "default": 25, "example": 10, "type": "integer" }, "x-akamai": { "file-path": "parameters/page-size-query.yaml" } }, { "description": "When `true`, the results contain detailed information on versions. With the default `false`, the results contain summary information on versions.", "in": "query", "name": "detail", "schema": { "default": false, "example": true, "type": "boolean" }, "x-akamai": { "file-path": "parameters/detail-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "configId": 48579, "configName": "TestConfig", "lastCreatedVersion": 9, "page": 1, "pageSize": 3, "productionActiveVersion": 9, "productionExpediteRequestId": 6951, "stagingActiveVersion": 8, "stagingExpediteRequestId": 5861, "totalSize": 3, "versionList": [ { "basedOn": 8, "createDate": "2013-10-07T17:58:52Z", "createdBy": "jperez", "production": { "status": "Active", "time": "2014-07-08T07:40:00Z" }, "staging": { "status": "Inactive" }, "version": 9, "versionNotes": "Membership Benefits" }, { "basedOn": 7, "createDate": "2013-10-07T17:41:52Z", "createdBy": "hgildong", "production": { "status": "Inactive" }, "staging": { "status": "Active", "time": "2014-07-08T07:40:00Z" }, "version": 8, "versionNotes": "Membership Benefits" }, { "createDate": "2013-08-07T17:41:52Z", "createdBy": "alfulani", "production": { "status": "Inactive" }, "staging": { "status": "Inactive" }, "version": 7, "versionNotes": "Membership Benefits" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about a security configuration's versions.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configName": { "description": "The name you assigned to the security configuration.", "type": "string" }, "lastCreatedVersion": { "description": "The version number of the security configuration that you created most recently.", "type": "integer" }, "page": { "description": "The current page number.", "type": "integer" }, "pageSize": { "description": "Represents the number of items per page.", "type": "integer" }, "productionActiveVersion": { "description": "The version number of the security configuration that is currently active on the production network.", "type": "integer" }, "productionExpediteRequestId": { "description": "Uniquely identifies the expedite activation request of the configuration version on the production network.", "type": "integer" }, "stagingActiveVersion": { "description": "The version number of the security configuration that is currently active on the staging network.", "type": "integer" }, "stagingExpediteRequestId": { "description": "Uniquely identifies the expedite activation request of the configuration version on the staging network.", "type": "integer" }, "totalSize": { "description": "The total number of configuration versions.", "type": "integer" }, "versionList": { "description": "The security configuration's versions.", "items": { "additionalProperties": false, "properties": { "basedOn": { "description": "The version from which you cloned this version.", "type": "integer" }, "createDate": { "description": "The date when you created the configuration version.", "type": "string" }, "createdBy": { "description": "The user who created the configuration version.", "type": "string" }, "production": { "additionalProperties": false, "description": "Contains details about the version's activation in the production network.", "properties": { "action": { "description": "The action taken on the configuration version, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status of the configuration version. Either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "staging": { "additionalProperties": false, "description": "Contains details about the version's activation in the staging network.", "properties": { "action": { "description": "The action taken on the configuration version, either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status of the configuration version. Either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "version": { "description": "The security configuration's version.", "type": "integer" }, "versionNotes": { "description": "The notes you entered for the configuration version.", "type": "string" } }, "required": [ "production", "staging", "version" ], "type": "object" }, "type": "array" } }, "required": [ "configId", "configName", "lastCreatedVersion", "page", "pageSize", "totalSize" ], "type": "object", "x-akamai": { "file-path": "schemas/waf-config-versions.yaml" } } } }, "description": "Successfully retrieved resource." }, "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": { "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List configuration versions", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-versions.yaml", "path-info": "/configs/{configId}/versions" } }, "/configs/{configId}/versions/diff": { "post": { "description": "__All products__ This operation shows you differences between configuration versions. The `to` version is relative to the `from` version, and the versions you compare can be non-sequential. This means the `from` value can be more a more recent version than the `to` value. For more information, see [Diff configuration versions](https://techdocs.akamai.com/application-security/reference/diff-configuration-versions).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-config-versions-diff" }, "operationId": "post-config-versions-diff", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "from": 1, "outcomes": [ "MODIFIED", "UNMODIFIED" ], "to": 2 }, "schema": { "additionalProperties": false, "properties": { "from": { "description": "The configuration version number to compare against.", "type": "integer" }, "outcomes": { "default": [ "MODIFIED" ], "description": "Show either `MODIFIED` or `UNMODIFIED` data, or both. When empty, only `MODIFIED` values are returned.", "items": { "enum": [ "MODIFIED", "UNMODIFIED" ], "type": "string" }, "type": "array" }, "to": { "description": "The configuration version number you're comparing to the version in `from`.", "type": "integer" } }, "required": [ "from", "to" ], "type": "object", "x-akamai": { "file-path": "schemas/diff-request.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "changesCount": { "added": 0, "modified": 4, "removed": 0, "unmodified": 0 }, "configId": 258702, "outcome": "MODIFIED", "ratePolicies": { "outcome": "MODIFIED", "removed": [ { "averageThreshold": { "from": 100, "outcome": "REMOVED", "to": null }, "burstThreshold": { "from": 10, "outcome": "REMOVED", "to": null }, "burstWindow": { "from": 5, "outcome": "REMOVED", "to": null }, "changesCount": { "added": 0, "modified": 0, "removed": 18, "unmodified": 0 }, "clientIdentifier": { "from": "ip", "outcome": "REMOVED", "to": null }, "counterType": { "from": "per_edge", "outcome": "REMOVED", "to": null }, "description": { "from": "Mitigating HTTP flood attacks using GET requests", "outcome": "REMOVED", "to": null }, "id": 403981, "matchType": { "from": "path", "outcome": "REMOVED", "to": null }, "name": { "from": "GET Page Requests", "outcome": "REMOVED", "to": null }, "outcome": "REMOVED", "pathMatchType": { "from": "Custom", "outcome": "REMOVED", "to": null }, "pathUriPositiveMatch": { "from": true, "outcome": "REMOVED", "to": null }, "penaltyBoxDuration": { "from": "TEN_MINUTES", "outcome": "REMOVED", "to": null }, "requestType": { "from": "ClientRequest", "outcome": "REMOVED", "to": null }, "sameActionOnIpv6": { "from": true, "outcome": "REMOVED", "to": null }, "type": { "from": "WAF", "outcome": "REMOVED", "to": null }, "useXForwardForHeaders": { "from": false, "outcome": "REMOVED", "to": null }, "used": { "from": false, "outcome": "REMOVED", "to": null } } ] }, "securityPolicies": { "added": [ { "changesCount": { "added": 6, "modified": 0, "removed": 0, "unmodified": 0 }, "hasRatePolicyWithApiKey": { "from": null, "outcome": "ADDED", "to": false }, "id": "2222_517319", "name": { "from": null, "outcome": "ADDED", "to": "Policy 2" }, "outcome": "ADDED", "pragmaHeader": { "action": { "from": null, "outcome": "ADDED", "to": "REMOVE" }, "changesCount": { "added": 3, "modified": 0, "removed": 0, "unmodified": 0 }, "conditionOperator": { "from": null, "outcome": "ADDED", "to": "AND" }, "outcome": "ADDED" }, "securityControls": { "applyApplicationLayerControls": { "from": null, "outcome": "ADDED", "to": false }, "applyMalwareControls": { "from": null, "outcome": "ADDED", "to": false }, "applyNetworkLayerControls": { "from": null, "outcome": "ADDED", "to": false }, "applyRateControls": { "from": null, "outcome": "ADDED", "to": false }, "applyReputationControls": { "from": null, "outcome": "ADDED", "to": false }, "changesCount": { "added": 10, "modified": 0, "removed": 0, "unmodified": 0 }, "outcome": "ADDED" } } ], "modified": [ { "changesCount": { "added": 0, "modified": 3, "removed": 0, "unmodified": 0 }, "id": "1111_517317", "outcome": "MODIFIED", "requestBody": { "changesCount": { "added": 0, "modified": 1, "removed": 0, "unmodified": 0 }, "outcome": "MODIFIED", "requestBodyInspectionLimitInKB": { "from": null, "outcome": "MODIFIED", "to": "8" } }, "webApplicationFirewall": { "attackGroupActions": { "modified": [ { "action": { "from": "alert", "outcome": "MODIFIED", "to": "deny" }, "changesCount": { "added": 0, "modified": 1, "removed": 0, "unmodified": 0 }, "group": "CMD", "outcome": "MODIFIED", "rulesetVersionId": 7151 } ], "outcome": "MODIFIED" }, "changesCount": { "added": 0, "modified": 1, "removed": 0, "unmodified": 0 }, "outcome": "MODIFIED" } } ], "outcome": "MODIFIED" }, "selectedHosts": { "added": [ "host4.com" ], "from": [ "host1.com", "host2.com", "host3.com" ], "outcome": "MODIFIED", "removed": [ "host1.com" ], "to": [ "host2.com", "host3.com", "host4.com" ] } }, "schema": { "description": "The response object represents much the same data as the [Export a configuration version](https://techdocs.akamai.com/application-security/reference/get-export-config-version) operation, but substituting additional objects that represent diffs. The structure of these diffs vary when comparing different types of data: simple values, simple arrays, objects, and object arrays. For details on the diff format, see [Diff configuration versions](https://techdocs.akamai.com/application-security/reference/diff-configuration-versions).", "type": "object", "x-akamai": { "file-path": "schemas/export-diff-summary.yaml" } } } }, "description": "The response object represents much the same data as the [Export a configuration version](https://techdocs.akamai.com/application-security/reference/get-export-config-version) operation, but substituting additional objects that represent diffs. The structure of these diffs vary when comparing different types of data: simple values, simple arrays, objects, and object arrays. For details on the diff format, see [Diff configuration versions](https://techdocs.akamai.com/application-security/reference/diff-configuration-versions)." }, "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": { "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Compare two versions", "tags": [ "Configuration version diff" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "in": "path", "name": "configId", "required": true, "schema": { "example": 77653, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/config-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/diff.yaml", "path-info": "/configs/{configId}/versions/diff" } }, "/configs/{configId}/versions/{versionNumber}": { "get": { "description": "__All products__ Returns basic details about a configuration version. To get a more extensive object with detailed information about a version's security policies, rate policies, rules, and other additional settings, run the [Export a configuration version](https://techdocs.akamai.com/application-security/reference/get-export-config-version) operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-version-number" }, "operationId": "get-version-number", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "basedOn": 1, "configId": 48579, "configName": "TestConfig", "createDate": "2013-10-07T17:58:52Z", "createdBy": "hgildong", "production": { "status": "Active", "time": "2014-07-08T07:40:00Z" }, "staging": { "status": "Inactive" }, "version": 2, "versionNotes": "Membership Benefits" }, "schema": { "additionalProperties": false, "description": "Contains configuration version details.", "properties": { "basedOn": { "description": "__Read-only__ The version from which you cloned this version.", "readOnly": true, "type": "integer" }, "configId": { "description": "__Read-only__ Uniquely identifies the security configuration.", "readOnly": true, "type": "integer" }, "configName": { "description": "The security configuration name.", "type": "string" }, "createDate": { "description": "__Read-only__ The date when you created the configuration version.", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The user who created the configuration version.", "readOnly": true, "type": "string" }, "production": { "additionalProperties": false, "description": "__Read-only__ The activation status of the configuration version in the production network.", "properties": { "action": { "description": "The action taken on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status, either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The activation time.", "type": "string" } }, "readOnly": true, "required": [ "status" ], "type": "object" }, "staging": { "additionalProperties": false, "description": "__Read-only__ The activation status of the configuration version in the staging network.", "properties": { "action": { "description": "The action taken on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status, either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The ISO 8601 time stamp indicating the activation time.", "type": "string" } }, "readOnly": true, "required": [ "status" ], "type": "object" }, "version": { "description": "__Read-only__ The security configuration version.", "readOnly": true, "type": "integer" }, "versionNotes": { "description": "The notes you entered for the configuration version.", "type": "string" } }, "required": [ "configId", "configName", "version", "staging", "production" ], "type": "object", "x-akamai": { "file-path": "schemas/waf-config-version.yaml" } } } }, "description": "Successfully retrieved resource." }, "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get configuration version details", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__All products__ Delete the specified configuration version. You can't delete a version that's actively in use.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-version-number" }, "operationId": "delete-version-number", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the configuration version." }, "403": { "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": { "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 this security configuration.", "x-akamai": { "file-path": "errors/400.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": { "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": "Delete a configuration version", "tags": [ "General configuration settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-version.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/cookie-settings": { "get": { "description": "__All products__ Returns cookie settings for a configuration. Contact your account team if you'd like to run this operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-cookie-settings" }, "operationId": "get-advanced-settings-cookie-settings", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "cookieDomain": "automatic", "useAllSecureTraffic": true }, "schema": { "additionalProperties": false, "description": "Contains the cookie settings for a configuration.", "properties": { "cookieDomain": { "description": "Choose the type of domain. The default recommended type is `automatic`. Otherwise, choose `fqdn` to use the current Fully Qualified Domain name, `legacy` to use the original way in which the domain was selected, or `psl` to use the public suffix list to identify a private domain.", "enum": [ "automatic", "fqdn", "legacy", "psl" ], "type": "string" }, "useAllSecureTraffic": { "description": "If all of your traffic uses HTTPS, specify `true`. This option sets the Secure flag on all security product cookies, which are then only included with HTTPS traffic. It also adds `SameSite=None` to most bot management cookies, ensuring that recent browser versions submit the cookies with protected requests. The `SameSite=None` cookie setting is necessary for site architectures that involve cross-domain form submission or inclusion of cross-domain iframes.", "type": "boolean" } }, "type": "object", "x-akamai": { "file-path": "schemas/cookie-settings.yaml" } } } }, "description": "Successfully retrieved the cookie settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get cookie settings", "tags": [ "Cookie Settings" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Modify cookie settings for a configuration. Contact your account team if you'd like to run this operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-cookie-settings" }, "operationId": "put-advanced-settings-cookie-settings", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "cookieDomain": "automatic", "useAllSecureTraffic": true }, "schema": { "additionalProperties": false, "description": "Contains the cookie settings for a configuration.", "properties": { "cookieDomain": { "description": "Choose the type of domain. The default recommended type is `automatic`. Otherwise, choose `fqdn` to use the current Fully Qualified Domain name, `legacy` to use the original way in which the domain was selected, or `psl` to use the public suffix list to identify a private domain.", "enum": [ "automatic", "fqdn", "legacy", "psl" ], "type": "string" }, "useAllSecureTraffic": { "description": "If all of your traffic uses HTTPS, specify `true`. This option sets the Secure flag on all security product cookies, which are then only included with HTTPS traffic. It also adds `SameSite=None` to most bot management cookies, ensuring that recent browser versions submit the cookies with protected requests. The `SameSite=None` cookie setting is necessary for site architectures that involve cross-domain form submission or inclusion of cross-domain iframes.", "type": "boolean" } }, "type": "object", "x-akamai": { "file-path": "schemas/cookie-settings.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "cookieDomain": "automatic", "useAllSecureTraffic": true }, "schema": { "additionalProperties": false, "description": "Contains the cookie settings for a configuration.", "properties": { "cookieDomain": { "description": "Choose the type of domain. The default recommended type is `automatic`. Otherwise, choose `fqdn` to use the current Fully Qualified Domain name, `legacy` to use the original way in which the domain was selected, or `psl` to use the public suffix list to identify a private domain.", "enum": [ "automatic", "fqdn", "legacy", "psl" ], "type": "string" }, "useAllSecureTraffic": { "description": "If all of your traffic uses HTTPS, specify `true`. This option sets the Secure flag on all security product cookies, which are then only included with HTTPS traffic. It also adds `SameSite=None` to most bot management cookies, ensuring that recent browser versions submit the cookies with protected requests. The `SameSite=None` cookie setting is necessary for site architectures that involve cross-domain form submission or inclusion of cross-domain iframes.", "type": "boolean" } }, "type": "object", "x-akamai": { "file-path": "schemas/cookie-settings.yaml" } } } }, "description": "The response shows the updated cookie settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify cookie settings", "tags": [ "Cookie Settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-cookie-settings.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/cookie-settings" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/evasive-path-match": { "get": { "description": "__Web Application Protector__, __Kona Site Defender__ Lists the evasive path match setting for a configuration. Evasive path match is off by default. This setting applies at the configuration level and applies to all policies within a configuration. If you want to view this setting for a specific policy, run [Get evasive patch match settings](https://techdocs.akamai.com/application-security/reference/get-evasive-path-match).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-evasive-path-match-per-config" }, "operationId": "get-evasive-path-match-per-config", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "enablePathMatch": true }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/evasive-path-match-get-200.yaml" } } } }, "description": "Successfully retrieved the evasive path match settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get evasive path match settings for a configuration", "tags": [ "Evasive path match" ], "x-akamai": { "labels": [ "Web Application Protector", "Kona Site Defender" ] } }, "put": { "description": "__Web Application Protector__, __Kona Site Defender__ Enable, disable, or update evasive path match settings for a configuration. This operation applies at the configuration level and applies to all policies within a configuration. If you want to override these settings for a specific policy, run [Modify evasive path match settings](https://techdocs.akamai.com/application-security/reference/put-evasive-path-match).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-evasive-path-match-per-config" }, "operationId": "put-evasive-path-match-per-config", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "enablePathMatch": true }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/evasive-path-match-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "enablePathMatch": true }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL. This feature does not match on characters that are an integral part of URL requests, like: ``` : / # & ; = ``` and `.` when it appears inside the URL string.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/evasive-path-match-put-200.yaml" } } } }, "description": "Successfully updated the evasive path match settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify evasive path match settings for a configuration", "tags": [ "Evasive path match" ], "x-akamai": { "labels": [ "Web Application Protector", "Kona Site Defender" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-evasive-path-match.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/evasive-path-match" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/ja4-fingerprint": { "get": { "description": "__Beta__, __Web Application Protector__, __Kona Site Defender__ Return JA4 client TLS fingerprint settings for a configuration. JA4 is a client-focused fingerprint based on the client TLS handshake. Use JA4 fingerprinting to mitigate DDoS attacks, detect and mitigate bots, and block known attackers from sending application layer attacks payloads. [Learn more about JA4 fingerprinting]( https://techdocs.akamai.com/app-api-protector/docs/adv-settings).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-ja4-fingerprint-settings" }, "operationId": "get-ja4-fingerprint-settings", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "headerNames": [ "ja4-fingerprint" ] }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-get-200.yaml" } } } }, "description": "Successfully retrieved the JA4 client TLS fingerprint settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get JA4 client TLS fingerprint settings", "tags": [ "JA4 Client TLS Fingerprint" ], "x-akamai": { "labels": [ "Web Application Protector", "Kona Site Defender" ], "status": "BETA" } }, "put": { "description": "__Beta__, __Web Application Protector__, __Kona Site Defender__ Update JA4 client TLS fingerprint settings for a configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-ja4-fingerprint-settings" }, "operationId": "put-ja4-fingerprint-settings", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "headerNames": [ "ja4-fingerprint-example" ] }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "headerNames": [ "ja4-fingerprint-example" ] }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-put-200.yaml" } } } }, "description": "Successfully updated the JA4 client TLS fingerprint settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify JA4 client TLS fingerprint settings", "tags": [ "JA4 Client TLS Fingerprint" ], "x-akamai": { "labels": [ "Web Application Protector", "Kona Site Defender" ], "status": "BETA" } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-ja4-client-tls-fingerprint.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/ja4-fingerprint" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/logging": { "get": { "description": "__All products__ Lists HTTP header logging controls for a configuration. HTTP header logging is on by default, and in most cases you should leave it enabled. You can filter requests by header type, including or excluding requests with a specific header, or by cookie. This operation applies at the configuration level, and therefore applies to all policies within a configuration. If you want to view these settings for a specific policy, run [Get HTTP header log settings](https://techdocs.akamai.com/application-security/reference/get-policies-logging).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-logging" }, "operationId": "get-advanced-settings-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "allowSampling": true, "cookies": { "type": "all" }, "customHeaders": { "type": "exclude", "values": [ "csdasdad" ] }, "standardHeaders": { "type": "only", "values": [ "Accept" ] } }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for HTTP Header Logging.", "properties": { "allowSampling": { "description": "Enables HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging-get-200.yaml" } } } }, "description": "Successfully retrieved the HTTP Header Logging settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get the HTTP header log settings for a configuration", "tags": [ "HTTP header logs" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Enable, disable, or update HTTP header Logging settings for a configuration. This operation applies at the configuration level, and therefore applies to all policies within a configuration. If you want to override these settings for a specific policy, run [Modify HTTP header log settings](https://techdocs.akamai.com/application-security/reference/put-policies-logging).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-logging" }, "operationId": "put-advanced-settings-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "allowSampling": true, "cookies": { "type": "all" }, "customHeaders": { "type": "exclude", "values": [ "csdasdad" ] }, "standardHeaders": { "type": "only", "values": [ "Accept" ] } }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for HTTP Header Logging.", "properties": { "allowSampling": { "description": "Whether to enable HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "allowSampling" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "allowSampling": true, "cookies": { "type": "all" }, "customHeaders": { "type": "exclude", "values": [ "csdasdad" ] }, "standardHeaders": { "type": "only", "values": [ "Accept" ] } }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for HTTP Header Logging.", "properties": { "allowSampling": { "description": "Enables HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging-put-200.yaml" } } } }, "description": "Successfully updated the HTTP Header Logging settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify HTTP header log settings for a configuration", "tags": [ "HTTP header logs" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-logging.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/logging" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/logging/attack-payload": { "get": { "description": "__All products__ Lists attack payload log settings for a configuration. When set to `NONE`, the request body and response body show as redacted in the log. For example, `JSON_PAIRS:redacted`. Attack payload logging is on by default, and in most cases you should leave it enabled. This operation applies at the configuration level, and therefore applies to all policies within a configuration. If you want to view these settings for a specific policy, run [Get attack payload logging settings for a policy](https://techdocs.akamai.com/application-security/reference/get-policies-attack-payload-logging).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-attack-payload-logging" }, "operationId": "get-advanced-settings-attack-payload-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "enabled": true, "requestBody": { "type": "ATTACK_PAYLOAD" }, "responseBody": { "type": "NONE" } }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how Akamai's network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how Akamai's network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging-get-200.yaml" } } } }, "description": "Successfully retrieved the attack payload logging settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get the attack payload log settings for a configuration", "tags": [ "Attack payload logs" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Enable, disable, or update attack payload log settings for a configuration. When set to `NONE`, the request body and response body show as redacted in the log. For example, `JSON_PAIRS:redacted`. When set to `RESPONSE_BODY` or `REQUEST_BODY` the log shows only the string flagged as a possible attack, and not the entire request or response body. This operation applies at the configuration level, and therefore applies to all policies within a configuration. If you want to override these settings for a specific policy, run [Modify attack payload log settings for a policy](https://techdocs.akamai.com/application-security/reference/put-policies-attack-payload-logging).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-attack-payload-logging" }, "operationId": "put-advanced-settings-attack-payload-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "enabled": true, "requestBody": { "type": "ATTACK_PAYLOAD" }, "responseBody": { "type": "NONE" } }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "Settings for request body.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "Settings for response body.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "enabled": true, "requestBody": { "type": "ATTACK_PAYLOAD" }, "responseBody": { "type": "NONE" } }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging-put-200.yaml" } } } }, "description": "Successfully updated the attack payload logging settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify attack payload log settings for a configuration", "tags": [ "Attack payload logs" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-logging-attack-payload.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/logging/attack-payload" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/pii-learning": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Shows whether PII learning is enabled. This operation applies at the security configuration level.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-pii-learning" }, "operationId": "get-advanced-settings-pii-learning", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "enablePiiLearning": true }, "schema": { "additionalProperties": false, "description": "Summarizes availability of PII learning.", "properties": { "enablePiiLearning": { "description": "Enables PII learning.", "type": "boolean" } }, "required": [ "enablePiiLearning" ], "type": "object", "x-akamai": { "file-path": "schemas/pii-learning.yaml" } } } }, "description": "Successfully retrieved the PII learning settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get PII learning settings for a configuration", "tags": [ "PII learning" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "put": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Turn on PII learning for your API definition. To enable PII learning, submit your request with a payload of `{\"enablePiiLearning\": true}`. To disable PII learning, submit your request with a payload of `{\"enablePiiLearning\": false}`. This operation applies at the security configuration level. Run [Modify PII settings for an endpoint version](https://techdocs.akamai.com/api-definitions/reference/post-endpoint-version-pii-settings) to manage your API definitions in regards to PII.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-pii-learning" }, "operationId": "put-advanced-settings-pii-learning", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "enablePiiLearning": true }, "schema": { "additionalProperties": false, "description": "Summarizes availability of PII learning.", "properties": { "enablePiiLearning": { "description": "Enables PII learning.", "type": "boolean" } }, "required": [ "enablePiiLearning" ], "type": "object", "x-akamai": { "file-path": "schemas/pii-learning.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "enablePiiLearning": true }, "schema": { "additionalProperties": false, "description": "Summarizes availability of PII learning.", "properties": { "enablePiiLearning": { "description": "Enables PII learning.", "type": "boolean" } }, "required": [ "enablePiiLearning" ], "type": "object", "x-akamai": { "file-path": "schemas/pii-learning.yaml" } } } }, "description": "Successfully updated the PII learning settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Enable PII learning settings for a configuration", "tags": [ "PII learning" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-pii-learning.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/pii-learning" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/pragma-header": { "get": { "description": "__All products__ Return the `Pragma` header excluded conditions. By default, the `Pragma` header is stripped from an operation's response except in cases where you set `excludeCondition`. This operation applies at the security configuration level. To see settings at the security policy level, run [List Pragma header settings for a security policy](https://techdocs.akamai.com/application-security/reference/get-policies-pragma-header).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-pragma-header" }, "operationId": "get-advanced-settings-pragma-header", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "accept", "positiveMatch": true, "type": "requestHeaderValueMatch", "value": [ "application/json", "application/xml" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.1", "192.0.2.250/24" ] }, { "positiveMatch": true, "type": "networkList", "value": [ "123_3ALLOWEDIPS" ] }, { "name": "type", "positiveMatch": true, "type": "queryParamNameValueMatch", "value": [ "type A", "type B" ], "valueCase": true, "valueWildcard": false } ] }, "schema": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } } } }, "description": "Successfully retrieved the Pragma header settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get Pragma settings for a configuration", "tags": [ "Pragma settings" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update the `Pragma` header excluded conditions. By default, the `Pragma` header is stripped from an operation's response except in cases where you set `excludeCondition`. To remove existing settings, submit your request with an empty payload `{}` at the top-level of an object. For example, submit `\"type\": \"{}\"` in the request body to remove the `requestHeaderValueMatch` from the excluded conditions. If you submit an empty payload for each field, you'll clear all of your condition settings. This operation applies at the security configuration level. To see settings at the security policy level, run [Modify Pragma header settings for a security policy](https://techdocs.akamai.com/application-security/reference/put-policies-pragma-header).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-pragma-header" }, "operationId": "put-advanced-settings-pragma-header", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "accept", "positiveMatch": true, "type": "requestHeaderValueMatch", "value": [ "application/json", "application/xml" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.1", "192.0.2.250/24" ] }, { "positiveMatch": true, "type": "networkList", "value": [ "123_3ALLOWEDIPS" ] }, { "name": "type", "positiveMatch": true, "type": "queryParamNameValueMatch", "value": [ "type A", "type B" ], "valueCase": true, "valueWildcard": false } ] }, "schema": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "accept", "positiveMatch": true, "type": "requestHeaderValueMatch", "value": [ "application/json", "application/xml" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.1", "192.0.2.250/24" ] }, { "positiveMatch": true, "type": "networkList", "value": [ "123_3ALLOWEDIPS" ] }, { "name": "type", "positiveMatch": true, "type": "queryParamNameValueMatch", "value": [ "type A", "type B" ], "valueCase": true, "valueWildcard": false } ] }, "schema": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } } } }, "description": "Successfully updated the Pragma header settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify Pragma settings for a configuration", "tags": [ "Pragma settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-pragma-header.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/pragma-header" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/prefetch": { "get": { "description": "__Kona Site Defender__ Get Prefetch Request settings.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-prefetch" }, "operationId": "get-advanced-settings-prefetch", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "allExtensions": false, "enableAppLayer": true, "enableRateControls": false, "extensions": [ "cgi", "jsp", "EMPTY_STRING", "aspx", "py", "php", "asp" ] }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for Prefetch Requests.", "properties": { "allExtensions": { "description": "Whether to enable prefetch requests for all extensions.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable Prefetch Requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable Prefetch Requests for rate controls.", "type": "boolean" }, "extensions": { "description": "List of extensions.", "items": { "type": "string" }, "type": "array" } }, "required": [ "allExtensions", "enableAppLayer", "enableRateControls" ], "type": "object", "x-akamai": { "file-path": "schemas/prefetch-request-get-200.yaml" } } } }, "description": "Successfully retrieved the Prefetch Request settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get prefetch requests", "tags": [ "Prefetch requests" ], "x-akamai": { "labels": [ "Kona Site Defender" ] } }, "put": { "description": "__Kona Site Defender__ Enabling this protection causes your application firewall rules to inspect internal requests (those between your origin and Akamai's servers) for file types you specify. You can also apply rate controls to prefetch requests. This operation applies at the configuration level.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-prefetch" }, "operationId": "put-advanced-settings-prefetch", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "allExtensions": false, "enableAppLayer": true, "enableRateControls": false, "extensions": [ "cgi", "jsp", "EMPTY_STRING", "aspx", "py", "php", "asp" ] }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for Prefetch Requests.", "properties": { "allExtensions": { "description": "Whether to enable prefetch requests for all extensions.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable Prefetch Requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable Prefetch Requests for rate controls.", "type": "boolean" }, "extensions": { "description": "List of extensions.", "items": { "type": "string" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/prefetch-request-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "allExtensions": false, "enableAppLayer": true, "enableRateControls": false, "extensions": [ "cgi", "jsp", "EMPTY_STRING", "aspx", "py", "php", "asp" ] }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for Prefetch Requests.", "properties": { "allExtensions": { "description": "Whether to enable prefetch requests for all extensions.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable Prefetch Requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable Prefetch Requests for rate controls.", "type": "boolean" }, "extensions": { "description": "List of extensions.", "items": { "type": "string" }, "type": "array" } }, "required": [ "allExtensions", "enableAppLayer", "enableRateControls" ], "type": "object", "x-akamai": { "file-path": "schemas/prefetch-request-put-200.yaml" } } } }, "description": "Successfully updated the prefetch request settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify prefetch requests", "tags": [ "Prefetch requests" ], "x-akamai": { "labels": [ "Kona Site Defender" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-prefetch.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/prefetch" } }, "/configs/{configId}/versions/{versionNumber}/advanced-settings/request-body": { "get": { "description": "__All products__ Return request body inspection limit settings for a configuration. Contact your account team if you'd like to run this operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-advanced-settings-request-body" }, "operationId": "get-advanced-settings-request-body", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "requestBodyInspectionLimitInKB": "16" }, "schema": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } } }, "description": "Successfully retrieved the request body inspection limit settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get request body size settings for a configuration", "tags": [ "Request body size" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Modify request body inspection limit settings for a configuration. Inspect request bodies up to a certain size. In exceptional cases, you can change the default value to a set limit: `8`, `16`, or `32` kb. Contact your account team if you'd like to run this operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-advanced-settings-request-body" }, "operationId": "put-advanced-settings-request-body", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "requestBodyInspectionLimitInKB": "16" }, "schema": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "requestBodyInspectionLimitInKB": "16" }, "schema": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } } }, "description": "Successfully updated the request body inspection limit settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify request body inspection limit settings for a configuration", "tags": [ "Request body size" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-request-body.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/advanced-settings/request-body" } }, "/configs/{configId}/versions/{versionNumber}/behavioral-ddos": { "post": { "description": "Creates a new Behavioral DDoS profile for a specific 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/post-behavioral-ddos-profile" }, "operationId": "post-behavioral-ddos-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "bypassCondition": { "atomicConditions": [ { "checkIps": "connecting", "className": "NetworkListCondition", "positiveMatch": true, "value": [ "100065_IPLIST" ] }, { "className": "RequestHeaderCondition", "name": [ "Content-Type" ], "nameWildcard": true, "positiveMatch": true, "value": [ "application/json" ], "valueCase": false, "valueWildcard": true } ] }, "configId": 1, "configVersion": 1, "description": "This is a description of the profile", "exceptions": [ { "hosts": [ "secure.host1.com", "help.host3.com" ], "paths": [ "/path1", "/path2", "/path3" ] } ], "hostnames": [ "secure.host1.com", "www.host2.com", "help.host3.com", "info.host4.com" ], "name": "My first BDE profile", "sensitivity": "STRICT", "sensitivityOverrides": [ { "host": "info.host4.com", "path": "/path3", "sensitivity": "MODERATE" } ], "suspend": { "fromDate": "2025-02-20T14:00:00Z", "hostnames": [ "secure.host1.com" ], "toDate": "2025-03-20T14:00:00Z" } }, "schema": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "bypassCondition": { "atomicConditions": [ { "checkIps": "connecting", "className": "NetworkListCondition", "positiveMatch": true, "value": [ "100065_IPLIST" ] }, { "className": "RequestHeaderCondition", "name": [ "Content-Type" ], "nameWildcard": true, "positiveMatch": true, "value": [ "application/json" ], "valueCase": false, "valueWildcard": true } ] }, "configId": 1, "configVersion": 1, "createDate": "2025-02-05T14:00:00Z", "createdBy": "jkowalski", "description": "This is a description of the profile", "exceptions": [ { "hosts": [ "secure.host1.com", "help.host3.com" ], "paths": [ "/path1", "/path2", "/path3" ] } ], "hostnames": [ "secure.host1.com", "www.host2.com", "help.host3.com", "info.host4.com" ], "name": "My first BDE profile", "profileId": 100, "sensitivity": "STRICT", "sensitivityOverrides": [ { "host": "info.host4.com", "path": "/path3", "sensitivity": "MODERATE" } ], "suspend": { "fromDate": "2025-02-20T14:00:00Z", "hostnames": [ "secure.host1.com" ], "toDate": "2025-03-20T14:00:00Z" }, "updateDate": "2025-02-05T14:00:00Z", "updatedBy": "adevi", "used": true }, "schema": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } } } }, "description": "Successfully created a Behavioral DDoS profile." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 Behavioral DDoS profiles in this security configuration." }, "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": { "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." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Create a Behavioral DDoS profile", "tags": [ "Behavioral DDoS profiles" ] }, "get": { "description": "Returns all Behavioral DDoS profiles 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-behavioral-ddos-profiles" }, "operationId": "get-behavioral-ddos-profiles", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "behavioralDdosProfiles": [ { "bypassCondition": { "atomicConditions": [ { "checkIps": "connecting", "className": "NetworkListCondition", "positiveMatch": true, "value": [ "100065_IPLIST" ] }, { "className": "RequestHeaderCondition", "name": [ "Content-Type" ], "nameWildcard": true, "positiveMatch": true, "value": [ "application/json" ], "valueCase": false, "valueWildcard": true } ] }, "configId": 1, "configVersion": 1, "createDate": "2025-02-05T14:00:00Z", "createdBy": "jsmith", "description": "This is a description of the profile", "exceptions": [ { "hosts": [ "secure.host1.com", "help.host3.com" ], "paths": [ "/path1", "/path2", "/path3" ] } ], "hostnames": [ "secure.host1.com", "www.host2.com", "help.host3.com", "info.host4.com" ], "name": "My first BDE profile", "profileId": 100, "sensitivity": "STRICT", "sensitivityOverrides": [ { "host": "info.host4.com", "path": "/path3", "sensitivity": "MODERATE" } ], "suspend": { "fromDate": "2025-02-20T14:00:00Z", "hostnames": [ "secure.host1.com" ], "toDate": "2025-03-20T14:00:00Z" }, "updateDate": "2025-02-05T14:00:00Z", "updatedBy": "jsmith", "used": true } ] }, "schema": { "additionalProperties": false, "description": "A collection of Behavioral DDoS profiles.", "properties": { "behavioralDdosProfiles": { "description": "Behavioral DDoS profiles.", "items": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } }, "minItems": 0, "type": "array" } }, "required": [ "behavioralDdosProfiles" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profiles.yaml" } } } }, "description": "Successfully returned the Behavioral DDoS profiles." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 the Behavioral DDoS profiles in this security configuration." }, "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": { "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." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List Behavioral DDoS profiles", "tags": [ "Behavioral DDoS profiles" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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/behavioral-ddos-profiles.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/behavioral-ddos" } }, "/configs/{configId}/versions/{versionNumber}/behavioral-ddos/{profileId}": { "get": { "description": "Returns the specified Behavioral DDoS profile. _Products:_ All.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-behavioral-ddos-profile" }, "operationId": "get-behavioral-ddos-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "bypassCondition": { "atomicConditions": [ { "checkIps": "connecting", "className": "NetworkListCondition", "positiveMatch": true, "value": [ "100065_IPLIST" ] }, { "className": "RequestHeaderCondition", "name": [ "Content-Type" ], "nameWildcard": true, "positiveMatch": true, "value": [ "application/json" ], "valueCase": false, "valueWildcard": true } ] }, "configId": 1, "configVersion": 1, "createDate": "2025-02-05T14:00:00Z", "createdBy": "jkowalski", "description": "This is a description of the profile", "exceptions": [ { "hosts": [ "secure.host1.com", "help.host3.com" ], "paths": [ "/path1", "/path2", "/path3" ] } ], "hostnames": [ "secure.host1.com", "www.host2.com", "help.host3.com", "info.host4.com" ], "name": "My first BDE profile", "profileId": 100, "sensitivity": "STRICT", "sensitivityOverrides": [ { "host": "info.host4.com", "path": "/path3", "sensitivity": "MODERATE" } ], "suspend": { "fromDate": "2025-02-20T14:00:00Z", "hostnames": [ "secure.host1.com" ], "toDate": "2025-03-20T14:00:00Z" }, "updateDate": "2025-02-05T14:00:00Z", "updatedBy": "adevi", "used": true }, "schema": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } } } }, "description": "Successfully returned the Behavioral DDoS profile." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 the Behavioral DDoS profile in this security configuration." }, "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": { "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 Behavioral DDoS profile wasn't found." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get a Behavioral DDoS profile", "tags": [ "Behavioral DDoS protection profiles" ] }, "put": { "description": "Updates the specified Behavioral DDoS profile. _Products:_ All.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-behavioral-ddos-profile" }, "operationId": "put-behavioral-ddos-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "bypassCondition": { "atomicConditions": [ { "checkIps": "connecting", "className": "NetworkListCondition", "positiveMatch": true, "value": [ "100065_IPLIST" ] }, { "className": "RequestHeaderCondition", "name": [ "Content-Type" ], "nameWildcard": true, "positiveMatch": true, "value": [ "application/json" ], "valueCase": false, "valueWildcard": true } ] }, "configId": 1, "configVersion": 1, "description": "This is a description of the profile", "exceptions": [ { "hosts": [ "secure.host1.com", "help.host3.com" ], "paths": [ "/path1", "/path2", "/path3" ] } ], "hostnames": [ "secure.host1.com", "www.host2.com", "help.host3.com", "info.host4.com" ], "name": "My first BDE profile", "sensitivity": "STRICT", "sensitivityOverrides": [ { "host": "info.host4.com", "path": "/path3", "sensitivity": "MODERATE" } ], "suspend": { "fromDate": "2025-02-20T14:00:00Z", "hostnames": [ "secure.host1.com" ], "toDate": "2025-03-20T14:00:00Z" } }, "schema": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "bypassCondition": { "atomicConditions": [ { "checkIps": "connecting", "className": "NetworkListCondition", "positiveMatch": true, "value": [ "100065_IPLIST" ] }, { "className": "RequestHeaderCondition", "name": [ "Content-Type" ], "nameWildcard": true, "positiveMatch": true, "value": [ "application/json" ], "valueCase": false, "valueWildcard": true } ] }, "configId": 1, "configVersion": 1, "createDate": "2025-02-05T14:00:00Z", "createdBy": "jkowalski", "description": "This is a description of the profile", "exceptions": [ { "hosts": [ "secure.host1.com", "help.host3.com" ], "paths": [ "/path1", "/path2", "/path3" ] } ], "hostnames": [ "secure.host1.com", "www.host2.com", "help.host3.com", "info.host4.com" ], "name": "My first BDE profile", "profileId": 100, "sensitivity": "STRICT", "sensitivityOverrides": [ { "host": "info.host4.com", "path": "/path3", "sensitivity": "MODERATE" } ], "suspend": { "fromDate": "2025-02-20T14:00:00Z", "hostnames": [ "secure.host1.com" ], "toDate": "2025-03-20T14:00:00Z" }, "updateDate": "2025-02-05T14:00:00Z", "updatedBy": "adevi", "used": true }, "schema": { "additionalProperties": false, "description": "Contains details about a Behavioral DDoS profile.", "properties": { "bypassCondition": { "additionalProperties": false, "description": "Exempts specific clients from being processed by the Behavioral DDoS profile.", "properties": { "atomicConditions": { "description": "Specify one or more types of conditions to match on. You can match on client lists, request headers, or both.", "items": { "oneOf": [ { "additionalProperties": false, "description": "Collects data needed for condition matches on request headers.", "properties": { "className": { "description": "Choose `RequestHeaderCondition` to match a header from the requesting client to the specified header.", "enum": [ "RequestHeaderCondition" ], "type": "string" }, "name": { "description": "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 in the specified `name`.", "type": "boolean" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Unique header values. Use both `value` and `name` to check whether the requesting client\u2019s header matches the specified headers.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true }, "valueCase": { "description": "Whether to consider case when matching header values, `true` for case-sensitive matches.", "type": "boolean" }, "valueWildcard": { "description": "Whether to interpret `?` and `*` as wildcards in the specified `value`.", "type": "boolean" } }, "required": [ "className", "name" ], "title": "RequestHeaderCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-request-header-condition.yaml" } }, { "additionalProperties": false, "description": "Collects data needed for condition matches on client lists and network lists.", "properties": { "checkIps": { "description": "__Read-only__ Whether the connecting IP or both the connecting IP and `X-Forwarded-For` (XFF) header match on the client list or network list. Behavioral DDoS bypass supports `connecting` only.", "enum": [ "connecting" ], "readOnly": true, "type": "string" }, "className": { "description": "Choose `NetworkListCondition` to match the requesting client's identifier, like IP, GEO, ASN or TLS fingerprint, against the specified client or network list. The only currently supported syntax is `NetworkListCondition`.", "enum": [ "NetworkListCondition" ], "type": "string" }, "positiveMatch": { "description": "__Read-only__ Whether the condition triggers on a match or lack of match.", "readOnly": true, "type": "boolean" }, "value": { "description": "Identifies the client list or network list.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "nullable": true, "type": "array", "uniqueItems": true } }, "required": [ "className", "value" ], "title": "NetworkListCondition", "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-bypass-client-list-condition.yaml" } } ] }, "minItems": 1, "type": "array" } }, "type": "object" }, "configId": { "description": "Uniquely identifies the security configuration.", "format": "int64", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "createDate": { "description": "__Read-only__ The ISO 8601 timestamp when you created the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "createdBy": { "description": "__Read-only__ The username of the person who created the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "description": { "description": "A description of the profile.", "type": "string" }, "exceptions": { "description": "The hostname and path pairs excluded from Behavioral DDoS mitigation actions.", "items": { "additionalProperties": false, "description": "The hostname and path pair combinations excluded from Behavioral DDoS mitigation actions.", "properties": { "hosts": { "description": "Hostnames in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "paths": { "description": "Paths in host and path pairs to exclude.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "hosts", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-host-path-exception.yaml" } }, "minItems": 0, "type": "array" }, "hostnames": { "description": "The hostnames that you want to be protected by the Behavioral DDoS profile.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "name": { "description": "The profile's unique name.", "type": "string" }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` for high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" }, "sensitivityOverrides": { "description": "Sensitivity overrides for one or more hostname and path pairs.", "items": { "additionalProperties": false, "description": "Hostnames and path, overriding the global sensitivity setting.", "properties": { "host": { "description": "Hostname in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "path": { "description": "Path in host and path pair to override. Wildcards are allowed (`*` and `?`).", "type": "string" }, "sensitivity": { "description": "Sensitivity level, specify `CONSERVATIVE` to provide tolerance for more substantial traffic deviations, `MODERATE` to provide tolerance for traffic fluctuations, or `STRICT` or high-security environments, where minor deviations in traffic might signal a potential DDoS attack.", "enum": [ "CONSERVATIVE", "MODERATE", "STRICT" ], "type": "string" } }, "required": [ "host", "path", "sensitivity" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-sensitivity-override.yaml" } }, "minItems": 0, "type": "array" }, "suspend": { "additionalProperties": false, "description": "Temporarily disable mitigation for a specific hostname, with the flexibility to choose the duration of its suspension.", "properties": { "fromDate": { "description": "The start ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" }, "hostnames": { "description": "Hostnames to suspend for a specified duration.", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "toDate": { "description": "The end ISO 8601 timestamp of suspension.", "format": "date-time", "type": "string" } }, "required": [ "hostnames", "fromDate", "toDate" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-suspend.yaml" } }, "updateDate": { "description": "__Read-only__ The ISO 8601 timestamp when you last updated the Behavioral DDoS profile.", "format": "date-time", "readOnly": true, "type": "string" }, "updatedBy": { "description": "__Read-only__ Username who last updated the Behavioral DDoS profile.", "readOnly": true, "type": "string" }, "used": { "description": "__Read-only__ Whether you're currently using the Behavioral DDoS profile.", "readOnly": true, "type": "boolean" } }, "required": [ "name", "sensitivity", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-profile.yaml" } } } }, "description": "Successfully updated Behavioral DDoS profile." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 Behavioral DDoS profile in this security configuration." }, "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": { "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 Behavioral DDoS profile wasn't found." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify a Behavioral DDoS profile", "tags": [ "Behavioral DDoS protection profiles" ] }, "delete": { "description": "Deletes the specified Behavioral DDoS profile. You can't delete a Behavioral DDoS profile that's actively in use. To delete an active Behavioral DDoS profile, either 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-behavioral-ddos-profile" }, "operationId": "delete-behavioral-ddos-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the Behavioral DDoS profile." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 the Behavioral DDoS profile in this security configuration." }, "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": { "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 Behavioral DDoS profile wasn't found." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Remove a Behavioral DDoS profile", "tags": [ "Behavioral DDoS profiles" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 Behavioral DDoS profile.", "in": "path", "name": "profileId", "required": true, "schema": { "example": 121212, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/behavioral-ddos-profile-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/behavioral-ddos-profile.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/behavioral-ddos/{profileId}" } }, "/configs/{configId}/versions/{versionNumber}/bypass-network-lists": { "get": { "description": "__Web Application Protector__ Lists which network lists are used in the bypass network lists settings. If you want to add or remove IP addresses from the network lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-bypass-network-lists" }, "operationId": "get-bypass-network-lists", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "networkLists": [ { "id": "888518_ACDDCKERS", "name": "Test network list 1" }, { "id": "1304427_AAXXBBLIST", "name": "Test network list 2" } ] }, "schema": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-get.yaml" } } } }, "description": "Successfully retrieved the bypass network lists settings." }, "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": { "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": { "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 the resource.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Get bypass network lists settings", "tags": [ "Bypass network lists" ], "x-akamai": { "labels": [ "Web Application Protector" ] } }, "put": { "description": "__Web Application Protector__ Update which network lists to use in the bypass network lists settings. If you want to add or remove IP addresses from the network lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-bypass-network-lists" }, "operationId": "put-bypass-network-lists", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "networkLists": [ "1304427_AAXXBBLIST", "888518_ACDDCKERS" ] }, "schema": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "Contains a list of network list IDs.", "items": { "description": "List of network lists. The values are the network lists' IDs.", "type": "string" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "networkLists": [ "1304427_AAXXBBLIST", "888518_ACDDCKERS" ] }, "schema": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "Contains a list of network list IDs.", "items": { "description": "List of network lists. The values are the network lists' IDs.", "type": "string" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-put.yaml" } } } }, "description": "Successfully updated the IP/Geo Firewall settings." }, "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": { "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": { "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 the resource.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Modify the bypass network lists settings", "tags": [ "Bypass network lists" ], "x-akamai": { "labels": [ "Web Application Protector" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-bypass-network-lists.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/bypass-network-lists" } }, "/configs/{configId}/versions/{versionNumber}/custom-deny": { "post": { "description": "__All products__ Create a new custom deny action for a specific configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-custom-deny" }, "operationId": "post-custom-deny", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "description": "test description", "name": "new custom deny", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "json desc" }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/xml" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "description": "test description", "id": "deny_custom_622919", "name": "new custom deny", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "json body" }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/xml" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } } } }, "description": "Successfully created a custom deny action." }, "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": { "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": { "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 custom deny actions 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": { "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": "Create a custom deny action", "tags": [ "Shared resources: Custom deny actions" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Returns custom deny actions for a specific security configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-custom-deny-actions" }, "operationId": "get-custom-deny-actions", "parameters": [ { "description": "Filter results by name, description, or ID. You can match on substrings.", "in": "query", "name": "search", "schema": { "example": "SQL Injection", "type": "string" }, "x-akamai": { "file-path": "parameters/search-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "customDenyList": [ { "description": "Custom Deny Example 1", "id": "deny_custom_622918", "name": "Custom Deny Example 1", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "body comes here2222." }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/json" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] }, { "description": "Custom Deny Example 2", "id": "deny_custom_622919", "name": "Custom Deny Example 2", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "response body." }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/json" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] } ] }, "schema": { "additionalProperties": false, "description": "Contains details about custom deny actions.", "properties": { "customDenyList": { "description": "A list of custom deny actions in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/custom-denies.yaml" } } } }, "description": "Successfully returned custom deny actions." }, "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": { "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 custom deny actions 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": { "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 not found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List custom deny actions", "tags": [ "Shared resources: Custom deny actions" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-custom-denies.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/custom-deny" } }, "/configs/{configId}/versions/{versionNumber}/custom-deny/{customDenyId}": { "get": { "description": "__All products__ Returns the specified custom deny action.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-custom-deny-action" }, "operationId": "get-custom-deny-action", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "description": "test description", "id": "deny_custom_622919", "name": "new custom deny", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "json body" }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/xml" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } } } }, "description": "Successfully returned custom deny action." }, "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": { "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 custom deny action 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": { "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 custom deny action wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get a custom deny action", "tags": [ "Shared resources: Custom deny actions" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update details for a specific custom deny action.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-custom-deny" }, "operationId": "put-custom-deny", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "description": "test description", "id": "deny_custom_622919", "name": "new custom deny", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "json desc" }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/xml" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "description": "test description", "id": "deny_custom_622919", "name": "new custom deny", "parameters": [ { "displayName": "Prevent browser caching", "name": "prevent_browser_cache", "value": "true" }, { "displayName": "Response body content", "name": "response_body_content", "value": "json body" }, { "displayName": "Response content type", "name": "response_content_type", "value": "application/xml" }, { "displayName": "Response status code", "name": "response_status_code", "value": "403" } ] }, "schema": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } } } }, "description": "Successfully updated custom deny action." }, "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": { "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": { "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 custom deny action 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": { "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 custom deny action wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Modify a custom deny action", "tags": [ "Shared resources: Custom deny actions" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__All products__ Delete a custom deny action. You can't delete a custom deny action that is actively in use. To delete the custom deny action, first activate an older configuration version or create a new version without the policy in place.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-custom-deny" }, "operationId": "delete-custom-deny", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the custom deny action." }, "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": { "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 custom deny action 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": { "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 custom deny action wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Remove a custom deny action", "tags": [ "Shared resources: Custom deny actions" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 custom deny action.", "in": "path", "name": "customDenyId", "required": true, "schema": { "example": "112231", "type": "string" }, "x-akamai": { "file-path": "parameters/custom-deny-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-custom-deny.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/custom-deny/{customDenyId}" } }, "/configs/{configId}/versions/{versionNumber}/custom-rules/usage": { "post": { "description": "__All products__ Returns a list of security policies using each requested custom rule with a set action (Allow or Deny), if any apply. Skips custom rule IDs that do not belong to this security configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-config-custom-rules-usage" }, "operationId": "post-config-custom-rules-usage", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "ruleIds": [ 661699, 661700, 100500 ] }, "schema": { "additionalProperties": false, "description": "Collects data for custom rule usage analysis.", "properties": { "ruleIds": { "description": "A list of the custom rule IDs.", "items": { "type": "integer" }, "minItems": 1, "nullable": false, "type": "array", "uniqueItems": true } }, "required": [ "ruleIds" ], "type": "object", "x-akamai": { "file-path": "schemas/config-custom-rules-usage-request.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "rules": [ { "policies": [ { "policyId": "bt17_75755", "policyName": "Open Cloned IV 2" } ], "ruleId": 661699 }, { "policies": [], "ruleId": 661700 } ] }, "schema": { "additionalProperties": false, "description": "Custom rule usage data.", "properties": { "rules": { "description": "The requested custom rule IDs and names of the security policies that use them.", "items": { "additionalProperties": false, "description": "Usage of the requested custom rule in security policies.", "properties": { "policies": { "description": "A list of security policies which use the custom rule.", "items": { "additionalProperties": false, "description": "A security policy using the custom rule.", "properties": { "policyId": { "description": "A security policy ID.", "nullable": false, "type": "string" }, "policyName": { "description": "A security policy name.", "nullable": false, "type": "string" } }, "required": [ "policyId", "policyName" ], "type": "object" }, "minItems": 0, "nullable": false, "type": "array", "uniqueItems": true }, "ruleId": { "description": "A custom rule ID.", "nullable": false, "type": "integer" } }, "required": [ "ruleId", "policies" ], "type": "object" }, "minItems": 0, "nullable": false, "type": "array", "uniqueItems": true } }, "required": [ "rules" ], "type": "object", "x-akamai": { "file-path": "schemas/config-custom-rules-usage-response.yaml" } } } }, "description": "Returns all requested custom rules along with a list of the security policies using them, if any are available." } }, "summary": "List custom rules usage by security policies", "tags": [ "Shared resources: Custom rules" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-custom-rules-usage.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/custom-rules/usage" } }, "/configs/{configId}/versions/{versionNumber}/export": { "post": { "description": "__All products__ Start an asynchronous export of a security configuration version. The response contains an `exportId` you can use to monitor progress and get the export data once it's ready.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-export-config-version-async-task" }, "operationId": "post-export-config-version-async-task", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "example": { "createdBy": "jkowalski@example.com", "createdDate": "2025-08-06T10:44:05.016608Z", "exportId": "161", "exportStatus": "PENDING", "retryAfter": 60, "statusLink": "/appsec/v1/configs/24193/versions/39/export/161/status" }, "schema": { "additionalProperties": false, "description": "Describes the response for an asynchronous export task.", "properties": { "createdBy": { "description": "The user who launched the export task.", "minLength": 1, "type": "string" }, "createdDate": { "description": "__Read-only__ ISO 8601 timestamp when the export request begins.", "format": "date-time", "readOnly": true, "type": "string" }, "expiresDate": { "description": "ISO 8601 timestamp when the export result is deleted.", "format": "date-time", "type": "string" }, "exportId": { "description": "Uniquely identifies each export task.", "type": "string" }, "exportStatus": { "description": "__Read-only__ The status of the export, which can take several minutes to complete. \n* `PENDING` indicates the task is accepted and in progress. \n* `COMPLETED` means it finished successfully and the result can be retrieved. \n* `FAILED` means the task could not be processed.", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "minLength": 1, "readOnly": true, "type": "string" }, "message": { "description": "A message providing additional information about the export task.", "type": "string" }, "resultLink": { "description": "The URL for the operation to request the task result.", "format": "uri", "type": "string" }, "retryAfter": { "description": "The estimated number of seconds until the task completes.", "type": "integer" }, "statusLink": { "description": "The URL for the operation to request the task status.", "format": "uri", "type": "string" } }, "required": [ "exportId", "exportStatus", "createdDate", "createdBy" ], "type": "object", "x-akamai": { "file-path": "schemas/export-async-status.yaml" } } } }, "description": "Successfully started exporting asynchronously.", "headers": { "Retry-After": { "description": "The estimated number of seconds until the task completes. This header only appears for tasks still in progress.", "required": false, "schema": { "example": 60, "type": "integer" }, "x-akamai": { "file-path": "headers/retry-after.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": { "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 aren't authorized to run this operation.", "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": { "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). The security configuration version to export wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } }, "409": { "content": { "application/problem+json": { "example": { "detail": "An export task is already running. Please wait for the previous export task ('161') to complete before submitting a new one.", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/170237a02c617aa5", "status": 409, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Conflict](https://techdocs.akamai.com/application-security/reference/409). Invalid export request. See the `details` field provided in the response for more information.", "x-akamai": { "file-path": "errors/409-export-task.yaml" } } }, "summary": "Asynchronously export a configuration version", "tags": [ "Configuration version export" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-version-async-export.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/export" } }, "/configs/{configId}/versions/{versionNumber}/export/{exportId}/result": { "get": { "description": "__All products__ Get a security configuration version's export data from a previously completed asynchronous task. This is only available when the task status is `COMPLETED`.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-export-config-version-async-result" }, "operationId": "get-export-config-version-async-result", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "advancedOptions": { "asePenaltyBox": { "akamaiManagedExclusions": { "lastUpdated": "2025-02-01", "rules": [ "1000000", "2000000", "3000000" ] }, "blockDuration": 10, "clientIdentifiers": [ "ip-useragent" ], "qualificationExclusions": { "attackGroups": [ "XSS", "IN" ], "rules": [ 950002 ] }, "requestCount": 1 }, "ja4Fingerprint": { "headerNames": [ "test" ] }, "logging": { "allowSampling": true, "cookies": { "type": "exclude", "values": [ "_updated_By_SoapUI", "w", "NEW_VAL_ADDED_BY_SoapUI" ] }, "customHeaders": { "type": "only", "values": [ "112", "sdasd", "ds" ] }, "standardHeaders": { "type": "only" } }, "pragmaHeader": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "Expect", "positiveMatch": true, "type": "requestHeaderValueMatch", "useHeaders": false, "value": [ "dasd" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "networkList", "useHeaders": true, "value": [ "62569_AEPUAT1PARTNERSSTRICTWL" ], "valueCase": false, "valueWildcard": false } ], "override": true }, "prefetch": { "allExtensions": false, "enableAppLayer": true, "enableRateControls": false, "extensions": [ "cgi", "jsp", "EMPTY_STRING", "aspx", "php", "py", "asp" ] } }, "basedOn": 1, "configId": 48579, "configName": "New Security Config", "createDate": "2017-09-08T22:24:41Z", "createdBy": "mrossi", "customDenyList": [], "customRules": [ { "conditions": [ { "positiveMatch": true, "type": "hostMatch", "value": [ "a.com" ] }, { "positiveMatch": true, "type": "asNumberMatch", "useXForwardForHeaders": false, "value": [ "1" ] } ], "id": 60032441, "name": "test", "operation": "AND", "ruleActivated": false, "structured": true, "tag": [ "tag" ], "version": 1 } ], "errorHosts": [ { "hostname": "business.example.com", "reason": "property is not active in either production or staging", "reasonCode": 400 }, { "hostname": "anotherhostname.example.com", "reason": "You don't have access to this property", "reasonCode": 403 } ], "matchTargets": { "apiTargets": [ { "apis": [ { "id": 1041, "name": "hmm test" } ], "bypassNetworkLists": [ { "id": "1024_AMAZONELASTICCOMPUTECLOU", "name": "Ec2 Akamai Network List" }, { "id": "1283_MICROSOFTWINDOWSAZUREDAT", "name": "Azure IP range cloud services" } ], "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": false, "applyBotmanControls": false, "applyNetworkLayerControls": false, "applyRateControls": true, "applyReputationControls": false, "applySlowPostControls": false }, "id": 1362597, "securityPolicy": { "policyId": "99e_47293" }, "sequence": 6, "type": "api" }, { "apis": [ { "id": 1001, "name": "1001" }, { "id": 1041, "name": "hmm test" } ], "bypassNetworkLists": [ { "id": "11212_BYPASSURR", "name": "bypass-URR" } ], "effectiveSecurityControls": { "applyApiConstraints": true, "applyApplicationLayerControls": false, "applyBotmanControls": false, "applyNetworkLayerControls": true, "applyRateControls": false, "applyReputationControls": true, "applySlowPostControls": false }, "id": 1362598, "securityPolicy": { "policyId": "4444_44572" }, "sequence": 7, "type": "api" } ], "websiteTargets": [ { "bypassNetworkLists": [ { "id": "11212_BYPASSURR", "name": "bypass-URR" } ], "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": true, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": false, "applyRateControls": true, "applyReputationControls": false, "applySlowPostControls": false }, "fileExtensions": [ "jpg" ], "filePaths": [ "/path" ], "id": 1362593, "isNegativeFileExtensionMatch": false, "isNegativePathMatch": false, "securityPolicy": { "policyId": "qik3_38800" }, "sequence": 1, "type": "website" }, { "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": true, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": false }, "filePaths": [ "/images", "/image1", "/path" ], "hostnames": [ "b2c.div1.akamaniac.com" ], "id": 1362594, "isNegativeFileExtensionMatch": false, "isNegativePathMatch": false, "securityPolicy": { "policyId": "qik2_38799" }, "sequence": 2, "type": "website" } ] }, "production": { "status": "Inactive" }, "ratePolicies": [ { "averageThreshold": 3, "burstThreshold": 2, "clientIdentifier": "", "clientIdentifiers": [], "createDate": "2017-09-08T22:24:42Z", "id": 672601, "matchType": "path", "name": "dsafsfdsf", "pathMatchType": "RequestDisabled", "pathUriPositiveMatch": true, "queryParameters": [ { "name": "dasdasdasd*", "positiveMatch": true, "valueInRange": false, "values": [ "dasdasdas8*&^" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": true, "type": "BOTMAN", "updateDate": "2017-09-08T22:24:42Z", "useXForwardForHeaders": false, "used": false }, { "additionalMatchOptions": [ { "positiveMatch": true, "type": "NetworkListCondition", "values": [ "25620_REPUTATIONALLOWLIST174", "11212_BYPASSURR" ] }, { "positiveMatch": true, "type": "RequestMethodCondition", "values": [ "GET", "HTTP_DELETE" ] }, { "positiveMatch": true, "type": "UserAgentCondition", "values": [ "MOZILLA", "Googlebot" ] }, { "positiveMatch": true, "type": "RequestMethodCondition", "values": [ "GET", "POST", "HEAD" ] }, { "positiveMatch": true, "type": "ResponseStatusCondition", "values": [ "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "500", "501", "502", "503", "504" ] } ], "averageThreshold": 1000, "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 }, "createDate": "2017-09-08T22:24:42Z", "description": "These Shared Resources will be available to all policies within the Security Configuration", "id": 672607, "matchType": "path", "name": "These Shared Resources will be available to all policies within the Security Configuration", "pathMatchType": "Custom", "pathUriPositiveMatch": true, "queryParameters": [ { "name": "param1", "positiveMatch": false, "valueInRange": true, "values": [ "value1" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": true, "type": "WAF", "updateDate": "2017-09-08T22:24:42Z", "useXForwardForHeaders": false, "used": true } ], "reputationProfiles": [ { "context": "SCANTL", "contextReadable": "Scanning Tools", "enabled": true, "id": 210588, "name": "Scanning Tools (Low Threat)", "threshold": 5 }, { "condition": { "atomicConditions": [ { "className": "RequestHeaderCondition", "index": 1, "name": [ "test*" ], "nameWildcard": false, "positiveMatch": true, "value": [ "test*" ], "valueCase": false, "valueWildcard": false }, { "className": "RequestHeaderCondition", "index": 2, "name": [ "Head", "Header" ], "nameWildcard": true, "positiveMatch": true, "value": [ "Header value" ], "valueCase": false, "valueWildcard": true }, { "checkIps": "connecting", "className": "NetworkListCondition", "index": 3, "positiveMatch": true, "value": [ "14121_IMAGEMANAGERSERVERS" ] }, { "className": "RequestCookieCondition", "index": 4, "name": "cookieName", "nameCase": false, "nameWildcard": true, "positiveMatch": true, "value": [ "cookieValue" ], "valueCase": false, "valueWildcard": true }, { "checkIps": "connecting", "className": "AsNumberCondition", "index": 5, "positiveMatch": true, "value": [ "5" ] } ], "canDelete": false, "configVersionId": 152889, "id": 88112456, "name": "Cloned of 87956156 for version 152889", "positiveMatch": true, "uuid": "SEC_COND_88112456", "version": 1504909482545 }, "context": "WEBATCK", "contextReadable": "Web Attackers", "enabled": false, "id": 210578, "name": "Web Attackers (Low Threat)", "threshold": 5 } ], "rulesets": [ { "attackGroups": [ { "group": "DDOS", "groupName": "Anomaly Score Exceeded for DDoS", "threshold": 5 }, { "group": "IN", "groupName": "Anomaly Score Exceeded for Inbound", "threshold": 30 }, { "group": "SQL", "groupName": "Anomaly Score Exceeded for SQL Injection", "threshold": 19 }, { "group": "TROJAN", "groupName": "Anomaly Score Exceeded for Trojan", "threshold": 4 }, { "group": "XSS", "groupName": "Anomaly Score Exceeded for Cross-Site Scripting", "threshold": 9 } ], "id": 41, "releaseDate": "2017-04-21T16:00:38Z", "rules": [ { "id": 699989, "inspectRequestBody": false, "inspectResponseBody": false, "ruleVersion": 1, "score": 5, "tag": "", "title": "Akamai-X debug Pragma header detected and removed" }, { "id": 699990, "inspectRequestBody": false, "inspectResponseBody": false, "ruleVersion": 1, "score": 5, "tag": "", "title": "Detected request from anonymous proxy" }, { "attackGroups": [ "SQL", "IN" ], "id": 981252, "inspectRequestBody": true, "inspectResponseBody": false, "ruleVersion": 4, "score": 5, "tag": "", "title": "MySQL Charset Switch and MSSQL DoS Attempts" }, { "attackGroups": [ "IN", "DDOS" ], "id": 3000060, "inspectRequestBody": true, "inspectResponseBody": false, "ruleVersion": 2, "score": 1000, "tag": "", "title": "Mirai / Kaiten DDoS Detection - HTTP Attacks" }, { "attackGroups": [ "XSS", "IN" ], "id": 3000061, "inspectRequestBody": true, "inspectResponseBody": false, "ruleVersion": 1, "score": 5, "tag": "", "title": "Referer Header From OpenBugBounty Website - Potential XSS" } ], "rulesetVersionId": 327550, "type": "Kona" } ], "securityPolicies": [ { "hasRatePolicyWithApiKey": false, "id": "D3M0_98231", "ipGeoFirewall": { "block": "blockSpecificIPGeo", "ukraineGeoControl": { "action": "none" } }, "name": "demo lab1", "penaltyBox": { "action": "alert", "penaltyBoxProtection": true }, "pragmaHeader": { "action": "REMOVE", "conditionOperator": "OR", "excludeCondition": [ { "positiveMatch": false, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.22" ], "valueCase": false, "valueWildcard": false } ], "override": true }, "rapidRules": { "defaultAction": "alert", "enabled": true, "policyRules": [ { "action": "alert", "lock": false, "ruleId": 3000971, "ruleVersion": 1 }, { "action": "deny", "group": "CMD", "rulesetVersionId": 7092 }, { "action": "alert", "group": "LFI", "rulesetVersionId": 7092 }, { "action": "alert", "group": "RFI", "rulesetVersionId": 7092 }, { "action": "alert", "group": "PLATFORM", "rulesetVersionId": 7092 } ], "threatIntel": "on" }, "ratePolicyActions": [ { "id": 117696, "ipv4Action": "deny", "ipv6Action": "deny" } ], "securityControls": { "applyAccountProtectionControls": false, "applyApplicationLayerControls": true, "applyMalwareControls": false, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": false }, "slowPost": { "action": "alert", "durationThreshold": { "timeout": 20 }, "slowRateThreshold": { "period": 60, "rate": 10 } } } ], "selectableHosts": [ "www.example1.com", "www.example2.com" ], "selectedHosts": [ "www.example3.com", "www.example4.com" ], "siem": { "enableForAllPolicies": false, "enableSiem": true, "enabledBotmanSiemEvents": false, "exceptions": [ { "actionTypes": [ "*" ], "protection": "botmanagement" }, { "actionTypes": [ "alert" ], "protection": "ipgeo" }, { "actionTypes": [ "alert" ], "protection": "rate" } ], "firewallPolicyIds": [ "qik2_38799", "4444_44572", "teet_39295", "ds22_48583" ], "siemDefinitionId": 1 }, "staging": { "status": "Inactive" }, "version": 2 }, "schema": { "additionalProperties": false, "description": "Contains details about an exported security configuration version.", "properties": { "advancedOptions": { "additionalProperties": false, "description": "The logging and prefetch settings in the configuration version.", "properties": { "asePenaltyBox": { "additionalProperties": false, "description": "The configuration version level settings for ASE Penalty Box.", "properties": { "akamaiManagedExclusions": { "additionalProperties": false, "description": "Akamai Managed Exclusions for ASE Penalty Box.", "properties": { "lastUpdated": { "description": "Last time the Akamai Managed Exclusions were updated.", "format": "date", "type": "string" }, "rules": { "description": "Rules managed by Akamai in Akamai Managed Exclusions.", "items": { "type": "string" }, "type": "array" } }, "readOnly": true, "type": "object", "x-akamai": { "file-path": "schemas/ase-pb-akamai-managed-exclusion.yaml" } }, "blockDuration": { "description": "Block duration for ASE Penalty Box.", "type": "integer", "x-akamai": { "file-path": "schemas/ase-pb-block-duration.yaml" } }, "clientIdentifiers": { "description": "Client identifiers for ASE Penalty Box.", "items": { "type": "string" }, "readOnly": true, "type": "array", "x-akamai": { "file-path": "schemas/ase-pb-client-identifiers.yaml" } }, "qualificationExclusions": { "additionalProperties": false, "description": "Qualification Exclusions for ASE Penalty Box.", "properties": { "attackGroups": { "description": "Attack groups in Qualification Exclusions for ASE Penalty Box.", "items": { "type": "string" }, "type": "array" }, "rules": { "description": "Rules in Qualification Exclusions for ASE Penalty Box.", "items": { "type": "integer" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/ase-pb-qualification-exclusion.yaml" } }, "requestCount": { "description": "Request count for ASE Penalty Box.", "readOnly": true, "type": "integer", "x-akamai": { "file-path": "schemas/ase-pb-request-count.yaml" } } }, "required": [ "blockDuration" ], "type": "object", "x-akamai": { "file-path": "schemas/ase-penalty-box.yaml" } }, "ja4Fingerprint": { "additionalProperties": false, "description": "Contains the configuration version level settings for JA4 Client TLS Fingerprint.", "properties": { "headerNames": { "description": "The header name where you add the JA4 client TLS fingerprint details.", "items": { "description": "The header name.", "type": "string" }, "maxItems": 1, "minItems": 1, "nullable": true, "type": "array", "uniqueItems": true } }, "type": "object", "x-akamai": { "file-path": "schemas/ja4-client-tls-fingerprint-get-200.yaml" } }, "logging": { "additionalProperties": false, "description": "Contains the configuration version level settings for header logging.", "properties": { "allowSampling": { "description": "Whether you enabled the header data sampling.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "The sampling settings for the cookie data.", "properties": { "type": { "description": "The directive for including cookies. Either `all` to include all cookies, `exclude` to exclude specific cookies, `none` not to include any cookies, or `only` to include only specific cookies.", "enum": [ "all", "exclude", "none", "only" ], "type": "string" }, "values": { "description": "The cookie names to log or exclude. This applies only when the `type` is either `only` or `exclude`.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type", "values" ], "type": "object" }, "customHeaders": { "additionalProperties": false, "description": "The sampling settings for the custom headers.", "properties": { "type": { "description": "The directive for including custom headers. Either `all` to include all custom headers, `exclude` to exclude specific custom headers, `none` not to include any custom headers, or `only` to include only specific custom headers.", "enum": [ "all", "exclude", "none", "only" ], "type": "string" }, "values": { "description": "The custom headers to log or exclude. This applies only when the `type` is either `only` or `exclude`.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type", "values" ], "type": "object" }, "standardHeaders": { "additionalProperties": false, "description": "The sampling settings for the standard headers.", "properties": { "type": { "description": "The directive for including standard headers. Either `all` to include all standard headers, `exclude` to exclude specific standard headers, `none` not to include any standard headers, or `only` to include only specific standard headers.", "enum": [ "all", "exclude", "none", "only" ], "type": "string" }, "values": { "description": "The standard headers to log or exclude. This is applies only when the `type` is either `only` or `exclude`. For available header values, see [Export header values](https://techdocs.akamai.com/application-security/reference/hdval).", "items": { "enum": [ "Accept", "Accept-Charset", "Accept-Encoding", "Accept-Language", "Accept-Ranges", "Access-Control-Allow-Origin", "Age", "Allow", "Cache-Control", "Connection", "Content-Disposition", "Content-Encoding", "Content-Language", "Content-Length", "Content-Location", "Content-MD5", "Content-Range", "Content-Security-Policy", "Content-Type", "Date", "DNT", "Etag", "Expect", "Expires", "From", "Host", "If-Match", "If-Modified-Since", "If-None-Match", "If-Range", "If-Unmodified-Since", "Last-Modified", "Link", "Location", "Max-Forwards", "Origin", "P3P", "Pragma", "Proxy-Authenticate", "Range", "Referer", "Refresh", "Retry-After", "Server", "Strict-Transport-Security", "TE", "Trailer", "Transfer-Encoding", "Upgrade", "User-Agent", "Vary", "Via", "Warning", "WWW-Authenticate", "X-Content-Security-Policy", "X-Content-Type-Options", "X-Forwarded-For", "X-Forwarded-Proto", "X-Frame-Options", "X-Powered-By", "X-Requested-With", "X-UA-Compatible", "X-WebKit-CSP", "X-XSS-Protection" ], "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object" } }, "required": [ "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging.yaml" } }, "pragmaHeader": { "additionalProperties": false, "description": "Contains the configuration version level settings for the `Pragma` header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } }, "prefetch": { "additionalProperties": false, "description": "Contains the configuration version level prefetch settings. Use this object to apply application firewall rules and rate controls to prefetch requests.", "properties": { "allExtensions": { "description": "Whether to enable the prefetch settings for all file extensions. This only applies if the `enableAppLayer` field is `true`.", "type": "boolean" }, "enableAppLayer": { "description": "Whether to enable the application layer rules for the prefetch requests.", "type": "boolean" }, "enableRateControls": { "description": "Whether to enable the rate controls for the prefetch requests.", "type": "boolean" }, "extensions": { "description": "The file extensions to apply the settings to. This only applies if the `enableAppLayer` field is `true`.", "items": { "type": "string" }, "type": "array" } }, "required": [ "allExtensions", "enableAppLayer", "extensions", "enableRateControls" ], "type": "object" }, "requestBody": { "additionalProperties": false, "description": "Contains the configuration version level settings for request body inspection limit.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } }, "required": [ "logging", "prefetch" ], "type": "object", "x-akamai": { "file-path": "schemas/export-advanced-options.yaml" } }, "basedOn": { "description": "The version from which you cloned this version. If it's the first version, this field is omitted from the response.", "type": "integer" }, "configId": { "description": "Uniquely identifies each security configuration.", "type": "integer" }, "configName": { "description": "The name that you assign to the security configuration.", "type": "string" }, "createDate": { "description": "The date when you created the security configuration.", "type": "string" }, "createdBy": { "description": "The user who created the configuration version.", "type": "string" }, "customDenyList": { "description": "The list of custom deny actions in the configuration version.", "items": { "additionalProperties": false, "description": "Contains details about custom deny actions.", "properties": { "customDenyList": { "description": "A list of custom deny actions in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a custom deny action.", "properties": { "description": { "description": "Describes the custom deny action.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the custom deny action.", "readOnly": true, "type": "string" }, "name": { "description": "The name you assigned to the custom deny action.", "type": "string" }, "parameters": { "description": "Describes the custom deny parameters.", "items": { "additionalProperties": false, "description": "Contains a list of parameters for the custom deny action. These parameters are not the same type of parameters you usually include in the path of a request.", "properties": { "displayName": { "description": "The description of the custom deny parameter.", "type": "string" }, "name": { "description": "The custom deny parameter you choose instead of the Akamai default response. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "enum": [ "response_status_code", "prevent_browser_cache", "response_content_type", "response_body_content", "response_header_name", "response_header_value", "custom_deny_hostname", "custom_deny_path", "include_true_ip", "include_reference_id" ], "type": "string" }, "value": { "description": "The value you assign to the custom deny parameter. For available values, see [Deny name values](https://techdocs.akamai.com/application-security/reference/deny-name-values).", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "name", "parameters" ], "type": "object", "x-akamai": { "file-path": "schemas/custom-deny.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/custom-denies.yaml" } }, "type": "array" }, "customRules": { "description": "The custom rule details in the configuration version.", "items": { "additionalProperties": false, "description": "Contains custom rule settings of the exported security configuration.", "properties": { "conditions": { "description": "Contains the details about the condition that triggers the custom rule.", "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 type of condition. See [CustomRule condition type values](https://techdocs.akamai.com/application-security/reference/condition-type-values).", "enum": [ "cookieMatch", "extensionMatch", "filenameMatch", "ipMatch", "pathMatch", "requestHeaderMatch", "requestMethodMatch", "requestProtocolVersionMatch", "uriQueryMatch", "headerOrderMatch", "argsPostMatch", "argsPostJSONMatch", "argsPostJSONNamesMatch", "argsPostXMLMatch", "argsPostNamesMatch", "clientCertPresentMatch", "clientCertValidMatch", "clientTlsFingerprintMatch", "hostMatch", "ipAddressMatch", "geoMatch", "asNumberMatch", "clientListMatch" ], "type": "string" }, "useXForwardForHeaders": { "description": "Whether the condition includes `X-Forwarded-For` (XFF) header. This only applies when the `type` is `ipAddressMatch`, `geoMatch`, or `asNumberMatch`.", "type": "boolean" }, "value": { "description": "The value that triggers the condition when matched or not matched. The `value` can either be a string or an array.", "oneOf": [ { "description": "The value that triggers the condition when matched or not matched. The `value` can either be a string or an array.", "items": { "type": "string" }, "title": "Array", "type": "array" }, { "description": "The value that triggers the condition when matched or not matched. The `value` can either be a string or an array.", "title": "String", "type": "string" } ] } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "description": { "description": "The custom rule description.", "type": "string" }, "id": { "description": "__Read-only__ Uniquely identifies the rule.", "readOnly": true, "type": "integer" }, "inspectRequest": { "description": "__Read-only__ Whether to inspect the HTTP request for unstructured custom rules.", "readOnly": true, "type": "boolean" }, "inspectResponse": { "description": "__Read-only__ Whether to inspect the HTTP response for unstructured custom rules.", "readOnly": true, "type": "boolean" }, "loggingOptions": { "description": "The specific conditions to be logged.", "items": { "additionalProperties": false, "description": "Condition to be logged.", "properties": { "id": { "description": "The unique identifier for each logging option. See [Logging option values](https://techdocs.akamai.com/application-security/reference/logging-option-values).", "enum": [ "CLIENT_TLS_FINGERPRINT_MATCH", "HEADER_ORDER_MATCH", "REQUEST_HEADER_MATCH", "COOKIE_MATCH", "URI_QUERY_MATCH", "ARGS_POST_MATCH" ], "type": "string" }, "name": { "description": "A description of the logging option type.", "type": "string" }, "value": { "description": "The value on which to match when determining whether to log the custom rule condition.", "type": "string" } }, "required": [ "id" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-option.yaml" } }, "type": "array" }, "metadata": { "description": "__Read-only__ The metadata you provided for unstructured custom rules.", "readOnly": true, "type": "string" }, "name": { "description": "The custom rule name.", "type": "string" }, "operation": { "description": "Set to `OR` to match on any condition, or set to `AND` to match all of them.\n\n- `AND`: All conditions in the custom rule must be true for the rule to be applied.\n- `OR`: At least one condition in the custom rule must be true for the rule to be applied.", "enum": [ "AND", "OR" ], "type": "string" }, "ruleActivated": { "description": "__Read-only__ Whether the rule is active in the configuration.", "readOnly": true, "type": "boolean" }, "stagingOnly": { "description": "Whether to show traffic from only the staging network, or all traffic. The default setting is `false` and only shows in the response when `true`.", "type": "boolean" }, "structured": { "description": "__Read-only__ Whether you created the rule with the structured custom rule builder or free-form XML.", "readOnly": true, "type": "boolean" }, "tag": { "description": "The list of the labels you assigned to the custom rule.", "items": { "type": "string" }, "type": "array" }, "version": { "description": "The custom rule version.", "type": "integer" } }, "required": [ "name" ], "type": "object", "x-akamai": { "file-path": "schemas/export-custom-rules.yaml" } }, "type": "array" }, "errorHosts": { "description": "Specifies the set of hostnames unavailable for protection in this configuration version.", "items": { "additionalProperties": false, "properties": { "hostname": { "description": "The hostname unavailable for protection.", "type": "string" }, "reason": { "description": "Describes why WAF can't protect the hostname.", "type": "string" }, "reasonCode": { "description": "The HTTP error code indicating why WAF can't protect the hostname.", "type": "integer" } }, "required": [ "hostname", "reason", "reasonCode" ], "type": "object" }, "type": "array" }, "evaluating": { "additionalProperties": false, "description": "Describes security controls and information for hostnames you want to evaluate.", "properties": { "securityPolicies": { "description": "The evaluation policy details in the configuration version.", "items": { "additionalProperties": false, "description": "Contains details about the Evaluation Policy settings in the exported configuration version.", "properties": { "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "hostnames": { "description": "The evaluation hostnames in the configuration version.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "Security Policy ID.", "type": "string" } }, "required": [ "effectiveSecurityControls", "id", "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/export-eval-policy.yaml" } }, "type": "array" } }, "type": "object" }, "malwarePolicies": { "description": "The malware policy details for a configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } }, "type": "array" }, "matchTargets": { "additionalProperties": false, "description": "The match target details in the configuration version.", "properties": { "apiTargets": { "description": "The list of `api` match targets.", "items": { "additionalProperties": false, "description": "Contains details about a match target in the exported configuration version.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "Uniquely identifies the match target.", "type": "integer" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/export-match-target.yaml" } }, "type": "array" }, "websiteTargets": { "description": "The list of `website` match targets.", "items": { "additionalProperties": false, "description": "Contains details about a match target in the exported configuration version.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "Uniquely identifies the match target.", "type": "integer" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/export-match-target.yaml" } }, "type": "array" } }, "required": [ "apiTargets", "websiteTargets" ], "type": "object", "x-akamai": { "file-path": "schemas/export-match-targets.yaml" } }, "production": { "additionalProperties": false, "description": "Specifies the configuration version's activation status on the production network.", "properties": { "action": { "description": "The action you performed on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status. Either `Pending`, `Active`, `Inactive`, `Deactivated`, or `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The ISO 8601 timestamp when you activated the configuration version.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "ratePolicies": { "description": "The rate policy details in the 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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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" }, "reputationProfiles": { "description": "The reputation profile details in the configuration version.", "items": { "additionalProperties": false, "description": "Describes reputation profile objects when returned in the configuration export API's response.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. Either `NetworkListCondition`, `AsNumberCondition`, `IpAddressCondition`, `RequestCookieCondition`, `RequestHeaderCondition`, `HostCondition`, or `UrlPatternCondition`.", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "required": [ "className", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "canDelete": { "description": "Whether the condition can be deleted.", "type": "boolean" }, "configVersionId": { "description": "Unique identifier of the config version.", "type": "integer" }, "description": { "description": "Describes the reputation profile condition.", "type": "string" }, "id": { "description": "Uniquely identifies the reputation profile condition.", "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile condition.", "type": "string" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "uuid": { "description": "The universally unique identifier (UUID) of the reputation profile condition.", "type": "string" }, "version": { "description": "The version of the reputation profile condition.", "type": "integer" } }, "required": [ "id", "version" ], "type": "object" }, "context": { "description": "Identifies the reputation category. Either `WEBSCRP`, `DOSATCK`, `WEBATCK`, `ACCATCK`, `SCANTL`, `2_WEBSCRP`, `2_DOSATCK`, `2_WEBATCK`, `2_ACCATCK`, or `2_SCANTL`.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "ACCATCK", "SCANTL", "2_WEBSCRP", "2_DOSATCK", "2_WEBATCK", "2_ACCATCK", "2_SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "id", "name", "context", "threshold" ], "type": "object", "x-akamai": { "file-path": "schemas/export-reputation-profiles.yaml" } }, "type": "array" }, "rulesets": { "description": "The ruleset details in the configuration version.", "items": { "additionalProperties": false, "description": "Contains ruleset version details.", "properties": { "attackGroups": { "description": "The list of attack groups in the ruleset.", "items": { "additionalProperties": false, "properties": { "group": { "description": "Identifies the attack group.", "type": "string" }, "groupName": { "description": "The name of the attack group.", "type": "string" }, "threshold": { "description": "The risk score threshold. When a request has a score above this threshold, the action set in the security policy for this risk group triggers.", "type": "integer" } }, "required": [ "threshold", "groupName", "group" ], "type": "object" }, "type": "array" }, "id": { "description": "Uniquely identifies the ruleset.", "type": "integer" }, "releaseDate": { "description": "The ISO 8601 timestamp indicating when the ruleset was released.", "type": "string" }, "rules": { "description": "The list of rules in the ruleset.", "items": { "additionalProperties": false, "properties": { "attackGroups": { "description": "The attack groups that the rule belongs to.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "inspectRequestBody": { "description": "Whether to inspect the request body.", "type": "boolean" }, "inspectResponseBody": { "description": "Whether to inspect the response body.", "type": "boolean" }, "ruleVersion": { "description": "The rule's version.", "type": "integer" }, "score": { "description": "The risk score for the rule.", "type": "number" }, "tag": { "description": "The tag you assigned to the rule.", "type": "string" }, "title": { "description": "The rule title.", "type": "string" } }, "required": [ "id", "inspectRequestBody", "inspectResponseBody", "ruleVersion", "score", "tag", "title" ], "type": "object" }, "type": "array" }, "rulesetVersionId": { "description": "Uniquely identifies the ruleset version.", "type": "integer" }, "type": { "description": "The ruleset type. The only available value is `Kona`.", "enum": [ "Kona" ], "type": "string" } }, "required": [ "id", "rulesetVersionId", "type", "releaseDate", "attackGroups", "rules" ], "type": "object", "x-akamai": { "file-path": "schemas/export-rule-sets.yaml" } }, "type": "array" }, "securityPolicies": { "description": "The security policies in the configuration version.", "items": { "additionalProperties": false, "description": "Contains settings for custom rule actions.", "properties": { "apiRequestConstraints": { "additionalProperties": false, "description": "The API request constraint action set in this policy. The action applies to the APIs associated with this policy via the API match targets.", "properties": { "action": { "description": "The action will be returned in the `apiEndpoints` array on a per-API basis. This is retained for backward compatibility.", "minLength": 1, "type": "string" }, "apiEndpoints": { "description": "The list of APIs covered by match target set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take for the requests that violate the constraints.", "minLength": 1, "type": "string" }, "id": { "description": "Uniquely identifies the API match target.", "minimum": 0, "type": "integer" } }, "required": [ "action", "id" ], "type": "object" }, "minItems": 0, "type": "array" } }, "required": [ "action", "apiEndpoints" ], "type": "object" }, "clientReputation": { "additionalProperties": false, "description": "Contains details about the reputation profile actions.", "properties": { "reputationProfileActions": { "description": "The list of reputation profile actions set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when the request exceeds the threshold set in the reputation profile.", "minLength": 1, "type": "string" }, "id": { "description": "Uniquely identifies the reputation profile.", "minimum": 0, "type": "integer" } }, "required": [ "action", "id" ], "type": "object" }, "minItems": 0, "type": "array" } }, "required": [ "reputationProfileActions" ], "type": "object" }, "customRuleActions": { "description": "The list of custom rule actions set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when a request meets the custom rule conditions.", "minLength": 1, "type": "string" }, "id": { "description": "Uniquely identifies the custom rule.", "minimum": 0, "type": "integer" } }, "required": [ "action", "id" ], "type": "object" }, "minItems": 0, "type": "array" }, "evaluationPenaltyBox": { "additionalProperties": false, "description": "Contains action settings for penalty box protection.", "properties": { "action": { "oneOf": [ { "description": "The action to take when penalty box protection is triggered: `alert` to record the trigger event, `abort` to block the request, or `none` to take no action. Ignored if `penaltyBoxProtection` is set to `false`.", "enum": [ "alert", "abort", "none" ], "title": "action", "type": "string" }, { "description": "The custom deny action to take when penalty box protection is triggered: `deny_custom_{custom_deny_id}` to execute a custom deny action. Ignored if `penaltyBoxProtection` is set to `false`.", "pattern": "deny_custom_{\\d+}", "title": "custom action", "type": "string" } ] }, "penaltyBoxProtection": { "description": "Specifies whether penalty box protection is enabled for the security policy. When set to `true` the `action` occurs if triggered by a request.", "type": "boolean" } }, "required": [ "penaltyBoxProtection", "action" ], "type": "object", "x-akamai": { "file-path": "schemas/penalty-box.yaml" } }, "hasRatePolicyWithApiKey": { "description": "Whether the security policy has a rate policy with an `API_KEY` client identifier. You can manage APIs using the [API Endpoint Definition API](https://techdocs.akamai.com/api-gateway/reference/api).", "type": "boolean" }, "id": { "description": "Uniquely identifies the security policy.", "minLength": 1, "type": "string" }, "ipGeoFirewall": { "additionalProperties": false, "description": "The status of IP and geographic controls defined in the security policy.", "properties": { "block": { "description": "The directive for blocking IP addresses. Either `blockSpecificIPGeo` to block specific IPs unless they're in block exceptions, or `blockAllTrafficExceptAllowedIPs` to block all traffic apart from the IPs in block exceptions.", "enum": [ "blockSpecificIPGeo", "blockAllTrafficExceptAllowedIPs" ], "type": "string" }, "geoControls": { "additionalProperties": false, "description": "Contains details about the geographic regions to block.", "properties": { "blockedGeoNetworkLists": { "additionalProperties": false, "description": "The geo network lists and specific geographic locations to block.", "properties": { "additional": { "description": "The specific geographic locations to block.", "items": { "type": "string" }, "type": "array" }, "networkList": { "description": "The geo network lists to block.", "items": { "type": "string" }, "type": "array" } }, "required": [ "networkList", "additional" ], "type": "object" } }, "required": [ "blockedGeoNetworkLists" ], "type": "object" }, "ipControls": { "additionalProperties": false, "description": "Contains details about the allowed and blocked IP network lists.", "properties": { "allowedIPNetworkLists": { "additionalProperties": false, "description": "The collection of IPs and network lists to allow.", "properties": { "additional": { "description": "The specific IPs to allow.", "items": { "type": "string" }, "type": "array" }, "networkList": { "description": "The IP network lists to allow.", "items": { "type": "string" }, "type": "array" } }, "required": [ "networkList", "additional" ], "type": "object" }, "blockedIPNetworkLists": { "additionalProperties": false, "description": "The collection of IPs and network lists to block.", "properties": { "additional": { "description": "The specific IPs to block.", "items": { "type": "string" }, "type": "array" }, "networkList": { "description": "The IP network lists to block.", "items": { "type": "string" }, "type": "array" } }, "required": [ "networkList", "additional" ], "type": "object" } }, "required": [ "blockedIPNetworkLists", "allowedIPNetworkLists" ], "type": "object" }, "ukraineGeoControl": { "additionalProperties": false, "description": "The settings for requests to and from Ukraine.", "properties": { "action": { "description": "The type of action to take for the Donetsk and Luhansk regions of Ukraine. Value is one of:\n - `deny`. Default. Blocked traffic gets a `403` response.\n - `deny_custom_{custom_deny_id}`. Blocked traffic gets a customized deny response.\n - `alert`. Records the event trigger.\n - `none`. Takes no action. \n\n
Note: As the situation in Ukraine changes, we'll update the included regions.
", "pattern": "^(deny|alert|none|deny_custom_\\d+)$", "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/ukraine-geo-control.yaml" } } }, "required": [ "block" ], "type": "object", "x-akamai": { "file-path": "schemas/network-layer-controls.yaml" } }, "loggingOverrides": { "additionalProperties": false, "description": "The header logging settings that override the config version level settings.", "properties": { "allowSampling": { "description": "Whether you enabled the header data sampling.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "The sampling settings for the cookie data.", "properties": { "type": { "description": "The directive for including cookies. Either `all` to include all cookies, `exclude` to exclude specific cookies, `none` not to include any cookies, or `only` to include only specific cookies.", "enum": [ "all", "exclude", "none", "only" ], "type": "string" }, "values": { "description": "The cookie names to log or exclude. This applies only when the `type` is either `only` or `exclude`.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type", "values" ], "type": "object" }, "customHeaders": { "additionalProperties": false, "description": "The sampling settings for the custom headers.", "properties": { "type": { "description": "The directive for including custom headers. Either `all` to include all custom headers, `exclude` to exclude specific custom headers, `none` not to include any custom headers, or `only` to include only specific custom headers.", "enum": [ "all", "exclude", "none", "only" ], "type": "string" }, "values": { "description": "The custom headers to log or exclude. This applies only when the `type` is either `only` or `exclude`.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type", "values" ], "type": "object" }, "standardHeaders": { "additionalProperties": false, "description": "The sampling settings for the standard headers.", "properties": { "type": { "description": "The directive for including standard headers. Either `all` to include all standard headers, `exclude` to exclude specific standard headers, `none` not to include any standard headers, or `only` to include only specific standard headers.", "enum": [ "all", "exclude", "none", "only" ], "type": "string" }, "values": { "description": "The standard headers to log or exclude. This is applies only when the `type` is either `only` or `exclude`. For available header values, see [Export header values](https://techdocs.akamai.com/application-security/reference/hdval).", "items": { "enum": [ "Accept", "Accept-Charset", "Accept-Encoding", "Accept-Language", "Accept-Ranges", "Access-Control-Allow-Origin", "Age", "Allow", "Cache-Control", "Connection", "Content-Disposition", "Content-Encoding", "Content-Language", "Content-Length", "Content-Location", "Content-MD5", "Content-Range", "Content-Security-Policy", "Content-Type", "Date", "DNT", "Etag", "Expect", "Expires", "From", "Host", "If-Match", "If-Modified-Since", "If-None-Match", "If-Range", "If-Unmodified-Since", "Last-Modified", "Link", "Location", "Max-Forwards", "Origin", "P3P", "Pragma", "Proxy-Authenticate", "Range", "Referer", "Refresh", "Retry-After", "Server", "Strict-Transport-Security", "TE", "Trailer", "Transfer-Encoding", "Upgrade", "User-Agent", "Vary", "Via", "Warning", "WWW-Authenticate", "X-Content-Security-Policy", "X-Content-Type-Options", "X-Forwarded-For", "X-Forwarded-Proto", "X-Frame-Options", "X-Powered-By", "X-Requested-With", "X-UA-Compatible", "X-WebKit-CSP", "X-XSS-Protection" ], "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object" } }, "required": [ "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/header-logging.yaml" } }, "malwarePolicyActions": { "description": "The list of malware policy actions set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when malware is detected.", "minLength": 1, "type": "string" }, "id": { "description": "Uniquely identifies the malware policy.", "minimum": 0, "type": "integer" }, "unscannedAction": { "description": "The action to take when a file is outside the 5 MB scan limit and isn't scanned.", "minLength": 1, "type": "string" } }, "required": [ "action", "unscannedAction", "id" ], "type": "object" }, "minItems": 0, "type": "array" }, "name": { "description": "The name of the security policy.", "minLength": 1, "type": "string" }, "penaltyBox": { "additionalProperties": false, "description": "Contains action settings for penalty box protection.", "properties": { "action": { "oneOf": [ { "description": "The action to take when penalty box protection is triggered: `alert` to record the trigger event, `abort` to block the request, or `none` to take no action. Ignored if `penaltyBoxProtection` is set to `false`.", "enum": [ "alert", "abort", "none" ], "title": "action", "type": "string" }, { "description": "The custom deny action to take when penalty box protection is triggered: `deny_custom_{custom_deny_id}` to execute a custom deny action. Ignored if `penaltyBoxProtection` is set to `false`.", "pattern": "deny_custom_{\\d+}", "title": "custom action", "type": "string" } ] }, "penaltyBoxProtection": { "description": "Specifies whether penalty box protection is enabled for the security policy. When set to `true` the `action` occurs if triggered by a request.", "type": "boolean" } }, "required": [ "penaltyBoxProtection", "action" ], "type": "object", "x-akamai": { "file-path": "schemas/penalty-box.yaml" } }, "pragmaHeader": { "additionalProperties": false, "description": "Contains policy level settings for the `Pragma` header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } }, "rapidRules": { "additionalProperties": false, "description": "Contains details about the rapid rules defined in the security policy.", "properties": { "defaultAction": { "description": "The list of rapid rule actions, either `alert`, `deny`, or `none`. Use `deny_custom_{custom_deny_id}` to apply a custom action instead of Akamai's default. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the rule is inactive in the policy.", "oneOf": [ { "enum": [ "alert", "deny", "none", "akamai_managed" ], "title": "Predefined action", "type": "string" }, { "pattern": "^(challenge|deny_custom|serve_alt|cond_action_)_[0-9]+$", "title": "Configurable action", "type": "string" } ], "type": "object", "x-akamai": { "file-path": "schemas/rapid-rule-action.yaml" } }, "enabled": { "description": "Whether you enabled the rapid rules.", "type": "boolean" }, "policyRules": { "description": "Contains a list of policy rapid rules.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The list of rapid rule actions, either `alert`, `deny`, or `none`. Use `deny_custom_{custom_deny_id}` to apply a custom action instead of Akamai's default. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the rule is inactive in the policy.", "oneOf": [ { "enum": [ "alert", "deny", "none", "akamai_managed" ], "title": "Predefined action", "type": "string" }, { "pattern": "^(challenge|deny_custom|serve_alt|cond_action_)_[0-9]+$", "title": "Configurable action", "type": "string" } ], "type": "object", "x-akamai": { "file-path": "schemas/rapid-rule-action.yaml" } }, "conditionException": { "additionalProperties": false, "description": "The GET Response JSON for conditions and exceptions.", "properties": { "advancedExceptions": { "additionalProperties": false, "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "properties": { "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "conditions": { "description": "The list of match conditions.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "valueWildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" }, "values": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" } }, "required": [ "values" ], "type": "object" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "description": "Contains details about the excepted name-value pairs in a request.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "namesValues": { "description": "A list of name-value pairs to except.", "items": { "additionalProperties": false, "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of request attribute values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "names" ], "type": "object" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "valueWildcard": { "default": false, "description": "Whether the provided header `value` is a wildcard.", "type": "boolean" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "namesValues", "selector" ], "type": "object" }, "type": "array" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/advanced-exception.yaml" } }, "conditions": { "description": "The conditions list for a rule.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "exception": { "additionalProperties": false, "description": "Describes the exception fields that allow you to conditionally exclude requests from inspection.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule or attack group exceptions. The possible values are `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, and `REQUEST_HEADERS` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Contains details about the excepted request attribute names. This is only available for attack groups and when advanced exception is not enabled.", "items": { "additionalProperties": false, "properties": { "names": { "description": "Lists request attribute names, required with several `selector` options. With `wildcard` enabled, `*` represents a sequence and `?` represents any single character. For example, `*` matches any name, and `*session` matches a subset.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. The following selectors require a set of `names`: `ARGS_NAMES`, `ARGS`, `REQUEST_HEADERS_NAMES`, `REQUEST_HEADERS`, `REQUEST_COOKIES_NAMES`, `REQUEST_COOKIES`, `JSON_NAMES`, `JSON_PAIRS`, and `XML_PAIRS`. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether you can specify wildcards to flexibly match `names`, either `*` for any set of characters, or `?` for any single character.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/exception.yaml" } } }, "type": "object", "x-akamai": { "file-path": "schemas/condition-exception-get-200.yaml" } }, "group": { "description": "The rapid rule group.", "type": "string", "x-akamai": { "file-path": "schemas/rapid-rule-group.yaml" } }, "lock": { "description": "Whether you've locked the rapid rule's action. When locked, future versions of this rule continue to use the action you originally selected.", "type": "boolean", "x-akamai": { "file-path": "schemas/rapid-rule-lock.yaml" } }, "ruleId": { "description": "Uniquely identifies the rapid rule.", "type": "integer", "x-akamai": { "file-path": "schemas/rapid-rule-id.yaml" } }, "ruleVersion": { "description": "The rapid rule's version number.", "type": "integer", "x-akamai": { "file-path": "schemas/rapid-rule-version.yaml" } }, "rulesetVersionId": { "description": "Uniquely identifies the rule set version.", "type": "integer", "x-akamai": { "file-path": "schemas/rapid-rule-version-id.yaml" } } }, "required": [ "action" ], "type": "object" }, "minItems": 0, "type": "array" }, "threatIntel": { "description": "Set to `on` so our network analyzes a request and dynamically modifies protection methods to fit the detected threat level. Set to `off` to manually fine-tune your rule sets.", "enum": [ "on", "off" ], "type": "string" } }, "required": [ "enabled", "defaultAction", "policyRules" ], "type": "object" }, "ratePolicyActions": { "description": "The list of rate policy actions set in the security policy.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the rate policy.", "minimum": 0, "type": "integer" }, "ipv4Action": { "description": "The action to take for the IPv4 traffic when the limits set in the rate policy are exceeded.", "minLength": 1, "type": "string" }, "ipv6Action": { "description": "The action to take for the IPv6 traffic when the limits set in the rate policy are exceeded.", "minLength": 1, "type": "string" } }, "required": [ "ipv4Action", "ipv6Action", "id" ], "type": "object" }, "minItems": 0, "type": "array" }, "requestBody": { "additionalProperties": false, "description": "Contains policy level settings for request body inspection limit.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } }, "securityControls": { "additionalProperties": false, "description": "Contains details about the security controls defined in the security policy.", "properties": { "applyAccountProtectionControls": { "description": "Indicates if you enabled the account protection controls.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled the application layer controls.", "type": "boolean" }, "applyMalwareControls": { "description": "Whether you enabled the malware protection.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled the network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled the rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled the reputation controls.", "type": "boolean" } }, "required": [ "applyRateControls", "applyNetworkLayerControls", "applyReputationControls", "applyApplicationLayerControls", "applyMalwareControls" ], "type": "object" }, "slowPost": { "additionalProperties": false, "description": "Contains details about the slow POST protection. Lets you set thresholds to control slow traffic. The duration threshold takes precedence over the slow rate threshold.", "properties": { "action": { "description": "The action to take for a request that exceeds the threshold. Either `alert` to send an alert notification, or `abort` to deny the request.", "enum": [ "alert", "abort" ], "type": "string" }, "durationThreshold": { "additionalProperties": false, "description": "The settings based on the first 8 kilobytes of the POST body transfer.", "properties": { "timeout": { "description": "The time (in seconds) when the first 8 kilobytes of the POST body should be processed to avoid flagging the request.", "minimum": 0, "type": "integer" } }, "required": [ "timeout" ], "type": "object" }, "slowRateThreshold": { "additionalProperties": false, "description": "The settings based on the request body transfer speed.", "properties": { "period": { "description": "The period (in seconds) when the rate applies.", "minimum": 0, "type": "integer" }, "rate": { "description": "The maximum rate of bandwidth in bytes per second, averaged every 2 minutes.", "minimum": 0, "type": "integer" } }, "required": [ "rate", "period" ], "type": "object" } }, "required": [ "action", "durationThreshold", "slowRateThreshold" ], "type": "object" }, "webApplicationFirewall": { "additionalProperties": false, "description": "Contains information about the rule and attack group actions.", "properties": { "attackGroupActions": { "description": "The list of attack group actions set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when the risk score exceeds the set threshold.", "type": "string" }, "advancedExceptions": { "additionalProperties": false, "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "properties": { "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "conditions": { "description": "The list of match conditions.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "valueWildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" }, "values": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" } }, "required": [ "values" ], "type": "object" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "description": "Contains details about the excepted name-value pairs in a request.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "namesValues": { "description": "A list of name-value pairs to except.", "items": { "additionalProperties": false, "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of request attribute values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "names" ], "type": "object" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "valueWildcard": { "default": false, "description": "Whether the provided header `value` is a wildcard.", "type": "boolean" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "namesValues", "selector" ], "type": "object" }, "type": "array" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/advanced-exception.yaml" } }, "exception": { "additionalProperties": false, "description": "Describes the exception fields that allow you to conditionally exclude requests from inspection.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule or attack group exceptions. The possible values are `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, and `REQUEST_HEADERS` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Contains details about the excepted request attribute names. This is only available for attack groups and when advanced exception is not enabled.", "items": { "additionalProperties": false, "properties": { "names": { "description": "Lists request attribute names, required with several `selector` options. With `wildcard` enabled, `*` represents a sequence and `?` represents any single character. For example, `*` matches any name, and `*session` matches a subset.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. The following selectors require a set of `names`: `ARGS_NAMES`, `ARGS`, `REQUEST_HEADERS_NAMES`, `REQUEST_HEADERS`, `REQUEST_COOKIES_NAMES`, `REQUEST_COOKIES`, `JSON_NAMES`, `JSON_PAIRS`, and `XML_PAIRS`. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether you can specify wildcards to flexibly match `names`, either `*` for any set of characters, or `?` for any single character.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/exception.yaml" } }, "group": { "description": "The attack group name.", "type": "string" }, "rulesetVersionId": { "description": "Uniquely identifies the ruleset version.", "type": "integer" } }, "required": [ "action", "group", "rulesetVersionId" ], "type": "object" }, "type": "array" }, "evaluation": { "additionalProperties": false, "description": "Specifies the ruleset version evaluated as part of the policy.", "properties": { "attackGroupActions": { "description": "The list of attack group actions set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when the risk score exceeds the set threshold.", "type": "string" }, "advancedExceptions": { "additionalProperties": false, "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "properties": { "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "conditions": { "description": "The list of match conditions.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "valueWildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" }, "values": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" } }, "required": [ "values" ], "type": "object" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "description": "Contains details about the excepted name-value pairs in a request.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "namesValues": { "description": "A list of name-value pairs to except.", "items": { "additionalProperties": false, "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of request attribute values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "names" ], "type": "object" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "valueWildcard": { "default": false, "description": "Whether the provided header `value` is a wildcard.", "type": "boolean" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "namesValues", "selector" ], "type": "object" }, "type": "array" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/advanced-exception.yaml" } }, "exception": { "additionalProperties": false, "description": "Describes the exception fields that allow you to conditionally exclude requests from inspection.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule or attack group exceptions. The possible values are `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, and `REQUEST_HEADERS` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Contains details about the excepted request attribute names. This is only available for attack groups and when advanced exception is not enabled.", "items": { "additionalProperties": false, "properties": { "names": { "description": "Lists request attribute names, required with several `selector` options. With `wildcard` enabled, `*` represents a sequence and `?` represents any single character. For example, `*` matches any name, and `*session` matches a subset.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. The following selectors require a set of `names`: `ARGS_NAMES`, `ARGS`, `REQUEST_HEADERS_NAMES`, `REQUEST_HEADERS`, `REQUEST_COOKIES_NAMES`, `REQUEST_COOKIES`, `JSON_NAMES`, `JSON_PAIRS`, and `XML_PAIRS`. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether you can specify wildcards to flexibly match `names`, either `*` for any set of characters, or `?` for any single character.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/exception.yaml" } }, "group": { "description": "The attack group name.", "type": "string" }, "rulesetVersionId": { "description": "Uniquely identifies the ruleset version.", "type": "integer" } }, "required": [ "action", "group", "rulesetVersionId" ], "type": "object" }, "type": "array" }, "evaluationId": { "description": "Uniquely identifies the rule evaluation configuration.", "minimum": 0, "type": "integer" }, "evaluationVersion": { "description": "The evaluation version. The version numbers start at `1` and increase on the first change to an evaluation configuration after its activation.", "minimum": 0, "type": "integer" }, "ruleActions": { "description": "The list of rules in the security policy and the actions to perform when a request violates the rule.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when a request violates the rule.", "type": "string" }, "conditions": { "description": "The list of conditions that trigger the rule.", "items": { "additionalProperties": false, "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT`, and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` (XFF) headers. This only applies to the `ipMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies to the `uriQueryMatch` and `requestHeaderMatch` condition `type`s.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "caseSensitive", "extensions", "filenames", "header", "hosts", "ips", "methods", "name", "nameCase", "paths", "positiveMatch", "type", "useHeaders", "value", "valueCase", "valueWildcard", "wildcard" ], "type": "object" }, "type": "array" }, "exceptions": { "additionalProperties": false, "description": "Contains details about the exceptions under which the rule's action doesn't trigger.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule exceptions. The possible values are `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, and `REQ_HDR` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, or `REQ_HDR` for a request header.", "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, or `REQ_HDR` for a request header.", "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, or `REQ_HDR` for a request header.", "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" } }, "required": [ "anyHeaderCookieOrParam", "headerCookieOrParamValues", "specificHeaderCookieOrParamNames", "specificHeaderCookieOrParamNameValue", "specificHeaderCookieOrParamPrefix" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "rulesetVersionId": { "description": "Uniquely identifies the rule set version.", "type": "integer" } }, "required": [ "id", "rulesetVersionId", "action" ], "type": "object" }, "type": "array" }, "rulesetVersion": { "description": "Uniquely identifies the evaluated ruleset version.", "minimum": 0, "type": "integer" } }, "required": [ "rulesetVersion", "evaluationId", "evaluationVersion", "ruleActions", "attackGroupActions" ], "type": "object" }, "ruleActions": { "description": "The list of rules in the security policy and the actions to perform when a request violates the rule.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take when a request violates the rule.", "type": "string" }, "conditions": { "description": "The list of conditions that trigger the rule.", "items": { "additionalProperties": false, "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT`, and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` (XFF) headers. This only applies to the `ipMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies to the `uriQueryMatch` and `requestHeaderMatch` condition `type`s.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "caseSensitive", "extensions", "filenames", "header", "hosts", "ips", "methods", "name", "nameCase", "paths", "positiveMatch", "type", "useHeaders", "value", "valueCase", "valueWildcard", "wildcard" ], "type": "object" }, "type": "array" }, "exceptions": { "additionalProperties": false, "description": "Contains details about the exceptions under which the rule's action doesn't trigger.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule exceptions. The possible values are `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, and `REQ_HDR` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, or `REQ_HDR` for a request header.", "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, or `REQ_HDR` for a request header.", "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `COOKIE`, `JSON_PARAM` for a JSON parameter, `XML_PARAM` for an XML parameter, `REQ_PARAM` for a request parameter, or `REQ_HDR` for a request header.", "enum": [ "COOKIE", "JSON_PARAM", "XML_PARAM", "REQ_PARAM", "REQ_HDR" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" } }, "required": [ "anyHeaderCookieOrParam", "headerCookieOrParamValues", "specificHeaderCookieOrParamNames", "specificHeaderCookieOrParamNameValue", "specificHeaderCookieOrParamPrefix" ], "type": "object" }, "id": { "description": "Uniquely identifies the rule.", "type": "integer" }, "rulesetVersionId": { "description": "Uniquely identifies the rule set version.", "type": "integer" } }, "required": [ "id", "rulesetVersionId", "action" ], "type": "object" }, "type": "array" }, "threatIntel": { "description": "Set to `on` so our network analyzes a request and dynamically modifies protection methods to fit the detected threat level. Set to `off` to manually fine-tune your rule sets.", "enum": [ "on", "off" ], "type": "string" } }, "required": [ "attackGroupActions", "evaluation", "ruleActions" ], "type": "object" } }, "required": [ "id", "name", "securityControls", "hasRatePolicyWithApiKey" ], "type": "object", "x-akamai": { "file-path": "schemas/export-security-policies.yaml" } }, "type": "array" }, "selectableHosts": { "description": "The hostnames that are available for protection in the configuration version.", "items": { "type": "string" }, "type": "array" }, "selectedHosts": { "description": "The hostnames protected in the configuration version.", "items": { "type": "string" }, "type": "array" }, "siem": { "additionalProperties": false, "description": "The SIEM details in the configuration version.", "properties": { "enableForAllPolicies": { "description": "Whether you enabled SIEM for all the security policies in the configuration version. This takes precedence when both `firewallPolicyIds` and `enableForAllPolicies` are present.", "type": "boolean" }, "enableSiem": { "description": "Whether you enabled SIEM in the security configuration version.", "type": "boolean" }, "enabledBotmanSiemEvents": { "deprecated": true, "description": "__Deprecated__ Whether you enabled SIEM for the Bot Manager events. Use the `exceptions` field instead to set Botman SIEM events exception.", "type": "boolean", "x-akamai": { "status": "DEPRECATED" } }, "exceptions": { "description": "Describes all attack types and its actions that will be excluded in SIEM events.", "items": { "additionalProperties": false, "properties": { "actionTypes": { "description": "Describes [actions](https://techdocs.akamai.com/application-security/reference/siem-action-and-attack-type-exceptions) to be excluded for a particular attack type.", "items": { "enum": [ "*", "alert", "deny", "all_custom", "abort", "allow", "delay", "ignore", "monitor", "slow", "tarpit" ], "type": "string" }, "minItems": 0, "type": "array" }, "protection": { "description": "Describes the [attack type](https://techdocs.akamai.com/application-security/reference/siem-action-and-attack-type-exceptions) to be excluded from SIEM events.", "enum": [ "ipgeo", "rate", "urlProtection", "slowpost", "customrules", "waf", "apirequestconstraints", "clientrep", "malwareprotection", "botmanagement", "aprProtection" ], "type": "string" } }, "required": [ "actionTypes", "protection" ], "type": "object" }, "minItems": 0, "type": "array" }, "firewallPolicyIds": { "description": "The list of security policy identifiers for which to enable the SIEM integration.", "items": { "minLength": 1, "type": "string" }, "minItems": 0, "type": "array" }, "siemDefinitionId": { "description": "Uniquely identifies the SIEM settings.", "minimum": 1, "type": "integer" } }, "required": [ "enableSiem", "exceptions", "firewallPolicyIds", "siemDefinitionId", "enableForAllPolicies" ], "type": "object", "x-akamai": { "file-path": "schemas/export-siem.yaml" } }, "staging": { "additionalProperties": false, "description": "Specifies the configuration version's activation status on the staging network.", "properties": { "action": { "description": "The action you performed on the configuration version. Either `ACTIVATE` or `DEACTIVATE`.", "enum": [ "ACTIVATE", "DEACTIVATE" ], "type": "string" }, "status": { "description": "The activation status. Either `Pending`, `Active`, `Inactive`, `Deactivated`, `Failed`.", "enum": [ "Pending", "Active", "Inactive", "Deactivated", "Failed" ], "type": "string" }, "time": { "description": "The ISO 8601 timestamp when you activated the configuration version.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "version": { "description": "The security configuration's incremental version number.", "type": "integer" }, "versionNotes": { "description": "The notes that you provide to describe the security configuration version.", "type": "string" } }, "required": [ "advancedOptions", "basedOn", "configId", "configName", "createDate", "createdBy", "customRules", "errorHosts", "matchTargets", "production", "ratePolicies", "reputationProfiles", "rulesets", "securityPolicies", "selectableHosts", "selectedHosts", "siem", "customDenyList", "staging", "version" ], "type": "object", "x-akamai": { "file-path": "schemas/export.yaml" } } } }, "description": "Export data retrieved successfully." }, "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": { "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 are not authorized to run this operation.", "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": { "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). The export result wasn't found. Check that the `exportId` is correct and try again.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get asynchronous export results", "tags": [ "Configuration version export" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 asynchronous export.", "in": "path", "name": "exportId", "required": true, "schema": { "example": 101, "type": "integer" }, "x-akamai": { "file-path": "parameters/asynchronous-export-id.yaml" } } ], "x-akamai": { "file-path": "paths/config-version-async-export-result.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/export/{exportId}/result" } }, "/configs/{configId}/versions/{versionNumber}/export/{exportId}/status": { "get": { "description": "__All products__ Get a security configuration version's export status. When `PENDING`, the task is still running. When `COMPLETED`, the task finished successfully and you can collect the results through the link in the response. A status of `FAILED` appears when the task can't complete.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-export-config-version-async-task-status" }, "operationId": "get-export-config-version-async-task-status", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "createdBy": "jkowalski@example.com", "createdDate": "2025-08-12T06:00:21.918079Z", "expiresDate": "2025-08-14T06:00:52.296311Z", "exportId": "161", "exportStatus": "COMPLETED", "resultLink": "/appsec/v1/configs/24193/versions/39/export/161/result" }, "schema": { "additionalProperties": false, "description": "Describes the response for an asynchronous export task.", "properties": { "createdBy": { "description": "The user who launched the export task.", "minLength": 1, "type": "string" }, "createdDate": { "description": "__Read-only__ ISO 8601 timestamp when the export request begins.", "format": "date-time", "readOnly": true, "type": "string" }, "expiresDate": { "description": "ISO 8601 timestamp when the export result is deleted.", "format": "date-time", "type": "string" }, "exportId": { "description": "Uniquely identifies each export task.", "type": "string" }, "exportStatus": { "description": "__Read-only__ The status of the export, which can take several minutes to complete. \n* `PENDING` indicates the task is accepted and in progress. \n* `COMPLETED` means it finished successfully and the result can be retrieved. \n* `FAILED` means the task could not be processed.", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "minLength": 1, "readOnly": true, "type": "string" }, "message": { "description": "A message providing additional information about the export task.", "type": "string" }, "resultLink": { "description": "The URL for the operation to request the task result.", "format": "uri", "type": "string" }, "retryAfter": { "description": "The estimated number of seconds until the task completes.", "type": "integer" }, "statusLink": { "description": "The URL for the operation to request the task status.", "format": "uri", "type": "string" } }, "required": [ "exportId", "exportStatus", "createdDate", "createdBy" ], "type": "object", "x-akamai": { "file-path": "schemas/export-async-status.yaml" } } } }, "description": "The response shows the export status.", "headers": { "Retry-After": { "description": "The estimated number of seconds until the task completes. This header only appears for tasks still in progress.", "required": false, "schema": { "example": 60, "type": "integer" }, "x-akamai": { "file-path": "headers/retry-after.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": { "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 are not authorized to run this operation.", "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": { "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). The export task was not found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get asynchronous export status", "tags": [ "Configuration version export" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 asynchronous export.", "in": "path", "name": "exportId", "required": true, "schema": { "example": 101, "type": "integer" }, "x-akamai": { "file-path": "parameters/asynchronous-export-id.yaml" } } ], "x-akamai": { "file-path": "paths/config-version-async-export-status.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/export/{exportId}/status" } }, "/configs/{configId}/versions/{versionNumber}/hostname-coverage/match-targets": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ List the API and website match targets that protect a hostname.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-coverage-match-targets" }, "operationId": "get-coverage-match-targets", "parameters": [ { "description": "Get results by hostname.", "in": "query", "name": "hostname", "schema": { "example": "www.example.com", "type": "string" }, "x-akamai": { "file-path": "parameters/search-hostname.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "matchTargets": { "apiTargets": [], "websiteTargets": [ { "bypassNetworkLists": [ { "id": "1410_BYPASSWAFLIST", "name": "shawn - BypassWAFList" } ], "configId": 75498, "configVersion": 428, "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": true, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": true }, "fileExtensions": [], "filePaths": [ "/content/tealeaf" ], "hostnames": [ "www.example.com", "m.example.com", "m.new.example.com", "safety.example.com", "static.example.net", "failover3.example.com", "static.example.com", "images.example.com", "failover5.example.com", "espanol.example.com" ], "isNegativeFileExtensionMatch": false, "isNegativePathMatch": false, "securityPolicy": { "policyId": "GRD_4186" }, "sequence": 3, "targetId": 2555705, "type": "website" } ] } }, "schema": { "additionalProperties": false, "description": "Contains the hostname coverage API and website match targets defined in the security configuration version.", "properties": { "matchTargets": { "additionalProperties": false, "description": "Contains the API and website match targets defined in the security configuration version.", "properties": { "apiTargets": { "description": "The list of `api` match targets.", "items": { "additionalProperties": false, "description": "Contains details about a hostname coverage match target.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target.yaml" } }, "type": "array" }, "websiteTargets": { "description": "The list of `website` match targets.", "items": { "additionalProperties": false, "description": "Contains details about a hostname coverage match target.", "properties": { "apis": { "description": "The list of API endpoint identifiers and names. This applies only for `api` match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The network lists' identifiers and names in the match target.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name you assigned to the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The security configuration version.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` not to match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash. The default value is `NO_MATCH`.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ The security controls to apply. For a security control to be effectively turned on, you must enable it in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "The list of file extensions to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "filePaths": { "description": "The list of file paths to apply the match target to.", "items": { "type": "string" }, "type": "array" }, "hostnames": { "description": "The list of hostnames to protect.", "items": { "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Whether the match target applies when a match is found in the specified `filePaths` or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The match target's position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "The type of match target. Either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Contains details about warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target.yaml" } }, "type": "array" } }, "required": [ "apiTargets", "websiteTargets" ], "type": "object" } }, "required": [ "matchTargets" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-match-target-get-200.yaml" } } } }, "description": "Successfully retrieved the hostname coverage match targets." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get the hostname coverage match targets", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-hostname-coverage-match-targets.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/hostname-coverage/match-targets" } }, "/configs/{configId}/versions/{versionNumber}/hostname-coverage/overlapping": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ List the configuration versions that contain a hostname also included in the current configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-hostname-coverage-overlapping" }, "operationId": "get-hostname-coverage-overlapping", "parameters": [ { "description": "Get results by hostname.", "in": "query", "name": "hostname", "schema": { "example": "www.example.com", "type": "string" }, "x-akamai": { "file-path": "parameters/search-hostname.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "overLappingList": [ { "configId": 57415, "configName": "Main Street Corporation Mexico", "configVersion": 37, "contractId": "C-0N7RAC7", "contractName": "Main Street Corporation .-F-I5PAH1", "versionTags": [ "STAGING" ] }, { "configId": 75498, "configName": "Main Street Corporation Inc", "configVersion": 1, "contractId": "K-0N7RAK7", "contractName": "Main Street Corporation .-F-I5PAH1", "versionTags": [ "STAGING" ] }, { "configId": 42826, "configName": "Main Street Corporation Local", "configVersion": 3, "contractId": "K-0N7RAK7", "contractName": "Zoro-Main Street Corporation ", "versionTags": [ "LAST_CREATED" ] } ] }, "schema": { "additionalProperties": false, "description": "Describes configurations that use the same hostname, causing overlapping coverage.", "properties": { "overLappingList": { "description": "The list of configurations that overlap coverage for the hostname.", "items": { "additionalProperties": false, "description": "Contains details about an overlapping configuration.", "properties": { "configId": { "description": "The configuration ID.", "type": "integer" }, "configName": { "description": "The configuration name.", "type": "string" }, "configVersion": { "description": "The configuration version.", "type": "integer" }, "contractId": { "description": "The contract ID.", "type": "string" }, "contractName": { "description": "The contract name.", "type": "string" }, "versionTags": { "description": "List of version tags, any combination of `STAGING` and `LAST_CREATED`.", "items": { "description": "The version tag.", "enum": [ "STAGING", "LAST_CREATED" ], "type": "string" }, "type": "array" } }, "required": [ "configId", "configName", "configVersion" ], "type": "object", "x-akamai": { "file-path": "schemas/overlap-config.yaml" } }, "type": "array" } }, "required": [ "overLappingList" ], "type": "object", "x-akamai": { "file-path": "schemas/hostname-coverage-overlapping-get-200.yaml" } } } }, "description": "Successfully retrieved the hostname's overlapping version information." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List hostname overlaps", "tags": [ "Hostnames" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-hostname-coverage-overlapping.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/hostname-coverage/overlapping" } }, "/configs/{configId}/versions/{versionNumber}/malware-policies": { "post": { "description": "__All products__ Create a new malware policy for a security configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-malware-policies" }, "operationId": "post-malware-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "allowListId": "523719_ALLOWLIST", "blockListId": "524002_BLOCKLIST", "contentTypes": [ { "encodedContentAttributes": [ { "encoding": [ "base64" ], "path": "image.imagePath" } ], "name": "application/json" } ], "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "logFilename": true, "name": "FMS Configuration22", "paths": [ "/base-path", "/b" ] }, "schema": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "allowListId": "523719_ALLOWLIST", "blockListId": "524002_BLOCKLIST", "contentTypes": [ { "encodedContentAttributes": [ { "encoding": [ "base64" ], "path": "image.imagePath" } ], "name": "application/json" } ], "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "id": 82, "logFilename": true, "name": "FMS Configuration", "paths": [ "/base-path", "/b" ] }, "schema": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } } } }, "description": "Successfully created a malware policy.", "headers": { "Location": { "description": "A URL to access the newly created resource.", "example": "/malware-policies/post-malware-policies", "schema": { "type": "string" }, "x-akamai": { "file-path": "headers/location.yaml" } } } }, "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": { "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": { "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 malware 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": { "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": "Create a malware policy", "tags": [ "Shared resources: Malware policies" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Return malware policies for a security configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-malware-policies" }, "operationId": "get-malware-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "malwarePolicies": [ { "allowListId": "523719_ALLOWLIST", "blockListId": "524002_BLOCKLIST", "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "id": 82, "logFilename": true, "name": "FMS Configuration", "paths": [ "/base-path", "/b" ] }, { "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "id": 83, "name": "FMS Configuration2", "paths": [ "/base-path", "/test" ] } ] }, "schema": { "additionalProperties": false, "description": "Contains details about malware policies.", "properties": { "malwarePolicies": { "description": "A list of malware policies in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } }, "type": "array" } }, "required": [ "malwarePolicies" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policies.yaml" } } } }, "description": "Successfully returned the malware 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": { "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 the malware 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": { "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). The security configuration version wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List malware policies", "tags": [ "Shared resources: Malware policies" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-malware-policies.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/malware-policies" } }, "/configs/{configId}/versions/{versionNumber}/malware-policies/content-types": { "get": { "description": "__All products__ Returns all the supported malware policy content types for a security configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-malware-policy-content-types" }, "operationId": "get-malware-policy-content-types", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "malwareContentTypes": [ "text/plain", "text/x-css", "image/gif", "image/png" ] }, "schema": { "additionalProperties": false, "description": "Contains a list of supported malware policy content types for the specified configuration version.", "properties": { "malwareContentTypes": { "description": "The list of supported content types in a malware policy.", "items": { "description": "The malware content type.", "type": "string" }, "type": "array" } }, "required": [ "malwareContentTypes" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policies-content-types.yaml" } } } }, "description": "Successfully returned the malware 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": { "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 the malware 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": { "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). The security configuration version wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List supported malware policy content types", "tags": [ "Shared resources: Malware policies" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-malware-policies-content-types.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/malware-policies/content-types" } }, "/configs/{configId}/versions/{versionNumber}/malware-policies/{malwarePolicyId}": { "get": { "description": "__All products__ Return a malware policy.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-malware-policy" }, "operationId": "get-malware-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "allowListId": "523719_ALLOWLIST", "blockListId": "524002_BLOCKLIST", "contentTypes": [ { "encodedContentAttributes": [ { "encoding": [ "base64" ], "path": "image.imagePath" } ], "name": "application/json" } ], "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "id": 82, "logFilename": true, "name": "FMS Configuration", "paths": [ "/base-path", "/b" ] }, "schema": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } } } }, "description": "Successfully returned the malware 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": { "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 this malware policy.", "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": { "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). The security configuration version or malware policy wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get a malware policy", "tags": [ "Shared resources: Malware policies" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update details for a malware policy.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-malware-policy" }, "operationId": "put-malware-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "allowListId": "523719_ALLOWLIST", "blockListId": "524002_BLOCKLIST", "contentTypes": [ { "encodedContentAttributes": [ { "encoding": [ "base64" ], "path": "image.imagePath" } ], "name": "application/json" } ], "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "logFilename": true, "name": "FMS Configuration", "paths": [ "/base-path", "/b" ] }, "schema": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "allowListId": "523719_ALLOWLIST", "blockListId": "524002_BLOCKLIST", "contentTypes": [ { "encodedContentAttributes": [ { "encoding": [ "base64" ], "path": "image.imagePath" } ], "name": "application/json" } ], "description": "Malware scan configuration details", "hostnames": [ "abc.com", "def.com", "xyz.com" ], "id": 82, "logFilename": true, "name": "FMS Configuration", "paths": [ "/base-path", "/b" ] }, "schema": { "additionalProperties": false, "description": "Contains details about a malware policy.", "properties": { "allowListId": { "description": "The ID of a client list containing file hashes of specific files to allow.", "type": "string" }, "blockListId": { "description": "The ID of a client list containing file hashes of specific files to block.", "type": "string" }, "contentTypes": { "description": "The content types and encodings to match.", "items": { "additionalProperties": false, "properties": { "encodedContentAttributes": { "description": "An optional list of encoded attribute paths.", "items": { "additionalProperties": false, "properties": { "encoding": { "description": "The encodings used for the attribute path. Currently only `base64` is supported.", "items": { "enum": [ "base64" ], "type": "string" }, "type": "array" }, "path": { "description": "The JSONPath to an attribute with encoded content. The path must point to a single item, and may not include the `$`, `..`, `?` or `*` operators.", "type": "string" } }, "type": "object" }, "type": "array" }, "name": { "description": "The name of the content type.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "description": { "description": "Descriptive text you provide about a policy.", "type": "string" }, "hostnames": { "description": "The hostnames to match. This is where you want the malware detections to focus.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "__Read-only__ Uniquely identifies each malware policy.", "readOnly": true, "type": "integer" }, "logFilename": { "default": false, "description": "Whether to log the name of the file that triggered an `alert` or `deny` action.", "type": "boolean" }, "name": { "description": "The name you assign to a malware policy.", "type": "string" }, "paths": { "description": "The paths to match. You can use the `?` and `*` wildcards anywhere in a path.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "hostnames", "paths" ], "type": "object", "x-akamai": { "file-path": "schemas/malware-policy.yaml" } } } }, "description": "Successfully updated the malware 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": { "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": { "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 this malware policy.", "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": { "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). The security configuration version or malware policy wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Modify a malware policy", "tags": [ "Shared resources: Malware policies" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__All products__ Delete a specific malware policy that's not actively in use. To delete an active malware policy, first activate an older configuration version or create a new version without the policy in place.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-malware-policy" }, "operationId": "delete-malware-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the malware 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": { "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 this malware policy.", "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": { "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). The security configuration version or malware policy wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Remove a malware policy", "tags": [ "Shared resources: Malware policies" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 malware policy.", "in": "path", "name": "malwarePolicyId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/malware-policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-malware-policy.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/malware-policies/{malwarePolicyId}" } }, "/configs/{configId}/versions/{versionNumber}/match-targets": { "post": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Creates a new Match Target in the specified Configuration Version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-match-targets" }, "operationId": "post-match-targets", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "bypassNetworkLists": [ { "id": "888518_ACDDCKERS" }, { "id": "1304427_AAXXBBLIST" } ], "defaultFile": "NO_MATCH", "fileExtensions": [ "wmls", "jpeg", "pws", "carb", "pdf", "js", "hdml", "cct", "swf", "pct" ], "filePaths": [ "/sssi/*", "/cache/aaabbc*", "/price_toy/*" ], "hostnames": [ "example.com", "www.example.net", "m.example.com" ], "isNegativeFileExtensionMatch": true, "isNegativePathMatch": false, "securityPolicy": { "policyId": "fwsf_32432" }, "type": "website" }, "schema": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "bypassNetworkLists": [ { "id": "888518_ACDDCKERS", "name": "Test network list 1" }, { "id": "1304427_AAXXBBLIST", "name": "Test network list 2" } ], "configId": 77653, "configVersion": 25, "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": false, "applyRateControls": true, "applyReputationControls": false, "applySlowPostControls": false }, "fileExtensions": [ "wmls", "jpeg", "pws", "carb", "pdf", "js", "hdml", "cct", "swf", "pct" ], "filePaths": [ "/sssi/*", "/cache/aaabbc*", "/price_toy/*" ], "hostnames": [ "example.com", "www.example.net", "m.example.com" ], "isNegativeFileExtensionMatch": true, "isNegativePathMatch": false, "securityPolicy": { "policyId": "fwsf_32432" }, "sequence": 1, "targetId": 112231, "type": "website" }, "schema": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } } } }, "description": "Successfully created a match target." }, "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": { "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": { "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 match targets 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": { "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": "Create a match target", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Returns match targets defined in the specified security configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-match-targets" }, "operationId": "get-match-targets", "parameters": [ { "description": "Specifies the security policy to filter match targets.", "in": "query", "name": "policyId", "schema": { "example": "abc_123456", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-query.yaml" } }, { "description": "Specify whether to return the object name in the payload, true` by default.", "in": "query", "name": "includeChildObjectName", "schema": { "default": true, "example": false, "type": "boolean" }, "x-akamai": { "file-path": "parameters/include-child-object-name-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "matchTargets": { "apiTargets": [ { "apis": [ { "id": 1111, "name": "API Endpoint 1" }, { "id": 2222, "name": "API Endpoint 2" } ], "bypassNetworkLists": [ { "id": "522825_CCCBYPASSLIST", "name": "Example network list 11" }, { "id": "1622566_XXAABYPASSL", "name": "Example network list 12" } ], "configId": 77653, "configVersion": 25, "effectiveSecurityControls": { "applyApiConstraints": true, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": false }, "securityPolicy": { "policyId": "ancv_1234" }, "sequence": 3, "targetId": 1222208, "type": "api" } ], "websiteTargets": [ { "bypassNetworkLists": [ { "id": "222825_AAABYPASSLIST", "name": "Example network list 21" }, { "id": "2622566_YYAABYPASSL", "name": "Example network list 22" } ], "configId": 77653, "configVersion": 25, "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": true, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": false }, "fileExtensions": [ "html" ], "filePaths": [ "/*" ], "hostnames": [], "isNegativeFileExtensionMatch": false, "isNegativePathMatch": false, "securityPolicy": { "policyId": "ancv_1234" }, "sequence": 1, "targetId": 1221059, "type": "website" }, { "bypassNetworkLists": [], "configId": 77653, "configVersion": 25, "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": true, "applyNetworkLayerControls": false, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": false }, "fileExtensions": [], "filePaths": [ "/path" ], "hostnames": [ "example.com", "www.example.net", "m.example.com" ], "isNegativeFileExtensionMatch": false, "isNegativePathMatch": false, "securityPolicy": { "policyId": "ancv_1234" }, "sequence": 2, "targetId": 1222207, "type": "website" } ] } }, "schema": { "additionalProperties": false, "description": "Describes match target settings.", "properties": { "matchTargets": { "additionalProperties": false, "description": "Match target settings.", "properties": { "apiTargets": { "description": "The `api` match targets.", "items": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } }, "type": "array" }, "websiteTargets": { "description": "The `website` match targets.", "items": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } }, "type": "array" } }, "required": [ "apiTargets", "websiteTargets" ], "type": "object" } }, "required": [ "matchTargets" ], "type": "object", "x-akamai": { "file-path": "schemas/match-targets.yaml" } } } }, "description": "Successfully returned match targets." }, "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": { "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 match targets 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": { "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": "List match targets", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-match-targets.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/match-targets" } }, "/configs/{configId}/versions/{versionNumber}/match-targets/sequence": { "put": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Updates the sequence of Match Targets in a configuration version. The `website` and `api` match targets' sequence requires updates from separate requests by passing the `type` attribute in the JSON request.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-match-targets-sequence" }, "operationId": "put-match-targets-sequence", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "targetSequence": [ { "sequence": 1, "targetId": 1217289 }, { "sequence": 2, "targetId": 1217339 } ], "type": "WEBSITE" }, "schema": { "additionalProperties": false, "description": "Contains match target settings and a list of objects containing match targets with their assigned sequence number.", "properties": { "targetSequence": { "description": "Contains the ID and sequence of a match target.", "items": { "additionalProperties": false, "properties": { "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" } }, "required": [ "sequence", "targetId" ], "type": "object" }, "type": "array" }, "type": { "description": "Describes the type of match target, either `WEBSITE` or `API`.", "enum": [ "WEBSITE", "API" ], "type": "string" } }, "required": [ "type", "targetSequence" ], "type": "object", "x-akamai": { "file-path": "schemas/match-targets-sequence.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "targetSequence": [ { "sequence": 1, "targetId": 1217289 }, { "sequence": 2, "targetId": 1217339 } ], "type": "WEBSITE" }, "schema": { "additionalProperties": false, "description": "Contains match target settings and a list of objects containing match targets with their assigned sequence number.", "properties": { "targetSequence": { "description": "Contains the ID and sequence of a match target.", "items": { "additionalProperties": false, "properties": { "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" } }, "required": [ "sequence", "targetId" ], "type": "object" }, "type": "array" }, "type": { "description": "Describes the type of match target, either `WEBSITE` or `API`.", "enum": [ "WEBSITE", "API" ], "type": "string" } }, "required": [ "type", "targetSequence" ], "type": "object", "x-akamai": { "file-path": "schemas/match-targets-sequence.yaml" } } } }, "description": "Successfully updated match target sequence." }, "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": { "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": { "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 match targets 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": { "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": "Modify match target order", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-match-targets-sequence.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/match-targets/sequence" } }, "/configs/{configId}/versions/{versionNumber}/match-targets/{targetId}": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Returns the specified match target.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-match-target" }, "operationId": "get-match-target", "parameters": [ { "description": "Specify whether to return the object name in the payload, true` by default.", "in": "query", "name": "includeChildObjectName", "schema": { "default": true, "example": false, "type": "boolean" }, "x-akamai": { "file-path": "parameters/include-child-object-name-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "bypassNetworkLists": [ { "id": "888518_ACDDCKERS", "name": "Test network list 1" }, { "id": "1304427_AAXXBBLIST", "name": "Test network list 2" } ], "configId": 77653, "configVersion": 25, "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": false, "applyRateControls": true, "applyReputationControls": false, "applySlowPostControls": false }, "fileExtensions": [ "wmls", "jpeg", "pws", "carb", "pdf", "js", "hdml", "cct", "swf", "pct" ], "filePaths": [ "/sssi/*", "/cache/aaabbc*", "/price_toy/*" ], "hostnames": [ "example.com", "www.example.net", "m.example.com" ], "isNegativeFileExtensionMatch": true, "isNegativePathMatch": false, "securityPolicy": { "policyId": "fwsf_32432" }, "sequence": 1, "targetId": 112231, "type": "website" }, "schema": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } } } }, "description": "Successfully returned match target." }, "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": { "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 match targets 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": { "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 match target wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get a match target", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "put": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Updates details about the specified match target.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-match-target" }, "operationId": "put-match-target", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "bypassNetworkLists": [ { "id": "888518_ACDDCKERS" }, { "id": "1304427_AAXXBBLIST" } ], "defaultFile": "NO_MATCH", "fileExtensions": [ "wmls", "jpeg", "pws", "carb", "pdf", "js", "hdml", "cct", "swf", "pct" ], "filePaths": [ "/sssi/*", "/cache/aaabbc*", "/price_toy/*" ], "hostnames": [ "example.com", "www.example.net", "m.example.com" ], "isNegativeFileExtensionMatch": true, "isNegativePathMatch": false, "securityPolicy": { "policyId": "fwsf_32432" }, "targetId": 112231, "type": "website" }, "schema": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "bypassNetworkLists": [ { "id": "888518_ACDDCKERS", "name": "Test network list 1" }, { "id": "1304427_AAXXBBLIST", "name": "Test network list 2" } ], "configId": 77653, "configVersion": 25, "defaultFile": "NO_MATCH", "effectiveSecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": false, "applyRateControls": true, "applyReputationControls": false, "applySlowPostControls": false }, "fileExtensions": [ "wmls", "jpeg", "pws", "carb", "pdf", "js", "hdml", "cct", "swf", "pct" ], "filePaths": [ "/sssi/*", "/cache/aaabbc*", "/price_toy/*" ], "hostnames": [ "example.com", "www.example.net", "m.example.com" ], "isNegativeFileExtensionMatch": true, "isNegativePathMatch": false, "securityPolicy": { "policyId": "fwsf_32432" }, "sequence": 1, "targetId": 112231, "type": "website" }, "schema": { "additionalProperties": false, "description": "Contains information about a match target.", "properties": { "apis": { "description": "Contains a list of objects containing an API endpoint ID and name. This field applies only to API match targets.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the API endpoint.", "type": "integer" }, "name": { "description": "The API endpoint name.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "bypassNetworkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "configVersion": { "description": "The version of security configuration.", "type": "integer" }, "defaultFile": { "default": "NO_MATCH", "description": "Describes the rule to match on paths. Either `NO_MATCH` to not match on the default file, `BASE_MATCH` to match only requests for top-level hostnames ending in a trailing slash, or `RECURSIVE_MATCH` to match all requests for paths that end in a trailing slash.", "enum": [ "NO_MATCH", "BASE_MATCH", "RECURSIVE_MATCH" ], "type": "string" }, "effectiveSecurityControls": { "additionalProperties": false, "description": "__Read-only__ Defines the security controls to apply. For a security control to be effectively turned on, it has to be enabled in both the match target and the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "readOnly": true, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "fileExtensions": { "description": "Contains a list of file extensions.", "items": { "description": "The file extensions used in the path match.", "type": "string" }, "type": "array" }, "filePaths": { "description": "Contains a list of file paths.", "items": { "description": "The path used in the path match.", "type": "string" }, "type": "array" }, "hostnames": { "description": "Contains a list of hostnames to protect.", "items": { "description": "The hostnames to match the request on.", "type": "string" }, "type": "array" }, "isNegativeFileExtensionMatch": { "description": "Describes whether the match target applies when a match is found in the specified `fileExtensions` or when a match isn't found.", "type": "boolean" }, "isNegativePathMatch": { "description": "Describes whether the match target applies when a match is found in the specified paths or when a match isn't found.", "type": "boolean" }, "securityPolicy": { "additionalProperties": false, "description": "The security policy associated with the match target.", "properties": { "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" } }, "required": [ "policyId" ], "type": "object" }, "sequence": { "description": "The position in the sequence of match targets.", "type": "integer" }, "targetId": { "description": "Uniquely identifies the match target.", "type": "integer" }, "type": { "description": "Describes the type of match target, either `website` or `api`.", "enum": [ "website", "api" ], "type": "string" }, "validations": { "additionalProperties": false, "description": "__Read-only__ Describes warnings, errors, or notices determined by a validation of this resource.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "type", "securityPolicy" ], "type": "object", "x-akamai": { "file-path": "schemas/match-target.yaml" } } } }, "description": "Successfully updated match target." }, "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": { "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": { "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 match targets 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": { "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 match target wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Modify a match target", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "delete": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Deletes the specified match target.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-match-target" }, "operationId": "delete-match-target", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the match target." }, "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": { "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 match targets 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": { "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 match target wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Remove a match target", "tags": [ "Match targets" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 match target.", "in": "path", "name": "targetId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/target-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-match-target.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/match-targets/{targetId}" } }, "/configs/{configId}/versions/{versionNumber}/protect-eval-hostnames": { "put": { "description": "__Web Application Protector__, __App & API Protector__ Move hostnames you're evaluating to active protection. When you move a hostname from the evaluation hostnames list, it's added to your security policy as a protected hostname. You'll see that hostname in the response object the next time you run [List selected hostnames](https://techdocs.akamai.com/application-security/reference/get-selected-hostnames).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-protect-eval-hostnames" }, "operationId": "put-protect-eval-hostnames", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "hostnames": [ "*.example.net", "example.com", "m.example.com" ], "mode": "append" }, "schema": { "additionalProperties": false, "description": "Contains a list of evaluation hostnames for the specified configuration version.", "properties": { "hostnames": { "description": "Contains a list of hostnames.", "items": { "description": "The hostnames on which to match the request.", "type": "string" }, "type": "array" }, "mode": { "description": "The type of update you want to make to the evaluation hostname list. You can `append` additional hostnames, `remove` hostnames from the list, or `replace` the existing list with the hostnames you pass in your request.", "enum": [ "append", "remove", "replace" ], "type": "string" } }, "required": [ "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/eval-hostnames.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "hostnames": [ "*.example.net", "example.com", "m.example.com" ], "mode": "append" }, "schema": { "additionalProperties": false, "description": "Contains a list of evaluation hostnames for the specified configuration version.", "properties": { "hostnames": { "description": "Contains a list of hostnames.", "items": { "description": "The hostnames on which to match the request.", "type": "string" }, "type": "array" }, "mode": { "description": "The type of update you want to make to the evaluation hostname list. You can `append` additional hostnames, `remove` hostnames from the list, or `replace` the existing list with the hostnames you pass in your request.", "enum": [ "append", "remove", "replace" ], "type": "string" } }, "required": [ "hostnames" ], "type": "object", "x-akamai": { "file-path": "schemas/eval-hostnames.yaml" } } } }, "description": "Successful response." }, "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": { "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": { "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 the resource.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Protect evaluation hostnames", "tags": [ "Configuration: Evaluation hostnames" ], "x-akamai": { "labels": [ "Web Application Protector", "App & API Protector" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-protect-eval-hostnames.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/protect-eval-hostnames" } }, "/configs/{configId}/versions/{versionNumber}/rate-policies": { "post": { "description": "__All products__ 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`.", "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).", "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", "clientIdentifiers": [ "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, "penaltyBoxDuration": "TEN_MINUTES", "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.", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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" } } } }, "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", "clientIdentifiers": [ "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-22T18:57:08Z", "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, "penaltyBoxDuration": "TEN_MINUTES", "queryParameters": [ { "name": "productId", "positiveMatch": true, "valueInRange": false, "values": [ "BUB_12", "SUSH_11" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": false, "type": "WAF", "updateDate": "2017-02-22T00:05:41Z", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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": { "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": { "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": { "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": "Create a rate policy", "tags": [ "Shared resources: Rate policies" ], "x-akamai": { "labels": [ "All products" ] } }, "get": { "description": "__All products__ Returns rate policies for a specific security configuration version.", "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).", "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", "clientIdentifiers": [ "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-22T18:57:08Z", "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, "penaltyBoxDuration": "TEN_MINUTES", "queryParameters": [ { "name": "productId", "positiveMatch": true, "valueInRange": false, "values": [ "BUB_12", "SUSH_11" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": false, "type": "WAF", "updateDate": "2017-02-22T00:05:41Z", "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", "clientIdentifiers": [ "ip" ], "counterType": "per_edge", "createDate": "2016-07-22T18:57:08Z", "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", "pathMatchType": "Custom", "penaltyBoxDuration": "TEN_MINUTES", "queryParameters": [ { "name": "productId", "positiveMatch": true, "valueInRange": false, "values": [ "BUB_12", "SUSH_11" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": false, "type": "WAF", "updateDate": "2017-02-22T00:05:41Z", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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": { "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": { "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": "List rate policies", "tags": [ "Shared resources: Rate policies" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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" } }, "/configs/{configId}/versions/{versionNumber}/rate-policies/{ratePolicyId}": { "get": { "description": "__All products__ Returns the specified rate policy.", "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).", "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", "clientIdentifiers": [ "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-22T18:57:08Z", "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, "penaltyBoxDuration": "TEN_MINUTES", "queryParameters": [ { "name": "productId", "positiveMatch": true, "valueInRange": false, "values": [ "BUB_12", "SUSH_11" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": false, "type": "WAF", "updateDate": "2017-02-22T00:05:41Z", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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": { "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": { "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": "Get a rate policy", "tags": [ "Shared resources: Rate policies" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ 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`.", "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).", "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", "clientIdentifiers": [ "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, "penaltyBoxDuration": "TEN_MINUTES", "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.", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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" } } } }, "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", "clientIdentifiers": [ "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-22T18:57:08Z", "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, "penaltyBoxDuration": "TEN_MINUTES", "queryParameters": [ { "name": "productId", "positiveMatch": true, "valueInRange": false, "values": [ "BUB_12", "SUSH_11" ] } ], "requestType": "ClientRequest", "sameActionOnIpv6": false, "type": "WAF", "updateDate": "2017-02-22T00:05:41Z", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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": { "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": { "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": { "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": "Modify a rate policy", "tags": [ "Shared resources: Rate policies" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__All products__ 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.", "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).", "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": { "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": { "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": "Remove a rate policy", "tags": [ "Shared resources: Rate policies" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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.", "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}" } }, "/configs/{configId}/versions/{versionNumber}/rate-policies/{ratePolicyId}/evaluation": { "put": { "description": "__All products__ 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).", "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" ], "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", "clientIdentifiers": [ "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, "penaltyBoxDuration": "TEN_MINUTES", "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` \u2014 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": { "deprecated": true, "description": "__Deprecated__ 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. This field will be removed in future releases. Use `clientIdentifiers` instead.", "minLength": 0, "type": "string", "x-akamai": { "status": "DEPRECATED" } }, "clientIdentifiers": { "description": "Client identifiers to 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. Specify `request-header:value` to track by a named request header, like `User-Agent`. Use `query-string:value` to track by a specific named query parameter. The `tls-fingerprint` identifier is available for traffic transmitted using secure transport (HTTPS).", "items": { "enum": [ "api-key", "cookie:value", "ip", "request-header:value", "tls-fingerprint", "query-string:value" ], "type": "string" }, "minItems": 0, "type": "array" }, "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\u2019s 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-22T18:57:08.00Z", "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 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`. Specify `RequestDisabled` to bypass matching on a path.", "enum": [ "AllRequests", "TopLevel", "Custom", "RequestDisabled" ], "type": "string" }, "pathUriPositiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "penaltyBoxDuration": { "default": "TEN_MINUTES", "description": "The duration of the penalty box. Either `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `SIX_HOURS`, `TWELVE_HOURS`, or `TWENTY_FOUR_HOURS`. Only applicable when the `counterType` is `region_aggregated`.", "enum": [ "TEN_MINUTES", "THIRTY_MINUTES", "ONE_HOUR", "FOUR_HOURS", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS" ], "type": "string" }, "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` \u2014 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-22T00:05:41.00Z", "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 evaluation." }, "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": { "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": { "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": { "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": "Modify a rate policy evaluation", "tags": [ "Shared resources: Rate policies" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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.", "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" } }, "/configs/{configId}/versions/{versionNumber}/reputation-profiles": { "post": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Create a new reputation profile for a specific configuration version.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-reputation-profiles" }, "operationId": "post-reputation-profiles", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "condition": { "atomicConditions": [ { "className": "AsNumberCondition", "positiveMatch": true, "value": [ "1" ] }, { "className": "RequestCookieCondition", "name": "x-header", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "valueWildcard": true }, { "className": "HostCondition", "host": [ "*.com" ], "positiveMatch": true, "valueWildcard": true } ], "positiveMatch": true }, "context": "WEBATCK", "description": "Reputation profile description", "name": "Web Attack Rep Profile", "sharedIpHandling": "NON_SHARED", "threshold": 5 }, "schema": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "condition": { "atomicConditions": [ { "checkIps": "connecting", "className": "AsNumberCondition", "index": 1, "positiveMatch": true, "value": [ "1" ] }, { "className": "RequestCookieCondition", "index": 2, "name": "x-header", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "valueCase": false, "valueWildcard": true }, { "className": "HostCondition", "host": [ "*.com" ], "index": 3, "positiveMatch": true, "valueWildcard": true } ], "positiveMatch": true }, "context": "WEBATCK", "description": "Reputation profile description", "enabled": false, "id": 2509987, "name": "Web Attack Rep Profile", "sharedIpHandling": "NON_SHARED", "threshold": 5 }, "schema": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } } } }, "description": "Successfully created a reputation profile." }, "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": { "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": { "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 reputation profiles 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": { "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": "Create a reputation profile", "tags": [ "Shared resources: Reputation profiles" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Returns reputation profiles for a specific security configuration version. To use reputation profiles, you need to add [Client Reputation](https://techdocs.akamai.com/app-api-protector/docs/control-client-reputation) to Kona Site Defender on your contract.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-reputation-profiles" }, "operationId": "get-reputation-profiles", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "reputationProfiles": [ { "context": "SCANTL", "contextReadable": "Scanning Tools", "enabled": false, "id": 146254, "name": "Scanning Tools (High Threat)", "sharedIpHandling": "NON_SHARED", "threshold": 9 }, { "context": "WEBATCK", "contextReadable": "Web Attackers", "enabled": false, "id": 146258, "name": "Web Attackers (Low Threat)", "sharedIpHandling": "SHARED_ONLY", "threshold": 5 }, { "condition": { "atomicConditions": [ { "className": "RequestCookieCondition", "name": "cookie", "nameWildcard": true, "positiveMatch": true, "value": [ "cookie" ], "valueWildcard": true } ], "positiveMatch": true }, "context": "WEBATCK", "contextReadable": "Web Attackers", "description": "this is a customized reputation profile", "enabled": true, "id": 146259, "name": "Custom Reputation Profile", "sharedIpHandling": "SHARED_ONLY", "threshold": 3 } ] }, "schema": { "additionalProperties": false, "description": "Contains details about reputation profiles.", "properties": { "reputationProfiles": { "description": "A list of reputation profiles in this configuration version.", "items": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/reputation-profiles.yaml" } } } }, "description": "Successfully returned reputation profiles." }, "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": { "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 reputation profile 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": { "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": "List reputation profiles", "tags": [ "Shared resources: Reputation profiles" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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-reputation-profiles.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/reputation-profiles" } }, "/configs/{configId}/versions/{versionNumber}/reputation-profiles/{reputationProfileId}": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Returns the details for a specific reputation profile.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-reputation-profile" }, "operationId": "get-reputation-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "condition": { "atomicConditions": [ { "checkIps": "connecting", "className": "AsNumberCondition", "index": 1, "positiveMatch": true, "value": [ "1" ] }, { "className": "RequestCookieCondition", "index": 2, "name": "x-header", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "valueCase": false, "valueWildcard": true }, { "className": "HostCondition", "host": [ "*.com" ], "index": 3, "positiveMatch": true, "valueWildcard": true } ], "positiveMatch": true }, "context": "WEBATCK", "description": "Reputation profile description", "enabled": false, "id": 2509987, "name": "Web Attack Rep Profile", "sharedIpHandling": "NON_SHARED", "threshold": 5 }, "schema": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } } } }, "description": "Successfully returned reputation profile." }, "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": { "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 reputation profile 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": { "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 reputation profile wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get a reputation profile", "tags": [ "Shared resources: Reputation profiles" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "put": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Update details for a specific reputation profile.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-reputation-profile" }, "operationId": "put-reputation-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "condition": { "atomicConditions": [ { "checkIps": "connecting", "className": "AsNumberCondition", "index": 1, "positiveMatch": true, "value": [ "1" ] }, { "className": "RequestCookieCondition", "index": 2, "name": "x-header", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "valueCase": false, "valueWildcard": true }, { "className": "HostCondition", "host": [ "example.com" ], "index": 3, "positiveMatch": true, "valueWildcard": true } ], "positiveMatch": true }, "context": "WEBATCK", "description": "Reputation profile description", "enabled": false, "id": 2509987, "name": "Web Attack Rep Profile", "sharedIpHandling": "NON_SHARED", "threshold": 5 }, "schema": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "condition": { "atomicConditions": [ { "checkIps": "connecting", "className": "AsNumberCondition", "index": 1, "positiveMatch": true, "value": [ "1" ] }, { "className": "RequestCookieCondition", "index": 2, "name": "x-header", "nameCase": true, "nameWildcard": true, "positiveMatch": true, "valueCase": false, "valueWildcard": true }, { "className": "HostCondition", "host": [ "*.com" ], "index": 3, "positiveMatch": true, "valueWildcard": true } ], "positiveMatch": true }, "context": "WEBATCK", "description": "Reputation profile description", "enabled": false, "id": 2509987, "name": "Web Attack Rep Profile", "sharedIpHandling": "NON_SHARED", "threshold": 5 }, "schema": { "additionalProperties": false, "description": "Contains details about a reputation profile.", "properties": { "condition": { "additionalProperties": false, "description": "Contains information about the criteria that trigger the reputation profile.", "properties": { "atomicConditions": { "description": "The conditions that trigger the reputation profile.", "items": { "additionalProperties": false, "properties": { "checkIps": { "description": "Use `both` to include the `X-Forwarded-For` (XFF) header and the client\u2019s IP address. Use `connecting` to exclude the XFF header. The XFF header is easily spoofed, so only include it in rare cases.", "enum": [ "connecting", "both" ], "type": "string" }, "className": { "description": "The condition type. For available values, see [Condition Values](https://techdocs.akamai.com/application-security/reference/condition-values).", "enum": [ "NetworkListCondition", "AsNumberCondition", "IpAddressCondition", "RequestCookieCondition", "RequestHeaderCondition", "HostCondition", "UrlPatternCondition" ], "type": "string" }, "host": { "description": "A list of hostnames. This only applies to the `HostCondition` `className`.", "items": { "description": "A hostname.", "minLength": 1, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "index": { "description": "The location of the parameter's data within the array.", "type": "integer" }, "name": { "description": "The condition value of `name`. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "oneOf": [ { "title": "Single name", "type": "string" }, { "items": { "type": "string" }, "title": "Array of names", "type": "array" } ] }, "nameCase": { "description": "Whether to consider the case sensitivity of the provided query names.", "type": "boolean" }, "nameWildcard": { "description": "Whether the provided value of `name` is a wildcard. This only applies to the `RequestHeaderCondition`, and `RequestCookieCondition` condition `className`.", "type": "boolean" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "value": { "description": "The list of values that trigger the condition.", "items": { "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "valueCase": { "default": false, "description": "Whether to consider the character case when comparing the value string with the request value. The default is `false`, meaning that a value such as `url` would match a string `UrL` in the request.", "type": "boolean" }, "valueWildcard": { "default": true, "description": "Whether to treat the asterisk (`*`) and question mark (`?`) as wildcards when comparing the value string with the request value. Note that setting this to `false` isn't supported by the host condition, and means that the value string must match exactly.", "type": "boolean" } }, "type": "object" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" } }, "type": "object" }, "context": { "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.", "enum": [ "WEBSCRP", "DOSATCK", "WEBATCK", "SCANTL" ], "type": "string" }, "contextReadable": { "description": "__Read-only__ Describes the reputation category.", "readOnly": true, "type": "string" }, "description": { "description": "Describes the reputation profile.", "type": "string" }, "enabled": { "description": "__Read-only__ Whether you enabled the reputation profile.", "readOnly": true, "type": "boolean" }, "id": { "description": "__Read-only__ Uniquely identifies the reputation profile.", "readOnly": true, "type": "integer" }, "name": { "description": "The name you assigned to the reputation profile.", "type": "string" }, "sharedIpHandling": { "description": "Identifies the IP sharing. Either `NON_SHARED`, `SHARED_ONLY`, `BOTH`.", "enum": [ "NON_SHARED", "SHARED_ONLY", "BOTH" ], "type": "string" }, "threshold": { "description": "The threshold when the profile to triggers.", "type": "number" } }, "required": [ "name", "context", "threshold", "sharedIpHandling" ], "type": "object", "x-akamai": { "file-path": "schemas/reputation-profile.yaml" } } } }, "description": "Successfully updated reputation profile." }, "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": { "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": { "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 reputation profile 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": { "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 reputation profile wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Modify a reputation profile", "tags": [ "Shared resources: Reputation profiles" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "delete": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Delete a reputation profile. You can't delete a reputation profile that is actively in use. To delete the reputation profile, first activate an older configuration version or create a new version without that policy in place.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-reputation-profile" }, "operationId": "delete-reputation-profile", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the reputation profile." }, "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": { "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 reputation profile 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": { "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 reputation profile wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Remove a reputation profile", "tags": [ "Shared resources: Reputation profiles" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 reputation profile.", "in": "path", "name": "reputationProfileId", "required": true, "schema": { "example": 112231, "type": "integer" }, "x-akamai": { "file-path": "parameters/reputation-profile-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/config-reputation-profile.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/reputation-profiles/{reputationProfileId}" } }, "/configs/{configId}/versions/{versionNumber}/response-actions/challenge-actions": { "post": { "description": "Create a new challenge action. Use this action type to insert a challenge, like a CAPTCHA, into the user workflow. You can also apply your own branding to the action to match your website. See [Challenge actions](https://techdocs.akamai.com/app-api-protector/docs/challenge-actions) for more details.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-challenge-action" }, "operationId": "post-challenge-action", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "actionName": "new challenge 4", "allowFullCpuUtilization": true, "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 100, "customBrandingUrl": "/abcd.html" }, "schema": { "additionalProperties": false, "properties": { "actionId": { "description": "__Read-only__ Identifies the action.", "readOnly": true, "type": "string" }, "actionName": { "description": "The action's unique name.", "maxLength": 100, "minLength": 1, "type": "string" }, "allowFullCpuUtilization": { "description": "Set to `true` to let the client use 100 percent CPU to resolve the challenge. If more humans than bots see this challenge, set to `false`.", "nullable": true, "type": "boolean" }, "challengeIntervalInSeconds": { "description": "Time between challenges. Set according to how long users interact with the resource you're protecting. A short period interrupts users more often.", "maximum": 7200, "minimum": 1, "type": "integer" }, "challengeType": { "description": "Specify the type of challenge. Choose `GOOGLE_RECAPTCHA` to make users solve a CAPTCHA puzzle. You can also choose `AKAMAI_WEB_CRYPTO` or `AKAMAI_MOBILE_CRYPTO` to make web requesting clients or mobile requesting clients solve a proof-of-work cryptographic challenge.", "enum": [ "GOOGLE_RECAPTCHA", "AKAMAI_WEB_CRYPTO", "AKAMAI_MOBILE_CRYPTO" ], "type": "string" }, "cryptoChallengeDurationInSeconds": { "description": "Specify how many seconds the client machine should spend on the challenge. The longer the duration, the more difficult the challenge.", "maximum": 120, "nullable": true, "type": "integer" }, "customBrandingLegacyCssUrl": { "description": "The CSS page containing your custom spinner. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingLegacyMessageUrl": { "description": "The web page containing the static HTML snippet with your custom message. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingUrl": { "description": "The web page containing the static HTML snippet with your custom logo. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "description": { "description": "An optional description of the action.", "maxLength": 250, "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSecretKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA secret key. The secret key authorizes communication between your site and the reCAPTCHA server.", "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSiteKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA site key. The site key invokes the reCAPTCHA service on your site or application.", "minLength": 1, "nullable": true, "type": "string" } }, "required": [ "actionName", "challengeType", "challengeIntervalInSeconds" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action.yaml" } } } } }, "responses": { "201": { "content": { "application/json": { "example": { "actionId": "challenge_108949", "actionName": "new challenge 4", "allowFullCpuUtilization": true, "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 100, "customBrandingUrl": "/abcd.html" }, "schema": { "additionalProperties": false, "properties": { "actionId": { "description": "__Read-only__ Identifies the action.", "readOnly": true, "type": "string" }, "actionName": { "description": "The action's unique name.", "maxLength": 100, "minLength": 1, "type": "string" }, "allowFullCpuUtilization": { "description": "Set to `true` to let the client use 100 percent CPU to resolve the challenge. If more humans than bots see this challenge, set to `false`.", "nullable": true, "type": "boolean" }, "challengeIntervalInSeconds": { "description": "Time between challenges. Set according to how long users interact with the resource you're protecting. A short period interrupts users more often.", "maximum": 7200, "minimum": 1, "type": "integer" }, "challengeType": { "description": "Specify the type of challenge. Choose `GOOGLE_RECAPTCHA` to make users solve a CAPTCHA puzzle. You can also choose `AKAMAI_WEB_CRYPTO` or `AKAMAI_MOBILE_CRYPTO` to make web requesting clients or mobile requesting clients solve a proof-of-work cryptographic challenge.", "enum": [ "GOOGLE_RECAPTCHA", "AKAMAI_WEB_CRYPTO", "AKAMAI_MOBILE_CRYPTO" ], "type": "string" }, "cryptoChallengeDurationInSeconds": { "description": "Specify how many seconds the client machine should spend on the challenge. The longer the duration, the more difficult the challenge.", "maximum": 120, "nullable": true, "type": "integer" }, "customBrandingLegacyCssUrl": { "description": "The CSS page containing your custom spinner. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingLegacyMessageUrl": { "description": "The web page containing the static HTML snippet with your custom message. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingUrl": { "description": "The web page containing the static HTML snippet with your custom logo. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "description": { "description": "An optional description of the action.", "maxLength": 250, "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSecretKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA secret key. The secret key authorizes communication between your site and the reCAPTCHA server.", "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSiteKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA site key. The site key invokes the reCAPTCHA service on your site or application.", "minLength": 1, "nullable": true, "type": "string" } }, "required": [ "actionName", "challengeType", "challengeIntervalInSeconds" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action.yaml" } } } }, "description": "Successful response.", "headers": { "Location": { "description": "A URL to access the newly created resource.", "example": "/malware-policies/post-malware-policies", "schema": { "type": "string" }, "x-akamai": { "file-path": "headers/location.yaml" } } } }, "400": { "content": { "application/problem+json": { "example": { "detail": "Validation failed", "errors": [ { "detail": "#/actionName: is missing but it is required", "member": "#/actionName", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, { "detail": "#/defaultAction: is missing but it is required", "member": "#/defaultAction", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" } ], "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/5fae03812da3853f", "status": 400, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The request body has invalid fields." }, "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": { "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": "You don't have permission to create this resource." } }, "summary": "Create a challenge action", "tags": [ "Challenge actions" ] }, "get": { "description": "List all of your challenge actions along with their names, challenge types, and other summary information.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-challenge-actions" }, "operationId": "get-challenge-actions", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "challengeActions": [ { "actionId": "challenge_12345", "actionName": "new challenge 1", "challengeIntervalInSeconds": 300, "challengeType": "AKAMAI_MOBILE_CRYPTO", "cryptoChallengeDurationInSeconds": 31 }, { "actionId": "challenge_67891", "actionName": "new challenge 2", "allowFullCpuUtilization": false, "challengeIntervalInSeconds": 300, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 30, "customBrandingUrl": "/abcd.xyz" }, { "actionId": "challenge_101212", "actionName": "new challenge 3", "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_MOBILE_CRYPTO", "cryptoChallengeDurationInSeconds": 100 }, { "actionId": "challenge_131415", "actionName": "new challenge 4", "allowFullCpuUtilization": true, "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 100, "customBrandingUrl": "/abcd.html" } ], "validation": { "errors": [], "notices": [], "warnings": [] } }, "schema": { "additionalProperties": false, "properties": { "challengeActions": { "description": "__Read-only__ The list of challenge actions.", "items": { "additionalProperties": false, "properties": { "actionId": { "description": "__Read-only__ Identifies the action.", "readOnly": true, "type": "string" }, "actionName": { "description": "The action's unique name.", "maxLength": 100, "minLength": 1, "type": "string" }, "allowFullCpuUtilization": { "description": "Set to `true` to let the client use 100 percent CPU to resolve the challenge. If more humans than bots see this challenge, set to `false`.", "nullable": true, "type": "boolean" }, "challengeIntervalInSeconds": { "description": "Time between challenges. Set according to how long users interact with the resource you're protecting. A short period interrupts users more often.", "maximum": 7200, "minimum": 1, "type": "integer" }, "challengeType": { "description": "Specify the type of challenge. Choose `GOOGLE_RECAPTCHA` to make users solve a CAPTCHA puzzle. You can also choose `AKAMAI_WEB_CRYPTO` or `AKAMAI_MOBILE_CRYPTO` to make web requesting clients or mobile requesting clients solve a proof-of-work cryptographic challenge.", "enum": [ "GOOGLE_RECAPTCHA", "AKAMAI_WEB_CRYPTO", "AKAMAI_MOBILE_CRYPTO" ], "type": "string" }, "cryptoChallengeDurationInSeconds": { "description": "Specify how many seconds the client machine should spend on the challenge. The longer the duration, the more difficult the challenge.", "maximum": 120, "nullable": true, "type": "integer" }, "customBrandingLegacyCssUrl": { "description": "The CSS page containing your custom spinner. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingLegacyMessageUrl": { "description": "The web page containing the static HTML snippet with your custom message. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingUrl": { "description": "The web page containing the static HTML snippet with your custom logo. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "description": { "description": "An optional description of the action.", "maxLength": 250, "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSecretKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA secret key. The secret key authorizes communication between your site and the reCAPTCHA server.", "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSiteKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA site key. The site key invokes the reCAPTCHA service on your site or application.", "minLength": 1, "nullable": true, "type": "string" } }, "required": [ "actionName", "challengeType", "challengeIntervalInSeconds" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action.yaml" } }, "readOnly": true, "type": "array" }, "validation": { "additionalProperties": false, "description": "Contains warnings, errors, or notices determined by validating the match target.", "properties": { "errors": { "description": "The list of errors.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "notices": { "description": "The list of notices.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" }, "warnings": { "description": "The list of warnings.", "items": { "additionalProperties": false, "description": "Contains feedback on validation.", "properties": { "detail": { "description": "The explanation of the error message.", "type": "string" }, "fieldName": { "description": "The name of the field causing the validation problem.", "type": "string" }, "jsonReference": { "description": "The JSON reference to the field in the resource.", "type": "string" }, "title": { "description": "The title for the error.", "example": "Not Found", "type": "string" }, "type": { "description": "The URL for the error type.", "example": "/appsec/problem-types/INCOMPATIBLE-FIELD", "type": "string" } }, "required": [ "title", "type" ], "type": "object", "x-akamai": { "file-path": "schemas/validation.yaml" } }, "type": "array" } }, "readOnly": true, "required": [ "notices", "errors", "warnings" ], "type": "object", "x-akamai": { "file-path": "schemas/validations.yaml" } } }, "required": [ "challengeActions", "validation" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action-list.yaml" } } } }, "description": "Successful response." }, "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": { "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": "You don't have permission to access the resource." }, "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": { "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": "The resource doesn't exist." } }, "summary": "List challenge actions", "tags": [ "Challenge actions" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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/challenge-actions.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/response-actions/challenge-actions" } }, "/configs/{configId}/versions/{versionNumber}/response-actions/challenge-actions/{actionId}": { "get": { "description": "View details about the specified challenge action.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-challenge-action" }, "operationId": "get-challenge-action", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "actionId": "challenge_108949", "actionName": "new challenge 4", "allowFullCpuUtilization": true, "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 100, "customBrandingUrl": "/abcd.html" }, "schema": { "additionalProperties": false, "properties": { "actionId": { "description": "__Read-only__ Identifies the action.", "readOnly": true, "type": "string" }, "actionName": { "description": "The action's unique name.", "maxLength": 100, "minLength": 1, "type": "string" }, "allowFullCpuUtilization": { "description": "Set to `true` to let the client use 100 percent CPU to resolve the challenge. If more humans than bots see this challenge, set to `false`.", "nullable": true, "type": "boolean" }, "challengeIntervalInSeconds": { "description": "Time between challenges. Set according to how long users interact with the resource you're protecting. A short period interrupts users more often.", "maximum": 7200, "minimum": 1, "type": "integer" }, "challengeType": { "description": "Specify the type of challenge. Choose `GOOGLE_RECAPTCHA` to make users solve a CAPTCHA puzzle. You can also choose `AKAMAI_WEB_CRYPTO` or `AKAMAI_MOBILE_CRYPTO` to make web requesting clients or mobile requesting clients solve a proof-of-work cryptographic challenge.", "enum": [ "GOOGLE_RECAPTCHA", "AKAMAI_WEB_CRYPTO", "AKAMAI_MOBILE_CRYPTO" ], "type": "string" }, "cryptoChallengeDurationInSeconds": { "description": "Specify how many seconds the client machine should spend on the challenge. The longer the duration, the more difficult the challenge.", "maximum": 120, "nullable": true, "type": "integer" }, "customBrandingLegacyCssUrl": { "description": "The CSS page containing your custom spinner. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingLegacyMessageUrl": { "description": "The web page containing the static HTML snippet with your custom message. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingUrl": { "description": "The web page containing the static HTML snippet with your custom logo. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "description": { "description": "An optional description of the action.", "maxLength": 250, "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSecretKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA secret key. The secret key authorizes communication between your site and the reCAPTCHA server.", "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSiteKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA site key. The site key invokes the reCAPTCHA service on your site or application.", "minLength": 1, "nullable": true, "type": "string" } }, "required": [ "actionName", "challengeType", "challengeIntervalInSeconds" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action.yaml" } } } }, "description": "Successful response." }, "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": { "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": "You don't have permission to access the resource." }, "404": { "content": { "application/problem+json": { "example": { "detail": "Challenge action with id [challenge_108949] does not exist", "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/e39338aca5b4962e", "status": 404, "title": "Not Found", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/NOT-FOUND" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The resource doesn't exist." } }, "summary": "Get a challenge action", "tags": [ "Challenge actions" ] }, "put": { "description": "Edit the specified challenge action, such as the name, type of challenge, or branding.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-challenge-action" }, "operationId": "put-challenge-action", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "actionId": "challenge_108949", "actionName": "new challenge 4", "allowFullCpuUtilization": true, "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 100, "customBrandingUrl": "/abcd.html" }, "schema": { "additionalProperties": false, "properties": { "actionId": { "description": "__Read-only__ Identifies the action.", "readOnly": true, "type": "string" }, "actionName": { "description": "The action's unique name.", "maxLength": 100, "minLength": 1, "type": "string" }, "allowFullCpuUtilization": { "description": "Set to `true` to let the client use 100 percent CPU to resolve the challenge. If more humans than bots see this challenge, set to `false`.", "nullable": true, "type": "boolean" }, "challengeIntervalInSeconds": { "description": "Time between challenges. Set according to how long users interact with the resource you're protecting. A short period interrupts users more often.", "maximum": 7200, "minimum": 1, "type": "integer" }, "challengeType": { "description": "Specify the type of challenge. Choose `GOOGLE_RECAPTCHA` to make users solve a CAPTCHA puzzle. You can also choose `AKAMAI_WEB_CRYPTO` or `AKAMAI_MOBILE_CRYPTO` to make web requesting clients or mobile requesting clients solve a proof-of-work cryptographic challenge.", "enum": [ "GOOGLE_RECAPTCHA", "AKAMAI_WEB_CRYPTO", "AKAMAI_MOBILE_CRYPTO" ], "type": "string" }, "cryptoChallengeDurationInSeconds": { "description": "Specify how many seconds the client machine should spend on the challenge. The longer the duration, the more difficult the challenge.", "maximum": 120, "nullable": true, "type": "integer" }, "customBrandingLegacyCssUrl": { "description": "The CSS page containing your custom spinner. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingLegacyMessageUrl": { "description": "The web page containing the static HTML snippet with your custom message. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingUrl": { "description": "The web page containing the static HTML snippet with your custom logo. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "description": { "description": "An optional description of the action.", "maxLength": 250, "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSecretKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA secret key. The secret key authorizes communication between your site and the reCAPTCHA server.", "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSiteKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA site key. The site key invokes the reCAPTCHA service on your site or application.", "minLength": 1, "nullable": true, "type": "string" } }, "required": [ "actionName", "challengeType", "challengeIntervalInSeconds" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action.yaml" } } } } }, "responses": { "200": { "content": { "application/json": { "example": { "actionId": "challenge_108949", "actionName": "new challenge 4", "allowFullCpuUtilization": true, "challengeIntervalInSeconds": 723, "challengeType": "AKAMAI_WEB_CRYPTO", "cryptoChallengeDurationInSeconds": 100, "customBrandingUrl": "/abcd.html" }, "schema": { "additionalProperties": false, "properties": { "actionId": { "description": "__Read-only__ Identifies the action.", "readOnly": true, "type": "string" }, "actionName": { "description": "The action's unique name.", "maxLength": 100, "minLength": 1, "type": "string" }, "allowFullCpuUtilization": { "description": "Set to `true` to let the client use 100 percent CPU to resolve the challenge. If more humans than bots see this challenge, set to `false`.", "nullable": true, "type": "boolean" }, "challengeIntervalInSeconds": { "description": "Time between challenges. Set according to how long users interact with the resource you're protecting. A short period interrupts users more often.", "maximum": 7200, "minimum": 1, "type": "integer" }, "challengeType": { "description": "Specify the type of challenge. Choose `GOOGLE_RECAPTCHA` to make users solve a CAPTCHA puzzle. You can also choose `AKAMAI_WEB_CRYPTO` or `AKAMAI_MOBILE_CRYPTO` to make web requesting clients or mobile requesting clients solve a proof-of-work cryptographic challenge.", "enum": [ "GOOGLE_RECAPTCHA", "AKAMAI_WEB_CRYPTO", "AKAMAI_MOBILE_CRYPTO" ], "type": "string" }, "cryptoChallengeDurationInSeconds": { "description": "Specify how many seconds the client machine should spend on the challenge. The longer the duration, the more difficult the challenge.", "maximum": 120, "nullable": true, "type": "integer" }, "customBrandingLegacyCssUrl": { "description": "The CSS page containing your custom spinner. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingLegacyMessageUrl": { "description": "The web page containing the static HTML snippet with your custom message. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "customBrandingUrl": { "description": "The web page containing the static HTML snippet with your custom logo. Specify the page's fully qualified URL or root-relative path, like `http://example.com/pages/sample.html` or `/pages/sample.html`.", "minLength": 1, "nullable": true, "type": "string" }, "description": { "description": "An optional description of the action.", "maxLength": 250, "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSecretKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA secret key. The secret key authorizes communication between your site and the reCAPTCHA server.", "minLength": 1, "nullable": true, "type": "string" }, "googleReCaptchaSiteKey": { "description": "If the `challengeType` is `GOOGLE_RECAPTCHA`, specify the Google reCAPTCHA site key. The site key invokes the reCAPTCHA service on your site or application.", "minLength": 1, "nullable": true, "type": "string" } }, "required": [ "actionName", "challengeType", "challengeIntervalInSeconds" ], "type": "object", "x-akamai": { "file-path": "schemas/challenge-action.yaml" } } } }, "description": "Successful response." }, "400": { "content": { "application/problem+json": { "example": { "detail": "Validation failed", "errors": [ { "detail": "#/actionName: is missing but it is required", "member": "#/actionName", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, { "detail": "#/defaultAction: is missing but it is required", "member": "#/defaultAction", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" } ], "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/5fae03812da3853f", "status": 400, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The request body has invalid fields." }, "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": { "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": "You don't have permission to access the resource." }, "404": { "content": { "application/problem+json": { "example": { "detail": "Challenge action with id [challenge_108949] does not exist", "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/e39338aca5b4962e", "status": 404, "title": "Not Found", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/NOT-FOUND" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The requested challenge action was not found." } }, "summary": "Update a challenge action", "tags": [ "Challenge actions" ] }, "delete": { "description": "Remove the specified challenge action.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-challenge-action" }, "operationId": "delete-challenge-action", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successful response." }, "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": { "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": "You don't have permission to access the resource." }, "404": { "content": { "application/problem+json": { "example": { "detail": "Challenge action with id [challenge_108949] does not exist", "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/e39338aca5b4962e", "status": 404, "title": "Not Found", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/NOT-FOUND" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The requested challenge action was not found." } }, "summary": "Delete a challenge action", "tags": [ "Challenge actions" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "in": "path", "name": "versionNumber", "required": true, "schema": { "example": 25, "type": "integer" }, "x-akamai": { "file-path": "parameters/version-number-path.yaml" } }, { "description": "Identifies the action.", "in": "path", "name": "actionId", "required": true, "schema": { "example": "challenge_12345", "type": "string" }, "x-akamai": { "file-path": "parameters/action-id.yaml" } } ], "x-akamai": { "file-path": "paths/challenge-action.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/response-actions/challenge-actions/{actionId}" } }, "/configs/{configId}/versions/{versionNumber}/response-actions/challenge-actions/{actionId}/google-recaptcha-secret-key": { "put": { "description": "Specify a different Google reCAPTCHA secret key for a challenge action. The secret key authorizes communication between your site and the reCAPTCHA server.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-google-recaptcha-secret-key" }, "operationId": "put-google-recaptcha-secret-key", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "googleReCaptchaSecretKey": "Z29yZ2xlABClY3JldCBrZXkgd2hpY2ggaXMgaW4gYmFzZTY0IGVuY3J5cHRlZCBmb3JtXYZ=" }, "schema": { "additionalProperties": false, "properties": { "googleReCaptchaSecretKey": { "description": "The Google reCAPTCHA secret key.", "minLength": 1, "type": "string" } }, "required": [ "googleReCaptchaSecretKey" ], "type": "object", "x-akamai": { "file-path": "schemas/google-recaptcha-secret-key.yaml" } } } } }, "responses": { "200": { "content": { "application/json": { "example": { "googleReCaptchaSecretKey": "Z29yZ2xlABClY3JldCBrZXkgd2hpY2ggaXMgaW4gYmFzZTY0IGVuY3J5cHRlZCBmb3JtXYZ=" }, "schema": { "additionalProperties": false, "properties": { "googleReCaptchaSecretKey": { "description": "The Google reCAPTCHA secret key.", "minLength": 1, "type": "string" } }, "required": [ "googleReCaptchaSecretKey" ], "type": "object", "x-akamai": { "file-path": "schemas/google-recaptcha-secret-key.yaml" } } } }, "description": "Successful response." }, "400": { "content": { "application/problem+json": { "example": { "detail": "Validation failed", "errors": [ { "detail": "#/allowFullCpuUtilization: must be null when challengeType is AKAMAI_MOBILE_CRYPTO", "member": "#/allowFullCpuUtilization", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, { "detail": "#/cryptoChallengeDurationInSeconds: must not be null/empty when challengeType is AKAMAI_MOBILE_CRYPTO", "member": "#/cryptoChallengeDurationInSeconds", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, { "detail": "#/customBrandingUrl: must be null when challengeType is AKAMAI_MOBILE_CRYPTO", "member": "#/customBrandingUrl", "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" } ], "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/5fae03812da3853f", "status": 400, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The request body has invalid fields." }, "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": { "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": "You don't have permission to access the resource." }, "404": { "content": { "application/problem+json": { "example": { "detail": "Challenge action with id [challenge_108949] does not exist", "instance": "https://problems.luna.akamaiapis.net/appsec-resource/error-instances/e39338aca5b4962e", "status": 404, "title": "Not Found", "type": "https://problems.luna.akamaiapis.net/appsec-resource/error-types/NOT-FOUND" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "The requested challenge action was not found." } }, "summary": "Update Google reCAPTCHA secret key", "tags": [ "Challenge actions" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "in": "path", "name": "versionNumber", "required": true, "schema": { "example": 25, "type": "integer" }, "x-akamai": { "file-path": "parameters/version-number-path.yaml" } }, { "description": "Identifies the action.", "in": "path", "name": "actionId", "required": true, "schema": { "example": "challenge_12345", "type": "string" }, "x-akamai": { "file-path": "parameters/action-id.yaml" } } ], "x-akamai": { "file-path": "paths/challenge-action-google-recaptcha.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/response-actions/challenge-actions/{actionId}/google-recaptcha-secret-key" } }, "/configs/{configId}/versions/{versionNumber}/security-policies": { "post": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Creates a new copy of an existing security policy or creates a new security policy from scratch when you don't specify a policy to clone in the request. To create a new security policy, leave `createFromSecurityPolicy` empty in your request.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/post-policy" }, "operationId": "post-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "createFromSecurityPolicy": "1_35752", "policyName": "Open Cloned IV 2", "policyPrefix": "bt17" }, "schema": { "additionalProperties": false, "description": "Specifies the settings for a new clone of a security policy.", "properties": { "createFromSecurityPolicy": { "description": "The unique identifier (`policyId`) of the source policy to create the new policy from.", "example": "1_35752", "type": "string" }, "defaultSettings": { "description": "The default settings on the policy, `true` by default.", "type": "string" }, "policyName": { "description": "The name of the security policy. If not provided, the system generates a name automatically with the pattern `clone from `.", "type": "string" }, "policyPrefix": { "description": "The four-character alphanumeric string prefix for the `policyId`. If not provided, the prefix is autogenerated.", "type": "string" }, "source": { "description": "The source for the new the policy. If not provided, the source is blank. Other values are 'default' or the source security policy ID.", "nullable": true, "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/policy-clone.yaml" } } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "example": { "configId": 77653, "hasRatePolicyWithApiKey": false, "policyId": "bt17_75755", "policyName": "Open Cloned IV 2", "policySecurityControls": { "applyApiConstraints": true, "applyApplicationLayerControls": true, "applyBotmanControls": true, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": false }, "version": 144 }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security policy.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "hasRatePolicyWithApiKey": { "description": "Indicates whether this security policy has a rate policy which has `API_KEY` as a client identifier. APIs are managed using the [API Endpoint Definition API](https://techdocs.akamai.com/api-gateway/reference/api).", "type": "boolean" }, "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" }, "policyName": { "description": "The name of the security policy.", "type": "string" }, "policySecurityControls": { "additionalProperties": false, "description": "The status of security controls defined in the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "version": { "description": "The version number of the security configuration.", "type": "integer" } }, "required": [ "hasRatePolicyWithApiKey", "policyId", "policyName", "policySecurityControls" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-2.yaml" } } } }, "description": "Successfully created security policy.", "headers": { "Location": { "description": "The path at which the newly created security policy can be found.", "schema": { "type": "string" } } } }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Clone or create a security policy", "tags": [ "General policy settings" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "get": { "description": "__All products__ Returns a list of security policies available for the specified security configuration.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policies" }, "operationId": "get-policies", "parameters": [ { "description": "If `true`, returns all security policies in the configuration version that don't have a match target. If `false`, returns all security policies in the configuration version.", "in": "query", "name": "notMatched", "schema": { "example": true, "type": "boolean" }, "x-akamai": { "file-path": "parameters/not-matched-query.yaml" } }, { "description": "When `true`, the results contain detailed information on versions. With the default `false`, the results contain summary information on versions.", "in": "query", "name": "detail", "schema": { "default": false, "example": true, "type": "boolean" }, "x-akamai": { "file-path": "parameters/detail-query.yaml" } }, { "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "configId": 51074, "policies": [ { "hasRatePolicyWithApiKey": true, "policyId": "NN3_61", "policyName": "NN FW 3", "policySecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": true, "applyNetworkLayerControls": true, "applyRateControls": false, "applyReputationControls": false, "applySlowPostControls": false } }, { "hasRatePolicyWithApiKey": false, "policyId": "NN_2", "policyName": "NN FW 1", "policySecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": true, "applyRateControls": false, "applyReputationControls": false, "applySlowPostControls": false } }, { "hasRatePolicyWithApiKey": true, "policyId": "NN-2_3", "policyName": "NN FW 2", "policySecurityControls": { "applyApiConstraints": false, "applyApplicationLayerControls": true, "applyBotmanControls": false, "applyNetworkLayerControls": true, "applyRateControls": false, "applyReputationControls": false, "applySlowPostControls": false } } ], "version": 8 }, "schema": { "additionalProperties": false, "description": "Contains details of a security policy that you can apply to a configuration.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "policies": { "description": "A list of security policies in this configuration version.", "items": { "additionalProperties": false, "description": "Specifies the details of a security policy.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "hasRatePolicyWithApiKey": { "description": "Indicates whether this security policy has a rate policy which has `API_KEY` as a client identifier. APIs are managed using the [API Endpoint Definition API](https://techdocs.akamai.com/api-gateway/reference/api).", "type": "boolean" }, "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" }, "policyName": { "description": "The name of the security policy.", "type": "string" }, "policySecurityControls": { "additionalProperties": false, "description": "The status of security controls defined in the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "version": { "description": "The version number of the security configuration.", "type": "integer" } }, "required": [ "policyId", "policyName", "hasRatePolicyWithApiKey", "policySecurityControls" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-1.yaml" } }, "type": "array" }, "version": { "description": "The security configuration's version number.", "type": "integer" } }, "required": [ "configId", "policies", "version" ], "type": "object", "x-akamai": { "file-path": "schemas/security-policies.yaml" } } } }, "description": "Successfully returned resource." }, "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": { "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": { "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 the resource.", "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": { "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). That resource doesn't exist, or the URL is malformed.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "List security policies", "tags": [ "General policy settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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/policies.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}": { "get": { "description": "__All products__ Returns the specified security policy.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policy" }, "operationId": "get-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "configId": 77653, "hasRatePolicyWithApiKey": false, "policyId": "bt17_75755", "policyName": "Open Cloned IV 2", "policySecurityControls": { "applyApiConstraints": true, "applyApplicationLayerControls": true, "applyBotmanControls": true, "applyNetworkLayerControls": true, "applyRateControls": true, "applyReputationControls": true, "applySlowPostControls": false }, "version": 144 }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security policy.", "properties": { "configId": { "description": "Uniquely identifies the security configuration.", "type": "integer" }, "hasRatePolicyWithApiKey": { "description": "Indicates whether this security policy has a rate policy which has `API_KEY` as a client identifier. APIs are managed using the [API Endpoint Definition API](https://techdocs.akamai.com/api-gateway/reference/api).", "type": "boolean" }, "policyId": { "description": "Uniquely identifies the security policy.", "type": "string" }, "policyName": { "description": "The name of the security policy.", "type": "string" }, "policySecurityControls": { "additionalProperties": false, "description": "The status of security controls defined in the security policy.", "properties": { "applyApiConstraints": { "description": "Whether you enabled API constraints.", "type": "boolean" }, "applyApplicationLayerControls": { "description": "Whether you enabled application layer controls.", "type": "boolean" }, "applyBotmanControls": { "description": "Whether you enabled Bot Manager controls.", "type": "boolean" }, "applyNetworkLayerControls": { "description": "Whether you enabled network layer controls.", "type": "boolean" }, "applyRateControls": { "description": "Whether you enabled rate controls.", "type": "boolean" }, "applyReputationControls": { "description": "Whether you enabled reputation controls.", "type": "boolean" }, "applySlowPostControls": { "description": "Whether you enabled slow post controls.", "type": "boolean" } }, "required": [ "applyApplicationLayerControls", "applyNetworkLayerControls", "applyRateControls", "applyReputationControls", "applyBotmanControls", "applyApiConstraints", "applySlowPostControls" ], "type": "object", "x-akamai": { "file-path": "schemas/security-controls.yaml" } }, "version": { "description": "The version number of the security configuration.", "type": "integer" } }, "required": [ "policyId", "policyName", "hasRatePolicyWithApiKey", "policySecurityControls" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-1.yaml" } } } }, "description": "Successfully returned security 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": { "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 security 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": { "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 security policy wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Get a security policy", "tags": [ "General policy settings" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update the name of a specific security policy. Currently, you can only edit a security policy's name with this operation, although other editable fields will be available in the future. For any changes to settings within a security policy, run the modify operation for that specific setting. For example, to update your IP/Geo settings, run [Update IP/Geo Firewall settings](https://techdocs.akamai.com/application-security/reference/put-policy-ip-geo-firewall).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-policy" }, "operationId": "put-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "policyName": "updated policy name" }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security policy.", "properties": { "policyName": { "description": "The name of the security policy.", "type": "string" } }, "required": [ "policyName" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-put-2.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "policyName": "updated policy name" }, "schema": { "additionalProperties": false, "description": "Specifies the details of a security policy.", "properties": { "policyName": { "description": "The name of the security policy.", "type": "string" } }, "required": [ "policyName" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-put-2.yaml" } } } }, "description": "Successfully updated security policy name." }, "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": { "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": { "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 security 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": { "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 security policy action wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Modify a security policy", "tags": [ "General policy settings" ], "x-akamai": { "labels": [ "All products" ] } }, "delete": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Delete the specified security policy. You can't delete a security policy that is actively in use. Before you run this operation, create a new version of your security configuration and omit the policy you want to delete. Once you have activated your new configuration version, you can delete the security policy you omitted from the new version. One way to create a new configuration quickly is to run [Clone a configuration version](https://techdocs.akamai.com/application-security/reference/post-config-versions), remove the policy you want to delete, then PUT the edited object back to [Modify a security policy](https://techdocs.akamai.com/application-security/reference/put-policy).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/delete-policy" }, "operationId": "delete-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "204": { "content": {}, "description": "Successfully deleted the security 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": { "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 security 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": { "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 security policy wasn't found.", "x-akamai": { "file-path": "errors/404.yaml" } } }, "summary": "Remove a security policy", "tags": [ "General policy settings" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/evasive-path-match": { "get": { "description": "__Web Application Protector__, __Kona Site Defender__ Lists the evasive path match setting for a security policy. Evasive path match is off by default. This setting applies at the security policy level and overrides the setting at the configuration level on a per-policy basis.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-evasive-path-match" }, "operationId": "get-evasive-path-match", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "enablePathMatch": true }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for Security Profile Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-evasive-path-match-get-200.yaml" } } } }, "description": "Successfully retrieved the evasive path match settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get evasive path match settings", "tags": [ "Evasive path match" ], "x-akamai": { "labels": [ "Web Application Protector", "Kona Site Defender" ] } }, "put": { "description": "__Web Application Protector__, __Kona Site Defender__ Enable, disable, or update evasive path match setting for a security policy. This operation applies at the security policy level and overrides the setting at the configuration level on a per-policy basis.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-evasive-path-match" }, "operationId": "put-evasive-path-match", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "enablePathMatch": true }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for Security Profile Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-evasive-path-match-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "enablePathMatch": true }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for Security Profile Evasive Path Match.", "properties": { "enablePathMatch": { "description": "When enabled, evaluates requests with the following list of characters removed ` & ! $ ' ( ) + , [ ] * @ ^ \\ \"` and `.` only when it appears as a trailing character at the end of the URL.", "type": "boolean" } }, "required": [ "enablePathMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-evasive-path-match-put-200.yaml" } } } }, "description": "Successfully updated the evasive path match setting." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify evasive path match settings", "tags": [ "Evasive path match" ], "x-akamai": { "labels": [ "Web Application Protector", "Kona Site Defender" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-evasive-path-match.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/evasive-path-match" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/logging": { "get": { "description": "__All products__ List a security policy's settings for HTTP header logging. HTTP header logging is on by default, and in most cases you should leave it enabled. You can filter requests by header type, including or excluding requests with a specific header, or by cookie. This operation applies at the security policy level, and overrides the HTTP header log settings at the configuration level on a per-policy basis.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policies-logging" }, "operationId": "get-policies-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "allowSampling": true, "cookies": { "type": "all" }, "customHeaders": { "type": "exclude", "values": [ "csdasdad" ] }, "override": true, "standardHeaders": { "type": "only", "values": [ "Accept" ] } }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for Security Policy HTTP Header Logging.", "properties": { "allowSampling": { "description": "Enables HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "override": { "description": "Enables logging override for security policy.", "type": "boolean" }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "override", "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/http-header-logging-get-200.yaml" } } } }, "description": "Successfully retrieved the policy HTTP Header Logging settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get HTTP header log settings", "tags": [ "HTTP header logs" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Enable, disable, or update HTTP header logging settings for a specific policy. This operation applies at the security policy level, and overrides the HTTP header log settings at the configuration level on a per-policy basis.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-policies-logging" }, "operationId": "put-policies-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "allowSampling": true, "cookies": { "type": "all" }, "customHeaders": { "type": "exclude", "values": [ "csdasdad" ] }, "override": true, "standardHeaders": { "type": "only", "values": [ "Accept" ] } }, "schema": { "additionalProperties": false, "description": "Describes the security policy HTTP header-logging settings.", "properties": { "allowSampling": { "description": "Whether you enabled the header data sampling.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "When enabled, filter requests whose headers you log by cookie.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "When enabled, filter requests you log by custom headers you specify.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "override": { "description": "When enabled, your security configuration won't log any header data for security events triggered by settings in the security configuration.", "type": "boolean" }, "standardHeaders": { "additionalProperties": false, "description": "When enabled, filter requests you log by standard headers you specify.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "override" ], "type": "object", "x-akamai": { "file-path": "schemas/http-header-logging-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "allowSampling": true, "cookies": { "type": "all" }, "customHeaders": { "type": "exclude", "values": [ "csdasdad" ] }, "override": true, "standardHeaders": { "type": "only", "values": [ "Accept" ] } }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for Security Policy HTTP Header Logging.", "properties": { "allowSampling": { "description": "Enables HTTP Header logging.", "type": "boolean" }, "cookies": { "additionalProperties": false, "description": "Settings for cookie headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "customHeaders": { "additionalProperties": false, "description": "Settings for custom headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } }, "override": { "description": "Enables logging override for security policy.", "type": "boolean" }, "standardHeaders": { "additionalProperties": false, "description": "Settings for standard headers.", "properties": { "type": { "description": "Use `all` to log headers for all requests with any standard header. Use `none` to exclude headers for any requests with any standard header from logging. Use `exclude` to exclude headers for requests with specific standard headers. Use `only` to include headers for requests with specific standard headers.", "enum": [ "all", "none", "exclude", "only" ], "type": "string" }, "values": { "description": "List of headers to include or exclude depending on the `type` setting.", "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/logging-header-setting.yaml" } } }, "required": [ "override", "allowSampling", "cookies", "customHeaders", "standardHeaders" ], "type": "object", "x-akamai": { "file-path": "schemas/http-header-logging-put-200.yaml" } } } }, "description": "Successfully updated the policy HTTP Header Logging settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify HTTP header log settings", "tags": [ "HTTP header logs" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-logging.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/logging" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/logging/attack-payload": { "get": { "description": "__All products__ List a security policy's settings for attack payload logging. Attack payload logging is on by default, and in most cases you should leave it enabled. When set to `NONE`, the request body and response body appear as `redacted` in the log. For example, `JSON_PAIRS:redacted`. This operation applies at the security policy level, and overrides the attack payload logging settings at the configuration level on a per-policy basis.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policies-attack-payload-logging" }, "operationId": "get-policies-attack-payload-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "enabled": true, "override": true, "requestBody": { "type": "ATTACK_PAYLOAD" }, "responseBody": { "type": "NONE" } }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for Security Policy attack payload logging.", "properties": { "enabled": { "description": "Whether attack payload logging is enabled.", "type": "boolean" }, "override": { "description": "When `true`, use the security policy's attack payload log settings instead of the settings at the configuration level.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "override", "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-attack-payload-logging-get-200.yaml" } } } }, "description": "Successfully retrieved the policy attack payload logging settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get attack payload logging settings for a policy", "tags": [ "Attack payload logs" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update attack payload logging settings for a specific policy. This operation applies at the security policy level, and overrides the attack payload logging settings at the configuration level on a per-policy basis. When set to `NONE`, the request body and response body appear as `redacted` in the log. For example, `JSON_PAIRS:redacted`.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-policies-attack-payload-logging" }, "operationId": "put-policies-attack-payload-logging", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "enabled": true, "override": true, "requestBody": { "type": "ATTACK_PAYLOAD" }, "responseBody": { "type": "NONE" } }, "schema": { "additionalProperties": false, "description": "Describes the security policy attack payload logging settings.", "properties": { "enabled": { "description": "When enabled, log attack payloads in requests and responses.", "type": "boolean" }, "override": { "description": "When `true`, use the security policy's attack payload logging settings instead of the settings at the configuration level. Note that when `type` is `NONE`, the request body and response body show as redacted in the log. For example, `JSON_PAIRS:redacted`.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how Akamai's network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how Akamai's network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "override", "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-attack-payload-logging-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "enabled": true, "override": true, "requestBody": { "type": "ATTACK_PAYLOAD" }, "responseBody": { "type": "NONE" } }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for Security Policy attack payload logging.", "properties": { "enabled": { "description": "When enabled, log attack payloads in requests and responses.", "type": "boolean" }, "override": { "description": "When `true`, use the security policy's attack payload logging settings instead of the settings at the configuration level. Note that when `type` is `NONE`, the request body and response body show as redacted in the log. For example, `JSON_PAIRS:redacted`.", "type": "boolean" }, "requestBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in request bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } }, "responseBody": { "additionalProperties": false, "description": "The settings for how our network logs attack payloads in response bodies.", "properties": { "type": { "description": "Use `ATTACK_PAYLOAD` to log attack payloads for all requests, or use `NONE` if you don't want to log the attack payloads. Note that when set to `NONE`, you'll see `redacted` in the logging information instead of a blank space or sensitive information. For example, `JSON_PAIRS:redacted`.", "enum": [ "ATTACK_PAYLOAD", "NONE" ], "type": "string" } }, "required": [ "type" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-payload-logging.yaml" } } }, "required": [ "override", "enabled", "requestBody", "responseBody" ], "type": "object", "x-akamai": { "file-path": "schemas/policy-attack-payload-logging-put-200.yaml" } } } }, "description": "Successfully updated the policy attack payload logging settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify attack payload logging settings for a policy", "tags": [ "Attack payload logs" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-logging-attack-payload.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/logging/attack-payload" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/pragma-header": { "get": { "description": "__All products__ Return the `Pragma` header's excluded conditions. By default, the `Pragma` header debugging information is stripped from an operation's response except in cases where you set `excludeCondition`. This operation applies at the security policy level. To modify `Pragma` header settings at the security configuration level, run [List Pragma header settings for a configuration](https://techdocs.akamai.com/application-security/reference/get-advanced-settings-pragma-header).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policies-pragma-header" }, "operationId": "get-policies-pragma-header", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "accept", "positiveMatch": true, "type": "requestHeaderValueMatch", "value": [ "application/json", "application/xml" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.1", "192.0.2.250/24" ] }, { "positiveMatch": true, "type": "networkList", "value": [ "123_3ALLOWEDIPS" ] }, { "name": "type", "positiveMatch": true, "type": "queryParamNameValueMatch", "value": [ "type A", "type B" ], "valueCase": true, "valueWildcard": false } ] }, "schema": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } } } }, "description": "Successfully retrieved the Pragma Header settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get Pragma settings for a security policy", "tags": [ "Pragma settings" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update the pragma header excluded conditions. By default, the `Pragma` header debugging information is stripped from an operation's response except in cases where you set `excludeCondition`. To remove existing settings, submit your request with an empty payload `{}` at the top-level of an object. For example, submit `\"type\": \"{}\"` in the request body to remove the `requestHeaderValueMatch` from the excluded conditions. If you submit an empty payload for each field, you'll clear all of your condition settings. To modify `Pragma` header settings at the security configuration level, run [Modify Pragma header settings for a configuration](https://techdocs.akamai.com/application-security/reference/put-advanced-settings-pragma-header) .", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-policies-pragma-header" }, "operationId": "put-policies-pragma-header", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "accept", "positiveMatch": true, "type": "requestHeaderValueMatch", "value": [ "application/json", "application/xml" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.1", "192.0.2.250/24" ] }, { "positiveMatch": true, "type": "networkList", "value": [ "123_3ALLOWEDIPS" ] }, { "name": "type", "positiveMatch": true, "type": "queryParamNameValueMatch", "value": [ "type A", "type B" ], "valueCase": true, "valueWildcard": false } ] }, "schema": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "action": "REMOVE", "conditionOperator": "AND", "excludeCondition": [ { "header": "accept", "positiveMatch": true, "type": "requestHeaderValueMatch", "value": [ "application/json", "application/xml" ], "valueCase": true, "valueWildcard": true }, { "positiveMatch": true, "type": "ipMatch", "useHeaders": false, "value": [ "192.0.2.1", "192.0.2.250/24" ] }, { "positiveMatch": true, "type": "networkList", "value": [ "123_3ALLOWEDIPS" ] }, { "name": "type", "positiveMatch": true, "type": "queryParamNameValueMatch", "value": [ "type A", "type B" ], "valueCase": true, "valueWildcard": false } ] }, "schema": { "additionalProperties": false, "description": "Describes which headers you can exclude from inspection when you pass a `Pragma` debug header.", "properties": { "action": { "description": "The action to perform when a user passes a `Pragma` header. The only action currently supported is `REMOVE`.", "enum": [ "REMOVE" ], "type": "string" }, "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "excludeCondition": { "description": "The conditions to exclude from the default `remove` action. Any condition you set in this object appears in the `Pragma` header debug response object.", "items": { "additionalProperties": false, "properties": { "header": { "description": "The name of the request header. In the example, `accept`.", "type": "string" }, "name": { "description": "The name of the request header to ignore from inspection. In the example, `type`.", "type": "string" }, "positiveMatch": { "description": "When `true`, matches the selected values. When `false`, matches on anything outside the selected values.", "type": "boolean" }, "type": { "description": "The header value you want to appear in the response. You can choose from `requestHeaderValueMatch`, `ipMatch`, `networkList`, or `queryParamNameValueMatch`.", "enum": [ "requestHeaderValueMatch", "ipMatch", "networkList", "queryParamNameValueMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include the `X-Forwarded-For` header (XFF) header. This only applies when the condition `type` is `IP_MATCH` or `NETWORK_LIST`.", "type": "boolean" }, "value": { "description": "List of header values, query parameter values, IP addresses, or names of network lists. To manage networks lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "items": { "type": "string" }, "type": "array" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header value. This only applies when the condition `type` is `REQUEST_HEADER_VALUE_MATCH`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header value includes wildcards, such as `*` or `?`. This only applies to the `REQUEST_HEADER_VALUE_MATCH` condition type.", "type": "boolean" } }, "required": [ "type", "positiveMatch", "value" ], "type": "object" }, "type": "array" }, "override": { "description": "Whether `Pragma` header override is enabled or disabled.", "type": "boolean" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/pragma-header.yaml" } } } }, "description": "Successfully updated the Pragma header settings:." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify Pragma settings for a security policy", "tags": [ "Pragma settings" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-pragma-header.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/pragma-header" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/request-body": { "get": { "description": "__All products__ Return request body inspection limit settings for a security policy. Contact your account team if you'd like to run this operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policies-request-body" }, "operationId": "get-policies-request-body", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "requestBodyInspectionLimitInKB": "16" }, "schema": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } } }, "description": "Successfully retrieved the request body inspection limit settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get request body inspection limit settings for a security policy", "tags": [ "Request body inspection limits" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update inspection settings for a security policy. Inspect request bodies up to a certain size. In exceptional cases, you can change the default value to a set limit: `8`, `16`, or `32` KB. Contact your account team if you'd like to run this operation.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-policies-request-body" }, "operationId": "put-policies-request-body", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "requestBodyInspectionLimitInKB": "16" }, "schema": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "requestBodyInspectionLimitInKB": "16" }, "schema": { "additionalProperties": false, "description": "Contains the size limits for a request body.", "properties": { "requestBodyInspectionLimitInKB": { "description": "Request body size in KB, either `8`, `16`, or `32` as string-formatted integers, or `default` to use Akamai's best practice value.", "enum": [ "8", "16", "32", "default" ], "type": "string" } }, "type": "object", "x-akamai": { "file-path": "schemas/request-body.yaml" } } } }, "description": "Successfully updated the request body inspection limit settings." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify request body size settings for a security policy", "tags": [ "Request body inspection limits" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-request-body.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/advanced-settings/request-body" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/api-endpoints": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ List the API endpoints associated with a security policy. This operation only lists the endpoints. To manage them, use [Register an endpoint](https://techdocs.akamai.com/api-gateway/reference/post-endpoints) from the API Endpoint Definition API.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-api-endpoints" }, "operationId": "get-api-endpoints", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "apiEndpoints": [ { "apiEndPointHosts": [ "sg.akamai.com" ], "basePath": "/v1/orders", "id": 619183, "name": "Orders", "productionVersion": { "status": "ACTIVE", "versionNumber": 1 }, "requestConstraintsEnabled": false, "stagingVersion": { "status": "ACTIVE", "versionNumber": 1 } }, { "apiEndPointHosts": [ "sg.akamai.com" ], "basePath": "/v1/catalog", "id": 624913, "name": "Catalog", "productionVersion": { "status": "ACTIVE", "versionNumber": 1 }, "requestConstraintsEnabled": true, "stagingVersion": { "status": "ACTIVE", "versionNumber": 1 } } ] }, "schema": { "additionalProperties": false, "description": "Specifies each API's basic metadata and current deployment status.", "properties": { "apiEndpoints": { "description": "The list of API Endpoints.", "items": { "additionalProperties": false, "description": "API Endpoint JSON Properties.", "properties": { "apiEndPointHosts": { "description": "The hosts associated with this API endpoint.", "items": { "description": "The set of hostnames that allow access to this API.", "type": "string" }, "type": "array" }, "apiResources": { "description": "A list of this API endpoint's functional URL patterns.", "items": { "additionalProperties": false, "properties": { "id": { "description": "A unique identifier an API resource.", "type": "integer" }, "name": { "description": "The name for an API resource.", "type": "string" }, "path": { "description": "The path for an API resource.", "type": "string" } }, "type": "object" }, "type": "array" }, "basePath": { "description": "The API endpoint's base path.", "type": "string" }, "categories": { "description": "The categories this API endpoint belongs to.", "items": { "additionalProperties": false, "properties": { "categoryId": { "description": "A unique identifier for a category.", "type": "integer" }, "categoryName": { "description": "The name for a category.", "type": "string" } }, "type": "object" }, "type": "array" }, "id": { "description": "A unique identifier for an API endpoint.", "type": "integer" }, "name": { "description": "The name for this API endpoint.", "type": "string" }, "productionVersion": { "additionalProperties": false, "description": "Summarizes this API endpoint's current deployment on Akamai's production network.", "properties": { "status": { "description": "The production status.", "type": "string" }, "versionNumber": { "description": "The production version number.", "nullable": true, "type": "integer" } }, "type": "object" }, "requestConstraintsEnabled": { "description": "Whether to allow API constraints for this endpoint.", "type": "boolean" }, "stagingVersion": { "additionalProperties": false, "description": "Summarizes this API endpoint's current deployment on Akamai's staging network.", "properties": { "status": { "description": "The staging status.", "type": "string" }, "versionNumber": { "description": "The staging version number.", "nullable": true, "type": "integer" } }, "type": "object" } }, "type": "object", "x-akamai": { "file-path": "schemas/api-endpoint.yaml" } }, "type": "array" } }, "required": [ "apiEndpoints" ], "type": "object", "x-akamai": { "file-path": "schemas/api-endpoints-get-200.yaml" } } } }, "description": "Successfully retrieved API endpoints." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List API endpoints", "tags": [ "API endpoints" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-api-endpoints.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/api-endpoints" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/api-request-constraints": { "get": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Return a list of APIs with their constraints and associated actions.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-api-request-constraints" }, "operationId": "get-api-request-constraints", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "apiEndpoints": [ { "action": "alert", "id": 1941 }, { "action": "alert", "id": 1942 }, { "action": "alert", "id": 1943 } ] }, "schema": { "additionalProperties": false, "description": "The Response JSON for API Request Constraints action.", "properties": { "apiEndpoints": { "description": "The list of API match targets action set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take for the requests that violate the constraints.", "type": "string" }, "id": { "description": "Uniquely identifies the API match target.", "type": "integer" } }, "required": [ "action", "id" ], "type": "object" }, "type": "array" } }, "required": [ "apiEndpoints" ], "type": "object", "x-akamai": { "file-path": "schemas/api-request-constraints-action-200.yaml" } } } }, "description": "Successfully retrieved API match target actions." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List API request constraints and actions", "tags": [ "API request constraints" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "put": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Update what action to take when any API request constraint triggers. Use `alert` to record the trigger of the event, `deny` to block the request, or `customDenyId` to apply a custom deny response.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-api-request-constraints" }, "operationId": "put-api-request-constraints", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "Sets various API constraint actions, which apply when an API constraint is triggered by a request.", "properties": { "action": { "description": "The action to assign to API request constraints, either `alert`, `deny`, or `none`. Use `deny_custom_{custom_deny_id}` to apply a custom action instead of Akamai's default. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the rule is inactive in the policy.", "enum": [ "alert", "deny", "none" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/api-request-constraints-action-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "apiEndpoints": [ { "action": "alert", "id": 1941 }, { "action": "alert", "id": 1942 }, { "action": "alert", "id": 1943 } ] }, "schema": { "additionalProperties": false, "description": "The Response JSON for API Request Constraints action.", "properties": { "apiEndpoints": { "description": "The list of API match targets action set in the security policy.", "items": { "additionalProperties": false, "properties": { "action": { "description": "The action to take for the requests that violate the constraints.", "type": "string" }, "id": { "description": "Uniquely identifies the API match target.", "type": "integer" } }, "required": [ "action", "id" ], "type": "object" }, "type": "array" } }, "required": [ "apiEndpoints" ], "type": "object", "x-akamai": { "file-path": "schemas/api-request-constraints-action-200.yaml" } } } }, "description": "Successfully updated the API Request Constraint action for all APIs covered by match target." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify the request constraint action for all APIs", "tags": [ "API request constraints" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-api-request-constraints.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/api-request-constraints" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/api-request-constraints/{apiId}": { "put": { "description": "__Kona Site Defender__, __App & API Protector with the Advanced Security module__ Update what action to take when the API request constraint triggers. This operation modifies an individual API constraint action. To use this operation, run [List all API request constraints and actions](https://techdocs.akamai.com/application-security/reference/get-api-request-constraints) and pick an API from the response list. Use `alert` to record the trigger of the event, `deny` to block the request, or `none` to take no action. Currently the only field in the API Request Constraints object is `action`.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-api-request-constraints-api" }, "operationId": "put-api-request-constraints-api", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "Sets various API constraint actions, which apply when an API constraint is triggered by a request.", "properties": { "action": { "description": "The action to assign to API request constraints, either `alert`, `deny`, or `none`. Use `deny_custom_{custom_deny_id}` to apply a custom action instead of Akamai's default. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the rule is inactive in the policy.", "enum": [ "alert", "deny", "none" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/api-request-constraints-action-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for API Request Constraints action.", "properties": { "action": { "description": "The action for API Request Constraints, either `alert`, `deny`, or `none`.", "enum": [ "alert", "deny", "none" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/api-request-constraints-action-put-200.yaml" } } } }, "description": "Successfully updated the API's action." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify an API request constraint's action", "tags": [ "API request constraints" ], "x-akamai": { "labels": [ "Kona Site Defender", "App & API Protector with the Advanced Security module" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } }, { "description": "A unique identifier for each API.", "in": "path", "name": "apiId", "required": true, "schema": { "example": 12345, "type": "integer" }, "x-akamai": { "file-path": "parameters/api-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-api-request-constraints-api.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/api-request-constraints/{apiId}" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/attack-groups": { "get": { "description": "__All products__ Return a list of attack groups with their associated actions.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policy-attack-groups" }, "operationId": "get-policy-attack-groups", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "attackGroupActions": [ { "action": "deny", "group": "TOOL" }, { "action": "none", "group": "PROTOCOL" }, { "action": "alert", "group": "SQL" }, { "action": "deny", "group": "XSS" }, { "action": "deny", "group": "LFI" }, { "action": "deny", "group": "RFI" }, { "action": "deny", "group": "CMDI" }, { "action": "none", "group": "PLATFORM" } ] }, "schema": { "additionalProperties": false, "description": "Describes the attack group object. Currently, the only field in an attack group object is the `action`.", "properties": { "attackGroupActions": { "description": "The attack group action, either `alert`, `deny`, or `none`. Use `deny_custom_{custom_deny_id}` to apply a custom action instead of Akamai's default. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the attack group is inactive in the security policy.", "items": { "additionalProperties": false, "description": "Attack Group JSON Properties.", "properties": { "action": { "description": "The attack group action, either `alert`, `deny`, or `none`. If the action is `none`, the attack group is inactive in the security policy.", "enum": [ "alert", "deny", "none" ], "type": "string" }, "group": { "description": "The ID for the attack group.", "type": "string" } }, "required": [ "action", "group" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-group.yaml" } }, "type": "array" } }, "required": [ "attackGroupActions" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-group-actions-get-200.yaml" } } } }, "description": "Successfully retrieved the attack group actions." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List attack groups", "tags": [ "WAF rules: Attack groups" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-attack-groups.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/attack-groups" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/attack-groups/{attackGroupId}": { "get": { "description": "__All products__ Currently the only field in the response object is `action`, which displays the action for the attack group.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policy-attack-group" }, "operationId": "get-policy-attack-group", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "Describes attack group's action fields.", "properties": { "action": { "description": "The attack group action, either `alert`, `deny`, or `none`. Use `deny_custom_{custom_deny_id}` to apply a custom action instead of Akamai's default. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the rule is inactive in the policy.", "enum": [ "alert", "deny", "none" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-group-action-get-200.yaml" } } } }, "description": "Successfully retrieved the attack group's actions." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get the action for an attack group", "tags": [ "WAF rules: Attack groups" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update what action to take when an attack group's rule triggers. Use `alert` to record the trigger of the event, `deny` to block the request, or `none` to take no action. Currently the only field in the attack group object is `action`.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-attack-group" }, "operationId": "put-attack-group", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "The PUT Request JSON for an attack group action.", "properties": { "action": { "description": "The attack group action, either `alert`, `deny`, or `none`.", "enum": [ "alert", "deny", "none" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-group-action-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for an attack group action.", "properties": { "action": { "description": "The attack group action, either `alert`, `deny`, or `none`.", "enum": [ "alert", "deny", "none" ], "type": "string" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/attack-group-action-put-200.yaml" } } } }, "description": "Successfully updated the attack group's action." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify the action for an attack group", "tags": [ "WAF rules: Attack groups" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } }, { "description": "A unique identifier for each attack group.", "in": "path", "name": "attackGroupId", "required": true, "schema": { "example": "CMD", "type": "string" }, "x-akamai": { "file-path": "parameters/attack-group-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-attack-group.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/attack-groups/{attackGroupId}" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/attack-groups/{attackGroupId}/condition-exception": { "get": { "description": "__All products__ List an attack group's exceptions.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-attack-group-condition-exception" }, "operationId": "get-attack-group-condition-exception", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "advancedExceptions": { "conditionOperator": "AND", "conditions": [ { "filenames": [ "*.aspx", "*.js" ], "positiveMatch": true, "type": "filenameMatch" }, { "paths": [ "/catalog" ], "positiveMatch": true, "type": "pathMatch" }, { "clientLists": [ "88330_TESTIP1" ], "positiveMatch": true, "type": "clientListMatch", "useHeaders": true } ], "headerCookieOrParamValues": [ { "valueWildcard": true, "values": [ "header1", "cookie1", "param1" ] } ], "specificHeaderCookieOrParamNameValue": [ { "namesValues": [ { "names": [ "header1" ], "values": [ "value1" ] } ], "selector": "REQUEST_HEADERS", "wildcard": true }, { "namesValues": [ { "names": [ "param-name" ], "values": [ "param-value" ] } ], "selector": "ARGS", "wildcard": true }, { "namesValues": [ { "names": [ "json-param1" ], "values": [ "json-value1" ] } ], "selector": "JSON_PAIRS", "wildcard": true }, { "namesValues": [ { "names": [ "cookie-name" ], "values": [ "cookie1" ] } ], "selector": "REQUEST_COOKIES", "wildcard": true } ], "specificHeaderCookieParamXmlOrJsonNames": [ { "names": [ "test" ], "selector": "REQUEST_COOKIES_NAMES", "wildcard": true }, { "names": [ "aaaa" ], "selector": "REQUEST_COOKIES", "wildcard": true } ] } }, "schema": { "additionalProperties": false, "description": "The GET Response JSON for conditions and exceptions.", "properties": { "advancedExceptions": { "additionalProperties": false, "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "properties": { "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "conditions": { "description": "The list of match conditions.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "valueWildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" }, "values": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" } }, "required": [ "values" ], "type": "object" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "description": "Contains details about the excepted name-value pairs in a request.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "namesValues": { "description": "A list of name-value pairs to except.", "items": { "additionalProperties": false, "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of request attribute values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "names" ], "type": "object" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "valueWildcard": { "default": false, "description": "Whether the provided header `value` is a wildcard.", "type": "boolean" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "namesValues", "selector" ], "type": "object" }, "type": "array" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/advanced-exception.yaml" } }, "conditions": { "description": "The conditions list for a rule.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "exception": { "additionalProperties": false, "description": "Describes the exception fields that allow you to conditionally exclude requests from inspection.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule or attack group exceptions. The possible values are `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, and `REQUEST_HEADERS` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Contains details about the excepted request attribute names. This is only available for attack groups and when advanced exception is not enabled.", "items": { "additionalProperties": false, "properties": { "names": { "description": "Lists request attribute names, required with several `selector` options. With `wildcard` enabled, `*` represents a sequence and `?` represents any single character. For example, `*` matches any name, and `*session` matches a subset.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. The following selectors require a set of `names`: `ARGS_NAMES`, `ARGS`, `REQUEST_HEADERS_NAMES`, `REQUEST_HEADERS`, `REQUEST_COOKIES_NAMES`, `REQUEST_COOKIES`, `JSON_NAMES`, `JSON_PAIRS`, and `XML_PAIRS`. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether you can specify wildcards to flexibly match `names`, either `*` for any set of characters, or `?` for any single character.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/exception.yaml" } } }, "type": "object", "x-akamai": { "file-path": "schemas/condition-exception-get-200.yaml" } } } }, "description": "Successfully retrieved the attack group exceptions." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Get the exceptions of an attack group", "tags": [ "WAF rules: Attack groups" ], "x-akamai": { "labels": [ "All products" ] } }, "put": { "description": "__All products__ Update an attack group exceptions.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-attack-group-condition-exception" }, "operationId": "put-attack-group-condition-exception", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "exception": { "specificHeaderCookieParamXmlOrJsonNames": [ { "names": [ "*" ], "selector": "REQUEST_HEADERS_NAMES", "wildcard": true }, { "names": [ "header2", "header1" ], "selector": "REQUEST_HEADERS", "wildcard": false }, { "names": [ "connect.sid" ], "selector": "REQUEST_COOKIES_NAMES", "wildcard": false }, { "names": [ "cookie1", "cookie2" ], "selector": "REQUEST_COOKIES", "wildcard": true }, { "names": [ "test*" ], "selector": "ARGS_NAMES", "wildcard": true }, { "names": [ "param-name" ], "selector": "ARGS", "wildcard": true }, { "names": [ "test*" ], "selector": "JSON_NAMES", "wildcard": true }, { "names": [ "json1" ], "selector": "JSON_PAIRS", "wildcard": true }, { "selector": "REQUEST_PROTOCOL", "wildcard": true }, { "selector": "REQUEST_METHOD", "wildcard": true }, { "selector": "REQUEST_URI", "wildcard": true }, { "selector": "QUERY_STRING", "wildcard": true }, { "selector": "REQUEST_FILENAME", "wildcard": true }, { "selector": "REQUEST_PATH_SEGMENT", "wildcard": true }, { "selector": "REQUEST_BODY", "wildcard": true }, { "selector": "REQBODY_PROCESSOR_ERROR", "wildcard": true }, { "selector": "FILES_NAMES", "wildcard": true } ] } }, "schema": { "additionalProperties": false, "description": "Describes the conditions and exceptions you can configure in attack groups or rules. When `advanced` is enabled, you can only specify attack group exception data in one `basic` or `advancedExceptions` section, and not both.", "properties": { "advancedExceptions": { "additionalProperties": false, "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "properties": { "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "conditions": { "description": "The list of match conditions.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "valueWildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" }, "values": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" } }, "required": [ "values" ], "type": "object" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "description": "Contains details about the excepted name-value pairs in a request.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "namesValues": { "description": "A list of name-value pairs to except.", "items": { "additionalProperties": false, "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of request attribute values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "names" ], "type": "object" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "valueWildcard": { "default": false, "description": "Whether the provided header `value` is a wildcard.", "type": "boolean" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "namesValues", "selector" ], "type": "object" }, "type": "array" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/advanced-exception.yaml" } }, "conditions": { "description": "The conditions list for a rule.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "exception": { "additionalProperties": false, "description": "Describes the exception fields that allow you to conditionally exclude requests from inspection.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule or attack group exceptions. The possible values are `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, and `REQUEST_HEADERS` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Contains details about the excepted request attribute names. This is only available for attack groups and when advanced exception is not enabled.", "items": { "additionalProperties": false, "properties": { "names": { "description": "Lists request attribute names, required with several `selector` options. With `wildcard` enabled, `*` represents a sequence and `?` represents any single character. For example, `*` matches any name, and `*session` matches a subset.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. The following selectors require a set of `names`: `ARGS_NAMES`, `ARGS`, `REQUEST_HEADERS_NAMES`, `REQUEST_HEADERS`, `REQUEST_COOKIES_NAMES`, `REQUEST_COOKIES`, `JSON_NAMES`, `JSON_PAIRS`, and `XML_PAIRS`. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether you can specify wildcards to flexibly match `names`, either `*` for any set of characters, or `?` for any single character.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/exception.yaml" } } }, "type": "object", "x-akamai": { "file-path": "schemas/condition-exception-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "exception": { "specificHeaderCookieParamXmlOrJsonNames": [ { "names": [ "*" ], "selector": "REQUEST_HEADERS_NAMES", "wildcard": true }, { "names": [ "header2", "header1" ], "selector": "REQUEST_HEADERS", "wildcard": false }, { "names": [ "connect.sid" ], "selector": "REQUEST_COOKIES_NAMES", "wildcard": false }, { "names": [ "cookie1", "cookie2" ], "selector": "REQUEST_COOKIES", "wildcard": true }, { "names": [ "test*" ], "selector": "ARGS_NAMES", "wildcard": true }, { "names": [ "param-name" ], "selector": "ARGS", "wildcard": true }, { "names": [ "test*" ], "selector": "JSON_NAMES", "wildcard": true }, { "names": [ "json1" ], "selector": "JSON_PAIRS", "wildcard": true }, { "selector": "REQUEST_PROTOCOL", "wildcard": true }, { "selector": "REQUEST_METHOD", "wildcard": true }, { "selector": "REQUEST_URI", "wildcard": true }, { "selector": "QUERY_STRING", "wildcard": true }, { "selector": "REQUEST_FILENAME", "wildcard": true }, { "selector": "REQUEST_PATH_SEGMENT", "wildcard": true }, { "selector": "REQUEST_BODY", "wildcard": true }, { "selector": "REQBODY_PROCESSOR_ERROR", "wildcard": true }, { "selector": "FILES_NAMES", "wildcard": true } ] } }, "schema": { "additionalProperties": false, "description": "The PUT Response JSON for conditions and exceptions.", "properties": { "advancedExceptions": { "additionalProperties": false, "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "properties": { "conditionOperator": { "description": "Use `OR` to match any condition, or `AND` to match on all conditions.", "enum": [ "OR", "AND" ], "type": "string" }, "conditions": { "description": "The list of match conditions.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "valueWildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" }, "values": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" } }, "required": [ "values" ], "type": "object" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "description": "Contains details about the excepted name-value pairs in a request.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "namesValues": { "description": "A list of name-value pairs to except.", "items": { "additionalProperties": false, "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of request attribute values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "names" ], "type": "object" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "valueWildcard": { "default": false, "description": "Whether the provided header `value` is a wildcard.", "type": "boolean" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "namesValues", "selector" ], "type": "object" }, "type": "array" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Describes the advanced exception fields that allow you to conditionally exclude requests from inspection. This is only available for attack groups and when the advanced exception feature is enabled.", "items": { "additionalProperties": false, "properties": { "criteria": { "description": "A list of criteria to limit the scope of this exception.", "items": { "additionalProperties": false, "description": "The hostname and path criteria to limit the scope of exception.", "properties": { "hostnames": { "description": "The list of excepted hostnames.", "items": { "type": "string" }, "type": "array" }, "names": { "description": "The list of excepted names.", "items": { "type": "string" }, "type": "array" }, "paths": { "description": "The list of excepted paths.", "items": { "type": "string" }, "type": "array" }, "values": { "description": "The list of excepted values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "paths", "names", "values" ], "type": "object", "x-akamai": { "file-path": "schemas/criteria.yaml" } }, "type": "array" }, "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether the provided header `name` is a wildcard.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/advanced-exception.yaml" } }, "conditions": { "description": "The conditions list for a rule.", "items": { "additionalProperties": false, "description": "Describes what conditions can be set for an action to occur.", "properties": { "caseSensitive": { "description": "Whether to consider the case-sensitivity of the provided query parameter `value`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "clientLists": { "description": "The clientLists that trigger the condition. This only applies to the `clientListMatch` condition `type`.", "items": { "type": "string" }, "minItems": 0, "type": "array" }, "extensions": { "description": "The file extensions that trigger the condition. This only applies to the `extensionMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "filenames": { "description": "The filenames that trigger the condition. This only applies to the `filenameMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "header": { "description": "The HTTP header that triggers the condition. This only applies to the `requestHeaderMatch` condition `type`.", "type": "string" }, "hosts": { "description": "The hostnames that trigger the condition. This only applies to the `hostMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "ips": { "description": "The IPs that trigger the condition. This only applies to the `ipMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "methods": { "description": "The HTTP request methods that trigger the condition. The possible values are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`, `CONNECT` and `PATCH`. This only applies to the `requestMethodMatch` condition `type`.", "items": { "enum": [ "GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "CONNECT", "PATCH" ], "type": "string" }, "type": "array" }, "name": { "description": "The query parameter name that triggers the condition. This only applies to the `uriQueryMatch` condition `type`.", "type": "string" }, "nameCase": { "description": "Whether to consider the case-sensitivity of the provided query parameter `name`. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" }, "paths": { "description": "The paths that trigger the condition. This only applies to the `pathMatch` condition `type`.", "items": { "type": "string" }, "type": "array" }, "positiveMatch": { "description": "Whether the condition should trigger on a match (`true`) or a lack of match (`false`).", "type": "boolean" }, "type": { "description": "The condition type to match on. See [Export condition type values](https://techdocs.akamai.com/application-security/reference/etval).", "enum": [ "hostMatch", "pathMatch", "filenameMatch", "extensionMatch", "uriQueryMatch", "ipMatch", "requestMethodMatch", "requestHeaderMatch", "clientListMatch" ], "type": "string" }, "useHeaders": { "description": "Whether the condition should include `X-Forwarded-For` (XFF) header. This applies to the `ipMatch` and `clientListMatch` condition `type`.", "type": "boolean" }, "value": { "description": "The query parameter value if the condition `type` is `uriQueryMatch` and header value if the condition `type` is `requestHeaderMatch`. This only applies when the condition `type` is `uriQueryMatch` or `requestHeaderMatch`.", "type": "string" }, "valueCase": { "description": "Whether to consider the case-sensitivity of the provided header `value`. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "valueWildcard": { "description": "Whether the provided header `value` is a wildcard. This only applies to the `requestHeaderMatch` condition `type`.", "type": "boolean" }, "wildcard": { "description": "Whether the provided query parameter `value` is a wildcard. This only applies to the `uriQueryMatch` condition `type`.", "type": "boolean" } }, "required": [ "type", "positiveMatch" ], "type": "object", "x-akamai": { "file-path": "schemas/condition.yaml" } }, "type": "array" }, "exception": { "additionalProperties": false, "description": "Describes the exception fields that allow you to conditionally exclude requests from inspection.", "properties": { "anyHeaderCookieOrParam": { "description": "The list of request attributes to treat as rule or attack group exceptions. The possible values are `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, and `REQUEST_HEADERS` for a request header. Use this option if you can't get an exhaustive list of elements to exclude or the list is too large. You can exclude several attributes.", "items": { "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "type": "array" }, "headerCookieOrParamValues": { "description": "The list of excepted values in headers, cookies, or query parameters.", "items": { "type": "string" }, "type": "array" }, "specificHeaderCookieOrParamNameValue": { "additionalProperties": false, "description": "Contains details about the excepted name-value pair in a request.", "properties": { "name": { "description": "The name of the request attribute.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name-value pair. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" }, "value": { "description": "The value of the request attribute.", "type": "string" } }, "required": [ "name", "selector", "value" ], "type": "object" }, "specificHeaderCookieOrParamNames": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name.", "properties": { "names": { "description": "The list of request attribute names.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute that includes the excepted name. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "names", "selector" ], "type": "object" }, "specificHeaderCookieOrParamPrefix": { "additionalProperties": false, "description": "Contains details about the excepted request attribute name prefix.", "properties": { "prefix": { "description": "The request attribute name prefix.", "type": "string" }, "selector": { "description": "The request attribute that includes the excepted name prefix. Either `REQUEST_COOKIES`, `JSON_PAIRS` for a JSON parameter, `XML_PAIRS` for an XML parameter, `ARGS` for a request parameter, or `REQUEST_HEADERS` for a request header.", "enum": [ "REQUEST_COOKIES", "JSON_PAIRS", "XML_PAIRS", "ARGS", "REQUEST_HEADERS" ], "type": "string" } }, "required": [ "prefix", "selector" ], "type": "object" }, "specificHeaderCookieParamXmlOrJsonNames": { "description": "Contains details about the excepted request attribute names. This is only available for attack groups and when advanced exception is not enabled.", "items": { "additionalProperties": false, "properties": { "names": { "description": "Lists request attribute names, required with several `selector` options. With `wildcard` enabled, `*` represents a sequence and `?` represents any single character. For example, `*` matches any name, and `*session` matches a subset.", "items": { "type": "string" }, "type": "array" }, "selector": { "description": "The request attribute to exclude from inspection. The following selectors require a set of `names`: `ARGS_NAMES`, `ARGS`, `REQUEST_HEADERS_NAMES`, `REQUEST_HEADERS`, `REQUEST_COOKIES_NAMES`, `REQUEST_COOKIES`, `JSON_NAMES`, `JSON_PAIRS`, and `XML_PAIRS`. See [Exception selector values](https://techdocs.akamai.com/application-security/reference/exception-selector-values).", "enum": [ "ARGS_NAMES", "ARGS", "REQUEST_HEADERS_NAMES", "REQUEST_HEADERS", "REQUEST_COOKIES_NAMES", "REQUEST_COOKIES", "JSON_NAMES", "JSON_PAIRS", "XML_PAIRS", "REQUEST_PROTOCOL", "REQUEST_METHOD", "REQUEST_URI", "QUERY_STRING", "REQUEST_FILENAME", "REQUEST_PATH_SEGMENT", "REQUEST_BODY", "REQBODY_PROCESSOR_ERROR", "FILES_NAMES" ], "type": "string" }, "wildcard": { "default": false, "description": "Whether you can specify wildcards to flexibly match `names`, either `*` for any set of characters, or `?` for any single character.", "type": "boolean" } }, "required": [ "selector" ], "type": "object" }, "type": "array" } }, "type": "object", "x-akamai": { "file-path": "schemas/exception.yaml" } } }, "type": "object", "x-akamai": { "file-path": "schemas/condition-exception-put-200.yaml" } } } }, "description": "Successfully updated the exceptions of an attack group." }, "400": { "content": { "application/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": { "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": "[Invalid](https://techdocs.akamai.com/application-security/reference/400). Client error, such as invalid or malformed input.", "x-akamai": { "file-path": "errors/400-client-read-errors.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": { "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 permission to write to this resource.", "x-akamai": { "file-path": "errors/403-client-write-errors.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": { "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). The security policy doesn't exist, doesn't carry application layer controls, or no rule with this ID is available for use in this policy.", "x-akamai": { "file-path": "errors/404-client-read-errors.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify the exceptions of an attack group", "tags": [ "WAF rules: Attack groups" ], "x-akamai": { "labels": [ "All products" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } }, { "description": "A unique identifier for each attack group.", "in": "path", "name": "attackGroupId", "required": true, "schema": { "example": "CMD", "type": "string" }, "x-akamai": { "file-path": "parameters/attack-group-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-attack-group-condition-exception.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/attack-groups/{attackGroupId}/condition-exception" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/behavioral-ddos": { "get": { "description": "Returns a list of all Behavioral DDoS profiles currently in use, along with the actions each profile takes when conditions are met. _Products:_ All.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-behavioral-ddos-actions" }, "operationId": "get-behavioral-ddos-actions", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "behavioralDdosActions": [ { "action": "alert", "profileId": 100 }, { "action": "deny", "profileId": 103 } ] }, "schema": { "additionalProperties": false, "description": "Behavioral DDoS profile actions.", "properties": { "behavioralDdosActions": { "description": "Behavioral DDoS actions in the configuration version.", "items": { "additionalProperties": false, "description": "A Behavioral DDoS profile action.", "properties": { "action": { "description": "The action to assign to this Behavioral DDoS profile. Choose `alert`, `deny`, `none`, or `deny_custom_{custom_deny_id}`. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the Behavioral DDoS profile is inactive in the policy.", "oneOf": [ { "enum": [ "alert", "deny", "none" ], "title": "Predefined actions", "type": "string" }, { "minLength": 1, "pattern": "^deny_custom_[0-9]+$", "title": "Custom actions", "type": "string" } ] }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-action.yaml" } }, "minItems": 0, "type": "array" } }, "required": [ "behavioralDdosActions" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-actions.yaml" } } } }, "description": "In-use Behavioral DDoS profiles for this configuration." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 the resource.", "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": { "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 policy wasn't found." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "List Behavioral DDoS profile actions", "tags": [ "Behavioral DDoS profile actions" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-behavioral-ddos-profiles.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/behavioral-ddos" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/behavioral-ddos/{profileId}": { "put": { "description": "Updates the actions in a Behavioral DDoS profile. _Products:_ All.", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-behavioral-ddos-profile-action" }, "operationId": "put-behavioral-ddos-profile-action", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "action": "alert" }, "schema": { "additionalProperties": false, "description": "A Behavioral DDoS profile action.", "properties": { "action": { "description": "The action to assign to this Behavioral DDoS profile. Choose `alert`, `deny`, `none`, or `deny_custom_{custom_deny_id}`. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the Behavioral DDoS profile is inactive in the policy.", "oneOf": [ { "enum": [ "alert", "deny", "none" ], "title": "Predefined actions", "type": "string" }, { "minLength": 1, "pattern": "^deny_custom_[0-9]+$", "title": "Custom actions", "type": "string" } ] }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-action.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "action": "alert", "profileId": 100 }, "schema": { "additionalProperties": false, "description": "A Behavioral DDoS profile action.", "properties": { "action": { "description": "The action to assign to this Behavioral DDoS profile. Choose `alert`, `deny`, `none`, or `deny_custom_{custom_deny_id}`. Run [Modify a custom deny action](https://techdocs.akamai.com/application-security/reference/put-custom-deny) to manage your custom deny actions. If the action is `none`, the Behavioral DDoS profile is inactive in the policy.", "oneOf": [ { "enum": [ "alert", "deny", "none" ], "title": "Predefined actions", "type": "string" }, { "minLength": 1, "pattern": "^deny_custom_[0-9]+$", "title": "Custom actions", "type": "string" } ] }, "profileId": { "description": "__Read-only__ Uniquely identifies the Behavioral DDoS profile.", "format": "int64", "readOnly": true, "type": "integer" } }, "required": [ "action" ], "type": "object", "x-akamai": { "file-path": "schemas/behavioral-ddos-action.yaml" } } } }, "description": "Updated action." }, "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": { "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" } }, "401": { "content": { "application/problem+json": { "example": { "detail": "The signature does not match", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 401, "title": "Not authorized", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/deny" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Unauthorized](https://techdocs.akamai.com/application-security/reference/401).", "x-akamai": { "file-path": "errors/401.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": { "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 the resource.", "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": { "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). The configuration wasn't found." }, "405": { "content": { "application/problem+json": { "example": { "detail": "Unsupported method", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 405, "title": "Method Not Allowed", "type": "https://problems.luna-dev.akamaiapis.net/-/pep-authn/policy-error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Method not allowed](https://techdocs.akamai.com/application-security/reference/405).", "x-akamai": { "file-path": "errors/405.yaml" } }, "406": { "content": { "application/problem+json": { "example": { "detail": "HTTP 406 Not Acceptable", "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/d54686b5-21cb-4ab7-a8d6-a92282cf1749", "status": 406, "title": "Invalid Input Error", "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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 acceptable](https://techdocs.akamai.com/application-security/reference/406).", "x-akamai": { "file-path": "errors/406.yaml" } }, "500": { "content": { "application/problem+json": { "example": { "detail": "Internal Server Error", "instance": "12ab3c45-789d-01ef-2gh3-ijk4l56m78no", "status": 500, "title": "Internal Server Error", "type": "internal_server_error" }, "schema": { "additionalProperties": true, "description": "Details the errors you can receive.", "properties": { "detail": { "description": "The detailed error message.", "type": "string" }, "fieldErrors": { "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": "[Internal server error](https://techdocs.akamai.com/application-security/reference/500). Something went wrong on our side. Try again in a few minutes or contact support if the error persists.", "x-akamai": { "file-path": "errors/500-server-errors.yaml" } } }, "summary": "Modify a Behavioral DDoS profile action", "tags": [ "Behavioral DDoS profile actions" ] }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } }, { "description": "A unique identifier for each Behavioral DDoS profile.", "in": "path", "name": "profileId", "required": true, "schema": { "example": 121212, "format": "int64", "type": "integer" }, "x-akamai": { "file-path": "parameters/behavioral-ddos-profile-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-behavioral-ddos-profile.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/behavioral-ddos/{profileId}" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/bypass-network-lists": { "get": { "description": "__Web Application Protector__, __App & API Protector__ Lists which network lists are used in the bypass network lists settings. If you want to add or remove IP addresses from the network lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-bypass-network-lists-per-policy" }, "operationId": "get-bypass-network-lists-per-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "networkLists": [ { "id": "888518_ACDDCKERS", "name": "Test network list 1" }, { "id": "1304427_AAXXBBLIST", "name": "Test network list 2" } ] }, "schema": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "The list of network list identifiers and names.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Uniquely identifies the network list.", "type": "string" }, "name": { "description": "The name of the network list.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-get.yaml" } } } }, "description": "Successfully retrieved the bypass network lists settings." }, "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": { "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": { "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 the resource.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Get the bypass network lists settings for a security policy", "tags": [ "Bypass network lists" ], "x-akamai": { "labels": [ "Web Application Protector", "App & API Protector" ] } }, "put": { "description": "__Web Application Protector__, __App & API Protector__ Update which network lists to use in the bypass network lists settings. If you want to add or remove IP addresses from the network lists, use the [Network Lists API](https://techdocs.akamai.com/network-lists/reference/api).", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/put-bypass-network-lists-per-policy" }, "operationId": "put-bypass-network-lists-per-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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "requestBody": { "content": { "application/json": { "example": { "networkLists": [ "1304427_AAXXBBLIST", "888518_ACDDCKERS" ] }, "schema": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "Contains a list of network list IDs.", "items": { "description": "List of network lists. The values are the network lists' IDs.", "type": "string" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-put.yaml" } } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "example": { "networkLists": [ "1304427_AAXXBBLIST", "888518_ACDDCKERS" ] }, "schema": { "additionalProperties": false, "description": "Contains bypass network lists for the specified configuration version.", "properties": { "networkLists": { "description": "Contains a list of network list IDs.", "items": { "description": "List of network lists. The values are the network lists' IDs.", "type": "string" }, "type": "array" } }, "required": [ "networkLists" ], "type": "object", "x-akamai": { "file-path": "schemas/bypass-network-lists-put.yaml" } } } }, "description": "Successfully updated the IP/Geo Firewall settings." }, "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": { "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": { "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 the resource.", "x-akamai": { "file-path": "errors/403.yaml" } } }, "summary": "Modify the bypass network lists settings for a security policy", "tags": [ "Bypass network lists" ], "x-akamai": { "labels": [ "Web Application Protector", "App & API Protector" ] } }, "parameters": [ { "description": "A unique identifier for each configuration.", "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.", "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 a security policy.", "in": "path", "name": "policyId", "required": true, "schema": { "example": "boBF_19288", "type": "string" }, "x-akamai": { "file-path": "parameters/policy-id-path.yaml" } } ], "x-akamai": { "file-path": "paths/policy-bypass-network-lists.yaml", "path-info": "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/bypass-network-lists" } }, "/configs/{configId}/versions/{versionNumber}/security-policies/{policyId}/cpc": { "get": { "description": "__All products__ Get Client-Side Protection & Compliance settings for a specific policy. For more information, see [Client-side Protection & Compliance](https://techdocs.akamai.com/client-side-protect-compliance/docs/client-side-protect-compliance-ov)", "externalDocs": { "description": "See documentation for this operation in Akamai's Application Security API", "url": "https://techdocs.akamai.com/application-security/reference/get-policy-cpc" }, "operationId": "get-policy-cpc", "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).", "in": "query", "name": "accountSwitchKey", "required": false, "schema": { "example": "1-5C0YLB:1-8BYUX", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "edgeInjection": { "autoLoadStaging": false, "clientSideProtectionConfigId": 5965, "loadScriptAsync": false }, "edgeTestParameters": { "disableInjectionKey": "page-integrity", "disableInjectionValue": "disable-injection-1234_104690", "forceInjectionKey": "page-integrity", "forceInjectionValue": "force-injection-1234_104690" }, "injectionCriteria": { "injectionPathExcludes": "", "injectionPathIncludes": "", "injectionPercent": 100, "injectionPolicy": "late_head" } }, "schema": { "additionalProperties": false, "description": "Configuration settings for Client-Side Protection & Compliance.", "properties": { "edgeInjection": { "additionalProperties": false, "description": "Specifies the Client-Side Protection & Compliance (CPC) configuration you want to apply, and which pages get monitored by CPC's JavaScript injection to flag suspicious activity. See [Client-Side Protection & Compliance](https://techdocs.akamai.com/client-side-protect-compliance/docs/client-side-protect-compliance-ov) for more information.", "properties": { "autoLoadStaging": { "description": "Whether the agent should load from staging. Enabling this can speed up your testing on the staging network.", "type": "boolean" }, "clientSideProtectionConfigId": { "description": "Identifies each Client-Side Protection & Compliance configuration.", "type": "integer" }, "loadScriptAsync": { "description": "Whether the agent script should load asynchronously. Note that this can help improve performance, but may make malicious scripts detection less accurate. See [Load script asynchronously ](https://techdocs.akamai.com/client-side-protect-compliance/docs/tune-configurations-for-security-and-performance#load-script-asynchronously) to learn more.", "type": "boolean" } }, "required": [ "clientSideProtectionConfigId", "loadScriptAsync", "autoLoadStaging" ], "type": "object" }, "edgeTestParameters": { "additionalProperties": false, "description": "Use these query string parameters to unit test an edge server's behavior. Entries here override the sampling percentage, ensuring or disabling JavaScript injection.", "properties": { "disableInjectionKey": { "description": "Send this query string parameter to defer injecting the agent.", "type": "string" }, "disableInjectionValue": { "description": "Specifies the value to disable agent injection.", "type": "string" }, "forceInjectionKey": { "description": "Send this query string parameter to force agent injection.", "type": "string" }, "forceInjectionValue": { "description": "Specifies the value to force agent injection.", "type": "string" } }, "type": "object" }, "injectionCriteria": { "additionalProperties": false, "description": "Specifies the criteria for agent injection.", "properties": { "injectionPathExcludes": { "description": "The path to exclude from agent injection.", "minLength": 0, "type": "string" }, "injectionPathIncludes": { "description": "The path to include for agent injection.", "minLength": 0, "type": "string" }, "injectionPercent": { "description": "The proportion of all pages into which the Client-Side Protection & Compliance JavaScript is inserted. For example, if you set it to `5` percent, the JavaScript file is embedded in just that fraction of your pages, leaving the remaining `95` percent to run without the script.", "maximum": 100, "minimum": 0, "type": "integer" }, "injectionPolicy": { "description": "Specifies the position where agent injection should be applied. The JavaScript injection runs on a page, but you can inject it in a more specific location to fit the characteristics of your pages. Use `early_head` to insert the JavaScript after the `` tag at the beginning of the page. Use `mid_head` to add the JavaScript further down in the `` tags, after tags like ``, ``, ``, and similarly located tags. Use `late_head` to insert the JavaScript before a title and after all heading tags, or `first_script` to insert the user agent before the first `